github.com/niedbalski/juju@v0.0.0-20190215020005-8ff100488e47/worker/dblogpruner/manifold_test.go (about) 1 // Copyright 2017 Canonical Ltd. 2 // Licensed under the AGPLv3, see LICENCE file for details. 3 4 package dblogpruner_test 5 6 import ( 7 "time" 8 9 "github.com/juju/errors" 10 "github.com/juju/testing" 11 jc "github.com/juju/testing/checkers" 12 gc "gopkg.in/check.v1" 13 "gopkg.in/juju/worker.v1" 14 "gopkg.in/juju/worker.v1/workertest" 15 16 "github.com/juju/juju/worker/dblogpruner" 17 ) 18 19 type ManifoldSuite struct { 20 testing.IsolationSuite 21 stub testing.Stub 22 config dblogpruner.ManifoldConfig 23 worker worker.Worker 24 } 25 26 var _ = gc.Suite(&ManifoldSuite{}) 27 28 func (s *ManifoldSuite) SetUpTest(c *gc.C) { 29 s.IsolationSuite.SetUpTest(c) 30 s.stub.ResetCalls() 31 s.config = s.validConfig() 32 s.worker = worker.NewRunner(worker.RunnerParams{}) 33 s.AddCleanup(func(c *gc.C) { workertest.DirtyKill(c, s.worker) }) 34 } 35 36 func (s *ManifoldSuite) validConfig() dblogpruner.ManifoldConfig { 37 return dblogpruner.ManifoldConfig{ 38 ClockName: "clock", 39 StateName: "state", 40 PruneInterval: time.Hour, 41 NewWorker: func(config dblogpruner.Config) (worker.Worker, error) { 42 s.stub.AddCall("NewWorker", config) 43 return s.worker, s.stub.NextErr() 44 }, 45 } 46 } 47 48 func (s *ManifoldSuite) TestValid(c *gc.C) { 49 c.Check(s.config.Validate(), jc.ErrorIsNil) 50 } 51 52 func (s *ManifoldSuite) TestMissingClockName(c *gc.C) { 53 s.config.ClockName = "" 54 s.checkNotValid(c, "empty ClockName not valid") 55 } 56 57 func (s *ManifoldSuite) TestMissingStateName(c *gc.C) { 58 s.config.StateName = "" 59 s.checkNotValid(c, "empty StateName not valid") 60 } 61 62 func (s *ManifoldSuite) TestZeroPruneInterval(c *gc.C) { 63 s.config.PruneInterval = 0 64 s.checkNotValid(c, "non-positive PruneInterval not valid") 65 } 66 67 func (s *ManifoldSuite) TestMissingNewWorker(c *gc.C) { 68 s.config.NewWorker = nil 69 s.checkNotValid(c, "nil NewWorker not valid") 70 } 71 72 func (s *ManifoldSuite) checkNotValid(c *gc.C, expect string) { 73 err := s.config.Validate() 74 c.Check(err, gc.ErrorMatches, expect) 75 c.Check(err, jc.Satisfies, errors.IsNotValid) 76 }