github.com/niedbalski/juju@v0.0.0-20190215020005-8ff100488e47/worker/apiserver/worker_state_test.go (about)

     1  // Copyright 2017 Canonical Ltd.
     2  // Licensed under the AGPLv3, see LICENCE file for details.
     3  
     4  package apiserver_test
     5  
     6  import (
     7  	"github.com/juju/collections/set"
     8  	"github.com/juju/testing"
     9  	jc "github.com/juju/testing/checkers"
    10  	gc "gopkg.in/check.v1"
    11  	"gopkg.in/juju/worker.v1/workertest"
    12  
    13  	coreapiserver "github.com/juju/juju/apiserver"
    14  	apitesting "github.com/juju/juju/apiserver/testing"
    15  	"github.com/juju/juju/core/auditlog"
    16  	statetesting "github.com/juju/juju/state/testing"
    17  	coretesting "github.com/juju/juju/testing"
    18  	"github.com/juju/juju/worker/apiserver"
    19  )
    20  
    21  type WorkerStateSuite struct {
    22  	workerFixture
    23  	statetesting.StateSuite
    24  }
    25  
    26  var _ = gc.Suite(&WorkerStateSuite{})
    27  
    28  func (s *WorkerStateSuite) SetUpSuite(c *gc.C) {
    29  	s.workerFixture.SetUpSuite(c)
    30  
    31  	err := testing.MgoServer.Start(nil)
    32  	c.Assert(err, jc.ErrorIsNil)
    33  	s.workerFixture.AddCleanup(func(*gc.C) { testing.MgoServer.Destroy() })
    34  
    35  	s.StateSuite.SetUpSuite(c)
    36  }
    37  
    38  func (s *WorkerStateSuite) TearDownSuite(c *gc.C) {
    39  	s.StateSuite.TearDownSuite(c)
    40  	s.workerFixture.TearDownSuite(c)
    41  }
    42  
    43  func (s *WorkerStateSuite) SetUpTest(c *gc.C) {
    44  	s.workerFixture.SetUpTest(c)
    45  	s.StateSuite.SetUpTest(c)
    46  	s.config.StatePool = s.StatePool
    47  	s.config.GetAuditConfig = func() auditlog.Config {
    48  		return auditlog.Config{
    49  			Enabled:        true,
    50  			CaptureAPIArgs: true,
    51  			MaxSizeMB:      200,
    52  			MaxBackups:     5,
    53  			ExcludeMethods: set.NewStrings("Exclude.This"),
    54  			Target:         &apitesting.FakeAuditLog{},
    55  		}
    56  	}
    57  }
    58  
    59  func (s *WorkerStateSuite) TearDownTest(c *gc.C) {
    60  	s.StateSuite.TearDownTest(c)
    61  	s.workerFixture.TearDownTest(c)
    62  }
    63  
    64  func (s *WorkerStateSuite) TestStart(c *gc.C) {
    65  	w, err := apiserver.NewWorker(s.config)
    66  	c.Assert(err, jc.ErrorIsNil)
    67  	defer workertest.CleanKill(c, w)
    68  
    69  	// The server is started some time after the worker
    70  	// starts, not necessarily as soon as NewWorker returns.
    71  	for a := coretesting.LongAttempt.Start(); a.Next(); {
    72  		if len(s.stub.Calls()) == 0 {
    73  			continue
    74  		}
    75  		break
    76  	}
    77  	if !s.stub.CheckCallNames(c, "NewServer") {
    78  		return
    79  	}
    80  	args := s.stub.Calls()[0].Args
    81  	c.Assert(args, gc.HasLen, 1)
    82  	c.Assert(args[0], gc.FitsTypeOf, coreapiserver.ServerConfig{})
    83  	config := args[0].(coreapiserver.ServerConfig)
    84  
    85  	c.Assert(config.RegisterIntrospectionHandlers, gc.NotNil)
    86  	config.RegisterIntrospectionHandlers = nil
    87  
    88  	c.Assert(config.UpgradeComplete, gc.NotNil)
    89  	config.UpgradeComplete = nil
    90  
    91  	c.Assert(config.RestoreStatus, gc.NotNil)
    92  	config.RestoreStatus = nil
    93  
    94  	c.Assert(config.NewObserver, gc.NotNil)
    95  	config.NewObserver = nil
    96  
    97  	c.Assert(config.GetAuditConfig, gc.NotNil)
    98  	// Set the audit config getter to Nil because we don't want to
    99  	// compare it.
   100  	config.GetAuditConfig = nil
   101  
   102  	c.Assert(config.Presence, gc.NotNil)
   103  	config.Presence = nil
   104  
   105  	rateLimitConfig := coreapiserver.DefaultRateLimitConfig()
   106  	logSinkConfig := coreapiserver.DefaultLogSinkConfig()
   107  
   108  	c.Assert(config, jc.DeepEquals, coreapiserver.ServerConfig{
   109  		StatePool:        s.StatePool,
   110  		Authenticator:    s.authenticator,
   111  		Mux:              s.mux,
   112  		Clock:            s.clock,
   113  		Controller:       s.controller,
   114  		Tag:              s.agentConfig.Tag(),
   115  		DataDir:          s.agentConfig.DataDir(),
   116  		LogDir:           s.agentConfig.LogDir(),
   117  		Hub:              &s.hub,
   118  		PublicDNSName:    "",
   119  		AllowModelAccess: false,
   120  		RateLimitConfig:  rateLimitConfig,
   121  		LogSinkConfig:    &logSinkConfig,
   122  		LeaseManager:     s.leaseManager,
   123  		MetricsCollector: s.metricsCollector,
   124  	})
   125  }