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  }