Merge lp:~pedronis/ubuntu-push/testlog-more into lp:ubuntu-push
- testlog-more
- Merge into trunk
Proposed by
Samuele Pedroni
Status: | Merged |
---|---|
Approved by: | Samuele Pedroni |
Approved revision: | 62 |
Merged at revision: | 53 |
Proposed branch: | lp:~pedronis/ubuntu-push/testlog-more |
Merge into: | lp:ubuntu-push |
Diff against target: |
470 lines (+76/-72) 7 files modified
server/api/middleware_test.go (+3/-6) server/bootlog_test.go (+4/-5) server/broker/testsuite/suite.go (+5/-2) server/runner_test.go (+2/-4) server/session/session_test.go (+30/-31) server/session/tracker_test.go (+17/-18) testing/helpers.go (+15/-6) |
To merge this branch: | bzr merge lp:~pedronis/ubuntu-push/testlog-more |
Related bugs: |
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
John Lenton (community) | Approve | ||
Review via email: mp+204800@code.launchpad.net |
Commit message
use TestLogger in more places
Description of the change
use TestLogger in more places
To post a comment you must log in.
- 62. By Samuele Pedroni
-
use TestLogger
Revision history for this message
John Lenton (chipaca) : | # |
review:
Approve
Preview Diff
[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1 | === modified file 'server/api/middleware_test.go' | |||
2 | --- server/api/middleware_test.go 2014-01-16 16:15:23 +0000 | |||
3 | +++ server/api/middleware_test.go 2014-02-04 22:50:59 +0000 | |||
4 | @@ -17,10 +17,8 @@ | |||
5 | 17 | package api | 17 | package api |
6 | 18 | 18 | ||
7 | 19 | import ( | 19 | import ( |
8 | 20 | "bytes" | ||
9 | 21 | . "launchpad.net/gocheck" | 20 | . "launchpad.net/gocheck" |
12 | 22 | "launchpad.net/ubuntu-push/logger" | 21 | helpers "launchpad.net/ubuntu-push/testing" |
11 | 23 | // "launchpad.net/ubuntu-push/testing" | ||
13 | 24 | "net/http" | 22 | "net/http" |
14 | 25 | "net/http/httptest" | 23 | "net/http/httptest" |
15 | 26 | ) | 24 | ) |
16 | @@ -30,8 +28,7 @@ | |||
17 | 30 | var _ = Suite(&middlewareSuite{}) | 28 | var _ = Suite(&middlewareSuite{}) |
18 | 31 | 29 | ||
19 | 32 | func (s *middlewareSuite) TestPanicTo500Handler(c *C) { | 30 | func (s *middlewareSuite) TestPanicTo500Handler(c *C) { |
22 | 33 | buf := &bytes.Buffer{} | 31 | logger := helpers.NewTestLogger(c, "debug") |
21 | 34 | logger := logger.NewSimpleLogger(buf, "debug") | ||
23 | 35 | panicking := http.HandlerFunc(func(w http.ResponseWriter, req *http.Request) { | 32 | panicking := http.HandlerFunc(func(w http.ResponseWriter, req *http.Request) { |
24 | 36 | panic("panic in handler") | 33 | panic("panic in handler") |
25 | 37 | }) | 34 | }) |
26 | @@ -40,7 +37,7 @@ | |||
27 | 40 | w := httptest.NewRecorder() | 37 | w := httptest.NewRecorder() |
28 | 41 | h.ServeHTTP(w, nil) | 38 | h.ServeHTTP(w, nil) |
29 | 42 | c.Check(w.Code, Equals, 500) | 39 | c.Check(w.Code, Equals, 500) |
31 | 43 | c.Check(buf.String(), Matches, "(?s).* ERROR\\(PANIC\\) serving http: panic in handler:.*") | 40 | c.Check(logger.Captured(), Matches, "(?s)ERROR\\(PANIC\\) serving http: panic in handler:.*") |
32 | 44 | c.Check(w.Header().Get("Content-Type"), Equals, "application/json") | 41 | c.Check(w.Header().Get("Content-Type"), Equals, "application/json") |
33 | 45 | c.Check(w.Body.String(), Equals, `{"error":"internal","message":"INTERNAL SERVER ERROR"}`) | 42 | c.Check(w.Body.String(), Equals, `{"error":"internal","message":"INTERNAL SERVER ERROR"}`) |
34 | 46 | } | 43 | } |
35 | 47 | 44 | ||
36 | === modified file 'server/bootlog_test.go' | |||
37 | --- server/bootlog_test.go 2014-01-23 15:33:30 +0000 | |||
38 | +++ server/bootlog_test.go 2014-02-04 22:50:59 +0000 | |||
39 | @@ -17,9 +17,8 @@ | |||
40 | 17 | package server | 17 | package server |
41 | 18 | 18 | ||
42 | 19 | import ( | 19 | import ( |
43 | 20 | "bytes" | ||
44 | 21 | . "launchpad.net/gocheck" | 20 | . "launchpad.net/gocheck" |
46 | 22 | "launchpad.net/ubuntu-push/logger" | 21 | helpers "launchpad.net/ubuntu-push/testing" |
47 | 23 | "net" | 22 | "net" |
48 | 24 | "testing" | 23 | "testing" |
49 | 25 | ) | 24 | ) |
50 | @@ -31,9 +30,9 @@ | |||
51 | 31 | var _ = Suite(&bootlogSuite{}) | 30 | var _ = Suite(&bootlogSuite{}) |
52 | 32 | 31 | ||
53 | 33 | func (s *bootlogSuite) TestBootLogListener(c *C) { | 32 | func (s *bootlogSuite) TestBootLogListener(c *C) { |
54 | 34 | buf := &bytes.Buffer{} | ||
55 | 35 | prevBootLogger := BootLogger | 33 | prevBootLogger := BootLogger |
57 | 36 | BootLogger = logger.NewSimpleLogger(buf, "info") | 34 | testlog := helpers.NewTestLogger(c, "info") |
58 | 35 | BootLogger = testlog | ||
59 | 37 | defer func() { | 36 | defer func() { |
60 | 38 | BootLogger = prevBootLogger | 37 | BootLogger = prevBootLogger |
61 | 39 | }() | 38 | }() |
62 | @@ -41,5 +40,5 @@ | |||
63 | 41 | c.Assert(err, IsNil) | 40 | c.Assert(err, IsNil) |
64 | 42 | defer lst.Close() | 41 | defer lst.Close() |
65 | 43 | BootLogListener("client", lst) | 42 | BootLogListener("client", lst) |
67 | 44 | c.Check(buf.String(), Matches, ".* INFO listening for client on "+lst.Addr().String()+"\n") | 43 | c.Check(testlog.Captured(), Matches, "INFO listening for client on "+lst.Addr().String()+"\n") |
68 | 45 | } | 44 | } |
69 | 46 | 45 | ||
70 | === modified file 'server/broker/testsuite/suite.go' | |||
71 | --- server/broker/testsuite/suite.go 2014-02-04 21:35:11 +0000 | |||
72 | +++ server/broker/testsuite/suite.go 2014-02-04 22:50:59 +0000 | |||
73 | @@ -192,7 +192,10 @@ | |||
74 | 192 | } | 192 | } |
75 | 193 | 193 | ||
76 | 194 | func (s *CommonBrokerSuite) TestBroadcastFail(c *C) { | 194 | func (s *CommonBrokerSuite) TestBroadcastFail(c *C) { |
78 | 195 | s.testlog.Written = make(chan bool, 1) | 195 | logged := make(chan bool, 1) |
79 | 196 | s.testlog.SetLogEventCb(func(string) { | ||
80 | 197 | logged <- true | ||
81 | 198 | }) | ||
82 | 196 | sto := &testFailingStore{countdownToFail: 1} | 199 | sto := &testFailingStore{countdownToFail: 1} |
83 | 197 | b := s.MakeBroker(sto, testBrokerConfig, s.testlog) | 200 | b := s.MakeBroker(sto, testBrokerConfig, s.testlog) |
84 | 198 | b.Start() | 201 | b.Start() |
85 | @@ -203,7 +206,7 @@ | |||
86 | 203 | select { | 206 | select { |
87 | 204 | case <-time.After(5 * time.Second): | 207 | case <-time.After(5 * time.Second): |
88 | 205 | c.Fatal("taking too long to log error") | 208 | c.Fatal("taking too long to log error") |
90 | 206 | case <-s.testlog.Written: | 209 | case <-logged: |
91 | 207 | } | 210 | } |
92 | 208 | c.Check(s.testlog.Captured(), Matches, "ERROR unsuccessful broadcast, get channel snapshot for 0: get channel snapshot fail\n") | 211 | c.Check(s.testlog.Captured(), Matches, "ERROR unsuccessful broadcast, get channel snapshot for 0: get channel snapshot fail\n") |
93 | 209 | } | 212 | } |
94 | 210 | 213 | ||
95 | === modified file 'server/runner_test.go' | |||
96 | --- server/runner_test.go 2014-01-23 15:33:30 +0000 | |||
97 | +++ server/runner_test.go 2014-02-04 22:50:59 +0000 | |||
98 | @@ -17,12 +17,10 @@ | |||
99 | 17 | package server | 17 | package server |
100 | 18 | 18 | ||
101 | 19 | import ( | 19 | import ( |
102 | 20 | "bytes" | ||
103 | 21 | "fmt" | 20 | "fmt" |
104 | 22 | "io/ioutil" | 21 | "io/ioutil" |
105 | 23 | . "launchpad.net/gocheck" | 22 | . "launchpad.net/gocheck" |
106 | 24 | "launchpad.net/ubuntu-push/config" | 23 | "launchpad.net/ubuntu-push/config" |
107 | 25 | "launchpad.net/ubuntu-push/logger" | ||
108 | 26 | helpers "launchpad.net/ubuntu-push/testing" | 24 | helpers "launchpad.net/ubuntu-push/testing" |
109 | 27 | "net" | 25 | "net" |
110 | 28 | "net/http" | 26 | "net/http" |
111 | @@ -102,9 +100,9 @@ | |||
112 | 102 | } | 100 | } |
113 | 103 | 101 | ||
114 | 104 | func (s *runnerSuite) TestDevicesRunner(c *C) { | 102 | func (s *runnerSuite) TestDevicesRunner(c *C) { |
115 | 105 | buf := &bytes.Buffer{} | ||
116 | 106 | prevBootLogger := BootLogger | 103 | prevBootLogger := BootLogger |
118 | 107 | BootLogger = logger.NewSimpleLogger(buf, "debug") | 104 | testlog := helpers.NewTestLogger(c, "debug") |
119 | 105 | BootLogger = testlog | ||
120 | 108 | defer func() { | 106 | defer func() { |
121 | 109 | BootLogger = prevBootLogger | 107 | BootLogger = prevBootLogger |
122 | 110 | }() | 108 | }() |
123 | 111 | 109 | ||
124 | === modified file 'server/session/session_test.go' | |||
125 | --- server/session/session_test.go 2014-01-31 17:25:02 +0000 | |||
126 | +++ server/session/session_test.go 2014-02-04 22:50:59 +0000 | |||
127 | @@ -18,17 +18,15 @@ | |||
128 | 18 | 18 | ||
129 | 19 | import ( | 19 | import ( |
130 | 20 | "bufio" | 20 | "bufio" |
131 | 21 | "bytes" | ||
132 | 22 | "encoding/json" | 21 | "encoding/json" |
133 | 23 | "errors" | 22 | "errors" |
134 | 24 | "fmt" | 23 | "fmt" |
135 | 25 | "io" | 24 | "io" |
136 | 26 | "io/ioutil" | ||
137 | 27 | . "launchpad.net/gocheck" | 25 | . "launchpad.net/gocheck" |
138 | 28 | "launchpad.net/ubuntu-push/logger" | ||
139 | 29 | "launchpad.net/ubuntu-push/protocol" | 26 | "launchpad.net/ubuntu-push/protocol" |
140 | 30 | "launchpad.net/ubuntu-push/server/broker" | 27 | "launchpad.net/ubuntu-push/server/broker" |
141 | 31 | "launchpad.net/ubuntu-push/server/broker/testing" | 28 | "launchpad.net/ubuntu-push/server/broker/testing" |
142 | 29 | helpers "launchpad.net/ubuntu-push/testing" | ||
143 | 32 | "net" | 30 | "net" |
144 | 33 | "reflect" | 31 | "reflect" |
145 | 34 | gotesting "testing" | 32 | gotesting "testing" |
146 | @@ -37,7 +35,13 @@ | |||
147 | 37 | 35 | ||
148 | 38 | func TestSession(t *gotesting.T) { TestingT(t) } | 36 | func TestSession(t *gotesting.T) { TestingT(t) } |
149 | 39 | 37 | ||
151 | 40 | type sessionSuite struct{} | 38 | type sessionSuite struct { |
152 | 39 | testlog *helpers.TestLogger | ||
153 | 40 | } | ||
154 | 41 | |||
155 | 42 | func (s *sessionSuite) SetUpTest(c *C) { | ||
156 | 43 | s.testlog = helpers.NewTestLogger(c, "debug") | ||
157 | 44 | } | ||
158 | 41 | 45 | ||
159 | 42 | var _ = Suite(&sessionSuite{}) | 46 | var _ = Suite(&sessionSuite{}) |
160 | 43 | 47 | ||
161 | @@ -216,7 +220,7 @@ | |||
162 | 216 | } | 220 | } |
163 | 217 | 221 | ||
164 | 218 | func (s *sessionSuite) TestSessionLoop(c *C) { | 222 | func (s *sessionSuite) TestSessionLoop(c *C) { |
166 | 219 | nopTrack := NewTracker(nopLogger) | 223 | nopTrack := NewTracker(s.testlog) |
167 | 220 | errCh := make(chan error, 1) | 224 | errCh := make(chan error, 1) |
168 | 221 | up := make(chan interface{}, 5) | 225 | up := make(chan interface{}, 5) |
169 | 222 | down := make(chan interface{}, 5) | 226 | down := make(chan interface{}, 5) |
170 | @@ -238,7 +242,7 @@ | |||
171 | 238 | } | 242 | } |
172 | 239 | 243 | ||
173 | 240 | func (s *sessionSuite) TestSessionLoopWriteError(c *C) { | 244 | func (s *sessionSuite) TestSessionLoopWriteError(c *C) { |
175 | 241 | nopTrack := NewTracker(nopLogger) | 245 | nopTrack := NewTracker(s.testlog) |
176 | 242 | errCh := make(chan error, 1) | 246 | errCh := make(chan error, 1) |
177 | 243 | up := make(chan interface{}, 5) | 247 | up := make(chan interface{}, 5) |
178 | 244 | down := make(chan interface{}, 5) | 248 | down := make(chan interface{}, 5) |
179 | @@ -255,7 +259,7 @@ | |||
180 | 255 | } | 259 | } |
181 | 256 | 260 | ||
182 | 257 | func (s *sessionSuite) TestSessionLoopMismatch(c *C) { | 261 | func (s *sessionSuite) TestSessionLoopMismatch(c *C) { |
184 | 258 | nopTrack := NewTracker(nopLogger) | 262 | nopTrack := NewTracker(s.testlog) |
185 | 259 | errCh := make(chan error, 1) | 263 | errCh := make(chan error, 1) |
186 | 260 | up := make(chan interface{}, 5) | 264 | up := make(chan interface{}, 5) |
187 | 261 | down := make(chan interface{}, 5) | 265 | down := make(chan interface{}, 5) |
188 | @@ -317,7 +321,7 @@ | |||
189 | 317 | } | 321 | } |
190 | 318 | 322 | ||
191 | 319 | func (s *sessionSuite) TestSessionLoopExchange(c *C) { | 323 | func (s *sessionSuite) TestSessionLoopExchange(c *C) { |
193 | 320 | nopTrack := NewTracker(nopLogger) | 324 | nopTrack := NewTracker(s.testlog) |
194 | 321 | errCh := make(chan error, 1) | 325 | errCh := make(chan error, 1) |
195 | 322 | up := make(chan interface{}, 5) | 326 | up := make(chan interface{}, 5) |
196 | 323 | down := make(chan interface{}, 5) | 327 | down := make(chan interface{}, 5) |
197 | @@ -341,7 +345,7 @@ | |||
198 | 341 | } | 345 | } |
199 | 342 | 346 | ||
200 | 343 | func (s *sessionSuite) TestSessionLoopExchangeSplit(c *C) { | 347 | func (s *sessionSuite) TestSessionLoopExchangeSplit(c *C) { |
202 | 344 | nopTrack := NewTracker(nopLogger) | 348 | nopTrack := NewTracker(s.testlog) |
203 | 345 | errCh := make(chan error, 1) | 349 | errCh := make(chan error, 1) |
204 | 346 | up := make(chan interface{}, 5) | 350 | up := make(chan interface{}, 5) |
205 | 347 | down := make(chan interface{}, 5) | 351 | down := make(chan interface{}, 5) |
206 | @@ -372,7 +376,7 @@ | |||
207 | 372 | } | 376 | } |
208 | 373 | 377 | ||
209 | 374 | func (s *sessionSuite) TestSessionLoopExchangePrepareError(c *C) { | 378 | func (s *sessionSuite) TestSessionLoopExchangePrepareError(c *C) { |
211 | 375 | nopTrack := NewTracker(nopLogger) | 379 | nopTrack := NewTracker(s.testlog) |
212 | 376 | errCh := make(chan error, 1) | 380 | errCh := make(chan error, 1) |
213 | 377 | up := make(chan interface{}, 5) | 381 | up := make(chan interface{}, 5) |
214 | 378 | down := make(chan interface{}, 5) | 382 | down := make(chan interface{}, 5) |
215 | @@ -389,7 +393,7 @@ | |||
216 | 389 | } | 393 | } |
217 | 390 | 394 | ||
218 | 391 | func (s *sessionSuite) TestSessionLoopExchangeAckedError(c *C) { | 395 | func (s *sessionSuite) TestSessionLoopExchangeAckedError(c *C) { |
220 | 392 | nopTrack := NewTracker(nopLogger) | 396 | nopTrack := NewTracker(s.testlog) |
221 | 393 | errCh := make(chan error, 1) | 397 | errCh := make(chan error, 1) |
222 | 394 | up := make(chan interface{}, 5) | 398 | up := make(chan interface{}, 5) |
223 | 395 | down := make(chan interface{}, 5) | 399 | down := make(chan interface{}, 5) |
224 | @@ -410,7 +414,7 @@ | |||
225 | 410 | } | 414 | } |
226 | 411 | 415 | ||
227 | 412 | func (s *sessionSuite) TestSessionLoopExchangeWriteError(c *C) { | 416 | func (s *sessionSuite) TestSessionLoopExchangeWriteError(c *C) { |
229 | 413 | nopTrack := NewTracker(nopLogger) | 417 | nopTrack := NewTracker(s.testlog) |
230 | 414 | errCh := make(chan error, 1) | 418 | errCh := make(chan error, 1) |
231 | 415 | up := make(chan interface{}, 5) | 419 | up := make(chan interface{}, 5) |
232 | 416 | down := make(chan interface{}, 5) | 420 | down := make(chan interface{}, 5) |
233 | @@ -438,7 +442,7 @@ | |||
234 | 438 | } | 442 | } |
235 | 439 | 443 | ||
236 | 440 | func (s *sessionSuite) TestSessionLoopExchangeNextPing(c *C) { | 444 | func (s *sessionSuite) TestSessionLoopExchangeNextPing(c *C) { |
238 | 441 | track := &testTracker{NewTracker(nopLogger), make(chan interface{}, 1)} | 445 | track := &testTracker{NewTracker(s.testlog), make(chan interface{}, 1)} |
239 | 442 | errCh := make(chan error, 1) | 446 | errCh := make(chan error, 1) |
240 | 443 | up := make(chan interface{}, 5) | 447 | up := make(chan interface{}, 5) |
241 | 444 | down := make(chan interface{}, 5) | 448 | down := make(chan interface{}, 5) |
242 | @@ -458,8 +462,9 @@ | |||
243 | 458 | c.Check(takeNext(down), Equals, "deadline 5ms") | 462 | c.Check(takeNext(down), Equals, "deadline 5ms") |
244 | 459 | c.Check(takeNext(down), DeepEquals, protocol.PingPongMsg{Type: "ping"}) | 463 | c.Check(takeNext(down), DeepEquals, protocol.PingPongMsg{Type: "ping"}) |
245 | 460 | effectiveOfPing := float64(interval) / float64(10*time.Millisecond) | 464 | effectiveOfPing := float64(interval) / float64(10*time.Millisecond) |
248 | 461 | c.Check(effectiveOfPing > 0.95, Equals, true) | 465 | comment := Commentf("effectiveOfPing=%f", effectiveOfPing) |
249 | 462 | c.Check(effectiveOfPing < 1.15, Equals, true) | 466 | c.Check(effectiveOfPing > 0.95, Equals, true, comment) |
250 | 467 | c.Check(effectiveOfPing < 1.15, Equals, true, comment) | ||
251 | 463 | up <- nil // no write error | 468 | up <- nil // no write error |
252 | 464 | up <- io.EOF | 469 | up <- io.EOF |
253 | 465 | err := <-errCh | 470 | err := <-errCh |
254 | @@ -507,11 +512,8 @@ | |||
255 | 507 | exchangeTimeout: 10 * time.Millisecond, | 512 | exchangeTimeout: 10 * time.Millisecond, |
256 | 508 | } | 513 | } |
257 | 509 | 514 | ||
258 | 510 | var nopLogger = logger.NewSimpleLogger(ioutil.Discard, "error") | ||
259 | 511 | |||
260 | 512 | func (s *sessionSuite) TestSessionWire(c *C) { | 515 | func (s *sessionSuite) TestSessionWire(c *C) { |
263 | 513 | buf := &bytes.Buffer{} | 516 | track := NewTracker(s.testlog) |
262 | 514 | track := NewTracker(logger.NewSimpleLogger(buf, "debug")) | ||
264 | 515 | errCh := make(chan error, 1) | 517 | errCh := make(chan error, 1) |
265 | 516 | srv, cli, lst := serverClientWire() | 518 | srv, cli, lst := serverClientWire() |
266 | 517 | defer lst.Close() | 519 | defer lst.Close() |
267 | @@ -543,11 +545,11 @@ | |||
268 | 543 | c.Check(err, Equals, io.EOF) | 545 | c.Check(err, Equals, io.EOF) |
269 | 544 | c.Check(takeNext(brkr.registration), Equals, "unregister DEV") | 546 | c.Check(takeNext(brkr.registration), Equals, "unregister DEV") |
270 | 545 | // tracking | 547 | // tracking |
272 | 546 | c.Check(buf.String(), Matches, `.*connected.*\n.*registered DEV.*\n.*ended with: EOF\n`) | 548 | c.Check(s.testlog.Captured(), Matches, `.*connected.*\n.*registered DEV.*\n.*ended with: EOF\n`) |
273 | 547 | } | 549 | } |
274 | 548 | 550 | ||
275 | 549 | func (s *sessionSuite) TestSessionWireTimeout(c *C) { | 551 | func (s *sessionSuite) TestSessionWireTimeout(c *C) { |
277 | 550 | nopTrack := NewTracker(nopLogger) | 552 | nopTrack := NewTracker(s.testlog) |
278 | 551 | errCh := make(chan error, 1) | 553 | errCh := make(chan error, 1) |
279 | 552 | srv, cli, lst := serverClientWire() | 554 | srv, cli, lst := serverClientWire() |
280 | 553 | defer lst.Close() | 555 | defer lst.Close() |
281 | @@ -563,8 +565,7 @@ | |||
282 | 563 | } | 565 | } |
283 | 564 | 566 | ||
284 | 565 | func (s *sessionSuite) TestSessionWireWrongVersion(c *C) { | 567 | func (s *sessionSuite) TestSessionWireWrongVersion(c *C) { |
287 | 566 | buf := &bytes.Buffer{} | 568 | track := NewTracker(s.testlog) |
286 | 567 | track := NewTracker(logger.NewSimpleLogger(buf, "debug")) | ||
288 | 568 | errCh := make(chan error, 1) | 569 | errCh := make(chan error, 1) |
289 | 569 | srv, cli, lst := serverClientWire() | 570 | srv, cli, lst := serverClientWire() |
290 | 570 | defer lst.Close() | 571 | defer lst.Close() |
291 | @@ -577,13 +578,12 @@ | |||
292 | 577 | c.Check(err, DeepEquals, &broker.ErrAbort{"unexpected wire format version"}) | 578 | c.Check(err, DeepEquals, &broker.ErrAbort{"unexpected wire format version"}) |
293 | 578 | cli.Close() | 579 | cli.Close() |
294 | 579 | // tracking | 580 | // tracking |
296 | 580 | c.Check(buf.String(), Matches, `.*connected.*\n.*ended with: session aborted \(unexpected.*version\)\n`) | 581 | c.Check(s.testlog.Captured(), Matches, `.*connected.*\n.*ended with: session aborted \(unexpected.*version\)\n`) |
297 | 581 | 582 | ||
298 | 582 | } | 583 | } |
299 | 583 | 584 | ||
300 | 584 | func (s *sessionSuite) TestSessionWireEarlyClose(c *C) { | 585 | func (s *sessionSuite) TestSessionWireEarlyClose(c *C) { |
303 | 585 | buf := &bytes.Buffer{} | 586 | track := NewTracker(s.testlog) |
302 | 586 | track := NewTracker(logger.NewSimpleLogger(buf, "debug")) | ||
304 | 587 | errCh := make(chan error, 1) | 587 | errCh := make(chan error, 1) |
305 | 588 | srv, cli, lst := serverClientWire() | 588 | srv, cli, lst := serverClientWire() |
306 | 589 | defer lst.Close() | 589 | defer lst.Close() |
307 | @@ -595,13 +595,12 @@ | |||
308 | 595 | err := <-errCh | 595 | err := <-errCh |
309 | 596 | c.Check(err, Equals, io.EOF) | 596 | c.Check(err, Equals, io.EOF) |
310 | 597 | // tracking | 597 | // tracking |
312 | 598 | c.Check(buf.String(), Matches, `.*connected.*\n.*ended with: EOF\n`) | 598 | c.Check(s.testlog.Captured(), Matches, `.*connected.*\n.*ended with: EOF\n`) |
313 | 599 | 599 | ||
314 | 600 | } | 600 | } |
315 | 601 | 601 | ||
316 | 602 | func (s *sessionSuite) TestSessionWireEarlyClose2(c *C) { | 602 | func (s *sessionSuite) TestSessionWireEarlyClose2(c *C) { |
319 | 603 | buf := &bytes.Buffer{} | 603 | track := NewTracker(s.testlog) |
318 | 604 | track := NewTracker(logger.NewSimpleLogger(buf, "debug")) | ||
320 | 605 | errCh := make(chan error, 1) | 604 | errCh := make(chan error, 1) |
321 | 606 | srv, cli, lst := serverClientWire() | 605 | srv, cli, lst := serverClientWire() |
322 | 607 | defer lst.Close() | 606 | defer lst.Close() |
323 | @@ -615,11 +614,11 @@ | |||
324 | 615 | err := <-errCh | 614 | err := <-errCh |
325 | 616 | c.Check(err, Equals, io.EOF) | 615 | c.Check(err, Equals, io.EOF) |
326 | 617 | // tracking | 616 | // tracking |
328 | 618 | c.Check(buf.String(), Matches, `.*connected.*\n.*ended with: EOF\n`) | 617 | c.Check(s.testlog.Captured(), Matches, `.*connected.*\n.*ended with: EOF\n`) |
329 | 619 | } | 618 | } |
330 | 620 | 619 | ||
331 | 621 | func (s *sessionSuite) TestSessionWireTimeout2(c *C) { | 620 | func (s *sessionSuite) TestSessionWireTimeout2(c *C) { |
333 | 622 | nopTrack := NewTracker(nopLogger) | 621 | nopTrack := NewTracker(s.testlog) |
334 | 623 | errCh := make(chan error, 1) | 622 | errCh := make(chan error, 1) |
335 | 624 | srv, cli, lst := serverClientWire() | 623 | srv, cli, lst := serverClientWire() |
336 | 625 | defer lst.Close() | 624 | defer lst.Close() |
337 | 626 | 625 | ||
338 | === modified file 'server/session/tracker_test.go' | |||
339 | --- server/session/tracker_test.go 2014-01-30 12:56:08 +0000 | |||
340 | +++ server/session/tracker_test.go 2014-02-04 22:50:59 +0000 | |||
341 | @@ -17,16 +17,21 @@ | |||
342 | 17 | package session | 17 | package session |
343 | 18 | 18 | ||
344 | 19 | import ( | 19 | import ( |
345 | 20 | "bytes" | ||
346 | 21 | "fmt" | 20 | "fmt" |
347 | 22 | . "launchpad.net/gocheck" | 21 | . "launchpad.net/gocheck" |
348 | 23 | "launchpad.net/ubuntu-push/logger" | ||
349 | 24 | "launchpad.net/ubuntu-push/server/broker" | 22 | "launchpad.net/ubuntu-push/server/broker" |
350 | 25 | "launchpad.net/ubuntu-push/server/broker/testing" | 23 | "launchpad.net/ubuntu-push/server/broker/testing" |
351 | 24 | helpers "launchpad.net/ubuntu-push/testing" | ||
352 | 26 | "net" | 25 | "net" |
353 | 27 | ) | 26 | ) |
354 | 28 | 27 | ||
356 | 29 | type trackerSuite struct{} | 28 | type trackerSuite struct { |
357 | 29 | testlog *helpers.TestLogger | ||
358 | 30 | } | ||
359 | 31 | |||
360 | 32 | func (s *trackerSuite) SetUpTest(c *C) { | ||
361 | 33 | s.testlog = helpers.NewTestLogger(c, "debug") | ||
362 | 34 | } | ||
363 | 30 | 35 | ||
364 | 31 | var _ = Suite(&trackerSuite{}) | 36 | var _ = Suite(&trackerSuite{}) |
365 | 32 | 37 | ||
366 | @@ -37,31 +42,25 @@ | |||
367 | 37 | } | 42 | } |
368 | 38 | 43 | ||
369 | 39 | func (s *trackerSuite) TestSessionTrackStart(c *C) { | 44 | func (s *trackerSuite) TestSessionTrackStart(c *C) { |
373 | 40 | buf := &bytes.Buffer{} | 45 | track := NewTracker(s.testlog) |
371 | 41 | logger := logger.NewSimpleLogger(buf, "debug") | ||
372 | 42 | track := NewTracker(logger) | ||
374 | 43 | track.Start(&testRemoteAddrable{}) | 46 | track.Start(&testRemoteAddrable{}) |
375 | 44 | c.Check(track.(*tracker).sessionId, Not(Equals), 0) | 47 | c.Check(track.(*tracker).sessionId, Not(Equals), 0) |
378 | 45 | regExpected := fmt.Sprintf(`.* DEBUG session\(%x\) connected 127\.0\.0\.1:9999\n`, track.(*tracker).sessionId) | 48 | regExpected := fmt.Sprintf(`DEBUG session\(%x\) connected 127\.0\.0\.1:9999\n`, track.(*tracker).sessionId) |
379 | 46 | c.Check(buf.String(), Matches, regExpected) | 49 | c.Check(s.testlog.Captured(), Matches, regExpected) |
380 | 47 | } | 50 | } |
381 | 48 | 51 | ||
382 | 49 | func (s *trackerSuite) TestSessionTrackRegistered(c *C) { | 52 | func (s *trackerSuite) TestSessionTrackRegistered(c *C) { |
386 | 50 | buf := &bytes.Buffer{} | 53 | track := NewTracker(s.testlog) |
384 | 51 | logger := logger.NewSimpleLogger(buf, "debug") | ||
385 | 52 | track := NewTracker(logger) | ||
387 | 53 | track.Start(&testRemoteAddrable{}) | 54 | track.Start(&testRemoteAddrable{}) |
388 | 54 | track.Registered(&testing.TestBrokerSession{DeviceId: "DEV-ID"}) | 55 | track.Registered(&testing.TestBrokerSession{DeviceId: "DEV-ID"}) |
391 | 55 | regExpected := fmt.Sprintf(`.*connected.*\n.* INFO session\(%x\) registered DEV-ID\n`, track.(*tracker).sessionId) | 56 | regExpected := fmt.Sprintf(`.*connected.*\nINFO session\(%x\) registered DEV-ID\n`, track.(*tracker).sessionId) |
392 | 56 | c.Check(buf.String(), Matches, regExpected) | 57 | c.Check(s.testlog.Captured(), Matches, regExpected) |
393 | 57 | } | 58 | } |
394 | 58 | 59 | ||
395 | 59 | func (s *trackerSuite) TestSessionTrackEnd(c *C) { | 60 | func (s *trackerSuite) TestSessionTrackEnd(c *C) { |
399 | 60 | buf := &bytes.Buffer{} | 61 | track := NewTracker(s.testlog) |
397 | 61 | logger := logger.NewSimpleLogger(buf, "debug") | ||
398 | 62 | track := NewTracker(logger) | ||
400 | 63 | track.Start(&testRemoteAddrable{}) | 62 | track.Start(&testRemoteAddrable{}) |
401 | 64 | track.End(&broker.ErrAbort{}) | 63 | track.End(&broker.ErrAbort{}) |
404 | 65 | regExpected := fmt.Sprintf(`.*connected.*\n.* DEBUG session\(%x\) ended with: session aborted \(\)\n`, track.(*tracker).sessionId) | 64 | regExpected := fmt.Sprintf(`.*connected.*\nDEBUG session\(%x\) ended with: session aborted \(\)\n`, track.(*tracker).sessionId) |
405 | 66 | c.Check(buf.String(), Matches, regExpected) | 65 | c.Check(s.testlog.Captured(), Matches, regExpected) |
406 | 67 | } | 66 | } |
407 | 68 | 67 | ||
408 | === modified file 'testing/helpers.go' | |||
409 | --- testing/helpers.go 2014-02-04 21:35:11 +0000 | |||
410 | +++ testing/helpers.go 2014-02-04 22:50:59 +0000 | |||
411 | @@ -29,7 +29,7 @@ | |||
412 | 29 | outputFunc func(int, string) error | 29 | outputFunc func(int, string) error |
413 | 30 | lock sync.Mutex | 30 | lock sync.Mutex |
414 | 31 | logEvents []string | 31 | logEvents []string |
416 | 32 | written *chan bool | 32 | logEventCb func(string) |
417 | 33 | } | 33 | } |
418 | 34 | 34 | ||
419 | 35 | func (h *captureHelper) Output(calldepth int, s string) error { | 35 | func (h *captureHelper) Output(calldepth int, s string) error { |
420 | @@ -37,8 +37,8 @@ | |||
421 | 37 | if err == nil { | 37 | if err == nil { |
422 | 38 | h.lock.Lock() | 38 | h.lock.Lock() |
423 | 39 | defer h.lock.Unlock() | 39 | defer h.lock.Unlock() |
426 | 40 | if *h.written != nil { | 40 | if h.logEventCb != nil { |
427 | 41 | *h.written <- true | 41 | h.logEventCb(s) |
428 | 42 | } | 42 | } |
429 | 43 | h.logEvents = append(h.logEvents, s+"\n") | 43 | h.logEvents = append(h.logEvents, s+"\n") |
430 | 44 | } | 44 | } |
431 | @@ -57,12 +57,17 @@ | |||
432 | 57 | h.logEvents = nil | 57 | h.logEvents = nil |
433 | 58 | } | 58 | } |
434 | 59 | 59 | ||
435 | 60 | func (h *captureHelper) setLogEventCb(cb func(string)) { | ||
436 | 61 | h.lock.Lock() | ||
437 | 62 | defer h.lock.Unlock() | ||
438 | 63 | h.logEventCb = cb | ||
439 | 64 | } | ||
440 | 65 | |||
441 | 60 | // TestLogger implements logger.Logger using gocheck.C and supporting | 66 | // TestLogger implements logger.Logger using gocheck.C and supporting |
442 | 61 | // capturing log strings. | 67 | // capturing log strings. |
443 | 62 | type TestLogger struct { | 68 | type TestLogger struct { |
444 | 63 | logger.Logger | 69 | logger.Logger |
447 | 64 | helper *captureHelper | 70 | helper *captureHelper |
446 | 65 | Written chan bool | ||
448 | 66 | } | 71 | } |
449 | 67 | 72 | ||
450 | 68 | // NewTestLogger can be used in tests instead of NewSimpleLogger(FromMinimalLogger). | 73 | // NewTestLogger can be used in tests instead of NewSimpleLogger(FromMinimalLogger). |
451 | @@ -74,7 +79,6 @@ | |||
452 | 74 | Logger: logger.NewSimpleLoggerFromMinimalLogger(h, level), | 79 | Logger: logger.NewSimpleLoggerFromMinimalLogger(h, level), |
453 | 75 | helper: h, | 80 | helper: h, |
454 | 76 | } | 81 | } |
455 | 77 | h.written = &log.Written | ||
456 | 78 | return log | 82 | return log |
457 | 79 | } | 83 | } |
458 | 80 | 84 | ||
459 | @@ -88,6 +92,11 @@ | |||
460 | 88 | tlog.helper.reset() | 92 | tlog.helper.reset() |
461 | 89 | } | 93 | } |
462 | 90 | 94 | ||
463 | 95 | // SetLogEventCb sets a callback invoked for log events. | ||
464 | 96 | func (tlog *TestLogger) SetLogEventCb(cb func(string)) { | ||
465 | 97 | tlog.helper.setLogEventCb(cb) | ||
466 | 98 | } | ||
467 | 99 | |||
468 | 91 | // SourceRelative produces a path relative to the source code, makes | 100 | // SourceRelative produces a path relative to the source code, makes |
469 | 92 | // sense only for tests when the code is available on disk. | 101 | // sense only for tests when the code is available on disk. |
470 | 93 | func SourceRelative(relativePath string) string { | 102 | func SourceRelative(relativePath string) string { |