本文整理汇总了Golang中github.com/ubuntu-core/snappy/overlord/snapstate.SnapState.Current方法的典型用法代码示例。如果您正苦于以下问题:Golang SnapState.Current方法的具体用法?Golang SnapState.Current怎么用?Golang SnapState.Current使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类github.com/ubuntu-core/snappy/overlord/snapstate.SnapState
的用法示例。
在下文中一共展示了SnapState.Current方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: localSnapInfo
// localSnapInfo returns the information about the current snap for the given name plus the SnapState with the active flag and other snap revisions.
func localSnapInfo(st *state.State, name string) (info *snap.Info, active bool, err error) {
st.Lock()
defer st.Unlock()
var snapst snapstate.SnapState
err = snapstate.Get(st, name, &snapst)
if err != nil && err != state.ErrNoState {
return nil, false, fmt.Errorf("cannot consult state: %v", err)
}
cur := snapst.Current()
if cur == nil {
return nil, false, nil
}
info, err = snap.ReadInfo(name, cur)
if err != nil {
return nil, false, fmt.Errorf("cannot read snap details: %v", err)
}
return info, snapst.Active, nil
}
示例2: TestAll
func (s *snapmgrQuerySuite) TestAll(c *C) {
st := s.st
st.Lock()
defer st.Unlock()
snapStates, err := snapstate.All(st)
c.Assert(err, IsNil)
c.Check(snapStates, HasLen, 1)
var snapst *snapstate.SnapState
for name, sst := range snapStates {
c.Assert(name, Equals, "name1")
snapst = sst
}
c.Check(snapst.Active, Equals, true)
c.Check(snapst.Current(), NotNil)
info12, err := snap.ReadInfo("name1", snapst.Current())
c.Assert(err, IsNil)
c.Check(info12.Name(), Equals, "name1")
c.Check(info12.Revision, Equals, 12)
c.Check(info12.Summary(), Equals, "s12")
c.Check(info12.Version, Equals, "1.2")
c.Check(info12.Description(), Equals, "Lots of text")
info11, err := snap.ReadInfo("name1", snapst.Sequence[0])
c.Assert(err, IsNil)
c.Check(info11.Name(), Equals, "name1")
c.Check(info11.Revision, Equals, 11)
c.Check(info11.Version, Equals, "1.1")
}
示例3: TestInstallSubequentLocalIntegration
func (s *snapmgrTestSuite) TestInstallSubequentLocalIntegration(c *C) {
s.state.Lock()
defer s.state.Unlock()
snapstate.Set(s.state, "mock", &snapstate.SnapState{
Active: true,
Sequence: []*snap.SideInfo{{Revision: 100002}},
LocalRevision: 100002,
})
mockSnap := makeTestSnap(c, `name: mock
version: 1.0`)
chg := s.state.NewChange("install", "install a local snap")
ts, err := snapstate.InstallPath(s.state, mockSnap, "", 0)
c.Assert(err, IsNil)
chg.AddAll(ts)
s.state.Unlock()
defer s.snapmgr.Stop()
s.settle()
s.state.Lock()
// ensure only local install was run, i.e. first action is check-snap
c.Assert(s.fakeBackend.ops, HasLen, 6)
c.Check(s.fakeBackend.ops[0].op, Equals, "check-snap")
c.Check(s.fakeBackend.ops[0].name, Matches, `.*/mock_1.0_all.snap`)
c.Check(s.fakeBackend.ops[2].op, Equals, "unlink-snap")
c.Check(s.fakeBackend.ops[2].name, Equals, "/snap/mock/100002")
c.Check(s.fakeBackend.ops[3].op, Equals, "copy-data")
c.Check(s.fakeBackend.ops[3].name, Equals, "/snap/mock/100003")
c.Check(s.fakeBackend.ops[3].old, Equals, "/snap/mock/100002")
c.Check(s.fakeBackend.ops[4].op, Equals, "candidate")
c.Check(s.fakeBackend.ops[4].sinfo, DeepEquals, snap.SideInfo{Revision: 100003})
c.Check(s.fakeBackend.ops[5].op, Equals, "link-snap")
c.Check(s.fakeBackend.ops[5].name, Equals, "/snap/mock/100003")
// verify snapSetup info
var ss snapstate.SnapSetup
task := ts.Tasks()[0]
err = task.Get("snap-setup", &ss)
c.Assert(err, IsNil)
c.Assert(ss, DeepEquals, snapstate.SnapSetup{
Name: "mock",
Revision: 100003,
SnapPath: mockSnap,
})
// verify snaps in the system state
var snapst snapstate.SnapState
err = snapstate.Get(s.state, "mock", &snapst)
c.Assert(err, IsNil)
c.Assert(snapst.Active, Equals, true)
c.Assert(snapst.Candidate, IsNil)
c.Assert(snapst.Sequence, HasLen, 2)
c.Assert(snapst.Current(), DeepEquals, &snap.SideInfo{
OfficialName: "",
Channel: "",
Revision: 100003,
})
c.Assert(snapst.LocalRevision, Equals, 100003)
}