github.com/cloudbase/juju-core@v0.0.0-20140504232958-a7271ac7912f/state/api/firewaller/state_test.go (about) 1 // Copyright 2013 Canonical Ltd. 2 // Licensed under the AGPLv3, see LICENCE file for details. 3 4 package firewaller_test 5 6 import ( 7 gc "launchpad.net/gocheck" 8 9 "launchpad.net/juju-core/environs/config" 10 "launchpad.net/juju-core/instance" 11 "launchpad.net/juju-core/state" 12 statetesting "launchpad.net/juju-core/state/testing" 13 jc "launchpad.net/juju-core/testing/checkers" 14 ) 15 16 type stateSuite struct { 17 firewallerSuite 18 } 19 20 var _ = gc.Suite(&stateSuite{}) 21 22 func (s *stateSuite) SetUpTest(c *gc.C) { 23 s.firewallerSuite.SetUpTest(c) 24 } 25 26 func (s *stateSuite) TearDownTest(c *gc.C) { 27 s.firewallerSuite.TearDownTest(c) 28 } 29 30 func (s *stateSuite) TestWatchEnvironMachines(c *gc.C) { 31 w, err := s.firewaller.WatchEnvironMachines() 32 c.Assert(err, gc.IsNil) 33 defer statetesting.AssertStop(c, w) 34 wc := statetesting.NewStringsWatcherC(c, s.BackingState, w) 35 36 // Initial event. 37 wc.AssertChange(s.machines[0].Id(), s.machines[1].Id(), s.machines[2].Id()) 38 39 // Add another machine make sure they are detected. 40 otherMachine, err := s.State.AddMachine("quantal", state.JobHostUnits) 41 c.Assert(err, gc.IsNil) 42 wc.AssertChange(otherMachine.Id()) 43 44 // Change the life cycle of last machine. 45 err = otherMachine.EnsureDead() 46 c.Assert(err, gc.IsNil) 47 wc.AssertChange(otherMachine.Id()) 48 49 // Add a container and make sure it's not detected. 50 template := state.MachineTemplate{ 51 Series: "quantal", 52 Jobs: []state.MachineJob{state.JobHostUnits}, 53 } 54 _, err = s.State.AddMachineInsideMachine(template, s.machines[0].Id(), instance.LXC) 55 c.Assert(err, gc.IsNil) 56 wc.AssertNoChange() 57 58 statetesting.AssertStop(c, w) 59 wc.AssertClosed() 60 } 61 62 func (s *stateSuite) TestEnvironConfig(c *gc.C) { 63 envConfig, err := s.State.EnvironConfig() 64 c.Assert(err, gc.IsNil) 65 66 conf, err := s.firewaller.EnvironConfig() 67 c.Assert(err, gc.IsNil) 68 c.Assert(conf, jc.DeepEquals, envConfig) 69 } 70 71 func (s *stateSuite) TestWatchForEnvironConfigChanges(c *gc.C) { 72 envConfig, err := s.State.EnvironConfig() 73 c.Assert(err, gc.IsNil) 74 75 w, err := s.firewaller.WatchForEnvironConfigChanges() 76 c.Assert(err, gc.IsNil) 77 defer statetesting.AssertStop(c, w) 78 wc := statetesting.NewNotifyWatcherC(c, s.BackingState, w) 79 80 // Initial event. 81 wc.AssertOneChange() 82 83 // Change the environment configuration, check it's detected. 84 attrs := envConfig.AllAttrs() 85 attrs["type"] = "blah" 86 newConfig, err := config.New(config.NoDefaults, attrs) 87 c.Assert(err, gc.IsNil) 88 err = s.State.SetEnvironConfig(newConfig, envConfig) 89 c.Assert(err, gc.IsNil) 90 wc.AssertOneChange() 91 92 // Change it back to the original config. 93 err = s.State.SetEnvironConfig(envConfig, newConfig) 94 c.Assert(err, gc.IsNil) 95 wc.AssertOneChange() 96 97 statetesting.AssertStop(c, w) 98 wc.AssertClosed() 99 }