github.com/niedbalski/juju@v0.0.0-20190215020005-8ff100488e47/worker/retrystrategy/worker_test.go (about) 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 "gopkg.in/juju/worker.v1" 13 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 }