Merge lp:~pedronis/ubuntu-push/testlog-more into lp:ubuntu-push

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
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
=== modified file 'server/api/middleware_test.go'
--- server/api/middleware_test.go 2014-01-16 16:15:23 +0000
+++ server/api/middleware_test.go 2014-02-04 22:50:59 +0000
@@ -17,10 +17,8 @@
17package api17package api
1818
19import (19import (
20 "bytes"
21 . "launchpad.net/gocheck"20 . "launchpad.net/gocheck"
22 "launchpad.net/ubuntu-push/logger"21 helpers "launchpad.net/ubuntu-push/testing"
23 // "launchpad.net/ubuntu-push/testing"
24 "net/http"22 "net/http"
25 "net/http/httptest"23 "net/http/httptest"
26)24)
@@ -30,8 +28,7 @@
30var _ = Suite(&middlewareSuite{})28var _ = Suite(&middlewareSuite{})
3129
32func (s *middlewareSuite) TestPanicTo500Handler(c *C) {30func (s *middlewareSuite) TestPanicTo500Handler(c *C) {
33 buf := &bytes.Buffer{}31 logger := helpers.NewTestLogger(c, "debug")
34 logger := logger.NewSimpleLogger(buf, "debug")
35 panicking := http.HandlerFunc(func(w http.ResponseWriter, req *http.Request) {32 panicking := http.HandlerFunc(func(w http.ResponseWriter, req *http.Request) {
36 panic("panic in handler")33 panic("panic in handler")
37 })34 })
@@ -40,7 +37,7 @@
40 w := httptest.NewRecorder()37 w := httptest.NewRecorder()
41 h.ServeHTTP(w, nil)38 h.ServeHTTP(w, nil)
42 c.Check(w.Code, Equals, 500)39 c.Check(w.Code, Equals, 500)
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:.*")
44 c.Check(w.Header().Get("Content-Type"), Equals, "application/json")41 c.Check(w.Header().Get("Content-Type"), Equals, "application/json")
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"}`)
46}43}
4744
=== modified file 'server/bootlog_test.go'
--- server/bootlog_test.go 2014-01-23 15:33:30 +0000
+++ server/bootlog_test.go 2014-02-04 22:50:59 +0000
@@ -17,9 +17,8 @@
17package server17package server
1818
19import (19import (
20 "bytes"
21 . "launchpad.net/gocheck"20 . "launchpad.net/gocheck"
22 "launchpad.net/ubuntu-push/logger"21 helpers "launchpad.net/ubuntu-push/testing"
23 "net"22 "net"
24 "testing"23 "testing"
25)24)
@@ -31,9 +30,9 @@
31var _ = Suite(&bootlogSuite{})30var _ = Suite(&bootlogSuite{})
3231
33func (s *bootlogSuite) TestBootLogListener(c *C) {32func (s *bootlogSuite) TestBootLogListener(c *C) {
34 buf := &bytes.Buffer{}
35 prevBootLogger := BootLogger33 prevBootLogger := BootLogger
36 BootLogger = logger.NewSimpleLogger(buf, "info")34 testlog := helpers.NewTestLogger(c, "info")
35 BootLogger = testlog
37 defer func() {36 defer func() {
38 BootLogger = prevBootLogger37 BootLogger = prevBootLogger
39 }()38 }()
@@ -41,5 +40,5 @@
41 c.Assert(err, IsNil)40 c.Assert(err, IsNil)
42 defer lst.Close()41 defer lst.Close()
43 BootLogListener("client", lst)42 BootLogListener("client", lst)
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")
45}44}
4645
=== modified file 'server/broker/testsuite/suite.go'
--- server/broker/testsuite/suite.go 2014-02-04 21:35:11 +0000
+++ server/broker/testsuite/suite.go 2014-02-04 22:50:59 +0000
@@ -192,7 +192,10 @@
192}192}
193193
194func (s *CommonBrokerSuite) TestBroadcastFail(c *C) {194func (s *CommonBrokerSuite) TestBroadcastFail(c *C) {
195 s.testlog.Written = make(chan bool, 1)195 logged := make(chan bool, 1)
196 s.testlog.SetLogEventCb(func(string) {
197 logged <- true
198 })
196 sto := &testFailingStore{countdownToFail: 1}199 sto := &testFailingStore{countdownToFail: 1}
197 b := s.MakeBroker(sto, testBrokerConfig, s.testlog)200 b := s.MakeBroker(sto, testBrokerConfig, s.testlog)
198 b.Start()201 b.Start()
@@ -203,7 +206,7 @@
203 select {206 select {
204 case <-time.After(5 * time.Second):207 case <-time.After(5 * time.Second):
205 c.Fatal("taking too long to log error")208 c.Fatal("taking too long to log error")
206 case <-s.testlog.Written:209 case <-logged:
207 }210 }
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")
209}212}
210213
=== modified file 'server/runner_test.go'
--- server/runner_test.go 2014-01-23 15:33:30 +0000
+++ server/runner_test.go 2014-02-04 22:50:59 +0000
@@ -17,12 +17,10 @@
17package server17package server
1818
19import (19import (
20 "bytes"
21 "fmt"20 "fmt"
22 "io/ioutil"21 "io/ioutil"
23 . "launchpad.net/gocheck"22 . "launchpad.net/gocheck"
24 "launchpad.net/ubuntu-push/config"23 "launchpad.net/ubuntu-push/config"
25 "launchpad.net/ubuntu-push/logger"
26 helpers "launchpad.net/ubuntu-push/testing"24 helpers "launchpad.net/ubuntu-push/testing"
27 "net"25 "net"
28 "net/http"26 "net/http"
@@ -102,9 +100,9 @@
102}100}
103101
104func (s *runnerSuite) TestDevicesRunner(c *C) {102func (s *runnerSuite) TestDevicesRunner(c *C) {
105 buf := &bytes.Buffer{}
106 prevBootLogger := BootLogger103 prevBootLogger := BootLogger
107 BootLogger = logger.NewSimpleLogger(buf, "debug")104 testlog := helpers.NewTestLogger(c, "debug")
105 BootLogger = testlog
108 defer func() {106 defer func() {
109 BootLogger = prevBootLogger107 BootLogger = prevBootLogger
110 }()108 }()
111109
=== modified file 'server/session/session_test.go'
--- server/session/session_test.go 2014-01-31 17:25:02 +0000
+++ server/session/session_test.go 2014-02-04 22:50:59 +0000
@@ -18,17 +18,15 @@
1818
19import (19import (
20 "bufio"20 "bufio"
21 "bytes"
22 "encoding/json"21 "encoding/json"
23 "errors"22 "errors"
24 "fmt"23 "fmt"
25 "io"24 "io"
26 "io/ioutil"
27 . "launchpad.net/gocheck"25 . "launchpad.net/gocheck"
28 "launchpad.net/ubuntu-push/logger"
29 "launchpad.net/ubuntu-push/protocol"26 "launchpad.net/ubuntu-push/protocol"
30 "launchpad.net/ubuntu-push/server/broker"27 "launchpad.net/ubuntu-push/server/broker"
31 "launchpad.net/ubuntu-push/server/broker/testing"28 "launchpad.net/ubuntu-push/server/broker/testing"
29 helpers "launchpad.net/ubuntu-push/testing"
32 "net"30 "net"
33 "reflect"31 "reflect"
34 gotesting "testing"32 gotesting "testing"
@@ -37,7 +35,13 @@
3735
38func TestSession(t *gotesting.T) { TestingT(t) }36func TestSession(t *gotesting.T) { TestingT(t) }
3937
40type sessionSuite struct{}38type sessionSuite struct {
39 testlog *helpers.TestLogger
40}
41
42func (s *sessionSuite) SetUpTest(c *C) {
43 s.testlog = helpers.NewTestLogger(c, "debug")
44}
4145
42var _ = Suite(&sessionSuite{})46var _ = Suite(&sessionSuite{})
4347
@@ -216,7 +220,7 @@
216}220}
217221
218func (s *sessionSuite) TestSessionLoop(c *C) {222func (s *sessionSuite) TestSessionLoop(c *C) {
219 nopTrack := NewTracker(nopLogger)223 nopTrack := NewTracker(s.testlog)
220 errCh := make(chan error, 1)224 errCh := make(chan error, 1)
221 up := make(chan interface{}, 5)225 up := make(chan interface{}, 5)
222 down := make(chan interface{}, 5)226 down := make(chan interface{}, 5)
@@ -238,7 +242,7 @@
238}242}
239243
240func (s *sessionSuite) TestSessionLoopWriteError(c *C) {244func (s *sessionSuite) TestSessionLoopWriteError(c *C) {
241 nopTrack := NewTracker(nopLogger)245 nopTrack := NewTracker(s.testlog)
242 errCh := make(chan error, 1)246 errCh := make(chan error, 1)
243 up := make(chan interface{}, 5)247 up := make(chan interface{}, 5)
244 down := make(chan interface{}, 5)248 down := make(chan interface{}, 5)
@@ -255,7 +259,7 @@
255}259}
256260
257func (s *sessionSuite) TestSessionLoopMismatch(c *C) {261func (s *sessionSuite) TestSessionLoopMismatch(c *C) {
258 nopTrack := NewTracker(nopLogger)262 nopTrack := NewTracker(s.testlog)
259 errCh := make(chan error, 1)263 errCh := make(chan error, 1)
260 up := make(chan interface{}, 5)264 up := make(chan interface{}, 5)
261 down := make(chan interface{}, 5)265 down := make(chan interface{}, 5)
@@ -317,7 +321,7 @@
317}321}
318322
319func (s *sessionSuite) TestSessionLoopExchange(c *C) {323func (s *sessionSuite) TestSessionLoopExchange(c *C) {
320 nopTrack := NewTracker(nopLogger)324 nopTrack := NewTracker(s.testlog)
321 errCh := make(chan error, 1)325 errCh := make(chan error, 1)
322 up := make(chan interface{}, 5)326 up := make(chan interface{}, 5)
323 down := make(chan interface{}, 5)327 down := make(chan interface{}, 5)
@@ -341,7 +345,7 @@
341}345}
342346
343func (s *sessionSuite) TestSessionLoopExchangeSplit(c *C) {347func (s *sessionSuite) TestSessionLoopExchangeSplit(c *C) {
344 nopTrack := NewTracker(nopLogger)348 nopTrack := NewTracker(s.testlog)
345 errCh := make(chan error, 1)349 errCh := make(chan error, 1)
346 up := make(chan interface{}, 5)350 up := make(chan interface{}, 5)
347 down := make(chan interface{}, 5)351 down := make(chan interface{}, 5)
@@ -372,7 +376,7 @@
372}376}
373377
374func (s *sessionSuite) TestSessionLoopExchangePrepareError(c *C) {378func (s *sessionSuite) TestSessionLoopExchangePrepareError(c *C) {
375 nopTrack := NewTracker(nopLogger)379 nopTrack := NewTracker(s.testlog)
376 errCh := make(chan error, 1)380 errCh := make(chan error, 1)
377 up := make(chan interface{}, 5)381 up := make(chan interface{}, 5)
378 down := make(chan interface{}, 5)382 down := make(chan interface{}, 5)
@@ -389,7 +393,7 @@
389}393}
390394
391func (s *sessionSuite) TestSessionLoopExchangeAckedError(c *C) {395func (s *sessionSuite) TestSessionLoopExchangeAckedError(c *C) {
392 nopTrack := NewTracker(nopLogger)396 nopTrack := NewTracker(s.testlog)
393 errCh := make(chan error, 1)397 errCh := make(chan error, 1)
394 up := make(chan interface{}, 5)398 up := make(chan interface{}, 5)
395 down := make(chan interface{}, 5)399 down := make(chan interface{}, 5)
@@ -410,7 +414,7 @@
410}414}
411415
412func (s *sessionSuite) TestSessionLoopExchangeWriteError(c *C) {416func (s *sessionSuite) TestSessionLoopExchangeWriteError(c *C) {
413 nopTrack := NewTracker(nopLogger)417 nopTrack := NewTracker(s.testlog)
414 errCh := make(chan error, 1)418 errCh := make(chan error, 1)
415 up := make(chan interface{}, 5)419 up := make(chan interface{}, 5)
416 down := make(chan interface{}, 5)420 down := make(chan interface{}, 5)
@@ -438,7 +442,7 @@
438}442}
439443
440func (s *sessionSuite) TestSessionLoopExchangeNextPing(c *C) {444func (s *sessionSuite) TestSessionLoopExchangeNextPing(c *C) {
441 track := &testTracker{NewTracker(nopLogger), make(chan interface{}, 1)}445 track := &testTracker{NewTracker(s.testlog), make(chan interface{}, 1)}
442 errCh := make(chan error, 1)446 errCh := make(chan error, 1)
443 up := make(chan interface{}, 5)447 up := make(chan interface{}, 5)
444 down := make(chan interface{}, 5)448 down := make(chan interface{}, 5)
@@ -458,8 +462,9 @@
458 c.Check(takeNext(down), Equals, "deadline 5ms")462 c.Check(takeNext(down), Equals, "deadline 5ms")
459 c.Check(takeNext(down), DeepEquals, protocol.PingPongMsg{Type: "ping"})463 c.Check(takeNext(down), DeepEquals, protocol.PingPongMsg{Type: "ping"})
460 effectiveOfPing := float64(interval) / float64(10*time.Millisecond)464 effectiveOfPing := float64(interval) / float64(10*time.Millisecond)
461 c.Check(effectiveOfPing > 0.95, Equals, true)465 comment := Commentf("effectiveOfPing=%f", effectiveOfPing)
462 c.Check(effectiveOfPing < 1.15, Equals, true)466 c.Check(effectiveOfPing > 0.95, Equals, true, comment)
467 c.Check(effectiveOfPing < 1.15, Equals, true, comment)
463 up <- nil // no write error468 up <- nil // no write error
464 up <- io.EOF469 up <- io.EOF
465 err := <-errCh470 err := <-errCh
@@ -507,11 +512,8 @@
507 exchangeTimeout: 10 * time.Millisecond,512 exchangeTimeout: 10 * time.Millisecond,
508}513}
509514
510var nopLogger = logger.NewSimpleLogger(ioutil.Discard, "error")
511
512func (s *sessionSuite) TestSessionWire(c *C) {515func (s *sessionSuite) TestSessionWire(c *C) {
513 buf := &bytes.Buffer{}516 track := NewTracker(s.testlog)
514 track := NewTracker(logger.NewSimpleLogger(buf, "debug"))
515 errCh := make(chan error, 1)517 errCh := make(chan error, 1)
516 srv, cli, lst := serverClientWire()518 srv, cli, lst := serverClientWire()
517 defer lst.Close()519 defer lst.Close()
@@ -543,11 +545,11 @@
543 c.Check(err, Equals, io.EOF)545 c.Check(err, Equals, io.EOF)
544 c.Check(takeNext(brkr.registration), Equals, "unregister DEV")546 c.Check(takeNext(brkr.registration), Equals, "unregister DEV")
545 // tracking547 // tracking
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`)
547}549}
548550
549func (s *sessionSuite) TestSessionWireTimeout(c *C) {551func (s *sessionSuite) TestSessionWireTimeout(c *C) {
550 nopTrack := NewTracker(nopLogger)552 nopTrack := NewTracker(s.testlog)
551 errCh := make(chan error, 1)553 errCh := make(chan error, 1)
552 srv, cli, lst := serverClientWire()554 srv, cli, lst := serverClientWire()
553 defer lst.Close()555 defer lst.Close()
@@ -563,8 +565,7 @@
563}565}
564566
565func (s *sessionSuite) TestSessionWireWrongVersion(c *C) {567func (s *sessionSuite) TestSessionWireWrongVersion(c *C) {
566 buf := &bytes.Buffer{}568 track := NewTracker(s.testlog)
567 track := NewTracker(logger.NewSimpleLogger(buf, "debug"))
568 errCh := make(chan error, 1)569 errCh := make(chan error, 1)
569 srv, cli, lst := serverClientWire()570 srv, cli, lst := serverClientWire()
570 defer lst.Close()571 defer lst.Close()
@@ -577,13 +578,12 @@
577 c.Check(err, DeepEquals, &broker.ErrAbort{"unexpected wire format version"})578 c.Check(err, DeepEquals, &broker.ErrAbort{"unexpected wire format version"})
578 cli.Close()579 cli.Close()
579 // tracking580 // tracking
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`)
581582
582}583}
583584
584func (s *sessionSuite) TestSessionWireEarlyClose(c *C) {585func (s *sessionSuite) TestSessionWireEarlyClose(c *C) {
585 buf := &bytes.Buffer{}586 track := NewTracker(s.testlog)
586 track := NewTracker(logger.NewSimpleLogger(buf, "debug"))
587 errCh := make(chan error, 1)587 errCh := make(chan error, 1)
588 srv, cli, lst := serverClientWire()588 srv, cli, lst := serverClientWire()
589 defer lst.Close()589 defer lst.Close()
@@ -595,13 +595,12 @@
595 err := <-errCh595 err := <-errCh
596 c.Check(err, Equals, io.EOF)596 c.Check(err, Equals, io.EOF)
597 // tracking597 // tracking
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`)
599599
600}600}
601601
602func (s *sessionSuite) TestSessionWireEarlyClose2(c *C) {602func (s *sessionSuite) TestSessionWireEarlyClose2(c *C) {
603 buf := &bytes.Buffer{}603 track := NewTracker(s.testlog)
604 track := NewTracker(logger.NewSimpleLogger(buf, "debug"))
605 errCh := make(chan error, 1)604 errCh := make(chan error, 1)
606 srv, cli, lst := serverClientWire()605 srv, cli, lst := serverClientWire()
607 defer lst.Close()606 defer lst.Close()
@@ -615,11 +614,11 @@
615 err := <-errCh614 err := <-errCh
616 c.Check(err, Equals, io.EOF)615 c.Check(err, Equals, io.EOF)
617 // tracking616 // tracking
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`)
619}618}
620619
621func (s *sessionSuite) TestSessionWireTimeout2(c *C) {620func (s *sessionSuite) TestSessionWireTimeout2(c *C) {
622 nopTrack := NewTracker(nopLogger)621 nopTrack := NewTracker(s.testlog)
623 errCh := make(chan error, 1)622 errCh := make(chan error, 1)
624 srv, cli, lst := serverClientWire()623 srv, cli, lst := serverClientWire()
625 defer lst.Close()624 defer lst.Close()
626625
=== modified file 'server/session/tracker_test.go'
--- server/session/tracker_test.go 2014-01-30 12:56:08 +0000
+++ server/session/tracker_test.go 2014-02-04 22:50:59 +0000
@@ -17,16 +17,21 @@
17package session17package session
1818
19import (19import (
20 "bytes"
21 "fmt"20 "fmt"
22 . "launchpad.net/gocheck"21 . "launchpad.net/gocheck"
23 "launchpad.net/ubuntu-push/logger"
24 "launchpad.net/ubuntu-push/server/broker"22 "launchpad.net/ubuntu-push/server/broker"
25 "launchpad.net/ubuntu-push/server/broker/testing"23 "launchpad.net/ubuntu-push/server/broker/testing"
24 helpers "launchpad.net/ubuntu-push/testing"
26 "net"25 "net"
27)26)
2827
29type trackerSuite struct{}28type trackerSuite struct {
29 testlog *helpers.TestLogger
30}
31
32func (s *trackerSuite) SetUpTest(c *C) {
33 s.testlog = helpers.NewTestLogger(c, "debug")
34}
3035
31var _ = Suite(&trackerSuite{})36var _ = Suite(&trackerSuite{})
3237
@@ -37,31 +42,25 @@
37}42}
3843
39func (s *trackerSuite) TestSessionTrackStart(c *C) {44func (s *trackerSuite) TestSessionTrackStart(c *C) {
40 buf := &bytes.Buffer{}45 track := NewTracker(s.testlog)
41 logger := logger.NewSimpleLogger(buf, "debug")
42 track := NewTracker(logger)
43 track.Start(&testRemoteAddrable{})46 track.Start(&testRemoteAddrable{})
44 c.Check(track.(*tracker).sessionId, Not(Equals), 0)47 c.Check(track.(*tracker).sessionId, Not(Equals), 0)
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)
46 c.Check(buf.String(), Matches, regExpected)49 c.Check(s.testlog.Captured(), Matches, regExpected)
47}50}
4851
49func (s *trackerSuite) TestSessionTrackRegistered(c *C) {52func (s *trackerSuite) TestSessionTrackRegistered(c *C) {
50 buf := &bytes.Buffer{}53 track := NewTracker(s.testlog)
51 logger := logger.NewSimpleLogger(buf, "debug")
52 track := NewTracker(logger)
53 track.Start(&testRemoteAddrable{})54 track.Start(&testRemoteAddrable{})
54 track.Registered(&testing.TestBrokerSession{DeviceId: "DEV-ID"})55 track.Registered(&testing.TestBrokerSession{DeviceId: "DEV-ID"})
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)
56 c.Check(buf.String(), Matches, regExpected)57 c.Check(s.testlog.Captured(), Matches, regExpected)
57}58}
5859
59func (s *trackerSuite) TestSessionTrackEnd(c *C) {60func (s *trackerSuite) TestSessionTrackEnd(c *C) {
60 buf := &bytes.Buffer{}61 track := NewTracker(s.testlog)
61 logger := logger.NewSimpleLogger(buf, "debug")
62 track := NewTracker(logger)
63 track.Start(&testRemoteAddrable{})62 track.Start(&testRemoteAddrable{})
64 track.End(&broker.ErrAbort{})63 track.End(&broker.ErrAbort{})
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)
66 c.Check(buf.String(), Matches, regExpected)65 c.Check(s.testlog.Captured(), Matches, regExpected)
67}66}
6867
=== modified file 'testing/helpers.go'
--- testing/helpers.go 2014-02-04 21:35:11 +0000
+++ testing/helpers.go 2014-02-04 22:50:59 +0000
@@ -29,7 +29,7 @@
29 outputFunc func(int, string) error29 outputFunc func(int, string) error
30 lock sync.Mutex30 lock sync.Mutex
31 logEvents []string31 logEvents []string
32 written *chan bool32 logEventCb func(string)
33}33}
3434
35func (h *captureHelper) Output(calldepth int, s string) error {35func (h *captureHelper) Output(calldepth int, s string) error {
@@ -37,8 +37,8 @@
37 if err == nil {37 if err == nil {
38 h.lock.Lock()38 h.lock.Lock()
39 defer h.lock.Unlock()39 defer h.lock.Unlock()
40 if *h.written != nil {40 if h.logEventCb != nil {
41 *h.written <- true41 h.logEventCb(s)
42 }42 }
43 h.logEvents = append(h.logEvents, s+"\n")43 h.logEvents = append(h.logEvents, s+"\n")
44 }44 }
@@ -57,12 +57,17 @@
57 h.logEvents = nil57 h.logEvents = nil
58}58}
5959
60func (h *captureHelper) setLogEventCb(cb func(string)) {
61 h.lock.Lock()
62 defer h.lock.Unlock()
63 h.logEventCb = cb
64}
65
60// TestLogger implements logger.Logger using gocheck.C and supporting66// TestLogger implements logger.Logger using gocheck.C and supporting
61// capturing log strings.67// capturing log strings.
62type TestLogger struct {68type TestLogger struct {
63 logger.Logger69 logger.Logger
64 helper *captureHelper70 helper *captureHelper
65 Written chan bool
66}71}
6772
68// NewTestLogger can be used in tests instead of NewSimpleLogger(FromMinimalLogger).73// NewTestLogger can be used in tests instead of NewSimpleLogger(FromMinimalLogger).
@@ -74,7 +79,6 @@
74 Logger: logger.NewSimpleLoggerFromMinimalLogger(h, level),79 Logger: logger.NewSimpleLoggerFromMinimalLogger(h, level),
75 helper: h,80 helper: h,
76 }81 }
77 h.written = &log.Written
78 return log82 return log
79}83}
8084
@@ -88,6 +92,11 @@
88 tlog.helper.reset()92 tlog.helper.reset()
89}93}
9094
95// SetLogEventCb sets a callback invoked for log events.
96func (tlog *TestLogger) SetLogEventCb(cb func(string)) {
97 tlog.helper.setLogEventCb(cb)
98}
99
91// SourceRelative produces a path relative to the source code, makes100// SourceRelative produces a path relative to the source code, makes
92// sense only for tests when the code is available on disk.101// sense only for tests when the code is available on disk.
93func SourceRelative(relativePath string) string {102func SourceRelative(relativePath string) string {

Subscribers

People subscribed via source and target branches