github.com/mattyw/juju@v0.0.0-20140610034352-732aecd63861/utils/syslog/config_test.go (about) 1 // Copyright 2013 Canonical Ltd. 2 // Licensed under the AGPLv3, see LICENCE file for details. 3 4 package syslog_test 5 6 import ( 7 "io/ioutil" 8 "path/filepath" 9 10 "github.com/juju/testing" 11 gc "launchpad.net/gocheck" 12 13 "github.com/juju/juju/agent" 14 "github.com/juju/juju/utils/syslog" 15 syslogtesting "github.com/juju/juju/utils/syslog/testing" 16 ) 17 18 type syslogConfigSuite struct { 19 testing.IsolationSuite 20 configDir string 21 } 22 23 var _ = gc.Suite(&syslogConfigSuite{}) 24 25 func (s *syslogConfigSuite) SetUpTest(c *gc.C) { 26 s.IsolationSuite.SetUpTest(c) 27 s.configDir = c.MkDir() 28 } 29 30 func (s *syslogConfigSuite) assertRsyslogConfigPath(c *gc.C, slConfig *syslog.SyslogConfig) { 31 slConfig.ConfigDir = s.configDir 32 slConfig.ConfigFileName = "rsyslog.conf" 33 c.Assert(slConfig.ConfigFilePath(), gc.Equals, filepath.Join(s.configDir, "rsyslog.conf")) 34 } 35 36 func (s *syslogConfigSuite) assertRsyslogConfigContents(c *gc.C, slConfig *syslog.SyslogConfig, 37 expectedConf string) { 38 data, err := slConfig.Render() 39 c.Assert(err, gc.IsNil) 40 c.Assert(string(data), gc.Equals, expectedConf) 41 } 42 43 func (s *syslogConfigSuite) TestAccumulateConfigRender(c *gc.C) { 44 syslogConfigRenderer := syslog.NewAccumulateConfig("some-machine", agent.DefaultLogDir, 8888, "", []string{"foo"}) 45 s.assertRsyslogConfigContents( 46 c, 47 syslogConfigRenderer, 48 syslogtesting.ExpectedAccumulateSyslogConf(c, "some-machine", "", 8888), 49 ) 50 } 51 52 func (s *syslogConfigSuite) TestAccumulateConfigWrite(c *gc.C) { 53 syslogConfigRenderer := syslog.NewAccumulateConfig("some-machine", agent.DefaultLogDir, 8888, "", []string{"foo"}) 54 syslogConfigRenderer.ConfigDir = s.configDir 55 syslogConfigRenderer.ConfigFileName = "rsyslog.conf" 56 s.assertRsyslogConfigPath(c, syslogConfigRenderer) 57 err := syslogConfigRenderer.Write() 58 c.Assert(err, gc.IsNil) 59 syslogConfData, err := ioutil.ReadFile(syslogConfigRenderer.ConfigFilePath()) 60 c.Assert(err, gc.IsNil) 61 c.Assert( 62 string(syslogConfData), 63 gc.Equals, 64 syslogtesting.ExpectedAccumulateSyslogConf(c, "some-machine", "", 8888), 65 ) 66 } 67 68 func (s *syslogConfigSuite) TestAccumulateConfigRenderWithNamespace(c *gc.C) { 69 syslogConfigRenderer := syslog.NewAccumulateConfig("some-machine", agent.DefaultLogDir, 8888, "namespace", []string{"foo"}) 70 syslogConfigRenderer.LogDir += "-namespace" 71 s.assertRsyslogConfigContents( 72 c, syslogConfigRenderer, syslogtesting.ExpectedAccumulateSyslogConf( 73 c, "some-machine", "namespace", 8888, 74 ), 75 ) 76 } 77 78 func (s *syslogConfigSuite) TestForwardConfigRender(c *gc.C) { 79 syslogConfigRenderer := syslog.NewForwardConfig( 80 "some-machine", agent.DefaultLogDir, 999, "", []string{"server"}, 81 ) 82 s.assertRsyslogConfigContents( 83 c, syslogConfigRenderer, syslogtesting.ExpectedForwardSyslogConf( 84 c, "some-machine", agent.DefaultLogDir, "", "server", 999, 85 ), 86 ) 87 } 88 89 func (s *syslogConfigSuite) TestForwardConfigRenderWithNamespace(c *gc.C) { 90 syslogConfigRenderer := syslog.NewForwardConfig( 91 "some-machine", agent.DefaultLogDir, 999, "namespace", []string{"server"}, 92 ) 93 s.assertRsyslogConfigContents( 94 c, syslogConfigRenderer, syslogtesting.ExpectedForwardSyslogConf( 95 c, "some-machine", agent.DefaultLogDir, "namespace", "server", 999, 96 ), 97 ) 98 } 99 100 func (s *syslogConfigSuite) TestForwardConfigWrite(c *gc.C) { 101 syslogConfigRenderer := syslog.NewForwardConfig( 102 "some-machine", agent.DefaultLogDir, 999, "", []string{"server"}, 103 ) 104 syslogConfigRenderer.ConfigDir = s.configDir 105 syslogConfigRenderer.ConfigFileName = "rsyslog.conf" 106 s.assertRsyslogConfigPath(c, syslogConfigRenderer) 107 err := syslogConfigRenderer.Write() 108 c.Assert(err, gc.IsNil) 109 syslogConfData, err := ioutil.ReadFile(syslogConfigRenderer.ConfigFilePath()) 110 c.Assert(err, gc.IsNil) 111 c.Assert( 112 string(syslogConfData), 113 gc.Equals, 114 syslogtesting.ExpectedForwardSyslogConf( 115 c, "some-machine", agent.DefaultLogDir, "", "server", 999, 116 ), 117 ) 118 }