github.com/cloudfoundry-attic/garden-linux@v0.333.2-candidate/metrics/periodic_metron_notifier_test.go (about) 1 package metrics_test 2 3 import ( 4 "time" 5 6 "github.com/cloudfoundry-incubator/garden-linux/metrics" 7 "github.com/cloudfoundry-incubator/garden-linux/metrics/fakes" 8 "github.com/cloudfoundry/dropsonde/metric_sender/fake" 9 dropsonde_metrics "github.com/cloudfoundry/dropsonde/metrics" 10 "github.com/pivotal-golang/clock/fakeclock" 11 "github.com/pivotal-golang/lager/lagertest" 12 13 . "github.com/onsi/ginkgo" 14 . "github.com/onsi/gomega" 15 ) 16 17 var _ = Describe("PeriodicMetronNotifier", func() { 18 var ( 19 sender *fake.FakeMetricSender 20 21 fakeMetrics *fakes.FakeMetrics 22 reportInterval time.Duration 23 fakeClock *fakeclock.FakeClock 24 25 pmn *metrics.PeriodicMetronNotifier 26 ) 27 28 BeforeEach(func() { 29 reportInterval = 100 * time.Millisecond 30 31 fakeMetrics = new(fakes.FakeMetrics) 32 fakeMetrics.LoopDevicesReturns(33) 33 fakeMetrics.BackingStoresReturns(12) 34 fakeMetrics.DepotDirsReturns(3) 35 36 fakeClock = fakeclock.NewFakeClock(time.Unix(123, 456)) 37 38 sender = fake.NewFakeMetricSender() 39 dropsonde_metrics.Initialize(sender, nil) 40 }) 41 42 JustBeforeEach(func() { 43 pmn = metrics.NewPeriodicMetronNotifier( 44 lagertest.NewTestLogger("test"), 45 fakeMetrics, 46 reportInterval, 47 fakeClock, 48 ) 49 pmn.Start() 50 }) 51 52 AfterEach(func() { 53 pmn.Stop() 54 }) 55 56 Context("when the report interval elapses", func() { 57 It("emits metrics", func() { 58 fakeClock.Increment(reportInterval) 59 60 Eventually(func() fake.Metric { 61 return sender.GetValue("LoopDevices") 62 }).Should(Equal(fake.Metric{ 63 Value: 33, 64 Unit: "Metric", 65 })) 66 67 Eventually(func() fake.Metric { 68 return sender.GetValue("BackingStores") 69 }).Should(Equal(fake.Metric{ 70 Value: 12, 71 Unit: "Metric", 72 })) 73 74 Eventually(func() fake.Metric { 75 return sender.GetValue("DepotDirs") 76 }).Should(Equal(fake.Metric{ 77 Value: 3, 78 Unit: "Metric", 79 })) 80 }) 81 }) 82 })