github.com/Pankov404/juju@v0.0.0-20150703034450-be266991dceb/state/leadership/manager_validation_test.go (about) 1 // Copyright 2015 Canonical Ltd. 2 // Licensed under the AGPLv3, see LICENCE file for details. 3 4 package leadership_test 5 6 import ( 7 "time" 8 9 "github.com/juju/testing" 10 gc "gopkg.in/check.v1" 11 12 "github.com/juju/juju/state/leadership" 13 ) 14 15 type ValidationSuite struct { 16 testing.IsolationSuite 17 } 18 19 var _ = gc.Suite(&ValidationSuite{}) 20 21 func (s *ValidationSuite) TestMissingClient(c *gc.C) { 22 manager, err := leadership.NewManager(leadership.ManagerConfig{ 23 Clock: NewClock(time.Now()), 24 }) 25 c.Check(err, gc.ErrorMatches, "missing client") 26 c.Check(manager, gc.IsNil) 27 } 28 29 func (s *ValidationSuite) TestMissingClock(c *gc.C) { 30 manager, err := leadership.NewManager(leadership.ManagerConfig{ 31 Client: NewClient(nil, nil), 32 }) 33 c.Check(err, gc.ErrorMatches, "missing clock") 34 c.Check(manager, gc.IsNil) 35 } 36 37 func (s *ValidationSuite) TestClaimLeadership_ServiceName(c *gc.C) { 38 fix := &Fixture{} 39 fix.RunTest(c, func(manager leadership.ManagerWorker, _ *Clock) { 40 err := manager.ClaimLeadership("foo/0", "bar/0", time.Minute) 41 c.Check(err, gc.ErrorMatches, `cannot claim leadership: invalid service name "foo/0"`) 42 }) 43 } 44 45 func (s *ValidationSuite) TestClaimLeadership_UnitName(c *gc.C) { 46 fix := &Fixture{} 47 fix.RunTest(c, func(manager leadership.ManagerWorker, _ *Clock) { 48 err := manager.ClaimLeadership("foo", "bar", time.Minute) 49 c.Check(err, gc.ErrorMatches, `cannot claim leadership: invalid unit name "bar"`) 50 }) 51 } 52 53 func (s *ValidationSuite) TestClaimLeadership_Duration(c *gc.C) { 54 fix := &Fixture{} 55 fix.RunTest(c, func(manager leadership.ManagerWorker, _ *Clock) { 56 err := manager.ClaimLeadership("foo", "bar/0", 0) 57 c.Check(err, gc.ErrorMatches, `cannot claim leadership: invalid duration 0`) 58 }) 59 } 60 61 func (s *ValidationSuite) TestCheckLeadership_ServiceName(c *gc.C) { 62 fix := &Fixture{} 63 fix.RunTest(c, func(manager leadership.ManagerWorker, _ *Clock) { 64 token, err := manager.CheckLeadership("foo/0", "bar/0") 65 c.Check(err, gc.ErrorMatches, `cannot check leadership: invalid service name "foo/0"`) 66 c.Check(token, gc.IsNil) 67 }) 68 } 69 70 func (s *ValidationSuite) TestCheckLeadership_UnitName(c *gc.C) { 71 fix := &Fixture{} 72 fix.RunTest(c, func(manager leadership.ManagerWorker, _ *Clock) { 73 token, err := manager.CheckLeadership("foo", "bar") 74 c.Check(err, gc.ErrorMatches, `cannot check leadership: invalid unit name "bar"`) 75 c.Check(token, gc.IsNil) 76 }) 77 } 78 79 func (s *ValidationSuite) TestBlockUntilLeadershipReleased_ServiceName(c *gc.C) { 80 fix := &Fixture{} 81 fix.RunTest(c, func(manager leadership.ManagerWorker, _ *Clock) { 82 err := manager.BlockUntilLeadershipReleased("foo/0") 83 c.Check(err, gc.ErrorMatches, `cannot wait for leaderlessness: invalid service name "foo/0"`) 84 }) 85 }