github.com/niedbalski/juju@v0.0.0-20190215020005-8ff100488e47/apiserver/observer/metricobserver/observerfactory_test.go (about)

     1  // Copyright 2016 Canonical Ltd.
     2  // Licensed under the AGPLv3, see LICENCE file for details.
     3  
     4  package metricobserver_test
     5  
     6  import (
     7  	"time"
     8  
     9  	"github.com/golang/mock/gomock"
    10  	"github.com/juju/clock/testclock"
    11  	"github.com/juju/testing"
    12  	jc "github.com/juju/testing/checkers"
    13  	"github.com/prometheus/client_golang/prometheus"
    14  	gc "gopkg.in/check.v1"
    15  
    16  	"github.com/juju/juju/apiserver/observer/metricobserver"
    17  )
    18  
    19  type observerFactorySuite struct {
    20  	testing.IsolationSuite
    21  	clock *testclock.Clock
    22  }
    23  
    24  var _ = gc.Suite(&observerFactorySuite{})
    25  
    26  func (s *observerFactorySuite) SetUpTest(c *gc.C) {
    27  	s.IsolationSuite.SetUpTest(c)
    28  	s.clock = testclock.NewClock(time.Time{})
    29  }
    30  
    31  func (*observerFactorySuite) TestNewObserverFactoryInvalidConfig(c *gc.C) {
    32  	_, err := metricobserver.NewObserverFactory(metricobserver.Config{})
    33  	c.Assert(err, gc.ErrorMatches, "validating config: nil Clock not valid")
    34  }
    35  
    36  func (s *observerFactorySuite) TestNewObserverFactoryRegister(c *gc.C) {
    37  	metricsCollector, finish := createMockMetrics(c, gomock.AssignableToTypeOf(prometheus.Labels{}))
    38  	defer finish()
    39  
    40  	f, err := metricobserver.NewObserverFactory(metricobserver.Config{
    41  		Clock:            s.clock,
    42  		MetricsCollector: metricsCollector,
    43  	})
    44  	c.Assert(err, jc.ErrorIsNil)
    45  	c.Assert(f, gc.NotNil)
    46  }