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  })