AfterEach(func() { reader.Stop() <-readerStopped }) It("sends data recieved on UDP socket to its writer", func() { expectedData := "Some Data" otherData := "More stuff" connection, err := net.Dial("udp", address) _, err = connection.Write([]byte(expectedData)) Expect(err).NotTo(HaveOccurred()) Eventually(writer.Data).Should(HaveLen(1)) data := string(writer.Data()[0]) Expect(data).To(Equal(expectedData)) _, err = connection.Write([]byte(otherData)) Expect(err).NotTo(HaveOccurred()) Eventually(writer.Data).Should(HaveLen(2)) data = string(writer.Data()[1]) Expect(data).To(Equal(otherData)) }) It("emits metrics related to data sent in on udp connection", func(done Done) { expectedData := "Some Data" otherData := "More stuff" connection, err := net.Dial("udp", address)
writer = &mocks.MockByteArrayWriter{} marshaller = eventmarshaller.New(writer, loggertesthelper.Logger()) }) It("marshals envelopes into bytes", func() { envelope := &events.Envelope{ Origin: proto.String("fake-origin-1"), EventType: events.Envelope_LogMessage.Enum(), LogMessage: factories.NewLogMessage(events.LogMessage_OUT, "message", "appid", "sourceType"), } message, _ := proto.Marshal(envelope) marshaller.Write(envelope) Expect(writer.Data()).Should(HaveLen(1)) outputMessage := writer.Data()[0] Expect(outputMessage).To(Equal(message)) }) Context("metrics", func() { It("emits the correct metrics context", func() { Expect(marshaller.Emit().Name).To(Equal("eventMarshaller")) }) It("emits a marshal error counter", func() { envelope := &events.Envelope{} marshaller.Write(envelope) testhelpers.EventuallyExpectMetric(marshaller, "marshalErrors", 1) })