LEFT | RIGHT |
1 package main_test | 1 package main |
2 | 2 |
3 import ( | 3 import ( |
4 . "launchpad.net/gocheck" | 4 . "launchpad.net/gocheck" |
5 "launchpad.net/gozk/zookeeper" | 5 "launchpad.net/gozk/zookeeper" |
6 "launchpad.net/juju/go/cmd" | 6 "launchpad.net/juju/go/cmd" |
7 main "launchpad.net/juju/go/cmd/jujud" | |
8 "launchpad.net/juju/go/environs/dummy" | 7 "launchpad.net/juju/go/environs/dummy" |
9 "launchpad.net/juju/go/state" | 8 "launchpad.net/juju/go/state" |
10 "launchpad.net/juju/go/testing" | 9 "launchpad.net/juju/go/testing" |
11 ) | 10 ) |
12 | 11 |
13 type ProvisioningSuite struct { | 12 type ProvisioningSuite struct { |
14 zkConn *zookeeper.Conn | 13 zkConn *zookeeper.Conn |
15 st *state.State | 14 st *state.State |
16 } | 15 } |
17 | 16 |
18 var _ = Suite(&ProvisioningSuite{}) | 17 var _ = Suite(&ProvisioningSuite{}) |
19 | 18 |
20 func (s *ProvisioningSuite) SetUpTest(c *C) { | 19 func (s *ProvisioningSuite) SetUpTest(c *C) { |
21 zk, session, err := zookeeper.Dial(zkAddr, 15e9) | 20 zk, session, err := zookeeper.Dial(zkAddr, 15e9) |
22 c.Assert(err, IsNil) | 21 c.Assert(err, IsNil) |
23 event := <-session | 22 event := <-session |
24 c.Assert(event.Ok(), Equals, true) | 23 c.Assert(event.Ok(), Equals, true) |
25 c.Assert(event.Type, Equals, zookeeper.EVENT_SESSION) | 24 c.Assert(event.Type, Equals, zookeeper.EVENT_SESSION) |
26 c.Assert(event.State, Equals, zookeeper.STATE_CONNECTED) | 25 c.Assert(event.State, Equals, zookeeper.STATE_CONNECTED) |
27 | 26 |
28 s.zkConn = zk | 27 s.zkConn = zk |
29 info := &state.Info{ | 28 info := &state.Info{ |
30 Addrs: []string{zkAddr}, | 29 Addrs: []string{zkAddr}, |
31 } | 30 } |
| 31 testing.ZkRemoveTree(s.zkConn, "/") |
32 s.st, err = state.Initialize(info) | 32 s.st, err = state.Initialize(info) |
33 c.Assert(err, IsNil) | 33 c.Assert(err, IsNil) |
34 | 34 |
35 dummy.Reset() | 35 dummy.Reset() |
| 36 } |
| 37 |
| 38 func (s *ProvisioningSuite) TearDownTest(c *C) { |
| 39 s.zkConn.Close() |
| 40 } |
| 41 |
| 42 func (s *ProvisioningSuite) TestParseSuccess(c *C) { |
| 43 create := func() (cmd.Command, *AgentConf) { |
| 44 a := &ProvisioningAgent{} |
| 45 return a, &a.Conf |
| 46 } |
| 47 CheckAgentCommand(c, create, []string{}) |
| 48 } |
| 49 |
| 50 func (s *ProvisioningSuite) TestParseUnknown(c *C) { |
| 51 a := &ProvisioningAgent{} |
| 52 err := ParseAgentCommand(a, []string{"nincompoops"}) |
| 53 c.Assert(err, ErrorMatches, `unrecognized args: \["nincompoops"\]`) |
| 54 } |
| 55 |
| 56 func initProvisioningAgent() (*ProvisioningAgent, error) { |
| 57 args := []string{"--zookeeper-servers", zkAddr} |
| 58 c := &ProvisioningAgent{} |
| 59 return c, initCmd(c, args) |
| 60 } |
| 61 |
| 62 func (s *ProvisioningSuite) TestProvisionerStartStop(c *C) { |
| 63 p := NewProvisioner(s.st) |
| 64 c.Assert(p.Stop(), IsNil) |
| 65 } |
| 66 |
| 67 func (s *ProvisioningSuite) TestProvisionerEnvironmentChange(c *C) { |
| 68 p := NewProvisioner(s.st) |
36 | 69 |
37 // seed /environment to point to dummy | 70 // seed /environment to point to dummy |
38 env, err := s.st.Environment() | 71 env, err := s.st.Environment() |
39 c.Assert(err, IsNil) | 72 c.Assert(err, IsNil) |
40 env.Set("type", "dummy") | 73 env.Set("type", "dummy") |
41 env.Set("zookeeper", false) | 74 env.Set("zookeeper", false) |
42 env.Set("name", "testing") | 75 env.Set("name", "testing") |
43 _, err = env.Write() | 76 _, err = env.Write() |
44 c.Assert(err, IsNil) | 77 c.Assert(err, IsNil) |
| 78 |
| 79 // twiddle with the environment |
| 80 env, err = s.st.Environment() |
| 81 c.Assert(err, IsNil) |
| 82 env.Set("name", "testing2") |
| 83 _, err = env.Write() |
| 84 c.Assert(err, IsNil) |
| 85 env.Set("name", "testing3") |
| 86 _, err = env.Write() |
| 87 c.Assert(p.Stop(), IsNil) |
45 } | 88 } |
46 | 89 |
47 func (s *ProvisioningSuite) TearDownTest(c *C) { | 90 func (s *ProvisioningSuite) TestProvisionerStopOnStateClose(c *C) { |
48 » testing.ZkRemoveTree(s.zkConn, "/") | 91 » p := NewProvisioner(s.st) |
49 » s.zkConn.Close() | 92 |
| 93 » // seed /environment to point to dummy |
| 94 » env, err := s.st.Environment() |
| 95 » c.Assert(err, IsNil) |
| 96 » env.Set("type", "dummy") |
| 97 » env.Set("zookeeper", false) |
| 98 » env.Set("name", "testing") |
| 99 » _, err = env.Write() |
| 100 » c.Assert(err, IsNil) |
| 101 |
| 102 » s.st.Close() |
| 103 |
| 104 » c.Assert(p.Wait(), ErrorMatches, "watcher.*") |
| 105 » c.Assert(p.Stop(), ErrorMatches, "watcher.*") |
| 106 |
50 } | 107 } |
51 | |
52 func (s *ProvisioningSuite) TestParseSuccess(c *C) { | |
53 create := func() (cmd.Command, *main.AgentConf) { | |
54 a := &main.ProvisioningAgent{} | |
55 return a, &a.Conf | |
56 } | |
57 CheckAgentCommand(c, create, []string{}) | |
58 } | |
59 | |
60 func (s *ProvisioningSuite) TestParseUnknown(c *C) { | |
61 a := &main.ProvisioningAgent{} | |
62 err := ParseAgentCommand(a, []string{"nincompoops"}) | |
63 c.Assert(err, ErrorMatches, `unrecognized args: \["nincompoops"\]`) | |
64 } | |
65 | |
66 func initProvisioningAgent() (*main.ProvisioningAgent, error) { | |
67 args := []string{"--zookeeper-servers", zkAddr} | |
68 c := &main.ProvisioningAgent{} | |
69 return c, initCmd(c, args) | |
70 } | |
71 | |
72 func (s *ProvisioningSuite) TestProvisionerStartStop(c *C) { | |
73 p := main.NewProvisioner(s.st) | |
74 c.Assert(p.Stop(), IsNil) | |
75 } | |
LEFT | RIGHT |