github.com/niedbalski/juju@v0.0.0-20190215020005-8ff100488e47/worker/uniter/runner/jujuc/jujuctesting/metrics.go (about) 1 // Copyright 2015 Canonical Ltd. 2 // Licensed under the AGPLv3, see LICENCE file for details. 3 4 package jujuctesting 5 6 import ( 7 "time" 8 9 "github.com/juju/errors" 10 11 "github.com/juju/juju/worker/uniter/runner/jujuc" 12 ) 13 14 // Metrics holds the values for the hook sub-context. 15 type Metrics struct { 16 Metrics []jujuc.Metric 17 } 18 19 // AddMetric adds a Metric for the provided data. 20 func (m *Metrics) AddMetric(key, value string, created time.Time) { 21 m.Metrics = append(m.Metrics, jujuc.Metric{ 22 Key: key, 23 Value: value, 24 Time: created, 25 }) 26 } 27 28 // AddMetricLabels adds a Metric with labels for the provided data. 29 func (m *Metrics) AddMetricLabels(key, value string, created time.Time, labels map[string]string) { 30 m.Metrics = append(m.Metrics, jujuc.Metric{ 31 Key: key, 32 Value: value, 33 Time: created, 34 Labels: labels, 35 }) 36 } 37 38 // ContextMetrics is a test double for jujuc.ContextMetrics. 39 type ContextMetrics struct { 40 contextBase 41 info *Metrics 42 } 43 44 // AddMetric implements jujuc.ContextMetrics. 45 func (c *ContextMetrics) AddMetric(key, value string, created time.Time) error { 46 c.stub.AddCall("AddMetric", key, value, created) 47 if err := c.stub.NextErr(); err != nil { 48 return errors.Trace(err) 49 } 50 51 c.info.AddMetric(key, value, created) 52 return nil 53 } 54 55 // AddMetricLabels implements jujuc.ContextMetrics. 56 func (c *ContextMetrics) AddMetricLabels(key, value string, created time.Time, labels map[string]string) error { 57 c.stub.AddCall("AddMetricLabels", key, value, created, labels) 58 if err := c.stub.NextErr(); err != nil { 59 return errors.Trace(err) 60 } 61 62 c.info.AddMetricLabels(key, value, created, labels) 63 return nil 64 }