| Left: | ||
| Right: |
| OLD | NEW |
|---|---|
| 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 Loading... | |
| 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 Loading... | |
| 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 } |
| OLD | NEW |