本文整理汇总了Golang中launchpad/net/juju-core/state/testing.AssertStop函数的典型用法代码示例。如果您正苦于以下问题:Golang AssertStop函数的具体用法?Golang AssertStop怎么用?Golang AssertStop使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了AssertStop函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: TestWatchUnits
func (s *deployerSuite) TestWatchUnits(c *gc.C) {
machine, err := s.st.Machine(s.machine.Tag())
c.Assert(err, gc.IsNil)
w, err := machine.WatchUnits()
c.Assert(err, gc.IsNil)
defer statetesting.AssertStop(c, w)
wc := statetesting.NewStringsWatcherC(c, s.BackingState, w)
// Initial event.
wc.AssertChange("mysql/0", "logging/0")
wc.AssertNoChange()
// Change something other than the lifecycle and make sure it's
// not detected.
err = s.subordinate.SetPassword("foo")
c.Assert(err, gc.IsNil)
wc.AssertNoChange()
// Make the subordinate dead and check it's detected.
err = s.subordinate.EnsureDead()
c.Assert(err, gc.IsNil)
wc.AssertChange("logging/0")
wc.AssertNoChange()
statetesting.AssertStop(c, w)
wc.AssertClosed()
}
示例2: TestWatch
func (s *machinerSuite) TestWatch(c *gc.C) {
machine, err := s.machiner.Machine("machine-0")
c.Assert(err, gc.IsNil)
c.Assert(machine.Life(), gc.Equals, params.Alive)
w, err := machine.Watch()
c.Assert(err, gc.IsNil)
defer statetesting.AssertStop(c, w)
wc := statetesting.NewNotifyWatcherC(c, s.BackingState, w)
// Initial event.
wc.AssertOneChange()
// Change something other than the lifecycle and make sure it's
// not detected.
err = machine.SetStatus(params.StatusStarted, "not really")
c.Assert(err, gc.IsNil)
wc.AssertNoChange()
// Make the machine dead and check it's detected.
err = machine.EnsureDead()
c.Assert(err, gc.IsNil)
wc.AssertOneChange()
statetesting.AssertStop(c, w)
wc.AssertClosed()
}
示例3: TestWatchService
func (s *ServiceSuite) TestWatchService(c *C) {
w := s.mysql.Watch()
defer testing.AssertStop(c, w)
// Initial event.
wc := testing.NewNotifyWatcherC(c, s.State, w)
wc.AssertOneChange()
// Make one change (to a separate instance), check one event.
service, err := s.State.Service(s.mysql.Name())
c.Assert(err, IsNil)
err = service.SetExposed()
c.Assert(err, IsNil)
wc.AssertOneChange()
// Make two changes, check one event.
err = service.ClearExposed()
c.Assert(err, IsNil)
err = service.SetCharm(s.charm, true)
c.Assert(err, IsNil)
wc.AssertOneChange()
// Stop, check closed.
testing.AssertStop(c, w)
wc.AssertClosed()
// Remove service, start new watch, check single event.
err = service.Destroy()
c.Assert(err, IsNil)
w = s.mysql.Watch()
defer testing.AssertStop(c, w)
testing.NewNotifyWatcherC(c, s.State, w).AssertOneChange()
}
示例4: TestWatch
func (s *uniterSuite) TestWatch(c *gc.C) {
unit, err := s.uniter.Unit("unit-wordpress-0")
c.Assert(err, gc.IsNil)
c.Assert(unit.Life(), gc.Equals, params.Alive)
w, err := unit.Watch()
c.Assert(err, gc.IsNil)
defer statetesting.AssertStop(c, w)
wc := statetesting.NewNotifyWatcherC(c, s.BackingState, w)
// Initial event.
wc.AssertOneChange()
// Change something other than the lifecycle and make sure it's
// not detected.
err = unit.SetStatus(params.StatusStarted, "not really")
c.Assert(err, gc.IsNil)
wc.AssertNoChange()
// Make the unit dead and check it's detected.
err = unit.EnsureDead()
c.Assert(err, gc.IsNil)
wc.AssertOneChange()
statetesting.AssertStop(c, w)
wc.AssertClosed()
}
示例5: TestContainerWatchScope
func (s *RelationUnitSuite) TestContainerWatchScope(c *C) {
prr := NewProReqRelation(c, &s.ConnSuite, charm.ScopeContainer)
// Test empty initial events for all RUs.
ws := prr.watches()
for _, w := range ws {
defer testing.AssertStop(c, w)
}
for _, w := range ws {
s.assertScopeChange(c, w, nil, nil)
}
s.assertNoScopeChange(c, ws...)
// pru0 enters; check detected only by same-container req.
err := prr.pru0.EnterScope(nil)
c.Assert(err, IsNil)
s.assertScopeChange(c, ws[2], []string{"mysql/0"}, nil)
s.assertNoScopeChange(c, ws...)
// req1 enters; check detected only by same-container pro.
err = prr.rru1.EnterScope(nil)
c.Assert(err, IsNil)
s.assertScopeChange(c, ws[1], []string{"logging/1"}, nil)
s.assertNoScopeChange(c, ws...)
// Stop watches; remaining RUs enter scope.
for _, w := range ws {
testing.AssertStop(c, w)
}
err = prr.pru1.EnterScope(nil)
c.Assert(err, IsNil)
err = prr.rru0.EnterScope(nil)
c.Assert(err, IsNil)
// Start new watches, check initial events.
ws = prr.watches()
for _, w := range ws {
defer testing.AssertStop(c, w)
}
s.assertScopeChange(c, ws[0], []string{"logging/0"}, nil)
s.assertScopeChange(c, ws[1], []string{"logging/1"}, nil)
s.assertScopeChange(c, ws[2], []string{"mysql/0"}, nil)
s.assertScopeChange(c, ws[3], []string{"mysql/1"}, nil)
s.assertNoScopeChange(c, ws...)
// pru0 leaves; check detected only by same-container req.
err = prr.pru0.LeaveScope()
c.Assert(err, IsNil)
s.assertScopeChange(c, ws[2], nil, []string{"mysql/0"})
s.assertNoScopeChange(c, ws...)
// rru0 leaves; check detected only by same-container pro.
err = prr.rru0.LeaveScope()
c.Assert(err, IsNil)
s.assertScopeChange(c, ws[0], nil, []string{"logging/0"})
s.assertNoScopeChange(c, ws...)
}
示例6: TestPeerWatchScope
func (s *RelationUnitSuite) TestPeerWatchScope(c *C) {
pr := NewPeerRelation(c, &s.ConnSuite)
// Test empty initial event.
w0 := pr.ru0.WatchScope()
defer testing.AssertStop(c, w0)
s.assertScopeChange(c, w0, nil, nil)
s.assertNoScopeChange(c, w0)
// ru0 enters; check no change, but settings written.
err := pr.ru0.EnterScope(map[string]interface{}{"foo": "bar"})
c.Assert(err, IsNil)
s.assertNoScopeChange(c, w0)
node, err := pr.ru0.Settings()
c.Assert(err, IsNil)
c.Assert(node.Map(), DeepEquals, map[string]interface{}{"foo": "bar"})
// ru1 enters; check change is observed.
err = pr.ru1.EnterScope(nil)
c.Assert(err, IsNil)
s.assertScopeChange(c, w0, []string{"riak/1"}, nil)
s.assertNoScopeChange(c, w0)
// ru1 enters again, check no problems and no changes.
err = pr.ru1.EnterScope(nil)
c.Assert(err, IsNil)
s.assertNoScopeChange(c, w0)
// Stop watching; ru2 enters.
testing.AssertStop(c, w0)
err = pr.ru2.EnterScope(nil)
c.Assert(err, IsNil)
// Start watch again, check initial event.
w0 = pr.ru0.WatchScope()
defer testing.AssertStop(c, w0)
s.assertScopeChange(c, w0, []string{"riak/1", "riak/2"}, nil)
s.assertNoScopeChange(c, w0)
// ru1 leaves; check event.
err = pr.ru1.LeaveScope()
c.Assert(err, IsNil)
s.assertScopeChange(c, w0, nil, []string{"riak/1"})
s.assertNoScopeChange(c, w0)
// ru1 leaves again; check no problems and no changes.
err = pr.ru1.LeaveScope()
c.Assert(err, IsNil)
s.assertNoScopeChange(c, w0)
}
示例7: TestWatchUnits
func (s *deployerSuite) TestWatchUnits(c *gc.C) {
c.Assert(s.resources.Count(), gc.Equals, 0)
args := params.Entities{Entities: []params.Entity{
{Tag: "machine-1"},
{Tag: "machine-0"},
{Tag: "machine-42"},
}}
result, err := s.deployer.WatchUnits(args)
c.Assert(err, gc.IsNil)
sort.Strings(result.Results[0].Changes)
c.Assert(result, gc.DeepEquals, params.StringsWatchResults{
Results: []params.StringsWatchResult{
{Changes: []string{"logging/0", "mysql/0"}, StringsWatcherId: "1"},
{Error: apiservertesting.ErrUnauthorized},
{Error: apiservertesting.ErrUnauthorized},
},
})
// Verify the resource was registered and stop when done
c.Assert(s.resources.Count(), gc.Equals, 1)
c.Assert(result.Results[0].StringsWatcherId, gc.Equals, "1")
resource := s.resources.Get("1")
defer statetesting.AssertStop(c, resource)
// Check that the Watch has consumed the initial event ("returned" in
// the Watch call)
wc := statetesting.NewStringsWatcherC(c, s.State, resource.(state.StringsWatcher))
wc.AssertNoChange()
}
示例8: TestWatch
func (s *uniterSuite) TestWatch(c *gc.C) {
c.Assert(s.resources.Count(), gc.Equals, 0)
args := params.Entities{Entities: []params.Entity{
{Tag: "unit-mysql-0"},
{Tag: "unit-wordpress-0"},
{Tag: "unit-foo-42"},
}}
result, err := s.uniter.Watch(args)
c.Assert(err, gc.IsNil)
c.Assert(result, gc.DeepEquals, params.NotifyWatchResults{
Results: []params.NotifyWatchResult{
{Error: apiservertesting.ErrUnauthorized},
{NotifyWatcherId: "1"},
{Error: apiservertesting.ErrUnauthorized},
},
})
// Verify the resource was registered and stop when done
c.Assert(s.resources.Count(), gc.Equals, 1)
c.Assert(result.Results[1].NotifyWatcherId, gc.Equals, "1")
resource := s.resources.Get("1")
defer statetesting.AssertStop(c, resource)
// Check that the Watch has consumed the initial event ("returned" in
// the Watch call)
wc := statetesting.NewNotifyWatcherC(c, s.State, resource.(state.NotifyWatcher))
wc.AssertNoChange()
}
示例9: TestWatchUnitsKeepsEvents
func (s *watcherSuite) TestWatchUnitsKeepsEvents(c *gc.C) {
// Create two services, relate them, and add one unit to each - a
// principal and a subordinate.
mysql, err := s.State.AddService("mysql", s.AddTestingCharm(c, "mysql"))
c.Assert(err, gc.IsNil)
logging, err := s.State.AddService("logging", s.AddTestingCharm(c, "logging"))
c.Assert(err, gc.IsNil)
eps, err := s.State.InferEndpoints([]string{"mysql", "logging"})
c.Assert(err, gc.IsNil)
rel, err := s.State.AddRelation(eps...)
c.Assert(err, gc.IsNil)
principal, err := mysql.AddUnit()
c.Assert(err, gc.IsNil)
err = principal.AssignToMachine(s.rawMachine)
c.Assert(err, gc.IsNil)
relUnit, err := rel.Unit(principal)
c.Assert(err, gc.IsNil)
err = relUnit.EnterScope(nil)
c.Assert(err, gc.IsNil)
subordinate, err := logging.Unit("logging/0")
c.Assert(err, gc.IsNil)
// Call the Deployer facade's WatchUnits for machine-0.
var results params.StringsWatchResults
args := params.Entities{Entities: []params.Entity{{Tag: s.rawMachine.Tag()}}}
err = s.stateAPI.Call("Deployer", "", "WatchUnits", args, &results)
c.Assert(err, gc.IsNil)
c.Assert(results.Results, gc.HasLen, 1)
result := results.Results[0]
c.Assert(result.Error, gc.IsNil)
// Start a StringsWatcher and check the initial event.
w := watcher.NewStringsWatcher(s.stateAPI, result)
wc := statetesting.NewStringsWatcherC(c, s.State, w)
wc.AssertChange("mysql/0", "logging/0")
wc.AssertNoChange()
// Now, without reading any changes advance the lifecycle of both
// units, inducing an update server-side after each two changes to
// ensure they're reported as separate events over the API.
err = subordinate.EnsureDead()
c.Assert(err, gc.IsNil)
s.BackingState.Sync()
err = subordinate.Remove()
c.Assert(err, gc.IsNil)
err = principal.EnsureDead()
c.Assert(err, gc.IsNil)
s.BackingState.Sync()
// Expect these changes as 2 separate events, so that
// nothing gets lost.
wc.AssertChange("logging/0")
wc.AssertChange("mysql/0")
wc.AssertNoChange()
statetesting.AssertStop(c, w)
wc.AssertClosed()
}
示例10: TestWatchMachine
func (s *MachineSuite) TestWatchMachine(c *C) {
w := s.machine.Watch()
defer testing.AssertStop(c, w)
// Initial event.
wc := testing.NewNotifyWatcherC(c, s.State, w)
wc.AssertOneChange()
// Make one change (to a separate instance), check one event.
machine, err := s.State.Machine(s.machine.Id())
c.Assert(err, IsNil)
err = machine.SetProvisioned("m-foo", "fake_nonce", nil)
c.Assert(err, IsNil)
wc.AssertOneChange()
// Make two changes, check one event.
err = machine.SetAgentTools(&tools.Tools{
URL: "foo",
Binary: version.MustParseBinary("0.0.3-series-arch"),
})
c.Assert(err, IsNil)
err = machine.Destroy()
c.Assert(err, IsNil)
wc.AssertOneChange()
// Stop, check closed.
testing.AssertStop(c, w)
wc.AssertClosed()
// Remove machine, start new watch, check single event.
err = machine.EnsureDead()
c.Assert(err, IsNil)
err = machine.Remove()
c.Assert(err, IsNil)
w = s.machine.Watch()
defer testing.AssertStop(c, w)
testing.NewNotifyWatcherC(c, s.State, w).AssertOneChange()
}
示例11: TestWatchAPIVersion
func (s *upgraderSuite) TestWatchAPIVersion(c *C) {
w, err := s.st.WatchAPIVersion(s.rawMachine.Tag())
c.Assert(err, IsNil)
defer statetesting.AssertStop(c, w)
wc := statetesting.NewNotifyWatcherC(c, s.BackingState, w)
// Initial event
wc.AssertOneChange()
vers := version.MustParse("10.20.34")
err = statetesting.SetAgentVersion(s.BackingState, vers)
c.Assert(err, IsNil)
// One change noticing the new version
wc.AssertOneChange()
// Setting the version to the same value doesn't trigger a change
err = statetesting.SetAgentVersion(s.BackingState, vers)
c.Assert(err, IsNil)
wc.AssertNoChange()
vers = version.MustParse("10.20.35")
err = statetesting.SetAgentVersion(s.BackingState, vers)
c.Assert(err, IsNil)
wc.AssertOneChange()
statetesting.AssertStop(c, w)
wc.AssertClosed()
}
示例12: TestWatchUnit
func (s *UnitSuite) TestWatchUnit(c *C) {
preventUnitDestroyRemove(c, s.unit)
w := s.unit.Watch()
defer testing.AssertStop(c, w)
// Initial event.
wc := testing.NewNotifyWatcherC(c, s.State, w)
wc.AssertOneChange()
// Make one change (to a separate instance), check one event.
unit, err := s.State.Unit(s.unit.Name())
c.Assert(err, IsNil)
err = unit.SetPublicAddress("example.foobar.com")
c.Assert(err, IsNil)
wc.AssertOneChange()
// Make two changes, check one event.
err = unit.SetPrivateAddress("example.foobar")
c.Assert(err, IsNil)
err = unit.Destroy()
c.Assert(err, IsNil)
wc.AssertOneChange()
// Stop, check closed.
testing.AssertStop(c, w)
wc.AssertClosed()
// Remove unit, start new watch, check single event.
err = unit.EnsureDead()
c.Assert(err, IsNil)
err = unit.Remove()
c.Assert(err, IsNil)
w = s.unit.Watch()
defer testing.AssertStop(c, w)
testing.NewNotifyWatcherC(c, s.State, w).AssertOneChange()
}
示例13: TestUpgraderSetsTools
func (s *UpgraderSuite) TestUpgraderSetsTools(c *gc.C) {
vers := version.MustParseBinary("5.4.3-foo-bar")
err := statetesting.SetAgentVersion(s.State, vers.Number)
c.Assert(err, gc.IsNil)
agentTools := s.primeTools(c, vers)
_, err = s.machine.AgentTools()
c.Assert(err, jc.Satisfies, errors.IsNotFoundError)
u := upgrader.New(s.state.Upgrader(), s.machine.Tag(), s.DataDir())
statetesting.AssertStop(c, u)
s.machine.Refresh()
gotTools, err := s.machine.AgentTools()
c.Assert(err, gc.IsNil)
c.Assert(gotTools, gc.DeepEquals, agentTools)
}
示例14: TestWatchMachine
func (s *watcherSuite) TestWatchMachine(c *gc.C) {
var results params.NotifyWatchResults
args := params.Entities{Entities: []params.Entity{{Tag: s.rawMachine.Tag()}}}
err := s.stateAPI.Call("Machiner", "", "Watch", args, &results)
c.Assert(err, gc.IsNil)
c.Assert(results.Results, gc.HasLen, 1)
result := results.Results[0]
c.Assert(result.Error, gc.IsNil)
// params.NotifyWatcher conforms to the state.NotifyWatcher interface
w := watcher.NewNotifyWatcher(s.stateAPI, result)
wc := statetesting.NewNotifyWatcherC(c, s.State, w)
wc.AssertOneChange()
statetesting.AssertStop(c, w)
wc.AssertClosed()
}
示例15: TestWatchUnitsLifecycle
func (s *ServiceSuite) TestWatchUnitsLifecycle(c *C) {
// Empty initial event when no units.
w := s.mysql.WatchUnits()
defer testing.AssertStop(c, w)
wc := testing.NewStringsWatcherC(c, s.State, w)
wc.AssertChange()
wc.AssertNoChange()
// Create one unit, check one change.
quick, err := s.mysql.AddUnit()
c.Assert(err, IsNil)
wc.AssertChange(quick.Name())
wc.AssertNoChange()
// Destroy that unit (short-circuited to removal), check one change.
err = quick.Destroy()
c.Assert(err, IsNil)
wc.AssertChange(quick.Name())
wc.AssertNoChange()
// Create another, check one change.
slow, err := s.mysql.AddUnit()
c.Assert(err, IsNil)
wc.AssertChange(slow.Name())
wc.AssertNoChange()
// Change unit itself, no change.
preventUnitDestroyRemove(c, slow)
wc.AssertNoChange()
// Make unit Dying, change detected.
err = slow.Destroy()
c.Assert(err, IsNil)
wc.AssertChange(slow.Name())
wc.AssertNoChange()
// Make unit Dead, change detected.
err = slow.EnsureDead()
c.Assert(err, IsNil)
wc.AssertChange(slow.Name())
wc.AssertNoChange()
// Remove unit, final change not detected.
err = slow.Remove()
c.Assert(err, IsNil)
wc.AssertNoChange()
}