~nskaggs/+junk/xenial-test

« back to all changes in this revision

Viewing changes to src/github.com/juju/juju/worker/retrystrategy/worker_test.go

  • Committer: Nicholas Skaggs
  • Date: 2016-10-24 20:56:05 UTC
  • Revision ID: nicholas.skaggs@canonical.com-20161024205605-z8lta0uvuhtxwzwl
Initi with beta15

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
// Copyright 2016 Canonical Ltd.
 
2
// Copyright 2016 Cloudbase Solutions
 
3
// Licensed under the AGPLv3, see LICENCE file for details.
 
4
 
 
5
package retrystrategy_test
 
6
 
 
7
import (
 
8
        "github.com/juju/errors"
 
9
        "github.com/juju/testing"
 
10
        jc "github.com/juju/testing/checkers"
 
11
        gc "gopkg.in/check.v1"
 
12
 
 
13
        "github.com/juju/juju/worker"
 
14
        "github.com/juju/juju/worker/retrystrategy"
 
15
)
 
16
 
 
17
type WorkerSuite struct {
 
18
        testing.IsolationSuite
 
19
}
 
20
 
 
21
var _ = gc.Suite(&WorkerSuite{})
 
22
 
 
23
func (s *WorkerSuite) testValidate(c *gc.C, config retrystrategy.WorkerConfig, errMsg string) {
 
24
        check := func(err error) {
 
25
                c.Check(err, gc.ErrorMatches, errMsg)
 
26
                c.Check(err, jc.Satisfies, errors.IsNotValid)
 
27
        }
 
28
 
 
29
        err := config.Validate()
 
30
        check(err)
 
31
 
 
32
        worker, err := retrystrategy.NewRetryStrategyWorker(config)
 
33
        check(err)
 
34
        c.Check(worker, gc.IsNil)
 
35
}
 
36
 
 
37
func (s WorkerSuite) TestValidateInvalidFacade(c *gc.C) {
 
38
        s.testValidate(c, retrystrategy.WorkerConfig{}, "nil Facade not valid")
 
39
}
 
40
 
 
41
func (s WorkerSuite) TestValidateInvalidAgentTag(c *gc.C) {
 
42
        s.testValidate(c, retrystrategy.WorkerConfig{
 
43
                Facade: &stubFacade{},
 
44
        }, "nil AgentTag not valid")
 
45
}
 
46
 
 
47
func (s WorkerSuite) TestValidateInvalidRetryStrategy(c *gc.C) {
 
48
        s.testValidate(c, retrystrategy.WorkerConfig{
 
49
                Facade:   &stubFacade{},
 
50
                AgentTag: &stubTag{},
 
51
        }, "empty RetryStrategy not valid")
 
52
}
 
53
 
 
54
func (s WorkerSuite) TestWatchError(c *gc.C) {
 
55
        fix := newFixture(c, errors.New("supersonybunduru"))
 
56
        fix.Run(c, func(w worker.Worker) {
 
57
                err := w.Wait()
 
58
                c.Assert(err, gc.ErrorMatches, "supersonybunduru")
 
59
        })
 
60
        fix.CheckCallNames(c, "WatchRetryStrategy")
 
61
}
 
62
 
 
63
func (s WorkerSuite) TestGetStrategyError(c *gc.C) {
 
64
        fix := newFixture(c, nil, errors.New("blackfridaybunduru"))
 
65
        fix.Run(c, func(w worker.Worker) {
 
66
                err := w.Wait()
 
67
                c.Assert(err, gc.ErrorMatches, "blackfridaybunduru")
 
68
        })
 
69
        fix.CheckCallNames(c, "WatchRetryStrategy", "RetryStrategy")
 
70
}
 
71
 
 
72
func (s WorkerSuite) TestBounce(c *gc.C) {
 
73
        fix := newFixture(c, nil, nil, nil)
 
74
        fix.Run(c, func(w worker.Worker) {
 
75
                err := w.Wait()
 
76
                c.Assert(err, gc.ErrorMatches, "bouncing retrystrategy worker to get new values")
 
77
        })
 
78
        fix.CheckCallNames(c, "WatchRetryStrategy", "RetryStrategy", "RetryStrategy")
 
79
}