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 }