go func() { marshaller.Run(inputChan, outputChan) close(runComplete) }() }) AfterEach(func() { close(inputChan) Eventually(runComplete).Should(BeClosed()) }) It("marshals envelopes into bytes", func() { envelope := &events.Envelope{ Origin: proto.String("fake-origin-3"), EventType: events.Envelope_Heartbeat.Enum(), Heartbeat: factories.NewHeartbeat(1, 2, 3), } message, _ := proto.Marshal(envelope) inputChan <- envelope outputMessage := <-outputChan Expect(outputMessage).To(Equal(message)) }) Context("metrics", func() { It("emits the correct metrics context", func() { Expect(marshaller.Emit().Name).To(Equal("dropsondeMarshaller")) }) It("emits a heartbeat counter", func() { envelope := &events.Envelope{
"github.com/cloudfoundry/dropsonde/events" "github.com/cloudfoundry/dropsonde/factories" "github.com/gogo/protobuf/proto" . "github.com/onsi/ginkgo" . "github.com/onsi/gomega" ) var _ = Describe("EventEmitter", func() { Describe("Emit", func() { Context("without an origin", func() { It("returns an error", func() { innerEmitter := fake.NewFakeByteEmitter() eventEmitter := emitter.NewEventEmitter(innerEmitter, "") testEvent := factories.NewHeartbeat(1, 2, 3) err := eventEmitter.Emit(testEvent) Expect(err).To(HaveOccurred()) Expect(err.Error()).To(ContainSubstring("Wrap: ")) }) }) It("marshals events and delegates to the inner emitter", func() { innerEmitter := fake.NewFakeByteEmitter() origin := "fake-origin" eventEmitter := emitter.NewEventEmitter(innerEmitter, origin) testEvent := factories.NewHeartbeat(1, 2, 3) err := eventEmitter.Emit(testEvent) Expect(err).ToNot(HaveOccurred())
func (emitter *instrumentedEmitter) GetHeartbeatEvent() events.Event { emitter.mutex.Lock() defer emitter.mutex.Unlock() return factories.NewHeartbeat(emitter.SentMetricsCounter, emitter.ReceivedMetricsCounter, emitter.ErrorCounter) }