github.com/makyo/juju@v0.0.0-20160425123129-2608902037e9/worker/metricworker/metricmanager_test.go (about) 1 // Copyright 2014 Canonical Ltd. 2 // Licensed under the AGPLv3, see LICENCE file for details. 3 4 package metricworker_test 5 6 import ( 7 "time" 8 9 jc "github.com/juju/testing/checkers" 10 gc "gopkg.in/check.v1" 11 12 coretesting "github.com/juju/juju/testing" 13 "github.com/juju/juju/worker/metricworker" 14 ) 15 16 type MetricManagerSuite struct{} 17 18 var _ = gc.Suite(&MetricManagerSuite{}) 19 20 func (s *MetricManagerSuite) TestRunner(c *gc.C) { 21 notify := make(chan string, 2) 22 cleanup := metricworker.PatchNotificationChannel(notify) 23 defer cleanup() 24 client := &mockClient{} 25 _, err := metricworker.NewMetricsManager(client) 26 c.Assert(err, jc.ErrorIsNil) 27 expectedCalls := map[string]bool{} 28 for i := 0; i < 2; i++ { 29 select { 30 case call := <-notify: 31 expectedCalls[call] = true 32 case <-time.After(coretesting.LongWait): 33 c.Logf("we should have received a notification by now") 34 } 35 } 36 37 c.Check(expectedCalls["senderCalled"], jc.IsTrue) 38 c.Check(expectedCalls["cleanupCalled"], jc.IsTrue) 39 }