1
// Copyright 2015 Canonical Ltd.
2
// Licensed under the AGPLv3, see LICENCE file for details.
9
"github.com/juju/errors"
10
"github.com/juju/testing"
11
jc "github.com/juju/testing/checkers"
12
gc "gopkg.in/check.v1"
14
coretesting "github.com/juju/juju/testing"
15
"github.com/juju/juju/worker"
16
"github.com/juju/juju/worker/workertest"
19
type WorkerSuite struct {
20
testing.IsolationSuite
23
var _ = gc.Suite(&WorkerSuite{})
25
func (*WorkerSuite) TestStopReturnsNoError(c *gc.C) {
26
w := workertest.NewDeadWorker(nil)
29
c.Check(err, jc.ErrorIsNil)
32
func (*WorkerSuite) TestStopReturnsError(c *gc.C) {
33
w := workertest.NewDeadWorker(errors.New("pow"))
36
c.Check(err, gc.ErrorMatches, "pow")
39
func (*WorkerSuite) TestStopKills(c *gc.C) {
40
w := workertest.NewErrorWorker(nil)
41
defer workertest.CleanKill(c, w)
44
workertest.CheckKilled(c, w)
47
func (*WorkerSuite) TestStopWaits(c *gc.C) {
48
w := workertest.NewForeverWorker(nil)
49
defer workertest.CheckKilled(c, w)
52
done := make(chan struct{})
59
case <-time.After(coretesting.ShortWait):
61
c.Fatalf("Stop returned early")
68
case <-time.After(coretesting.LongWait):
69
c.Fatalf("Stop never returned")
73
func (*WorkerSuite) TestDeadAlready(c *gc.C) {
74
w := workertest.NewDeadWorker(nil)
77
case _, ok := <-worker.Dead(w):
78
c.Check(ok, jc.IsFalse)
79
case <-time.After(coretesting.LongWait):
80
c.Fatalf("Dead never sent")
84
func (*WorkerSuite) TestDeadWaits(c *gc.C) {
85
w := workertest.NewErrorWorker(nil)
86
defer workertest.CleanKill(c, w)
88
dead := worker.Dead(w)
90
case <-time.After(coretesting.ShortWait):
93
c.Fatalf("Dead closed early")
95
c.Fatalf("Dead sent unexpectedly")
101
case _, ok := <-dead:
102
c.Check(ok, jc.IsFalse)
103
case <-time.After(coretesting.LongWait):
104
c.Fatalf("Dead never closed")