func (s *unitMetricBatchesSuite) TestSendMetricBatchFail(c *gc.C) { var called bool uniter.PatchUnitResponse(s, s.apiUnit, "AddMetricBatches", func(response interface{}) error { called = true result := response.(*params.ErrorResults) result.Results = make([]params.ErrorResult, 1) result.Results[0].Error = common.ServerError(common.ErrPerm) return nil }) metrics := []params.Metric{{"pings", "5", time.Now().UTC()}} uuid := utils.MustNewUUID().String() batch := params.MetricBatch{ UUID: uuid, CharmURL: s.charm.URL().String(), Created: time.Now(), Metrics: metrics, } results, err := s.apiUnit.AddMetricBatches([]params.MetricBatch{batch}) c.Assert(err, jc.ErrorIsNil) c.Assert(results, gc.HasLen, 1) c.Assert(results[batch.UUID], gc.ErrorMatches, "permission denied") c.Assert(called, jc.IsTrue) }
func (s *unitSuite) TestWatchActionNotificationsNoResults(c *gc.C) { uniter.PatchUnitResponse(s, s.apiUnit, "WatchActionNotifications", func(results interface{}) error { return nil }, ) _, err := s.apiUnit.WatchActionNotifications() c.Assert(err.Error(), gc.Equals, "expected 1 result, got 0") }
func (s *unitSuite) TestWatchActionNotificationsError(c *gc.C) { uniter.PatchUnitResponse(s, s.apiUnit, "WatchActionNotifications", func(result interface{}) error { return fmt.Errorf("Test error") }, ) _, err := s.apiUnit.WatchActionNotifications() c.Assert(err.Error(), gc.Equals, "Test error") }
func (s *unitSuite) TestWatchActionsNoResults(c *gc.C) { cleanup := uniter.PatchUnitResponse(s.apiUnit, func(results interface{}) error { return nil }, ) defer cleanup() _, err := s.apiUnit.WatchActions() c.Assert(err.Error(), gc.Equals, "expected 1 result, got 0") }
func (s *unitSuite) TestWatchActionsError(c *gc.C) { cleanup := uniter.PatchUnitResponse(s.apiUnit, func(result interface{}) error { return fmt.Errorf("Test error") }, ) defer cleanup() _, err := s.apiUnit.WatchActions() c.Assert(err.Error(), gc.Equals, "Test error") }
func (s *unitSuite) TestAddMetricsError(c *gc.C) { uniter.PatchUnitResponse(s, s.apiUnit, "AddMetrics", func(results interface{}) error { result := results.(*params.ErrorResults) result.Results = make([]params.ErrorResult, 1) return fmt.Errorf("test error") }, ) metrics := []params.Metric{{"A", "23", time.Now()}, {"B", "27.0", time.Now()}} err := s.apiUnit.AddMetrics(metrics) c.Assert(err, gc.ErrorMatches, "unable to add metric: test error") }
func (s *unitSuite) TestAddMetrics(c *gc.C) { uniter.PatchUnitResponse(s, s.apiUnit, "AddMetrics", func(results interface{}) error { result := results.(*params.ErrorResults) result.Results = make([]params.ErrorResult, 1) return nil }, ) metrics := []params.Metric{{"A", "23", time.Now()}, {"B", "27.0", time.Now()}} err := s.apiUnit.AddMetrics(metrics) c.Assert(err, jc.ErrorIsNil) }
func (s *unitSuite) TestMeterStatusError(c *gc.C) { uniter.PatchUnitResponse(s, s.apiUnit, "GetMeterStatus", func(results interface{}) error { result := results.(*params.MeterStatusResults) result.Results = make([]params.MeterStatusResult, 1) return fmt.Errorf("boo") }, ) statusCode, statusInfo, err := s.apiUnit.MeterStatus() c.Assert(err, gc.ErrorMatches, "boo") c.Assert(statusCode, gc.Equals, "") c.Assert(statusInfo, gc.Equals, "") }
func (s *unitSuite) TestWatchActionNotificationsMoreResults(c *gc.C) { uniter.PatchUnitResponse(s, s.apiUnit, "WatchActionNotifications", func(results interface{}) error { if results, ok := results.(*params.StringsWatchResults); ok { results.Results = make([]params.StringsWatchResult, 2) } return nil }, ) _, err := s.apiUnit.WatchActionNotifications() c.Assert(err.Error(), gc.Equals, "expected 1 result, got 2") }
func (s *unitSuite) TestMeterStatus(c *gc.C) { uniter.PatchUnitResponse(s, s.apiUnit, "GetMeterStatus", func(results interface{}) error { result := results.(*params.MeterStatusResults) result.Results = make([]params.MeterStatusResult, 1) result.Results[0].Code = "GREEN" result.Results[0].Info = "All ok." return nil }, ) statusCode, statusInfo, err := s.apiUnit.MeterStatus() c.Assert(err, jc.ErrorIsNil) c.Assert(statusCode, gc.Equals, "GREEN") c.Assert(statusInfo, gc.Equals, "All ok.") }
func (s *unitSuite) TestAddMetricsResultError(c *gc.C) { uniter.PatchUnitResponse(s, s.apiUnit, "AddMetrics", func(results interface{}) error { result := results.(*params.ErrorResults) result.Results = make([]params.ErrorResult, 1) result.Results[0].Error = ¶ms.Error{ Message: "error adding metrics", Code: params.CodeNotAssigned, } return nil }, ) metrics := []params.Metric{{"A", "23", time.Now()}, {"B", "27.0", time.Now()}} err := s.apiUnit.AddMetrics(metrics) c.Assert(err, gc.ErrorMatches, "error adding metrics") }
func (s *unitSuite) TestMeterStatusResultError(c *gc.C) { uniter.PatchUnitResponse(s, s.apiUnit, "GetMeterStatus", func(results interface{}) error { result := results.(*params.MeterStatusResults) result.Results = make([]params.MeterStatusResult, 1) result.Results[0].Error = ¶ms.Error{ Message: "error getting meter status", Code: params.CodeNotAssigned, } return nil }, ) statusCode, statusInfo, err := s.apiUnit.MeterStatus() c.Assert(err, gc.ErrorMatches, "error getting meter status") c.Assert(statusCode, gc.Equals, "") c.Assert(statusInfo, gc.Equals, "") }
func (s *unitSuite) TestAvailabilityZone(c *gc.C) { uniter.PatchUnitResponse(s, s.apiUnit, "AvailabilityZone", func(result interface{}) error { if results, ok := result.(*params.StringResults); ok { results.Results = []params.StringResult{{ Result: "a-zone", }} } return nil }, ) zone, err := s.apiUnit.AvailabilityZone() c.Assert(err, jc.ErrorIsNil) c.Check(zone, gc.Equals, "a-zone") }
func (s *unitSuite) TestWatchActionNotificationsErrorResults(c *gc.C) { uniter.PatchUnitResponse(s, s.apiUnit, "WatchActionNotifications", func(results interface{}) error { if results, ok := results.(*params.StringsWatchResults); ok { results.Results = make([]params.StringsWatchResult, 1) results.Results[0] = params.StringsWatchResult{ Error: ¶ms.Error{ Message: "An error in the watch result.", Code: params.CodeNotAssigned, }, } } return nil }, ) _, err := s.apiUnit.WatchActionNotifications() c.Assert(err.Error(), gc.Equals, "An error in the watch result.") }