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