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

Delta Between Two Patch Sets: worker/peergrouper/worker_test.go

Issue 68650044: worker/peergrouper: implement worker
Left Patch Set: worker/peergrouper: implement worker Created 11 years, 1 month ago
Right Patch Set: worker/peergrouper: implement worker Created 11 years, 1 month 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:
Left: Side by side diff | Download
Right: Side by side diff | Download
« no previous file with change/comment | « worker/peergrouper/worker.go ('k') | no next file » | no next file with change/comment »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
LEFTRIGHT
1 // Copyright 2014 Canonical Ltd. 1 // Copyright 2014 Canonical Ltd.
2 // Licensed under the AGPLv3, see LICENCE file for details. 2 // Licensed under the AGPLv3, see LICENCE file for details.
3 3
4 package peergrouper 4 package peergrouper
5 5
6 import ( 6 import (
7 "errors" 7 "errors"
8 "fmt" 8 "fmt"
9 "time" 9 "time"
10 10
(...skipping 29 matching lines...) Expand all
40 func (s *workerSuite) SetUpTest(c *gc.C) { 40 func (s *workerSuite) SetUpTest(c *gc.C) {
41 s.LoggingSuite.SetUpTest(c) 41 s.LoggingSuite.SetUpTest(c)
42 resetErrors() 42 resetErrors()
43 } 43 }
44 44
45 // initState initializes the fake state with a single 45 // initState initializes the fake state with a single
46 // replicaset member and numMachines machines 46 // replicaset member and numMachines machines
47 // primed to vote. 47 // primed to vote.
48 func initState(c *gc.C, st *fakeState, numMachines int) { 48 func initState(c *gc.C, st *fakeState, numMachines int) {
49 var ids []string 49 var ids []string
50 » for i := 10; i < 13; i++ { 50 » for i := 10; i < 10+numMachines; i++ {
51 id := fmt.Sprint(i) 51 id := fmt.Sprint(i)
52 m := st.addMachine(id, true) 52 m := st.addMachine(id, true)
53 m.setStateHostPort(fmt.Sprintf("0.1.2.%d:%d", i, mongoPort)) 53 m.setStateHostPort(fmt.Sprintf("0.1.2.%d:%d", i, mongoPort))
54 ids = append(ids, id) 54 ids = append(ids, id)
55 } 55 }
56 st.machine("10").SetHasVote(true) 56 st.machine("10").SetHasVote(true)
57 st.setStateServers(ids...) 57 st.setStateServers(ids...)
58 st.session.Set(mkMembers("0v")) 58 st.session.Set(mkMembers("0v"))
59 st.session.setStatus(mkStatuses("0p")) 59 st.session.setStatus(mkStatuses("0p"))
60 st.check = checkInvariants 60 st.check = checkInvariants
(...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after
146 // members. 146 // members.
147 st.machine("11").setStateHostPort("0.1.99.99:9876") 147 st.machine("11").setStateHostPort("0.1.99.99:9876")
148 148
149 mustNext(c, memberWatcher) 149 mustNext(c, memberWatcher)
150 expectMembers := mkMembers("0v 1 2") 150 expectMembers := mkMembers("0v 1 2")
151 expectMembers[1].Address = "0.1.99.99:9876" 151 expectMembers[1].Address = "0.1.99.99:9876"
152 c.Assert(memberWatcher.Value(), jc.DeepEquals, expectMembers) 152 c.Assert(memberWatcher.Value(), jc.DeepEquals, expectMembers)
153 } 153 }
154 154
155 var fatalErrorsTests = []struct { 155 var fatalErrorsTests = []struct {
156 » errPat string 156 » errPattern string
dimitern 2014/02/26 15:50:00 s/errPat/pattern/ ?
rog 2014/02/26 16:58:09 Done.
157 » err error 157 » err error
dimitern 2014/02/26 15:50:00 Do you really need err here when it's always the s
rog 2014/02/26 16:58:09 Done.
158 » expectErr string 158 » expectErr string
159 }{{ 159 }{{
160 » errPat: "State.StateServerInfo", 160 » errPattern: "State.StateServerInfo",
161 » err: errors.New("sample"), 161 » expectErr: "cannot get state server info: sample",
162 » expectErr: "cannot get state server info: sample", 162 }, {
163 }, { 163 » errPattern: "Machine.SetHasVote 11 true",
164 » errPat: "Machine.SetHasVote 11 true", 164 » expectErr: `cannot set voting status of "11" to true: sample`,
165 » err: errors.New("sample"), 165 }, {
166 » expectErr: `cannot set voting status of "11" to true: sample`, 166 » errPattern: "Session.CurrentStatus",
167 }, { 167 » expectErr: "cannot get replica set status: sample",
168 » errPat: "Session.CurrentStatus", 168 }, {
169 » err: errors.New("sample"), 169 » errPattern: "Session.CurrentMembers",
170 » expectErr: "cannot get replica set status: sample", 170 » expectErr: "cannot get replica set members: sample",
171 }, { 171 }, {
172 » errPat: "Session.CurrentMembers", 172 » errPattern: "State.Machine *",
173 » err: errors.New("sample"), 173 » expectErr: `cannot get machine "10": sample`,
174 » expectErr: "cannot get replica set members: sample",
175 }} 174 }}
176 175
177 func (s *workerSuite) TestFatalErrors(c *gc.C) { 176 func (s *workerSuite) TestFatalErrors(c *gc.C) {
178 testbase.PatchValue(&pollInterval, 5*time.Millisecond) 177 testbase.PatchValue(&pollInterval, 5*time.Millisecond)
179 for i, test := range fatalErrorsTests { 178 for i, test := range fatalErrorsTests {
180 » » c.Logf("test %d: %s -> %s", i, test.errPat, test.expectErr) 179 » » c.Logf("test %d: %s -> %s", i, test.errPattern, test.expectErr)
181 resetErrors() 180 resetErrors()
182 st := newFakeState() 181 st := newFakeState()
183 st.session.InstantlyReady = true 182 st.session.InstantlyReady = true
184 initState(c, st, 3) 183 initState(c, st, 3)
185 » » setErrorFor(test.errPat, test.err) 184 » » setErrorFor(test.errPattern, errors.New("sample"))
186 w := newWorker(st) 185 w := newWorker(st)
187 done := make(chan error) 186 done := make(chan error)
188 go func() { 187 go func() {
189 done <- w.Wait() 188 done <- w.Wait()
190 }() 189 }()
191 select { 190 select {
192 case err := <-done: 191 case err := <-done:
193 c.Assert(err, gc.ErrorMatches, test.expectErr) 192 c.Assert(err, gc.ErrorMatches, test.expectErr)
194 case <-time.After(coretesting.LongWait): 193 case <-time.After(coretesting.LongWait):
195 c.Fatalf("timed out waiting for error") 194 c.Fatalf("timed out waiting for error")
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
231 val = w.Value() 230 val = w.Value()
232 c.Logf("mustNext done %p, ok %v", w, ok) 231 c.Logf("mustNext done %p, ok %v", w, ok)
233 done <- struct{}{} 232 done <- struct{}{}
234 }() 233 }()
235 select { 234 select {
236 case <-done: 235 case <-done:
237 return 236 return
238 case <-time.After(coretesting.LongWait): 237 case <-time.After(coretesting.LongWait):
239 c.Fatalf("timed out waiting for value to be set") 238 c.Fatalf("timed out waiting for value to be set")
240 } 239 }
241 panic("unreachable") 240 panic("unreachable")
dimitern 2014/02/26 15:50:00 no need for this?
rog 2014/02/26 16:58:09 we do need it because the go compiler doesn't know
242 } 241 }
LEFTRIGHT

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