github.com/makyo/juju@v0.0.0-20160425123129-2608902037e9/cmd/jujud/agent/model/manifolds_test.go (about) 1 // Copyright 2016 Canonical Ltd. 2 // Licensed under the AGPLv3, see LICENCE file for details. 3 4 package model_test 5 6 import ( 7 gc "gopkg.in/check.v1" 8 9 "github.com/juju/testing" 10 jc "github.com/juju/testing/checkers" 11 "github.com/juju/utils/clock" 12 "github.com/juju/utils/set" 13 14 "github.com/juju/juju/cmd/jujud/agent/model" 15 "github.com/juju/juju/worker/workertest" 16 ) 17 18 type ManifoldsSuite struct { 19 testing.IsolationSuite 20 } 21 22 var _ = gc.Suite(&ManifoldsSuite{}) 23 24 func (s *ManifoldsSuite) TestNames(c *gc.C) { 25 actual := set.NewStrings() 26 manifolds := model.Manifolds(model.ManifoldsConfig{ 27 Agent: &mockAgent{}, 28 }) 29 for name := range manifolds { 30 actual.Add(name) 31 } 32 // NOTE: if this test failed, the cmd/jujud/agent tests will 33 // also fail. Search for 'ModelWorkers' to find affected vars. 34 c.Check(actual.Values(), jc.SameContents, []string{ 35 "address-cleaner", 36 "agent", 37 "api-caller", 38 "api-config-watcher", 39 "charm-revision-updater", 40 "clock", 41 "compute-provisioner", 42 "environ-tracker", 43 "firewaller", 44 "instance-poller", 45 "is-responsible-flag", 46 "metric-worker", 47 "migration-fortress", 48 "migration-master", 49 "not-alive-flag", 50 "not-dead-flag", 51 "service-scaler", 52 "space-importer", 53 "spaces-imported-gate", 54 "state-cleaner", 55 "status-history-pruner", 56 "storage-provisioner", 57 "undertaker", 58 "unit-assigner", 59 }) 60 } 61 62 func (s *ManifoldsSuite) TestResponsibleFlagDependencies(c *gc.C) { 63 exclusions := set.NewStrings( 64 "agent", 65 "api-caller", 66 "api-config-watcher", 67 "clock", 68 "spaces-imported-gate", 69 "is-responsible-flag", 70 "not-alive-flag", 71 "not-dead-flag", 72 ) 73 manifolds := model.Manifolds(model.ManifoldsConfig{ 74 Agent: &mockAgent{}, 75 }) 76 for name, manifold := range manifolds { 77 c.Logf("checking %s", name) 78 if exclusions.Contains(name) { 79 continue 80 } 81 inputs := set.NewStrings(manifold.Inputs...) 82 c.Check(inputs.Contains("is-responsible-flag"), jc.IsTrue) 83 } 84 } 85 86 func (s *ManifoldsSuite) TestClockWrapper(c *gc.C) { 87 expectClock := &fakeClock{} 88 manifolds := model.Manifolds(model.ManifoldsConfig{ 89 Agent: &mockAgent{}, 90 Clock: expectClock, 91 }) 92 manifold, ok := manifolds["clock"] 93 c.Assert(ok, jc.IsTrue) 94 worker, err := manifold.Start(nil) 95 c.Assert(err, jc.ErrorIsNil) 96 defer workertest.CheckKill(c, worker) 97 98 var clock clock.Clock 99 err = manifold.Output(worker, &clock) 100 c.Assert(err, jc.ErrorIsNil) 101 c.Check(clock, gc.Equals, expectClock) 102 } 103 104 type fakeClock struct{ clock.Clock }