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 }