github.com/cloud-green/juju@v0.0.0-20151002100041-a00291338d3d/worker/metrics/collect/context_test.go (about) 1 // Copyright 2015 Canonical Ltd. 2 // Licensed under the AGPLv3, see LICENCE file for details. 3 4 package collect_test 5 6 import ( 7 "runtime" 8 "time" 9 10 jc "github.com/juju/testing/checkers" 11 "github.com/juju/utils/keyvalues" 12 gc "gopkg.in/check.v1" 13 corecharm "gopkg.in/juju/charm.v6-unstable" 14 15 "github.com/juju/juju/worker/metrics/collect" 16 ) 17 18 type ContextSuite struct { 19 recorder *dummyRecorder 20 } 21 22 var _ = gc.Suite(&ContextSuite{}) 23 24 func (s *ContextSuite) SetUpTest(c *gc.C) { 25 s.recorder = &dummyRecorder{ 26 charmURL: "local:quantal/metered-1", 27 unitTag: "u/0", 28 metrics: map[string]corecharm.Metric{ 29 "pings": corecharm.Metric{ 30 Type: corecharm.MetricTypeGauge, 31 Description: "pings-desc", 32 }, 33 }, 34 } 35 } 36 37 func (s *ContextSuite) TestCtxDeclaredMetric(c *gc.C) { 38 ctx := collect.NewHookContext("u/0", s.recorder) 39 err := ctx.AddMetric("pings", "1", time.Now()) 40 c.Assert(err, jc.ErrorIsNil) 41 err = ctx.Flush("", nil) 42 c.Assert(err, jc.ErrorIsNil) 43 c.Assert(s.recorder.closed, jc.IsTrue) 44 c.Assert(s.recorder.batches, gc.HasLen, 1) 45 c.Assert(s.recorder.batches[0].Metrics, gc.HasLen, 1) 46 c.Assert(s.recorder.batches[0].Metrics[0].Key, gc.Equals, "pings") 47 c.Assert(s.recorder.batches[0].Metrics[0].Value, gc.Equals, "1") 48 } 49 50 type dummyPaths struct{} 51 52 func (*dummyPaths) GetToolsDir() string { return "/dummy/tools" } 53 func (*dummyPaths) GetCharmDir() string { return "/dummy/charm" } 54 func (*dummyPaths) GetJujucSocket() string { return "/dummy/jujuc.sock" } 55 func (*dummyPaths) GetMetricsSpoolDir() string { return "/dummy/spool" } 56 57 func (s *ContextSuite) TestHookContextEnv(c *gc.C) { 58 ctx := collect.NewHookContext("u/0", s.recorder) 59 paths := &dummyPaths{} 60 vars, err := ctx.HookVars(paths) 61 c.Assert(err, jc.ErrorIsNil) 62 varMap, err := keyvalues.Parse(vars, true) 63 c.Assert(err, jc.ErrorIsNil) 64 c.Assert(varMap["JUJU_AGENT_SOCKET"], gc.Equals, "/dummy/jujuc.sock") 65 c.Assert(varMap["JUJU_UNIT_NAME"], gc.Equals, "u/0") 66 key := "PATH" 67 if runtime.GOOS == "windows" { 68 key = "Path" 69 } 70 c.Assert(varMap[key], gc.Not(gc.Equals), "") 71 }