github.com/niedbalski/juju@v0.0.0-20190215020005-8ff100488e47/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" 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": { 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 func (*dummyPaths) ComponentDir(name string) string { return "/dummy/" + name } 57 58 func (s *ContextSuite) TestHookContextEnv(c *gc.C) { 59 ctx := collect.NewHookContext("u/0", s.recorder) 60 paths := &dummyPaths{} 61 vars, err := ctx.HookVars(paths) 62 c.Assert(err, jc.ErrorIsNil) 63 varMap, err := keyvalues.Parse(vars, true) 64 c.Assert(err, jc.ErrorIsNil) 65 c.Assert(varMap["JUJU_AGENT_SOCKET"], gc.Equals, "/dummy/jujuc.sock") 66 c.Assert(varMap["JUJU_UNIT_NAME"], gc.Equals, "u/0") 67 c.Assert(varMap["JUJU_CHARM_DIR"], gc.Equals, "/dummy/charm") 68 c.Assert(varMap["CHARM_DIR"], gc.Equals, "/dummy/charm") 69 key := "PATH" 70 if runtime.GOOS == "windows" { 71 key = "Path" 72 } 73 c.Assert(varMap[key], gc.Not(gc.Equals), "") 74 }