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  }