github.com/mattyw/juju@v0.0.0-20140610034352-732aecd63861/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 "github.com/juju/juju/instance" 10 "github.com/juju/juju/state" 11 apitesting "github.com/juju/juju/state/api/testing" 12 statetesting "github.com/juju/juju/state/testing" 13 ) 14 15 type stateSuite struct { 16 firewallerSuite 17 *apitesting.EnvironWatcherTests 18 } 19 20 var _ = gc.Suite(&stateSuite{}) 21 22 func (s *stateSuite) SetUpTest(c *gc.C) { 23 s.firewallerSuite.SetUpTest(c) 24 s.EnvironWatcherTests = apitesting.NewEnvironWatcherTests(s.firewaller, s.BackingState, true) 25 } 26 27 func (s *stateSuite) TearDownTest(c *gc.C) { 28 s.firewallerSuite.TearDownTest(c) 29 } 30 31 func (s *stateSuite) TestWatchEnvironMachines(c *gc.C) { 32 w, err := s.firewaller.WatchEnvironMachines() 33 c.Assert(err, gc.IsNil) 34 defer statetesting.AssertStop(c, w) 35 wc := statetesting.NewStringsWatcherC(c, s.BackingState, w) 36 37 // Initial event. 38 wc.AssertChange(s.machines[0].Id(), s.machines[1].Id(), s.machines[2].Id()) 39 40 // Add another machine make sure they are detected. 41 otherMachine, err := s.State.AddMachine("quantal", state.JobHostUnits) 42 c.Assert(err, gc.IsNil) 43 wc.AssertChange(otherMachine.Id()) 44 45 // Change the life cycle of last machine. 46 err = otherMachine.EnsureDead() 47 c.Assert(err, gc.IsNil) 48 wc.AssertChange(otherMachine.Id()) 49 50 // Add a container and make sure it's not detected. 51 template := state.MachineTemplate{ 52 Series: "quantal", 53 Jobs: []state.MachineJob{state.JobHostUnits}, 54 } 55 _, err = s.State.AddMachineInsideMachine(template, s.machines[0].Id(), instance.LXC) 56 c.Assert(err, gc.IsNil) 57 wc.AssertNoChange() 58 59 statetesting.AssertStop(c, w) 60 wc.AssertClosed() 61 }