github.com/mhilton/juju-juju@v0.0.0-20150901100907-a94dd2c73455/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  	"github.com/juju/utils"
     8  
     9  	"github.com/juju/juju/apiserver/metricsender/wireformat"
    10  )
    11  
    12  // MockSender implements the metric sender interface.
    13  type MockSender struct {
    14  	Data [][]*wireformat.MetricBatch
    15  }
    16  
    17  // Send implements the Send interface.
    18  func (m *MockSender) Send(d []*wireformat.MetricBatch) (*wireformat.Response, error) {
    19  	m.Data = append(m.Data, d)
    20  	respUUID, err := utils.NewUUID()
    21  	if err != nil {
    22  		return nil, err
    23  	}
    24  	var envResponses = make(wireformat.EnvironmentResponses)
    25  
    26  	for _, batch := range d {
    27  		envResponses.Ack(batch.EnvUUID, batch.UUID)
    28  	}
    29  	return &wireformat.Response{
    30  		UUID:         respUUID.String(),
    31  		EnvResponses: envResponses,
    32  	}, nil
    33  }
    34  
    35  // ErrorSender implements the metric sender interface and is used
    36  // to return errors during testing
    37  type ErrorSender struct {
    38  	Err error
    39  }
    40  
    41  // Send implements the Send interface returning errors specified in the ErrorSender.
    42  func (e *ErrorSender) Send(d []*wireformat.MetricBatch) (*wireformat.Response, error) {
    43  	return &wireformat.Response{}, e.Err
    44  }