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  }