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  }