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 }