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  }