github.com/cloudbase/juju-core@v0.0.0-20140504232958-a7271ac7912f/state/api/firewaller/firewaller_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  	stdtesting "testing"
     8  
     9  	gc "launchpad.net/gocheck"
    10  
    11  	"launchpad.net/juju-core/juju/testing"
    12  	"launchpad.net/juju-core/state"
    13  	"launchpad.net/juju-core/state/api"
    14  	"launchpad.net/juju-core/state/api/firewaller"
    15  	coretesting "launchpad.net/juju-core/testing"
    16  	"launchpad.net/juju-core/utils"
    17  )
    18  
    19  // NOTE: This suite is intended for embedding into other suites,
    20  // so common code can be reused. Do not add test cases to it,
    21  // otherwise they'll be run by each other suite that embeds it.
    22  type firewallerSuite struct {
    23  	testing.JujuConnSuite
    24  
    25  	st       *api.State
    26  	machines []*state.Machine
    27  	service  *state.Service
    28  	charm    *state.Charm
    29  	units    []*state.Unit
    30  
    31  	firewaller *firewaller.State
    32  }
    33  
    34  var _ = gc.Suite(&firewallerSuite{})
    35  
    36  func TestAll(t *stdtesting.T) {
    37  	coretesting.MgoTestPackage(t)
    38  }
    39  
    40  func (s *firewallerSuite) SetUpTest(c *gc.C) {
    41  	s.JujuConnSuite.SetUpTest(c)
    42  
    43  	// Reset previous machines and units (if any) and create 3
    44  	// machines for the tests. The first one is a manager node.
    45  	s.machines = make([]*state.Machine, 3)
    46  	s.units = make([]*state.Unit, 3)
    47  
    48  	var err error
    49  	s.machines[0], err = s.State.AddMachine("quantal", state.JobManageEnviron, state.JobHostUnits)
    50  	c.Assert(err, gc.IsNil)
    51  	password, err := utils.RandomPassword()
    52  	c.Assert(err, gc.IsNil)
    53  	err = s.machines[0].SetPassword(password)
    54  	c.Assert(err, gc.IsNil)
    55  	err = s.machines[0].SetProvisioned("i-manager", "fake_nonce", nil)
    56  	c.Assert(err, gc.IsNil)
    57  	s.st = s.OpenAPIAsMachine(c, s.machines[0].Tag(), password, "fake_nonce")
    58  	c.Assert(s.st, gc.NotNil)
    59  
    60  	// Note that the specific machine ids allocated are assumed
    61  	// to be numerically consecutive from zero.
    62  	for i := 1; i <= 2; i++ {
    63  		s.machines[i], err = s.State.AddMachine("quantal", state.JobHostUnits)
    64  		c.Check(err, gc.IsNil)
    65  	}
    66  	// Create a service and three units for these machines.
    67  	s.charm = s.AddTestingCharm(c, "wordpress")
    68  	s.service = s.AddTestingService(c, "wordpress", s.charm)
    69  	// Add the rest of the units and assign them.
    70  	for i := 0; i <= 2; i++ {
    71  		s.units[i], err = s.service.AddUnit()
    72  		c.Check(err, gc.IsNil)
    73  		err = s.units[i].AssignToMachine(s.machines[i])
    74  		c.Check(err, gc.IsNil)
    75  	}
    76  
    77  	// Create the firewaller API facade.
    78  	s.firewaller = s.st.Firewaller()
    79  	c.Assert(s.firewaller, gc.NotNil)
    80  }