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

Unified Diff: state/apiserver/client/client_test.go

Issue 90160044: cmd/juju/ensureavailability: default to 3 servers
Patch Set: cmd/juju/ensureavailability: default to 3 servers Created 10 years, 11 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 | « state/apiserver/client/client.go ('k') | state/state_test.go » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: state/apiserver/client/client_test.go
=== modified file 'state/apiserver/client/client_test.go'
--- state/apiserver/client/client_test.go 2014-04-17 12:53:23 +0000
+++ state/apiserver/client/client_test.go 2014-04-23 06:49:12 +0000
@@ -2143,27 +2143,51 @@
return pinger
}
+var (
+ emptyCons = constraints.Value{}
+ defaultSeries = ""
+)
+
func (s *clientSuite) TestClientEnsureAvailabilitySeries(c *gc.C) {
- err := s.APIState.Client().EnsureAvailability(1, constraints.Value{}, "")
+ _, err := s.State.AddMachine("quantal", state.JobManageEnviron)
c.Assert(err, gc.IsNil)
+ // We have to ensure the agents are alive, or EnsureAvailability will
+ // create more to replace them.
pinger := s.setAgentAlive(c, "0")
defer pinger.Kill()
- err = s.APIState.Client().EnsureAvailability(3, constraints.Value{}, "non-default")
- c.Assert(err, gc.IsNil)
machines, err := s.State.AllMachines()
c.Assert(err, gc.IsNil)
+ c.Assert(machines, gc.HasLen, 1)
+ c.Assert(machines[0].Series(), gc.Equals, "quantal")
+ err = s.APIState.Client().EnsureAvailability(3, emptyCons, defaultSeries)
+ c.Assert(err, gc.IsNil)
+ machines, err = s.State.AllMachines()
+ c.Assert(err, gc.IsNil)
c.Assert(machines, gc.HasLen, 3)
- c.Assert(machines[0].Series(), gc.Equals, "precise")
- c.Assert(machines[1].Series(), gc.Equals, "non-default")
- c.Assert(machines[2].Series(), gc.Equals, "non-default")
+ c.Assert(machines[0].Series(), gc.Equals, "quantal")
+ c.Assert(machines[1].Series(), gc.Equals, "quantal")
+ c.Assert(machines[2].Series(), gc.Equals, "quantal")
+ defer s.setAgentAlive(c, "1").Kill()
+ defer s.setAgentAlive(c, "2").Kill()
+ err = s.APIState.Client().EnsureAvailability(5, emptyCons, "non-default")
+ c.Assert(err, gc.IsNil)
+ machines, err = s.State.AllMachines()
+ c.Assert(err, gc.IsNil)
+ c.Assert(machines, gc.HasLen, 5)
+ c.Assert(machines[0].Series(), gc.Equals, "quantal")
+ c.Assert(machines[1].Series(), gc.Equals, "quantal")
+ c.Assert(machines[2].Series(), gc.Equals, "quantal")
+ c.Assert(machines[3].Series(), gc.Equals, "non-default")
+ c.Assert(machines[4].Series(), gc.Equals, "non-default")
}
func (s *clientSuite) TestClientEnsureAvailabilityConstraints(c *gc.C) {
- err := s.APIState.Client().EnsureAvailability(1, constraints.Value{}, "")
+ _, err := s.State.AddMachine("quantal", state.JobManageEnviron)
c.Assert(err, gc.IsNil)
pinger := s.setAgentAlive(c, "0")
defer pinger.Kill()
- err = s.APIState.Client().EnsureAvailability(3, constraints.MustParse("mem=4G"), "")
+ err = s.APIState.Client().EnsureAvailability(
+ 3, constraints.MustParse("mem=4G"), defaultSeries)
c.Assert(err, gc.IsNil)
machines, err := s.State.AllMachines()
c.Assert(err, gc.IsNil)
@@ -2180,11 +2204,53 @@
}
}
+func (s *clientSuite) TestClientEnsureAvailability0Preserves(c *gc.C) {
+ _, err := s.State.AddMachine("quantal", state.JobManageEnviron)
+ c.Assert(err, gc.IsNil)
+ pinger := s.setAgentAlive(c, "0")
+ defer pinger.Kill()
+ // A value of 0 says either "if I'm not HA, make me HA" or "preserve my
+ // current HA settings".
+ err = s.APIState.Client().EnsureAvailability(0, emptyCons, defaultSeries)
+ c.Assert(err, gc.IsNil)
+ machines, err := s.State.AllMachines()
+ c.Assert(machines, gc.HasLen, 3)
+ defer s.setAgentAlive(c, "1").Kill()
+ // Now, we keep agent 1 alive, but not agent 2, calling
+ // EnsureAvailability(0) again will cause us to start another machine
+ err = s.APIState.Client().EnsureAvailability(0, emptyCons, defaultSeries)
+ c.Assert(err, gc.IsNil)
+ machines, err = s.State.AllMachines()
+ c.Assert(machines, gc.HasLen, 4)
+}
+
+func (s *clientSuite) TestClientEnsureAvailability0Preserves5(c *gc.C) {
+ _, err := s.State.AddMachine("quantal", state.JobManageEnviron)
+ c.Assert(err, gc.IsNil)
+ pinger := s.setAgentAlive(c, "0")
+ defer pinger.Kill()
+ // Start off with 5 servers
+ err = s.APIState.Client().EnsureAvailability(5, emptyCons, defaultSeries)
+ c.Assert(err, gc.IsNil)
+ machines, err := s.State.AllMachines()
+ c.Assert(machines, gc.HasLen, 5)
+ defer s.setAgentAlive(c, "1").Kill()
+ defer s.setAgentAlive(c, "2").Kill()
+ defer s.setAgentAlive(c, "3").Kill()
+ // Keeping all alive but one, will bring up 1 more server to preserve 5
+ err = s.APIState.Client().EnsureAvailability(0, emptyCons, defaultSeries)
+ c.Assert(err, gc.IsNil)
+ machines, err = s.State.AllMachines()
+ c.Assert(machines, gc.HasLen, 6)
+}
+
func (s *clientSuite) TestClientEnsureAvailabilityErrors(c *gc.C) {
- var emptyCons constraints.Value
- defaultSeries := ""
- err := s.APIState.Client().EnsureAvailability(0, emptyCons, defaultSeries)
- c.Assert(err, gc.ErrorMatches, "number of state servers must be odd and greater than zero")
+ _, err := s.State.AddMachine("quantal", state.JobManageEnviron)
+ c.Assert(err, gc.IsNil)
+ pinger := s.setAgentAlive(c, "0")
+ defer pinger.Kill()
+ err = s.APIState.Client().EnsureAvailability(-1, emptyCons, defaultSeries)
+ c.Assert(err, gc.ErrorMatches, "number of state servers must be odd and non-negative")
err = s.APIState.Client().EnsureAvailability(3, emptyCons, defaultSeries)
c.Assert(err, gc.IsNil)
err = s.APIState.Client().EnsureAvailability(1, emptyCons, defaultSeries)
« no previous file with comments | « state/apiserver/client/client.go ('k') | state/state_test.go » ('j') | no next file with comments »

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