github.com/juju/juju@v0.0.0-20240327075706-a90865de2538/worker/multiwatcher/worker_test.go (about)

     1  // Copyright 2019 Canonical Ltd.
     2  // Licensed under the AGPLv3, see LICENCE file for details.
     3  
     4  package multiwatcher_test
     5  
     6  import (
     7  	"github.com/juju/clock"
     8  	"github.com/juju/errors"
     9  	"github.com/juju/loggo"
    10  	jc "github.com/juju/testing/checkers"
    11  	gc "gopkg.in/check.v1"
    12  
    13  	"github.com/juju/juju/state"
    14  	statetesting "github.com/juju/juju/state/testing"
    15  	"github.com/juju/juju/worker/multiwatcher"
    16  )
    17  
    18  type WorkerSuite struct {
    19  	statetesting.StateSuite
    20  	logger loggo.Logger
    21  	config multiwatcher.Config
    22  }
    23  
    24  var _ = gc.Suite(&WorkerSuite{})
    25  
    26  func (s *WorkerSuite) SetUpTest(c *gc.C) {
    27  	s.StateSuite.SetUpTest(c)
    28  	s.logger = loggo.GetLogger("test")
    29  	s.logger.SetLogLevel(loggo.TRACE)
    30  
    31  	allWatcherBacking, err := state.NewAllWatcherBacking(s.StatePool)
    32  	c.Assert(err, jc.ErrorIsNil)
    33  	s.config = multiwatcher.Config{
    34  		Clock:                clock.WallClock,
    35  		Logger:               s.logger,
    36  		Backing:              allWatcherBacking,
    37  		PrometheusRegisterer: noopRegisterer{},
    38  	}
    39  }
    40  
    41  func (s *WorkerSuite) TestConfigMissingClock(c *gc.C) {
    42  	s.config.Clock = nil
    43  	err := s.config.Validate()
    44  	c.Check(err, jc.Satisfies, errors.IsNotValid)
    45  	c.Check(err, gc.ErrorMatches, "missing Clock not valid")
    46  }
    47  
    48  func (s *WorkerSuite) TestConfigMissingLogger(c *gc.C) {
    49  	s.config.Logger = nil
    50  	err := s.config.Validate()
    51  	c.Check(err, jc.Satisfies, errors.IsNotValid)
    52  	c.Check(err, gc.ErrorMatches, "missing Logger not valid")
    53  }
    54  
    55  func (s *WorkerSuite) TestConfigMissingBacking(c *gc.C) {
    56  	s.config.Backing = nil
    57  	err := s.config.Validate()
    58  	c.Check(err, jc.Satisfies, errors.IsNotValid)
    59  	c.Check(err, gc.ErrorMatches, "missing Backing not valid")
    60  }
    61  
    62  func (s *WorkerSuite) TestConfigMissingRegisterer(c *gc.C) {
    63  	s.config.PrometheusRegisterer = nil
    64  	err := s.config.Validate()
    65  	c.Check(err, jc.Satisfies, errors.IsNotValid)
    66  	c.Check(err, gc.ErrorMatches, "missing PrometheusRegisterer not valid")
    67  }