func (s *metricsManagerSuite) TestLastSuccessfulNotChangedIfNothingToSend(c *gc.C) { var sender testing.MockSender metricsmanager.PatchSender(&sender) args := params.Entities{Entities: []params.Entity{ {s.State.EnvironTag().String()}, }} result, err := s.metricsmanager.SendMetrics(args) c.Assert(err, jc.ErrorIsNil) c.Assert(result.Results[0].Error, gc.IsNil) mm, err := s.State.MetricsManager() c.Assert(err, jc.ErrorIsNil) c.Assert(mm.LastSuccessfulSend().Equal(time.Time{}), jc.IsTrue) }
func (s *metricsManagerSuite) TestMeterStatusSuccessfulSend(c *gc.C) { var sender testing.MockSender pastTime := time.Now().Add(-time.Second) metric := state.Metric{"pings", "5", pastTime} s.Factory.MakeMetric(c, &factory.MetricParams{Unit: s.unit, Sent: false, Time: &pastTime, Metrics: []state.Metric{metric}}) metricsmanager.PatchSender(&sender) args := params.Entities{Entities: []params.Entity{ {s.State.EnvironTag().String()}, }} result, err := s.metricsmanager.SendMetrics(args) c.Assert(err, jc.ErrorIsNil) c.Assert(result.Results[0].Error, gc.IsNil) mm, err := s.State.MetricsManager() c.Assert(err, jc.ErrorIsNil) c.Assert(mm.LastSuccessfulSend().After(pastTime), jc.IsTrue) }
func (s *metricsManagerSuite) TestMeterStatusOnConsecutiveErrors(c *gc.C) { var sender testing.ErrorSender sender.Err = errors.New("an error") now := time.Now() metric := state.Metric{"pings", "5", now} s.Factory.MakeMetric(c, &factory.MetricParams{Unit: s.unit, Sent: false, Time: &now, Metrics: []state.Metric{metric}}) metricsmanager.PatchSender(&sender) args := params.Entities{Entities: []params.Entity{ {s.State.EnvironTag().String()}, }} result, err := s.metricsmanager.SendMetrics(args) c.Assert(err, jc.ErrorIsNil) expectedError := params.ErrorResult{Error: apiservertesting.PrefixedError("failed to send metrics: ", "an error")} c.Assert(result.Results[0], jc.DeepEquals, expectedError) mm, err := s.State.MetricsManager() c.Assert(err, jc.ErrorIsNil) c.Assert(mm.ConsecutiveErrors(), gc.Equals, 1) }
func (s *metricsManagerSuite) TestSendMetrics(c *gc.C) { var sender testing.MockSender metricsmanager.PatchSender(&sender) now := time.Now() metric := state.Metric{"pings", "5", now} s.Factory.MakeMetric(c, &factory.MetricParams{Unit: s.unit, Sent: true, Time: &now, Metrics: []state.Metric{metric}}) unsent := s.Factory.MakeMetric(c, &factory.MetricParams{Unit: s.unit, Sent: false, Time: &now, Metrics: []state.Metric{metric}}) args := params.Entities{Entities: []params.Entity{ {s.State.EnvironTag().String()}, }} result, err := s.metricsmanager.SendMetrics(args) c.Assert(err, jc.ErrorIsNil) c.Assert(result.Results, gc.HasLen, 1) c.Assert(result.Results[0], gc.DeepEquals, params.ErrorResult{Error: nil}) c.Assert(sender.Data, gc.HasLen, 1) m, err := s.State.MetricBatch(unsent.UUID()) c.Assert(err, jc.ErrorIsNil) c.Assert(m.Sent(), jc.IsTrue) }