github.com/cloud-green/juju@v0.0.0-20151002100041-a00291338d3d/worker/uniter/resolver/locker_test.go (about) 1 // Copyright 2015 Canonical Ltd. 2 // Licensed under the AGPLv3, see LICENCE file for details. 3 4 package resolver_test 5 6 import ( 7 jc "github.com/juju/testing/checkers" 8 gc "gopkg.in/check.v1" 9 "gopkg.in/juju/charm.v6-unstable/hooks" 10 11 "github.com/juju/juju/worker/uniter/hook" 12 "github.com/juju/juju/worker/uniter/operation" 13 "github.com/juju/juju/worker/uniter/resolver" 14 ) 15 16 type LockerSuite struct { 17 locker *mockCharmDirLocker 18 } 19 20 var _ = gc.Suite(&LockerSuite{}) 21 22 func (s *LockerSuite) SetUpTest(c *gc.C) { 23 s.locker = &mockCharmDirLocker{} 24 } 25 26 func (s *LockerSuite) TestNotAvailable(c *gc.C) { 27 resolver.UpdateCharmDir(operation.State{}, s.locker) 28 resolver.UpdateCharmDir(operation.State{Started: false}, s.locker) 29 resolver.UpdateCharmDir(operation.State{Started: true, Stopped: true}, s.locker) 30 resolver.UpdateCharmDir(operation.State{Started: false}, s.locker) 31 resolver.UpdateCharmDir(operation.State{Started: true, Stopped: false, Kind: operation.Install}, s.locker) 32 resolver.UpdateCharmDir(operation.State{Started: true, Stopped: false, Kind: operation.Upgrade}, s.locker) 33 resolver.UpdateCharmDir(operation.State{ 34 Started: true, 35 Stopped: false, 36 Kind: operation.RunHook, 37 Hook: &hook.Info{ 38 Kind: hooks.UpgradeCharm, 39 }, 40 }, s.locker) 41 42 c.Assert(s.locker.Calls(), gc.HasLen, 7) 43 for _, call := range s.locker.Calls() { 44 c.Assert(call.Args, jc.SameContents, []interface{}{false}) 45 } 46 } 47 48 func (s *LockerSuite) TestAvailable(c *gc.C) { 49 resolver.UpdateCharmDir(operation.State{Started: true, Stopped: false}, s.locker) 50 resolver.UpdateCharmDir(operation.State{Started: true, Stopped: false, Kind: operation.Continue}, s.locker) 51 resolver.UpdateCharmDir(operation.State{Started: true, Stopped: false, Kind: operation.RunAction}, s.locker) 52 resolver.UpdateCharmDir(operation.State{ 53 Started: true, 54 Stopped: false, 55 Kind: operation.RunHook, 56 Hook: &hook.Info{ 57 Kind: hooks.ConfigChanged, 58 }, 59 }, s.locker) 60 61 c.Assert(s.locker.Calls(), gc.HasLen, 4) 62 for _, call := range s.locker.Calls() { 63 c.Assert(call.Args, jc.SameContents, []interface{}{true}) 64 } 65 }