本文整理汇总了Golang中github.com/wallyworld/core/worker.Stop函数的典型用法代码示例。如果您正苦于以下问题:Golang Stop函数的具体用法?Golang Stop怎么用?Golang Stop使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了Stop函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: TestPublisherSetsAPIHostPorts
func (s *workerJujuConnSuite) TestPublisherSetsAPIHostPorts(c *gc.C) {
st := newFakeState()
initState(c, st, 3)
watcher := s.State.WatchAPIHostPorts()
cwatch := statetesting.NewNotifyWatcherC(c, s.State, watcher)
cwatch.AssertOneChange()
statePublish := newPublisher(s.State)
// Wrap the publisher so that we can call StartSync immediately
// after the publishAPIServers method is called.
publish := func(apiServers [][]instance.HostPort, instanceIds []instance.Id) error {
err := statePublish.publishAPIServers(apiServers, instanceIds)
s.State.StartSync()
return err
}
w := newWorker(st, publisherFunc(publish))
defer func() {
c.Check(worker.Stop(w), gc.IsNil)
}()
cwatch.AssertOneChange()
hps, err := s.State.APIHostPorts()
c.Assert(err, gc.IsNil)
assertAPIHostPorts(c, hps, expectedAPIHostPorts(3))
}
示例2: TestWithIsMasterTrue
func (s *singularSuite) TestWithIsMasterTrue(c *gc.C) {
// When IsMaster returns true, workers get started on the underlying
// runner as usual.
s.PatchValue(&singular.PingInterval, 1*time.Millisecond)
underlyingRunner := newRunner()
conn := &fakeConn{
isMaster: true,
}
r, err := singular.New(underlyingRunner, conn)
c.Assert(err, gc.IsNil)
started := make(chan struct{}, 1)
err = r.StartWorker("worker", func() (worker.Worker, error) {
return worker.NewSimpleWorker(func(stop <-chan struct{}) error {
started <- struct{}{}
<-stop
return nil
}), nil
})
select {
case <-started:
case <-time.After(testing.LongWait):
c.Fatalf("timed out waiting for worker to start")
}
err = worker.Stop(r)
c.Assert(err, gc.IsNil)
}
示例3: TestStateServersArePublished
func (s *workerSuite) TestStateServersArePublished(c *gc.C) {
publishCh := make(chan [][]instance.HostPort)
publish := func(apiServers [][]instance.HostPort, instanceIds []instance.Id) error {
publishCh <- apiServers
return nil
}
st := newFakeState()
initState(c, st, 3)
w := newWorker(st, publisherFunc(publish))
defer func() {
c.Check(worker.Stop(w), gc.IsNil)
}()
select {
case servers := <-publishCh:
assertAPIHostPorts(c, servers, expectedAPIHostPorts(3))
case <-time.After(coretesting.LongWait):
c.Fatalf("timed out waiting for publish")
}
// Change one of the servers' API addresses and check that it's published.
newMachine10APIHostPorts := addressesWithPort(apiPort, "0.2.8.124")
st.machine("10").setAPIHostPorts(newMachine10APIHostPorts)
select {
case servers := <-publishCh:
expected := expectedAPIHostPorts(3)
expected[0] = newMachine10APIHostPorts
assertAPIHostPorts(c, servers, expected)
case <-time.After(coretesting.LongWait):
c.Fatalf("timed out waiting for publish")
}
}
示例4: TestWorkerPublishesInstanceIds
func (s *workerSuite) TestWorkerPublishesInstanceIds(c *gc.C) {
s.PatchValue(&pollInterval, coretesting.LongWait+time.Second)
s.PatchValue(&initialRetryInterval, 5*time.Millisecond)
s.PatchValue(&maxRetryInterval, initialRetryInterval)
publishCh := make(chan []instance.Id, 100)
publish := func(apiServers [][]instance.HostPort, instanceIds []instance.Id) error {
publishCh <- instanceIds
return nil
}
st := newFakeState()
initState(c, st, 3)
w := newWorker(st, publisherFunc(publish))
defer func() {
c.Check(worker.Stop(w), gc.IsNil)
}()
select {
case instanceIds := <-publishCh:
c.Assert(instanceIds, jc.SameContents, []instance.Id{"id-10", "id-11", "id-12"})
case <-time.After(coretesting.LongWait):
c.Errorf("timed out waiting for publish")
}
}
示例5: TestOneWorkerStartWhenStopping
func (*runnerSuite) TestOneWorkerStartWhenStopping(c *gc.C) {
worker.RestartDelay = 3 * time.Second
runner := worker.NewRunner(allFatal, noImportance)
starter := newTestWorkerStarter()
starter.stopWait = make(chan struct{})
err := runner.StartWorker("id", testWorkerStart(starter))
c.Assert(err, gc.IsNil)
starter.assertStarted(c, true)
err = runner.StopWorker("id")
c.Assert(err, gc.IsNil)
err = runner.StartWorker("id", testWorkerStart(starter))
c.Assert(err, gc.IsNil)
close(starter.stopWait)
starter.assertStarted(c, false)
// Check that the task is restarted immediately without
// the usual restart timeout delay.
t0 := time.Now()
starter.assertStarted(c, true)
restartDuration := time.Since(t0)
if restartDuration > 1*time.Second {
c.Fatalf("task did not restart immediately")
}
c.Assert(worker.Stop(runner), gc.IsNil)
}
示例6: TestAddressChange
func (s *workerSuite) TestAddressChange(c *gc.C) {
st := newFakeState()
initState(c, st, 3)
memberWatcher := st.session.members.Watch()
mustNext(c, memberWatcher)
assertMembers(c, memberWatcher.Value(), mkMembers("0v"))
logger.Infof("starting worker")
w := newWorker(st, noPublisher{})
defer func() {
c.Check(worker.Stop(w), gc.IsNil)
}()
// Wait for the worker to set the initial members.
mustNext(c, memberWatcher)
assertMembers(c, memberWatcher.Value(), mkMembers("0v 1 2"))
// Change an address and wait for it to be changed in the
// members.
st.machine("11").setStateHostPort("0.1.99.99:9876")
mustNext(c, memberWatcher)
expectMembers := mkMembers("0v 1 2")
expectMembers[1].Address = "0.1.99.99:9876"
assertMembers(c, memberWatcher.Value(), expectMembers)
}
示例7: TestStop
func (s *notifyWorkerSuite) TestStop(c *gc.C) {
err := worker.Stop(s.worker)
c.Assert(err, gc.IsNil)
// After stop, Wait should return right away
err = waitShort(c, s.worker)
c.Assert(err, gc.IsNil)
}
示例8: TestSetDead
func (s *MachinerSuite) TestSetDead(c *gc.C) {
mr := s.makeMachiner()
defer worker.Stop(mr)
c.Assert(s.machine.Destroy(), gc.IsNil)
s.State.StartSync()
c.Assert(mr.Wait(), gc.Equals, worker.ErrTerminateAgent)
c.Assert(s.machine.Refresh(), gc.IsNil)
c.Assert(s.machine.Life(), gc.Equals, state.Dead)
}
示例9: TestOneWorkerStart
func (*runnerSuite) TestOneWorkerStart(c *gc.C) {
runner := worker.NewRunner(noneFatal, noImportance)
starter := newTestWorkerStarter()
err := runner.StartWorker("id", testWorkerStart(starter))
c.Assert(err, gc.IsNil)
starter.assertStarted(c, true)
c.Assert(worker.Stop(runner), gc.IsNil)
starter.assertStarted(c, false)
}
示例10: TestInitialStateLocalMachine1
func (s *MachineEnvironmentWatcherSuite) TestInitialStateLocalMachine1(c *gc.C) {
proxySettings, aptProxySettings := s.updateConfig(c)
agentConfig := agentConfig("1", provider.Local)
envWorker := s.makeWorker(c, agentConfig)
defer worker.Stop(envWorker)
s.waitProxySettings(c, proxySettings)
s.waitForFile(c, s.proxyFile, proxySettings.AsScriptEnvironment()+"\n")
s.waitForFile(c, utils.AptConfFile, utils.AptProxyContent(aptProxySettings)+"\n")
}
示例11: TestStartSetsStatus
func (s *MachinerSuite) TestStartSetsStatus(c *gc.C) {
status, info, _, err := s.machine.Status()
c.Assert(err, gc.IsNil)
c.Assert(status, gc.Equals, params.StatusPending)
c.Assert(info, gc.Equals, "")
mr := s.makeMachiner()
defer worker.Stop(mr)
s.waitMachineStatus(c, s.machine, params.StatusStarted)
}
示例12: TestRespondsToEvents
func (s *MachineEnvironmentWatcherSuite) TestRespondsToEvents(c *gc.C) {
agentConfig := agentConfig("0", "ec2")
envWorker := s.makeWorker(c, agentConfig)
defer worker.Stop(envWorker)
s.waitForPostSetup(c)
proxySettings, aptProxySettings := s.updateConfig(c)
s.waitProxySettings(c, proxySettings)
s.waitForFile(c, s.proxyFile, proxySettings.AsScriptEnvironment()+"\n")
s.waitForFile(c, utils.AptConfFile, utils.AptProxyContent(aptProxySettings)+"\n")
}
示例13: TestInitialStateLocalMachine0
func (s *MachineEnvironmentWatcherSuite) TestInitialStateLocalMachine0(c *gc.C) {
proxySettings, _ := s.updateConfig(c)
agentConfig := agentConfig("0", provider.Local)
envWorker := s.makeWorker(c, agentConfig)
defer worker.Stop(envWorker)
s.waitForPostSetup(c)
s.waitProxySettings(c, proxySettings)
c.Assert(utils.AptConfFile, jc.DoesNotExist)
c.Assert(s.proxyFile, jc.DoesNotExist)
}
示例14: TestChangesTriggerHandler
func (s *stringsWorkerSuite) TestChangesTriggerHandler(c *gc.C) {
s.actor.CheckActions(c, "setup")
s.actor.watcher.TriggerChange(c, []string{"aa", "bb"})
waitForHandledStrings(c, s.actor.handled, []string{"aa", "bb"})
s.actor.CheckActions(c, "setup", "handler")
s.actor.watcher.TriggerChange(c, []string{"cc", "dd"})
waitForHandledStrings(c, s.actor.handled, []string{"cc", "dd"})
s.actor.watcher.TriggerChange(c, []string{"ee", "ff"})
waitForHandledStrings(c, s.actor.handled, []string{"ee", "ff"})
s.actor.CheckActions(c, "setup", "handler", "handler", "handler")
c.Assert(worker.Stop(s.worker), gc.IsNil)
s.actor.CheckActions(c, "setup", "handler", "handler", "handler", "teardown")
}
示例15: TestChangesTriggerHandler
func (s *notifyWorkerSuite) TestChangesTriggerHandler(c *gc.C) {
s.actor.CheckActions(c, "setup")
s.actor.watcher.TriggerChange(c)
waitForHandledNotify(c, s.actor.handled)
s.actor.CheckActions(c, "setup", "handler")
s.actor.watcher.TriggerChange(c)
waitForHandledNotify(c, s.actor.handled)
s.actor.watcher.TriggerChange(c)
waitForHandledNotify(c, s.actor.handled)
s.actor.CheckActions(c, "setup", "handler", "handler", "handler")
c.Assert(worker.Stop(s.worker), gc.IsNil)
s.actor.CheckActions(c, "setup", "handler", "handler", "handler", "teardown")
}