github.com/juju/juju@v0.0.0-20240327075706-a90865de2538/worker/lease/manager_check_test.go (about) 1 // Copyright 2015 Canonical Ltd. 2 // Licensed under the AGPLv3, see LICENCE file for details. 3 4 package lease_test 5 6 import ( 7 "time" 8 9 "github.com/juju/clock/testclock" 10 "github.com/juju/errors" 11 "github.com/juju/testing" 12 jc "github.com/juju/testing/checkers" 13 gc "gopkg.in/check.v1" 14 15 corelease "github.com/juju/juju/core/lease" 16 "github.com/juju/juju/worker/lease" 17 ) 18 19 type TokenSuite struct { 20 testing.IsolationSuite 21 } 22 23 var _ = gc.Suite(&TokenSuite{}) 24 25 func (s *TokenSuite) TestSuccess(c *gc.C) { 26 fix := &Fixture{ 27 leases: map[corelease.Key]corelease.Info{ 28 key("redis"): { 29 Holder: "redis/0", 30 Expiry: offset(time.Second), 31 }, 32 }, 33 } 34 fix.RunTest(c, func(manager *lease.Manager, _ *testclock.Clock) { 35 token := getChecker(c, manager).Token("redis", "redis/0") 36 err := token.Check() 37 c.Check(err, jc.ErrorIsNil) 38 }) 39 } 40 41 func (s *TokenSuite) TestFailureMissing(c *gc.C) { 42 fix := &Fixture{} 43 fix.RunTest(c, func(manager *lease.Manager, _ *testclock.Clock) { 44 token := getChecker(c, manager).Token("redis", "redis/0") 45 err := token.Check() 46 c.Check(errors.Cause(err), gc.Equals, corelease.ErrNotHeld) 47 }) 48 } 49 50 func (s *TokenSuite) TestFailureOtherHolder(c *gc.C) { 51 fix := &Fixture{ 52 leases: map[corelease.Key]corelease.Info{ 53 key("redis"): { 54 Holder: "redis/99", 55 Expiry: offset(time.Second), 56 }, 57 }, 58 } 59 fix.RunTest(c, func(manager *lease.Manager, _ *testclock.Clock) { 60 token := getChecker(c, manager).Token("redis", "redis/0") 61 err := token.Check() 62 c.Check(errors.Cause(err), gc.Equals, corelease.ErrNotHeld) 63 }) 64 } 65 66 func getChecker(c *gc.C, manager *lease.Manager) corelease.Checker { 67 checker, err := manager.Checker("namespace", "modelUUID") 68 c.Assert(err, jc.ErrorIsNil) 69 return checker 70 }