// TestWatchMeterStatus tests the meter status watcher functionality. func TestWatchMeterStatus(c *gc.C, status meterstatus.MeterStatus, unit *jujustate.Unit, state *jujustate.State, resources *common.Resources) { c.Assert(resources.Count(), gc.Equals, 0) args := params.Entities{Entities: []params.Entity{ {Tag: unit.UnitTag().String()}, {Tag: "unit-foo-42"}, }} result, err := status.WatchMeterStatus(args) c.Assert(err, jc.ErrorIsNil) c.Assert(result, gc.DeepEquals, params.NotifyWatchResults{ Results: []params.NotifyWatchResult{ {NotifyWatcherId: "1"}, {Error: apiservertesting.ErrUnauthorized}, }, }) // Verify the resource was registered and stop when done c.Assert(resources.Count(), gc.Equals, 1) resource := resources.Get("1") defer statetesting.AssertStop(c, resource) // Check that the Watch has consumed the initial event ("returned" in // the Watch call) wc := statetesting.NewNotifyWatcherC(c, state, resource.(jujustate.NotifyWatcher)) wc.AssertNoChange() err = unit.SetMeterStatus("GREEN", "No additional information.") c.Assert(err, jc.ErrorIsNil) wc.AssertOneChange() }
func (s *VolumeStateSuite) assertMachineVolume(c *gc.C, unit *state.Unit) { assignedMachineId, err := unit.AssignedMachineId() c.Assert(err, jc.ErrorIsNil) storageAttachments, err := s.State.UnitStorageAttachments(unit.UnitTag()) c.Assert(err, jc.ErrorIsNil) c.Assert(storageAttachments, gc.HasLen, 1) storageInstance, err := s.State.StorageInstance(storageAttachments[0].StorageInstance()) c.Assert(err, jc.ErrorIsNil) volume := s.storageInstanceVolume(c, storageInstance.StorageTag()) c.Assert(volume.VolumeTag(), gc.Equals, names.NewVolumeTag("0/0")) volumeStorageTag, err := volume.StorageInstance() c.Assert(err, jc.ErrorIsNil) c.Assert(volumeStorageTag, gc.Equals, storageInstance.StorageTag()) _, err = volume.Info() c.Assert(err, jc.Satisfies, errors.IsNotProvisioned) _, ok := volume.Params() c.Assert(ok, jc.IsTrue) machine, err := s.State.Machine(assignedMachineId) c.Assert(err, jc.ErrorIsNil) volumeAttachments, err := s.State.MachineVolumeAttachments(machine.MachineTag()) c.Assert(err, jc.ErrorIsNil) c.Assert(volumeAttachments, gc.HasLen, 1) c.Assert(volumeAttachments[0].Volume(), gc.Equals, volume.VolumeTag()) c.Assert(volumeAttachments[0].Machine(), gc.Equals, machine.MachineTag()) _, err = volumeAttachments[0].Info() c.Assert(err, jc.Satisfies, errors.IsNotProvisioned) _, ok = volumeAttachments[0].Params() c.Assert(ok, jc.IsTrue) _, err = s.State.VolumeAttachment(machine.MachineTag(), volume.VolumeTag()) c.Assert(err, jc.ErrorIsNil) assertMachineStorageRefs(c, s.State, machine.MachineTag()) }