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 }