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