github.com/cloudbase/juju-core@v0.0.0-20140504232958-a7271ac7912f/log/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  	stdtesting "testing"
    10  
    11  	gc "launchpad.net/gocheck"
    12  
    13  	"launchpad.net/juju-core/agent"
    14  	"launchpad.net/juju-core/log/syslog"
    15  	syslogtesting "launchpad.net/juju-core/log/syslog/testing"
    16  )
    17  
    18  func Test(t *stdtesting.T) {
    19  	gc.TestingT(t)
    20  }
    21  
    22  type SyslogConfigSuite struct {
    23  	configDir string
    24  }
    25  
    26  var _ = gc.Suite(&SyslogConfigSuite{})
    27  
    28  func (s *SyslogConfigSuite) SetUpTest(c *gc.C) {
    29  	s.configDir = c.MkDir()
    30  }
    31  
    32  func (s *SyslogConfigSuite) assertRsyslogConfigPath(c *gc.C, slConfig *syslog.SyslogConfig) {
    33  	slConfig.ConfigDir = s.configDir
    34  	slConfig.ConfigFileName = "rsyslog.conf"
    35  	c.Assert(slConfig.ConfigFilePath(), gc.Equals, filepath.Join(s.configDir, "rsyslog.conf"))
    36  }
    37  
    38  func (s *SyslogConfigSuite) assertRsyslogConfigContents(c *gc.C, slConfig *syslog.SyslogConfig,
    39  	expectedConf string) {
    40  	data, err := slConfig.Render()
    41  	c.Assert(err, gc.IsNil)
    42  	c.Assert(string(data), gc.Equals, expectedConf)
    43  }
    44  
    45  func (s *SyslogConfigSuite) TestAccumulateConfigRender(c *gc.C) {
    46  	syslogConfigRenderer := syslog.NewAccumulateConfig("some-machine", agent.DefaultLogDir, 8888, "")
    47  	s.assertRsyslogConfigContents(
    48  		c,
    49  		syslogConfigRenderer,
    50  		syslogtesting.ExpectedAccumulateSyslogConf(c, "some-machine", "", 8888),
    51  	)
    52  }
    53  
    54  func (s *SyslogConfigSuite) TestAccumulateConfigWrite(c *gc.C) {
    55  	syslogConfigRenderer := syslog.NewAccumulateConfig("some-machine", agent.DefaultLogDir, 8888, "")
    56  	syslogConfigRenderer.ConfigDir = s.configDir
    57  	syslogConfigRenderer.ConfigFileName = "rsyslog.conf"
    58  	s.assertRsyslogConfigPath(c, syslogConfigRenderer)
    59  	err := syslogConfigRenderer.Write()
    60  	c.Assert(err, gc.IsNil)
    61  	syslogConfData, err := ioutil.ReadFile(syslogConfigRenderer.ConfigFilePath())
    62  	c.Assert(err, gc.IsNil)
    63  	c.Assert(
    64  		string(syslogConfData),
    65  		gc.Equals,
    66  		syslogtesting.ExpectedAccumulateSyslogConf(c, "some-machine", "", 8888),
    67  	)
    68  }
    69  
    70  func (s *SyslogConfigSuite) TestAccumulateConfigRenderWithNamespace(c *gc.C) {
    71  	syslogConfigRenderer := syslog.NewAccumulateConfig("some-machine", agent.DefaultLogDir, 8888, "namespace")
    72  	syslogConfigRenderer.LogDir += "-namespace"
    73  	s.assertRsyslogConfigContents(
    74  		c, syslogConfigRenderer, syslogtesting.ExpectedAccumulateSyslogConf(
    75  			c, "some-machine", "namespace", 8888,
    76  		),
    77  	)
    78  }
    79  
    80  func (s *SyslogConfigSuite) TestForwardConfigRender(c *gc.C) {
    81  	syslogConfigRenderer := syslog.NewForwardConfig(
    82  		"some-machine", agent.DefaultLogDir, 999, "", []string{"server"},
    83  	)
    84  	s.assertRsyslogConfigContents(
    85  		c, syslogConfigRenderer, syslogtesting.ExpectedForwardSyslogConf(
    86  			c, "some-machine", agent.DefaultLogDir, "", "server", 999,
    87  		),
    88  	)
    89  }
    90  
    91  func (s *SyslogConfigSuite) TestForwardConfigRenderWithNamespace(c *gc.C) {
    92  	syslogConfigRenderer := syslog.NewForwardConfig(
    93  		"some-machine", agent.DefaultLogDir, 999, "namespace", []string{"server"},
    94  	)
    95  	s.assertRsyslogConfigContents(
    96  		c, syslogConfigRenderer, syslogtesting.ExpectedForwardSyslogConf(
    97  			c, "some-machine", agent.DefaultLogDir, "namespace", "server", 999,
    98  		),
    99  	)
   100  }
   101  
   102  func (s *SyslogConfigSuite) TestForwardConfigWrite(c *gc.C) {
   103  	syslogConfigRenderer := syslog.NewForwardConfig(
   104  		"some-machine", agent.DefaultLogDir, 999, "", []string{"server"},
   105  	)
   106  	syslogConfigRenderer.ConfigDir = s.configDir
   107  	syslogConfigRenderer.ConfigFileName = "rsyslog.conf"
   108  	s.assertRsyslogConfigPath(c, syslogConfigRenderer)
   109  	err := syslogConfigRenderer.Write()
   110  	c.Assert(err, gc.IsNil)
   111  	syslogConfData, err := ioutil.ReadFile(syslogConfigRenderer.ConfigFilePath())
   112  	c.Assert(err, gc.IsNil)
   113  	c.Assert(
   114  		string(syslogConfData),
   115  		gc.Equals,
   116  		syslogtesting.ExpectedForwardSyslogConf(
   117  			c, "some-machine", agent.DefaultLogDir, "", "server", 999,
   118  		),
   119  	)
   120  }