github.com/makyo/juju@v0.0.0-20160425123129-2608902037e9/state/unit_assignment_test.go (about)

     1  // Copyright 2015 Canonical Ltd.
     2  // Licensed under the AGPLv3, see LICENCE file for details.
     3  
     4  package state_test
     5  
     6  import (
     7  	"github.com/juju/errors"
     8  	jc "github.com/juju/testing/checkers"
     9  	gc "gopkg.in/check.v1"
    10  
    11  	"github.com/juju/juju/instance"
    12  	"github.com/juju/juju/state"
    13  )
    14  
    15  type UnitAssignmentSuite struct {
    16  	ConnSuite
    17  }
    18  
    19  var _ = gc.Suite(&UnitAssignmentSuite{})
    20  
    21  func (s *UnitAssignmentSuite) testAddServiceUnitAssignment(c *gc.C) (*state.Service, []state.UnitAssignment) {
    22  	charm := s.AddTestingCharm(c, "dummy")
    23  	svc, err := s.State.AddService(state.AddServiceArgs{
    24  		Name: "dummy", Owner: s.Owner.String(),
    25  		Charm: charm, NumUnits: 2,
    26  		Placement: []*instance.Placement{{s.State.ModelUUID(), "abc"}},
    27  	})
    28  	units, err := svc.AllUnits()
    29  	c.Assert(err, jc.ErrorIsNil)
    30  	c.Assert(units, gc.HasLen, 2)
    31  	for _, u := range units {
    32  		_, err := u.AssignedMachineId()
    33  		c.Assert(err, jc.Satisfies, errors.IsNotAssigned)
    34  	}
    35  
    36  	assignments, err := s.State.AllUnitAssignments()
    37  	c.Assert(err, jc.ErrorIsNil)
    38  	c.Assert(assignments, jc.SameContents, []state.UnitAssignment{
    39  		{Unit: "dummy/0", Scope: s.State.ModelUUID(), Directive: "abc"},
    40  		{Unit: "dummy/1"},
    41  	})
    42  	return svc, assignments
    43  }
    44  
    45  func (s *UnitAssignmentSuite) TestAddServiceUnitAssignment(c *gc.C) {
    46  	s.testAddServiceUnitAssignment(c)
    47  }
    48  
    49  func (s *UnitAssignmentSuite) TestAssignStagedUnits(c *gc.C) {
    50  	svc, _ := s.testAddServiceUnitAssignment(c)
    51  
    52  	results, err := s.State.AssignStagedUnits([]string{
    53  		"dummy/0", "dummy/1",
    54  	})
    55  	c.Assert(err, jc.ErrorIsNil)
    56  	c.Assert(results, jc.SameContents, []state.UnitAssignmentResult{
    57  		{Unit: "dummy/0"},
    58  		{Unit: "dummy/1"},
    59  	})
    60  
    61  	units, err := svc.AllUnits()
    62  	c.Assert(err, jc.ErrorIsNil)
    63  	c.Assert(units, gc.HasLen, 2)
    64  	for _, u := range units {
    65  		_, err := u.AssignedMachineId()
    66  		c.Assert(err, jc.ErrorIsNil)
    67  	}
    68  
    69  	// There should be no staged assignments now.
    70  	assignments, err := s.State.AllUnitAssignments()
    71  	c.Assert(err, jc.ErrorIsNil)
    72  	c.Assert(assignments, gc.HasLen, 0)
    73  }