func (s *syslogSuite) SetUpTest(c *gc.C) { if runtime.GOOS != "linux" { c.Skip(fmt.Sprintf("this test requires a controller, therefore does not support %q", runtime.GOOS)) } currentSeries := series.HostSeries() osFromSeries, err := series.GetOSFromSeries(currentSeries) c.Assert(err, jc.ErrorIsNil) if osFromSeries != os.Ubuntu { c.Skip(fmt.Sprintf("this test requires a controller, therefore does not support OS %q only Ubuntu", osFromSeries.String())) } s.AgentSuite.SetUpTest(c) // TODO(perrito666) 200160701: // This needs to be done to stop the test from trying to install mongo // while running, but it is a huge footprint for such little benefit. // This test should not need JujuConnSuite or AgentSuite. s.fakeEnsureMongo = agenttest.InstallFakeEnsureMongo(s) done := make(chan struct{}) s.received = make(chan rfc5424test.Message) addr := s.createSyslogServer(c, s.received, done) // Leave log forwarding disabled initially, it will be enabled // via a model config update in the test. err = s.State.UpdateModelConfig(map[string]interface{}{ "syslog-host": addr, "syslog-ca-cert": coretesting.CACert, "syslog-client-cert": coretesting.ServerCert, "syslog-client-key": coretesting.ServerKey, }, nil, nil) c.Assert(err, jc.ErrorIsNil) s.logsCh, err = logsender.InstallBufferedLogWriter(1000) c.Assert(err, jc.ErrorIsNil) }
// Main registers subcommands for the jujud executable, and hands over control // to the cmd package. func jujuDMain(args []string, ctx *cmd.Context) (code int, err error) { // Assuming an average of 200 bytes per log message, use up to // 200MB for the log buffer. logCh, err := logsender.InstallBufferedLogWriter(1048576) if err != nil { return 1, errors.Trace(err) } jujud := jujucmd.NewSuperCommand(cmd.SuperCommandParams{ Name: "jujud", Doc: jujudDoc, }) jujud.Log.Factory = &writerFactory{} jujud.Register(NewBootstrapCommand()) // TODO(katco-): AgentConf type is doing too much. The // MachineAgent type has called out the separate concerns; the // AgentConf should be split up to follow suit. agentConf := agentcmd.NewAgentConf("") machineAgentFactory := agentcmd.MachineAgentFactoryFn( agentConf, logCh, looputil.NewLoopDeviceManager(), ) jujud.Register(agentcmd.NewMachineAgentCmd(ctx, machineAgentFactory, agentConf, agentConf)) jujud.Register(agentcmd.NewUnitAgent(ctx, logCh)) code = cmd.Main(jujud, ctx, args[1:]) return code, nil }
func (s *dblogSuite) runUnitAgentTest(c *gc.C) bool { // Lease setup stuff, only needed when running a uniter. m, err := lease.NewLeaseManager(s.State) c.Assert(err, jc.ErrorIsNil) s.AddCleanup(func(c *gc.C) { m.Kill() c.Assert(m.Wait(), jc.ErrorIsNil) }) // Create a unit and an agent for it. u, password := s.Factory.MakeUnitReturningPassword(c, nil) s.PrimeAgent(c, u.Tag(), password, version.Current) logsCh, err := logsender.InstallBufferedLogWriter(1000) c.Assert(err, jc.ErrorIsNil) a := agentcmd.NewUnitAgent(nil, logsCh) s.InitAgent(c, a, "--unit-name", u.Name(), "--log-to-stderr=true") // Ensure there's no logs to begin with. c.Assert(s.getLogCount(c, u.Tag()), gc.Equals, 0) // Start the agent. go func() { c.Assert(a.Run(nil), jc.ErrorIsNil) }() defer a.Stop() return s.waitForLogs(c, u.Tag()) }
// Main registers subcommands for the jujud executable, and hands over control // to the cmd package. func jujuDMain(args []string, ctx *cmd.Context) (code int, err error) { // Assuming an average of 200 bytes per log message, use up to // 200MB for the log buffer. defer logger.Debugf("jujud complete, code %d, err %v", code, err) logCh, err := logsender.InstallBufferedLogWriter(1048576) if err != nil { return 1, errors.Trace(err) } jujud := jujucmd.NewSuperCommand(cmd.SuperCommandParams{ Name: "jujud", Doc: jujudDoc, }) jujud.Log.NewWriter = func(target io.Writer) loggo.Writer { return &jujudWriter{target: target} } jujud.Register(NewBootstrapCommand()) // TODO(katco-): AgentConf type is doing too much. The // MachineAgent type has called out the separate concerns; the // AgentConf should be split up to follow suit. agentConf := agentcmd.NewAgentConf("") machineAgentFactory := agentcmd.MachineAgentFactoryFn(agentConf, logCh, "") jujud.Register(agentcmd.NewMachineAgentCmd(ctx, machineAgentFactory, agentConf, agentConf)) jujud.Register(agentcmd.NewUnitAgent(ctx, logCh)) jujud.Register(NewUpgradeMongoCommand()) code = cmd.Main(jujud, ctx, args[1:]) return code, nil }
func (s *bufferedLogWriterSuite) TestUninstallBufferedLogWriter(c *gc.C) { _, err := logsender.InstallBufferedLogWriter(10) c.Assert(err, jc.ErrorIsNil) err = logsender.UninstallBufferedLogWriter() c.Assert(err, jc.ErrorIsNil) // Second uninstall attempt should fail err = logsender.UninstallBufferedLogWriter() c.Assert(err, gc.ErrorMatches, "failed to uninstall log buffering: .+") }
func (s *dblogSuite) runUnitAgentTest(c *gc.C) bool { // Create a unit and an agent for it. u, password := s.Factory.MakeUnitReturningPassword(c, nil) s.PrimeAgent(c, u.Tag(), password) logsCh, err := logsender.InstallBufferedLogWriter(1000) c.Assert(err, jc.ErrorIsNil) a := agentcmd.NewUnitAgent(nil, logsCh) s.InitAgent(c, a, "--unit-name", u.Name(), "--log-to-stderr=true") // Ensure there's no logs to begin with. c.Assert(s.getLogCount(c, u.Tag()), gc.Equals, 0) // Start the agent. go func() { c.Assert(a.Run(nil), jc.ErrorIsNil) }() defer a.Stop() return s.waitForLogs(c, u.Tag()) }
func (s *bufferedLogWriterSuite) TestInstallBufferedLogWriter(c *gc.C) { logsCh, err := logsender.InstallBufferedLogWriter(10) c.Assert(err, jc.ErrorIsNil) defer logsender.UninstallBufferedLogWriter() logger := loggo.GetLogger("bufferedLogWriter-test") for i := 0; i < 5; i++ { logger.Infof("%d", i) } for i := 0; i < 5; i++ { select { case rec := <-logsCh: c.Assert(rec.Message, gc.Equals, strconv.Itoa(i)) case <-time.After(coretesting.LongWait): c.Fatal("timed out waiting for logs") } } }
func (s *dblogSuite) runMachineAgentTest(c *gc.C) bool { // Create a machine and an agent for it. m, password := s.Factory.MakeMachineReturningPassword(c, &factory.MachineParams{ Nonce: agent.BootstrapNonce, }) s.PrimeAgent(c, m.Tag(), password, version.Current) agentConf := agentcmd.NewAgentConf(s.DataDir()) agentConf.ReadConfig(m.Tag().String()) logsCh, err := logsender.InstallBufferedLogWriter(1000) c.Assert(err, jc.ErrorIsNil) machineAgentFactory := agentcmd.MachineAgentFactoryFn(agentConf, agentConf, logsCh, nil) a := machineAgentFactory(m.Id()) // Ensure there's no logs to begin with. c.Assert(s.getLogCount(c, m.Tag()), gc.Equals, 0) // Start the agent. go func() { c.Check(a.Run(nil), jc.ErrorIsNil) }() defer a.Stop() return s.waitForLogs(c, m.Tag()) }
func (s *bufferedLogWriterSuite) TestInstallBufferedLogWriterNoFeatureFlag(c *gc.C) { logsCh, err := logsender.InstallBufferedLogWriter(10) c.Assert(err, jc.ErrorIsNil) c.Assert(logsCh, gc.IsNil) }