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

Side by Side Diff: worker/firewaller/firewaller_test.go

Issue 6499056: cmd/jujud: fix race in test
Patch Set: cmd/jujud: fix race in test Created 5 years, 4 months ago
Left:
Right:
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 unified diff | Download patch
« no previous file with comments | « worker/firewaller/firewaller.go ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 package firewaller_test 1 package firewaller_test
2 2
3 import ( 3 import (
4 . "launchpad.net/gocheck" 4 . "launchpad.net/gocheck"
5 "launchpad.net/juju-core/environs" 5 "launchpad.net/juju-core/environs"
6 "launchpad.net/juju-core/environs/dummy" 6 "launchpad.net/juju-core/environs/dummy"
7 "launchpad.net/juju-core/juju/testing" 7 "launchpad.net/juju-core/juju/testing"
8 "launchpad.net/juju-core/state" 8 "launchpad.net/juju-core/state"
9 coretesting "launchpad.net/juju-core/testing" 9 coretesting "launchpad.net/juju-core/testing"
10 "launchpad.net/juju-core/worker/firewaller" 10 "launchpad.net/juju-core/worker/firewaller"
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
53 func (s *FirewallerSuite) SetUpTest(c *C) { 53 func (s *FirewallerSuite) SetUpTest(c *C) {
54 s.JujuConnSuite.SetUpTest(c) 54 s.JujuConnSuite.SetUpTest(c)
55 s.charm = s.AddTestingCharm(c, "dummy") 55 s.charm = s.AddTestingCharm(c, "dummy")
56 } 56 }
57 57
58 func (s *FirewallerSuite) TestStartStop(c *C) { 58 func (s *FirewallerSuite) TestStartStop(c *C) {
59 fw := firewaller.NewFirewaller(s.State) 59 fw := firewaller.NewFirewaller(s.State)
60 c.Assert(fw.Stop(), IsNil) 60 c.Assert(fw.Stop(), IsNil)
61 } 61 }
62 62
63 func (s *FirewallerSuite) addUnit(c *C, svc *state.Service) (*state.Unit, *state .Machine) {
64 units, err := s.Conn.AddUnits(svc, 1)
65 c.Assert(err, IsNil)
66 u := units[0]
67 id, err := u.AssignedMachineId()
68 c.Assert(err, IsNil)
69 m, err := s.State.Machine(id)
70 c.Assert(err, IsNil)
71 return u, m
72 }
73
74 // startInstance starts a new instance for the given machine.
75 func (s *FirewallerSuite) startInstance(c *C, m *state.Machine) environs.Instanc e {
76 inst, err := s.Conn.Environ.StartInstance(m.Id(), s.StateInfo(c), nil)
77 c.Assert(err, IsNil)
78 err = m.SetInstanceId(inst.Id())
79 c.Assert(err, IsNil)
80
81 // Check that instance has actually been started
82 config, err := s.State.EnvironConfig()
83 c.Assert(err, IsNil)
84 env, err := environs.NewFromAttrs(config.Map())
TheMue 2012/08/30 16:00:44 After merge you can use environs.New(config) here.
rog 2012/08/31 05:48:01 removed this logic. it's not testing anything that
85 _, err = env.Instances([]string{inst.Id()})
86 c.Assert(err, IsNil)
87 return inst
88 }
89
63 func (s *FirewallerSuite) TestNotExposedService(c *C) { 90 func (s *FirewallerSuite) TestNotExposedService(c *C) {
64 fw := firewaller.NewFirewaller(s.State) 91 fw := firewaller.NewFirewaller(s.State)
65 defer func() { c.Assert(fw.Stop(), IsNil) }() 92 defer func() { c.Assert(fw.Stop(), IsNil) }()
66 93
67 » m, err := s.State.AddMachine() 94 » svc, err := s.Conn.AddService("wordpress", s.charm)
68 c.Assert(err, IsNil) 95 c.Assert(err, IsNil)
69 » inst, err := s.Conn.Environ.StartInstance(m.Id(), s.StateInfo(c), nil) 96 » u, m := s.addUnit(c, svc)
70 » c.Assert(err, IsNil) 97 » inst := s.startInstance(c, m)
71 » err = m.SetInstanceId(inst.Id())
72 » c.Assert(err, IsNil)
73 98
74 svc, err := s.State.AddService("wordpress", s.charm)
75 c.Assert(err, IsNil)
76 u, err := svc.AddUnit()
77 c.Assert(err, IsNil)
78 err = u.AssignToMachine(m)
79 c.Assert(err, IsNil)
80 err = u.OpenPort("tcp", 80) 99 err = u.OpenPort("tcp", 80)
81 c.Assert(err, IsNil) 100 c.Assert(err, IsNil)
82 err = u.OpenPort("tcp", 8080) 101 err = u.OpenPort("tcp", 8080)
83 c.Assert(err, IsNil) 102 c.Assert(err, IsNil)
84 103
85 assertPorts(c, inst, m.Id(), nil) 104 assertPorts(c, inst, m.Id(), nil)
86 105
87 err = u.ClosePort("tcp", 80) 106 err = u.ClosePort("tcp", 80)
88 c.Assert(err, IsNil) 107 c.Assert(err, IsNil)
89 108
90 assertPorts(c, inst, m.Id(), nil) 109 assertPorts(c, inst, m.Id(), nil)
91 } 110 }
92 111
93 func (s *FirewallerSuite) TestExposedService(c *C) { 112 func (s *FirewallerSuite) TestExposedService(c *C) {
94 fw := firewaller.NewFirewaller(s.State) 113 fw := firewaller.NewFirewaller(s.State)
95 defer func() { c.Assert(fw.Stop(), IsNil) }() 114 defer func() { c.Assert(fw.Stop(), IsNil) }()
96 115
97 » m, err := s.State.AddMachine() 116 » svc, err := s.Conn.AddService("wordpress", s.charm)
98 » c.Assert(err, IsNil)
99 » inst, err := s.Conn.Environ.StartInstance(m.Id(), s.StateInfo(c), nil)
100 » c.Assert(err, IsNil)
101 » err = m.SetInstanceId(inst.Id())
102 c.Assert(err, IsNil) 117 c.Assert(err, IsNil)
103 118
104 config, err := s.State.EnvironConfig()
105 c.Assert(err, IsNil)
106 env, err := environs.NewFromAttrs(config.Map())
107 _, err = env.Instances([]string{inst.Id()})
108 c.Assert(err, IsNil)
109 c.Logf("got instance fine, id %q", inst.Id())
110
111 svc, err := s.State.AddService("wordpress", s.charm)
112 c.Assert(err, IsNil)
113 err = svc.SetExposed() 119 err = svc.SetExposed()
114 c.Assert(err, IsNil) 120 c.Assert(err, IsNil)
115 » u, err := svc.AddUnit() 121 » u, m := s.addUnit(c, svc)
116 » c.Assert(err, IsNil) 122 » inst := s.startInstance(c, m)
117 » err = u.AssignToMachine(m) 123
118 » c.Assert(err, IsNil)
119 err = u.OpenPort("tcp", 80) 124 err = u.OpenPort("tcp", 80)
120 c.Assert(err, IsNil) 125 c.Assert(err, IsNil)
121 err = u.OpenPort("tcp", 8080) 126 err = u.OpenPort("tcp", 8080)
122 c.Assert(err, IsNil) 127 c.Assert(err, IsNil)
123 128
124 assertPorts(c, inst, m.Id(), []state.Port{{"tcp", 80}, {"tcp", 8080}}) 129 assertPorts(c, inst, m.Id(), []state.Port{{"tcp", 80}, {"tcp", 8080}})
125 130
126 err = u.ClosePort("tcp", 80) 131 err = u.ClosePort("tcp", 80)
127 c.Assert(err, IsNil) 132 c.Assert(err, IsNil)
128 133
129 assertPorts(c, inst, m.Id(), []state.Port{{"tcp", 8080}}) 134 assertPorts(c, inst, m.Id(), []state.Port{{"tcp", 8080}})
130 } 135 }
131 136
137 func (s *FirewallerSuite) TestMachineWithoutInstanceId(c *C) {
138 fw := firewaller.NewFirewaller(s.State)
139 defer func() { c.Assert(fw.Stop(), IsNil) }()
140
141 svc, err := s.Conn.AddService("wordpress", s.charm)
142 c.Assert(err, IsNil)
143 err = svc.SetExposed()
144 c.Assert(err, IsNil)
145 // add a unit but don't start its instance yet.
146 u1, m1 := s.addUnit(c, svc)
147
148 // add another unit and start its instance, so that
149 // we're sure the firewaller has seen the first instance.
150 u2, m2 := s.addUnit(c, svc)
151 inst2 := s.startInstance(c, m2)
152 err = u2.OpenPort("tcp", 80)
153 c.Assert(err, IsNil)
154 assertPorts(c, inst2, m2.Id(), []state.Port{{"tcp", 80}})
155
156 inst1 := s.startInstance(c, m1)
157 err = u1.OpenPort("tcp", 8080)
158 c.Assert(err, IsNil)
159 assertPorts(c, inst1, m1.Id(), []state.Port{{"tcp", 8080}})
160 }
161
132 func (s *FirewallerSuite) TestMultipleUnits(c *C) { 162 func (s *FirewallerSuite) TestMultipleUnits(c *C) {
133 fw := firewaller.NewFirewaller(s.State) 163 fw := firewaller.NewFirewaller(s.State)
134 defer func() { c.Assert(fw.Stop(), IsNil) }() 164 defer func() { c.Assert(fw.Stop(), IsNil) }()
135 165
136 m1, err := s.State.AddMachine()
137 c.Assert(err, IsNil)
138
139 inst1, err := s.Conn.Environ.StartInstance(m1.Id(), s.StateInfo(c), nil)
140 c.Assert(err, IsNil)
141 err = m1.SetInstanceId(inst1.Id())
142 c.Assert(err, IsNil)
143
144 m2, err := s.State.AddMachine()
145 c.Assert(err, IsNil)
146 inst2, err := s.Conn.Environ.StartInstance(m2.Id(), s.StateInfo(c), nil)
147 c.Assert(err, IsNil)
148 err = m2.SetInstanceId(inst2.Id())
149 c.Assert(err, IsNil)
150
151 svc, err := s.State.AddService("wordpress", s.charm) 166 svc, err := s.State.AddService("wordpress", s.charm)
152 c.Assert(err, IsNil) 167 c.Assert(err, IsNil)
153 err = svc.SetExposed() 168 err = svc.SetExposed()
154 c.Assert(err, IsNil) 169 c.Assert(err, IsNil)
155 » u1, err := svc.AddUnit() 170
156 » c.Assert(err, IsNil) 171 » u1, m1 := s.addUnit(c, svc)
157 » err = u1.AssignToMachine(m1) 172 » inst1 := s.startInstance(c, m1)
158 » c.Assert(err, IsNil)
159 err = u1.OpenPort("tcp", 80) 173 err = u1.OpenPort("tcp", 80)
160 c.Assert(err, IsNil) 174 c.Assert(err, IsNil)
161 » u2, err := svc.AddUnit() 175
162 » c.Assert(err, IsNil) 176 » u2, m2 := s.addUnit(c, svc)
163 » err = u2.AssignToMachine(m2) 177 » inst2 := s.startInstance(c, m2)
164 » c.Assert(err, IsNil)
165 err = u2.OpenPort("tcp", 80) 178 err = u2.OpenPort("tcp", 80)
166 c.Assert(err, IsNil) 179 c.Assert(err, IsNil)
167 180
168 assertPorts(c, inst1, m1.Id(), []state.Port{{"tcp", 80}}) 181 assertPorts(c, inst1, m1.Id(), []state.Port{{"tcp", 80}})
169 assertPorts(c, inst2, m2.Id(), []state.Port{{"tcp", 80}}) 182 assertPorts(c, inst2, m2.Id(), []state.Port{{"tcp", 80}})
170 183
171 err = u1.ClosePort("tcp", 80) 184 err = u1.ClosePort("tcp", 80)
172 c.Assert(err, IsNil) 185 c.Assert(err, IsNil)
173 err = u2.ClosePort("tcp", 80) 186 err = u2.ClosePort("tcp", 80)
174 c.Assert(err, IsNil) 187 c.Assert(err, IsNil)
175 188
176 assertPorts(c, inst1, m1.Id(), nil) 189 assertPorts(c, inst1, m1.Id(), nil)
177 assertPorts(c, inst2, m2.Id(), nil) 190 assertPorts(c, inst2, m2.Id(), nil)
178 } 191 }
179 192
180 func (s *FirewallerSuite) TestFirewallerStartWithState(c *C) { 193 func (s *FirewallerSuite) TestFirewallerStartWithState(c *C) {
181 m, err := s.State.AddMachine()
182 c.Assert(err, IsNil)
183 inst, err := s.Conn.Environ.StartInstance(m.Id(), s.StateInfo(c), nil)
184 c.Assert(err, IsNil)
185 err = m.SetInstanceId(inst.Id())
186 c.Assert(err, IsNil)
187
188 svc, err := s.State.AddService("wordpress", s.charm) 194 svc, err := s.State.AddService("wordpress", s.charm)
189 c.Assert(err, IsNil) 195 c.Assert(err, IsNil)
190 err = svc.SetExposed() 196 err = svc.SetExposed()
191 c.Assert(err, IsNil) 197 c.Assert(err, IsNil)
192 » u, err := svc.AddUnit() 198 » u, m := s.addUnit(c, svc)
193 » c.Assert(err, IsNil) 199 » inst := s.startInstance(c, m)
194 » err = u.AssignToMachine(m) 200
195 » c.Assert(err, IsNil)
196 err = u.OpenPort("tcp", 80) 201 err = u.OpenPort("tcp", 80)
197 c.Assert(err, IsNil) 202 c.Assert(err, IsNil)
198 err = u.OpenPort("tcp", 8080) 203 err = u.OpenPort("tcp", 8080)
199 c.Assert(err, IsNil) 204 c.Assert(err, IsNil)
200 205
201 // Nothing open without firewaller. 206 // Nothing open without firewaller.
202 assertPorts(c, inst, m.Id(), nil) 207 assertPorts(c, inst, m.Id(), nil)
203 208
204 // Starting the firewaller opens the ports. 209 // Starting the firewaller opens the ports.
205 fw := firewaller.NewFirewaller(s.State) 210 fw := firewaller.NewFirewaller(s.State)
206 defer func() { c.Assert(fw.Stop(), IsNil) }() 211 defer func() { c.Assert(fw.Stop(), IsNil) }()
207 212
208 assertPorts(c, inst, m.Id(), []state.Port{{"tcp", 80}, {"tcp", 8080}}) 213 assertPorts(c, inst, m.Id(), []state.Port{{"tcp", 80}, {"tcp", 8080}})
214
215 err = svc.SetExposed()
216 c.Assert(err, IsNil)
209 } 217 }
210 218
211 func (s *FirewallerSuite) TestFirewallerStartWithPartialState(c *C) { 219 func (s *FirewallerSuite) TestFirewallerStartWithPartialState(c *C) {
212 m, err := s.State.AddMachine() 220 m, err := s.State.AddMachine()
213 c.Assert(err, IsNil) 221 c.Assert(err, IsNil)
214 inst, err := s.Conn.Environ.StartInstance(m.Id(), s.StateInfo(c), nil) 222 inst, err := s.Conn.Environ.StartInstance(m.Id(), s.StateInfo(c), nil)
215 c.Assert(err, IsNil) 223 c.Assert(err, IsNil)
216 err = m.SetInstanceId(inst.Id()) 224 err = m.SetInstanceId(inst.Id())
217 c.Assert(err, IsNil) 225 c.Assert(err, IsNil)
218 226
(...skipping 16 matching lines...) Expand all
235 err = u.OpenPort("tcp", 80) 243 err = u.OpenPort("tcp", 80)
236 c.Assert(err, IsNil) 244 c.Assert(err, IsNil)
237 245
238 assertPorts(c, inst, m.Id(), []state.Port{{"tcp", 80}}) 246 assertPorts(c, inst, m.Id(), []state.Port{{"tcp", 80}})
239 } 247 }
240 248
241 func (s *FirewallerSuite) TestSetClearExposedService(c *C) { 249 func (s *FirewallerSuite) TestSetClearExposedService(c *C) {
242 fw := firewaller.NewFirewaller(s.State) 250 fw := firewaller.NewFirewaller(s.State)
243 defer func() { c.Assert(fw.Stop(), IsNil) }() 251 defer func() { c.Assert(fw.Stop(), IsNil) }()
244 252
245 m, err := s.State.AddMachine()
246 c.Assert(err, IsNil)
247 inst, err := s.Conn.Environ.StartInstance(m.Id(), s.StateInfo(c), nil)
248 c.Assert(err, IsNil)
249 err = m.SetInstanceId(inst.Id())
250 c.Assert(err, IsNil)
251 svc, err := s.State.AddService("wordpress", s.charm) 253 svc, err := s.State.AddService("wordpress", s.charm)
252 c.Assert(err, IsNil) 254 c.Assert(err, IsNil)
253 » u, err := svc.AddUnit() 255
254 » c.Assert(err, IsNil) 256 » u, m := s.addUnit(c, svc)
255 » err = u.AssignToMachine(m) 257 » inst := s.startInstance(c, m)
256 » c.Assert(err, IsNil)
257 err = u.OpenPort("tcp", 80) 258 err = u.OpenPort("tcp", 80)
258 c.Assert(err, IsNil) 259 c.Assert(err, IsNil)
259 err = u.OpenPort("tcp", 8080) 260 err = u.OpenPort("tcp", 8080)
260 c.Assert(err, IsNil) 261 c.Assert(err, IsNil)
261 262
262 // Not exposed service, so no open port. 263 // Not exposed service, so no open port.
263 assertPorts(c, inst, m.Id(), nil) 264 assertPorts(c, inst, m.Id(), nil)
264 265
265 // SeExposed opens the ports. 266 // SeExposed opens the ports.
266 err = svc.SetExposed() 267 err = svc.SetExposed()
267 c.Assert(err, IsNil) 268 c.Assert(err, IsNil)
268 269
269 assertPorts(c, inst, m.Id(), []state.Port{{"tcp", 80}, {"tcp", 8080}}) 270 assertPorts(c, inst, m.Id(), []state.Port{{"tcp", 80}, {"tcp", 8080}})
270 271
271 // ClearExposed closes the ports again. 272 // ClearExposed closes the ports again.
272 err = svc.ClearExposed() 273 err = svc.ClearExposed()
273 c.Assert(err, IsNil) 274 c.Assert(err, IsNil)
274 275
275 assertPorts(c, inst, m.Id(), nil) 276 assertPorts(c, inst, m.Id(), nil)
276 } 277 }
277 278
278 func (s *FirewallerSuite) TestFirewallerStopOnStateClose(c *C) { 279 func (s *FirewallerSuite) TestFirewallerStopOnStateClose(c *C) {
279 st, err := state.Open(s.StateInfo(c)) 280 st, err := state.Open(s.StateInfo(c))
280 c.Assert(err, IsNil) 281 c.Assert(err, IsNil)
281 fw := firewaller.NewFirewaller(st) 282 fw := firewaller.NewFirewaller(st)
282 st.Close() 283 st.Close()
283 c.Check(fw.Wait(), ErrorMatches, ".* zookeeper is closing") 284 c.Check(fw.Wait(), ErrorMatches, ".* zookeeper is closing")
284 c.Assert(fw.Stop(), ErrorMatches, ".* zookeeper is closing") 285 c.Assert(fw.Stop(), ErrorMatches, ".* zookeeper is closing")
285 } 286 }
OLDNEW
« 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 204d58d