Rietveld Code Review Tool
Help | Bug tracker | Discussion group | Source code | Sign in
(1622)

Unified Diff: worker/firewaller/firewaller_test.go

Issue 6333067: cmd/jujud: add firewaller outline (Closed)
Patch Set: cmd/jujud: add firewaller outline Created 12 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Please Sign in to add in-line comments.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « worker/firewaller/firewaller.go ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: worker/firewaller/firewaller_test.go
=== added file 'worker/firewaller/firewaller_test.go'
--- worker/firewaller/firewaller_test.go 1970-01-01 00:00:00 +0000
+++ worker/firewaller/firewaller_test.go 2012-07-12 23:16:05 +0000
@@ -0,0 +1,115 @@
+package firewaller_test
+
+import (
+ . "launchpad.net/gocheck"
+ "launchpad.net/juju-core/environs"
+ "launchpad.net/juju-core/environs/dummy"
+ "launchpad.net/juju-core/state"
+ "launchpad.net/juju-core/state/testing"
+ coretesting "launchpad.net/juju-core/testing"
+ "launchpad.net/juju-core/worker/firewaller"
+ stdtesting "testing"
+)
+
+func TestPackage(t *stdtesting.T) {
+ coretesting.ZkTestPackage(t)
+}
+
+type FirewallerSuite struct {
+ coretesting.LoggingSuite
+ testing.StateSuite
+ op <-chan dummy.Operation
+}
+
+func (s *FirewallerSuite) SetUpTest(c *C) {
+ // Create the operations channel with more than enough space
+ // for those tests that don't listen on it.
+ op := make(chan dummy.Operation, 500)
+ dummy.Listen(op)
+ s.op = op
+
+ env, err := environs.NewEnviron(map[string]interface{}{
+ "type": "dummy",
+ "zookeeper": true,
+ "name": "testing",
+ })
+ c.Assert(err, IsNil)
+ err = env.Bootstrap(false)
+ c.Assert(err, IsNil)
+
+ // Sanity check
+ info, err := env.StateInfo()
+ c.Assert(err, IsNil)
+ c.Assert(info, DeepEquals, s.StateInfo(c))
+
+ s.StateSuite.SetUpTest(c)
+}
+
+func (s *FirewallerSuite) TearDownTest(c *C) {
+ dummy.Reset()
+ s.StateSuite.TearDownTest(c)
+ s.LoggingSuite.TearDownTest(c)
+}
+
+var _ = Suite(&FirewallerSuite{})
+
+// invalidateEnvironment alters the environment configuration
+// so the ConfigNode returned from the watcher will not pass
+// validation.
+func (s *FirewallerSuite) invalidateEnvironment() error {
+ env, err := s.State.EnvironConfig()
+ if err != nil {
+ return err
+ }
+ env.Set("name", 1)
+ _, err = env.Write()
+ return err
+}
+
+// fixEnvironment undoes the work of invalidateEnvironment.
+func (s *FirewallerSuite) fixEnvironment() error {
+ env, err := s.State.EnvironConfig()
+ if err != nil {
+ return err
+ }
+ env.Set("name", "testing")
+ _, err = env.Write()
+ return err
+}
+
+func (s *FirewallerSuite) newState(c *C) *state.State {
+ st, err := state.Open(s.StateInfo(c))
+ c.Assert(err, IsNil)
+ return st
+}
+
+func stopFirewaller(c *C, f *firewaller.Firewaller) {
+ c.Assert(f.Stop(), IsNil)
+}
+
+func (s *FirewallerSuite) TestFirewallerStartStop(c *C) {
+ f, err := firewaller.NewFirewaller(s.newState(c))
+ c.Assert(err, IsNil)
+ stopFirewaller(c, f)
+}
+
+func (s *FirewallerSuite) TestFirewallerEnvironmentChange(c *C) {
+ f, err := firewaller.NewFirewaller(s.newState(c))
+ c.Assert(err, IsNil)
+ defer stopFirewaller(c, f)
+ err = s.invalidateEnvironment()
+ c.Assert(err, IsNil)
+ err = s.fixEnvironment()
+ c.Assert(err, IsNil)
+}
+
+func (s *FirewallerSuite) TestFirewallerStopOnStateClose(c *C) {
+ f, err := firewaller.NewFirewaller(s.newState(c))
+ c.Assert(err, IsNil)
+
+ f.CloseState()
+
+ // must use Check to avoid leaking firewallers.
+ c.Check(f.Wait(), ErrorMatches, ".* zookeeper is closing")
+ c.Assert(f.Stop(), ErrorMatches, ".* zookeeper is closing")
+}
« no previous file with comments | « worker/firewaller/firewaller.go ('k') | no next file » | no next file with comments »

Powered by Google App Engine
RSS Feeds Recent Issues | This issue
This is Rietveld f62528b