github.com/cloud-green/juju@v0.0.0-20151002100041-a00291338d3d/apiserver/metricsender/wireformat/wireformat_test.go (about) 1 // Copyright 2014 Canonical Ltd. 2 // Licensed under the AGPLv3, see LICENCE file for details. 3 4 package wireformat_test 5 6 import ( 7 "time" 8 9 jc "github.com/juju/testing/checkers" 10 gc "gopkg.in/check.v1" 11 12 "github.com/juju/juju/apiserver/metricsender/wireformat" 13 jujutesting "github.com/juju/juju/juju/testing" 14 "github.com/juju/juju/testing/factory" 15 ) 16 17 type WireFormatSuite struct { 18 jujutesting.JujuConnSuite 19 } 20 21 var _ = gc.Suite(&WireFormatSuite{}) 22 23 func (s *WireFormatSuite) TestToWire(c *gc.C) { 24 meteredCharm := s.Factory.MakeCharm(c, &factory.CharmParams{Name: "metered", URL: "cs:quantal/metered"}) 25 meteredService := s.Factory.MakeService(c, &factory.ServiceParams{Charm: meteredCharm}) 26 unit := s.Factory.MakeUnit(c, &factory.UnitParams{Service: meteredService, SetCharmURL: true}) 27 now := time.Now().Round(time.Second) 28 metric := s.Factory.MakeMetric(c, &factory.MetricParams{Unit: unit, Sent: false, Time: &now}) 29 result := wireformat.ToWire(metric) 30 m := metric.Metrics()[0] 31 metrics := []wireformat.Metric{ 32 { 33 Key: m.Key, 34 Value: m.Value, 35 Time: m.Time.UTC(), 36 }, 37 } 38 expected := &wireformat.MetricBatch{ 39 UUID: metric.UUID(), 40 EnvUUID: metric.EnvUUID(), 41 UnitName: metric.Unit(), 42 CharmUrl: metric.CharmURL(), 43 Created: metric.Created().UTC(), 44 Metrics: metrics, 45 Credentials: metric.Credentials(), 46 } 47 c.Assert(result, gc.DeepEquals, expected) 48 } 49 50 func (s *WireFormatSuite) TestAck(c *gc.C) { 51 resp := wireformat.EnvironmentResponses{} 52 c.Assert(resp, gc.HasLen, 0) 53 54 envUUID := "env-uuid" 55 envUUID2 := "env-uuid2" 56 batchUUID := "batch-uuid" 57 batchUUID2 := "batch-uuid2" 58 59 resp.Ack(envUUID, batchUUID) 60 resp.Ack(envUUID, batchUUID2) 61 resp.Ack(envUUID2, batchUUID) 62 c.Assert(resp, gc.HasLen, 2) 63 64 c.Assert(resp[envUUID].AcknowledgedBatches, jc.SameContents, []string{batchUUID, batchUUID2}) 65 c.Assert(resp[envUUID2].AcknowledgedBatches, jc.SameContents, []string{batchUUID}) 66 } 67 68 func (s *WireFormatSuite) TestSetStatus(c *gc.C) { 69 resp := wireformat.EnvironmentResponses{} 70 c.Assert(resp, gc.HasLen, 0) 71 72 envUUID := "env-uuid" 73 envUUID2 := "env-uuid2" 74 unitName := "some-unit/0" 75 unitName2 := "some-unit/1" 76 77 resp.SetStatus(envUUID, unitName, "GREEN", "") 78 c.Assert(resp, gc.HasLen, 1) 79 c.Assert(resp[envUUID].UnitStatuses[unitName].Status, gc.Equals, "GREEN") 80 c.Assert(resp[envUUID].UnitStatuses[unitName].Info, gc.Equals, "") 81 82 resp.SetStatus(envUUID, unitName2, "RED", "Unit unresponsive.") 83 c.Assert(resp, gc.HasLen, 1) 84 c.Assert(resp[envUUID].UnitStatuses[unitName].Status, gc.Equals, "GREEN") 85 c.Assert(resp[envUUID].UnitStatuses[unitName].Info, gc.Equals, "") 86 c.Assert(resp[envUUID].UnitStatuses[unitName2].Status, gc.Equals, "RED") 87 c.Assert(resp[envUUID].UnitStatuses[unitName2].Info, gc.Equals, "Unit unresponsive.") 88 89 resp.SetStatus(envUUID2, unitName, "UNKNOWN", "") 90 c.Assert(resp, gc.HasLen, 2) 91 c.Assert(resp[envUUID2].UnitStatuses[unitName].Status, gc.Equals, "UNKNOWN") 92 c.Assert(resp[envUUID2].UnitStatuses[unitName].Info, gc.Equals, "") 93 94 resp.SetStatus(envUUID, unitName, "RED", "Invalid data received.") 95 c.Assert(resp, gc.HasLen, 2) 96 c.Assert(resp[envUUID].UnitStatuses[unitName].Status, gc.Equals, "RED") 97 c.Assert(resp[envUUID].UnitStatuses[unitName].Info, gc.Equals, "Invalid data received.") 98 }