github.com/axw/juju@v0.0.0-20161005053422-4bd6544d08d4/api/metricsmanager/client_test.go (about)

     1  // Copyright 2014 Canonical Ltd.
     2  // Licensed under the AGPLv3, see LICENCE file for details.
     3  
     4  package metricsmanager_test
     5  
     6  import (
     7  	jc "github.com/juju/testing/checkers"
     8  	gc "gopkg.in/check.v1"
     9  
    10  	"github.com/juju/juju/api/metricsmanager"
    11  	"github.com/juju/juju/apiserver/common"
    12  	"github.com/juju/juju/apiserver/params"
    13  	jujutesting "github.com/juju/juju/juju/testing"
    14  )
    15  
    16  type metricsManagerSuite struct {
    17  	jujutesting.JujuConnSuite
    18  
    19  	manager *metricsmanager.Client
    20  }
    21  
    22  var _ = gc.Suite(&metricsManagerSuite{})
    23  
    24  func (s *metricsManagerSuite) SetUpTest(c *gc.C) {
    25  	s.JujuConnSuite.SetUpTest(c)
    26  	manager, err := metricsmanager.NewClient(s.APIState)
    27  	c.Assert(err, jc.ErrorIsNil)
    28  	c.Assert(manager, gc.NotNil)
    29  	s.manager = manager
    30  }
    31  
    32  func (s *metricsManagerSuite) TestCleanupOldMetrics(c *gc.C) {
    33  	var called bool
    34  	metricsmanager.PatchFacadeCall(s, s.manager, func(request string, args, response interface{}) error {
    35  		called = true
    36  		c.Assert(request, gc.Equals, "CleanupOldMetrics")
    37  		result := response.(*params.ErrorResults)
    38  		result.Results = make([]params.ErrorResult, 1)
    39  		return nil
    40  	})
    41  	err := s.manager.CleanupOldMetrics()
    42  	c.Assert(err, jc.ErrorIsNil)
    43  	c.Assert(called, jc.IsTrue)
    44  }
    45  
    46  func (s *metricsManagerSuite) TestSendMetrics(c *gc.C) {
    47  	var called bool
    48  	metricsmanager.PatchFacadeCall(s, s.manager, func(request string, args, response interface{}) error {
    49  		called = true
    50  		c.Assert(request, gc.Equals, "SendMetrics")
    51  		result := response.(*params.ErrorResults)
    52  		result.Results = make([]params.ErrorResult, 1)
    53  		return nil
    54  	})
    55  	err := s.manager.SendMetrics()
    56  	c.Assert(err, jc.ErrorIsNil)
    57  	c.Assert(called, jc.IsTrue)
    58  }
    59  
    60  func (s *metricsManagerSuite) TestSendMetricsFails(c *gc.C) {
    61  	var called bool
    62  	metricsmanager.PatchFacadeCall(s, s.manager, func(request string, args, response interface{}) error {
    63  		called = true
    64  		c.Assert(request, gc.Equals, "SendMetrics")
    65  		result := response.(*params.ErrorResults)
    66  		result.Results = make([]params.ErrorResult, 1)
    67  		result.Results[0].Error = common.ServerError(common.ErrPerm)
    68  		return result.OneError()
    69  	})
    70  	err := s.manager.SendMetrics()
    71  	c.Assert(err, gc.ErrorMatches, "permission denied")
    72  	c.Assert(called, jc.IsTrue)
    73  }