github.com/makyo/juju@v0.0.0-20160425123129-2608902037e9/apiserver/metricsender/testing/mocksender.go (about)

     1  // Copyright 2012, 2013 Canonical Ltd.
     2  // Licensed under the AGPLv3, see LICENCE file for details.
     3  
     4  package testing
     5  
     6  import (
     7  	wireformat "github.com/juju/romulus/wireformat/metrics"
     8  	"github.com/juju/utils"
     9  )
    10  
    11  // MockSender implements the metric sender interface.
    12  type MockSender struct {
    13  	Data [][]*wireformat.MetricBatch
    14  }
    15  
    16  // Send implements the Send interface.
    17  func (m *MockSender) Send(d []*wireformat.MetricBatch) (*wireformat.Response, error) {
    18  	m.Data = append(m.Data, d)
    19  	respUUID, err := utils.NewUUID()
    20  	if err != nil {
    21  		return nil, err
    22  	}
    23  	var envResponses = make(wireformat.EnvironmentResponses)
    24  
    25  	for _, batch := range d {
    26  		envResponses.Ack(batch.ModelUUID, batch.UUID)
    27  	}
    28  	return &wireformat.Response{
    29  		UUID:         respUUID.String(),
    30  		EnvResponses: envResponses,
    31  	}, nil
    32  }
    33  
    34  // ErrorSender implements the metric sender interface and is used
    35  // to return errors during testing
    36  type ErrorSender struct {
    37  	Err error
    38  }
    39  
    40  // Send implements the Send interface returning errors specified in the ErrorSender.
    41  func (e *ErrorSender) Send(d []*wireformat.MetricBatch) (*wireformat.Response, error) {
    42  	return &wireformat.Response{}, e.Err
    43  }