1
// Copyright 2016 Canonical Ltd.
2
// Copyright 2016 Cloudbase Solutions
3
// Licensed under the AGPLv3, see LICENCE file for details.
5
package retrystrategy_test
8
"github.com/juju/errors"
9
"github.com/juju/testing"
10
jc "github.com/juju/testing/checkers"
11
gc "gopkg.in/check.v1"
13
"github.com/juju/juju/worker"
14
"github.com/juju/juju/worker/retrystrategy"
17
type WorkerSuite struct {
18
testing.IsolationSuite
21
var _ = gc.Suite(&WorkerSuite{})
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)
29
err := config.Validate()
32
worker, err := retrystrategy.NewRetryStrategyWorker(config)
34
c.Check(worker, gc.IsNil)
37
func (s WorkerSuite) TestValidateInvalidFacade(c *gc.C) {
38
s.testValidate(c, retrystrategy.WorkerConfig{}, "nil Facade not valid")
41
func (s WorkerSuite) TestValidateInvalidAgentTag(c *gc.C) {
42
s.testValidate(c, retrystrategy.WorkerConfig{
43
Facade: &stubFacade{},
44
}, "nil AgentTag not valid")
47
func (s WorkerSuite) TestValidateInvalidRetryStrategy(c *gc.C) {
48
s.testValidate(c, retrystrategy.WorkerConfig{
49
Facade: &stubFacade{},
51
}, "empty RetryStrategy not valid")
54
func (s WorkerSuite) TestWatchError(c *gc.C) {
55
fix := newFixture(c, errors.New("supersonybunduru"))
56
fix.Run(c, func(w worker.Worker) {
58
c.Assert(err, gc.ErrorMatches, "supersonybunduru")
60
fix.CheckCallNames(c, "WatchRetryStrategy")
63
func (s WorkerSuite) TestGetStrategyError(c *gc.C) {
64
fix := newFixture(c, nil, errors.New("blackfridaybunduru"))
65
fix.Run(c, func(w worker.Worker) {
67
c.Assert(err, gc.ErrorMatches, "blackfridaybunduru")
69
fix.CheckCallNames(c, "WatchRetryStrategy", "RetryStrategy")
72
func (s WorkerSuite) TestBounce(c *gc.C) {
73
fix := newFixture(c, nil, nil, nil)
74
fix.Run(c, func(w worker.Worker) {
76
c.Assert(err, gc.ErrorMatches, "bouncing retrystrategy worker to get new values")
78
fix.CheckCallNames(c, "WatchRetryStrategy", "RetryStrategy", "RetryStrategy")