github.com/cloudbase/juju-core@v0.0.0-20140504232958-a7271ac7912f/state/api/logger/logger_test.go (about) 1 // Copyright 2013 Canonical Ltd. 2 // Licensed under the AGPLv3, see LICENCE file for details. 3 4 package logger_test 5 6 import ( 7 gc "launchpad.net/gocheck" 8 9 jujutesting "launchpad.net/juju-core/juju/testing" 10 "launchpad.net/juju-core/state" 11 "launchpad.net/juju-core/state/api" 12 "launchpad.net/juju-core/state/api/logger" 13 "launchpad.net/juju-core/state/testing" 14 ) 15 16 type loggerSuite struct { 17 jujutesting.JujuConnSuite 18 19 // These are raw State objects. Use them for setup and assertions, but 20 // should never be touched by the API calls themselves 21 rawMachine *state.Machine 22 rawCharm *state.Charm 23 rawService *state.Service 24 rawUnit *state.Unit 25 26 logger *logger.State 27 } 28 29 var _ = gc.Suite(&loggerSuite{}) 30 31 func (s *loggerSuite) SetUpTest(c *gc.C) { 32 s.JujuConnSuite.SetUpTest(c) 33 var stateAPI *api.State 34 stateAPI, s.rawMachine = s.OpenAPIAsNewMachine(c) 35 // Create the logger facade. 36 s.logger = stateAPI.Logger() 37 c.Assert(s.logger, gc.NotNil) 38 } 39 40 func (s *loggerSuite) TestLoggingConfigWrongMachine(c *gc.C) { 41 config, err := s.logger.LoggingConfig("42") 42 c.Assert(err, gc.ErrorMatches, "permission denied") 43 c.Assert(config, gc.Equals, "") 44 } 45 46 func (s *loggerSuite) TestLoggingConfig(c *gc.C) { 47 config, err := s.logger.LoggingConfig(s.rawMachine.Tag()) 48 c.Assert(err, gc.IsNil) 49 c.Assert(config, gc.Not(gc.Equals), "") 50 } 51 52 func (s *loggerSuite) setLoggingConfig(c *gc.C, loggingConfig string) { 53 err := testing.UpdateConfig(s.BackingState, map[string]interface{}{"logging-config": loggingConfig}) 54 c.Assert(err, gc.IsNil) 55 } 56 57 func (s *loggerSuite) TestWatchLoggingConfig(c *gc.C) { 58 watcher, err := s.logger.WatchLoggingConfig(s.rawMachine.Tag()) 59 c.Assert(err, gc.IsNil) 60 defer testing.AssertStop(c, watcher) 61 wc := testing.NewNotifyWatcherC(c, s.BackingState, watcher) 62 // Initial event 63 wc.AssertOneChange() 64 65 loggingConfig := "<root>=WARN;juju.log.test=DEBUG" 66 s.setLoggingConfig(c, loggingConfig) 67 // One change noticing the new version 68 wc.AssertOneChange() 69 // Setting the version to the same value doesn't trigger a change 70 s.setLoggingConfig(c, loggingConfig) 71 wc.AssertNoChange() 72 73 loggingConfig = loggingConfig + ";wibble=DEBUG" 74 s.setLoggingConfig(c, loggingConfig) 75 wc.AssertOneChange() 76 testing.AssertStop(c, watcher) 77 wc.AssertClosed() 78 }