import ( "common/monitor" "github.com/cloudfoundry/dropsonde/emitter/fake" "github.com/cloudfoundry/dropsonde/metric_sender" "github.com/cloudfoundry/dropsonde/metricbatcher" "github.com/cloudfoundry/dropsonde/metrics" "github.com/cloudfoundry/sonde-go/events" "github.com/gogo/protobuf/proto" . "github.com/onsi/ginkgo" . "github.com/onsi/gomega" "time" ) var ( fakeEventEmitter *fake.FakeEventEmitter uptimeMonitor monitor.Monitor ) const ( interval = 100 * time.Millisecond ) var _ = Describe("UptimeMonitor", func() { BeforeEach(func() { fakeEventEmitter = fake.NewFakeEventEmitter("MonitorTest") sender := metric_sender.NewMetricSender(fakeEventEmitter) batcher := metricbatcher.New(sender, 100*time.Millisecond) metrics.Initialize(sender, batcher) uptimeMonitor = monitor.NewUptimeMonitor(interval)
"net" "net/http" "net/http/httptest" "time" "github.com/cloudfoundry/dropsonde/emitter/fake" "github.com/cloudfoundry/dropsonde/instrumented_handler" "github.com/cloudfoundry/sonde-go/events" uuid "github.com/nu7hatch/gouuid" . "github.com/onsi/ginkgo" . "github.com/onsi/gomega" ) var _ = Describe("InstrumentedHandler", func() { var fakeEmitter *fake.FakeEventEmitter var h http.Handler var req *http.Request var origin = "testHandler/41" BeforeEach(func() { fakeEmitter = fake.NewFakeEventEmitter(origin) var err error fh := fakeHandler{} h = instrumented_handler.InstrumentedHandler(fh, fakeEmitter) req, err = http.NewRequest("GET", "http://foo.example.com/", nil) Expect(err).ToNot(HaveOccurred()) req.RemoteAddr = "127.0.0.1" req.Header.Set("User-Agent", "our-testing-client")
"errors" "log" "runtime" "time" "github.com/cloudfoundry/dropsonde/emitter/fake" "github.com/cloudfoundry/sonde-go/events" "github.com/gogo/protobuf/proto" . "github.com/onsi/ginkgo" . "github.com/onsi/gomega" ) var _ = Describe("RuntimeStats", func() { var ( fakeEventEmitter *fake.FakeEventEmitter runtimeStats *runtime_stats.RuntimeStats stopChan, runDone chan struct{} ) BeforeEach(func() { fakeEventEmitter = fake.NewFakeEventEmitter("fake-origin") runtimeStats = runtime_stats.NewRuntimeStats(fakeEventEmitter, 10*time.Millisecond) stopChan = make(chan struct{}) runDone = make(chan struct{}) }) AfterEach(func() { close(stopChan) Eventually(runDone).Should(BeClosed()) })
It("works like a channel", func() { sendLogMessages("message 1", inMessageChan) readMessage := <-buffer.GetOutputChannel() Expect(readMessage.GetLogMessage().GetMessage()).To(ContainSubstring("message 1")) sendLogMessages("message 2", inMessageChan) readMessage2 := <-buffer.GetOutputChannel() Expect(readMessage2.GetLogMessage().GetMessage()).To(ContainSubstring("message 2")) }) Context("tracking dropped messages", func() { var fakeEventEmitter *fake.FakeEventEmitter BeforeEach(func() { fakeEventEmitter = fake.NewFakeEventEmitter("doppler") sender := metric_sender.NewMetricSender(fakeEventEmitter) batcher := metricbatcher.New(sender, 100*time.Millisecond) metrics.Initialize(sender, batcher) fakeEventEmitter.Reset() }) tracksDroppedMessages := func(delta, total int) { It("logs the dropped messages", func() { logMessageNotification := <-buffer.GetOutputChannel() Expect(logMessageNotification.GetEventType()).To(Equal(events.Envelope_LogMessage)) Expect(logMessageNotification.GetLogMessage().GetMessage()).To(ContainSubstring(fmt.Sprintf("Log message output is too high. %d messages dropped (Total %d messages dropped) to test-sink-name.", delta, total)))
"github.com/cloudfoundry/dropsonde/events" "github.com/cloudfoundry/dropsonde/log_sender" "github.com/gogo/protobuf/proto" "io" "strings" "time" "github.com/cloudfoundry/loggregatorlib/loggertesthelper" . "github.com/onsi/ginkgo" . "github.com/onsi/gomega" ) var _ = Describe("LogSender", func() { var ( emitter *fake.FakeEventEmitter sender log_sender.LogSender ) BeforeEach(func() { emitter = fake.NewFakeEventEmitter("origin") sender = log_sender.NewLogSender(emitter, 50*time.Millisecond, loggertesthelper.Logger()) }) AfterEach(func() { emitter.Close() for !emitter.IsClosed() { time.Sleep(10 * time.Millisecond) } }) Describe("SendAppLog", func() {
sendLogMessages("message 1", inMessageChan) var readMessage *events.Envelope Eventually(buffer.GetOutputChannel).Should(Receive(&readMessage)) Expect(readMessage.GetLogMessage().GetMessage()).To(ContainSubstring("message 1")) sendLogMessages("message 2", inMessageChan) Eventually(buffer.GetOutputChannel).Should(Receive(&readMessage)) Expect(readMessage.GetLogMessage().GetMessage()).To(ContainSubstring("message 2")) }) Context("tracking dropped messages", func() { var fakeEventEmitter *fake.FakeEventEmitter receiveDroppedMessages := func() uint64 { var t uint64 for i, _ := range fakeEventEmitter.GetMessages() { e := fakeEventEmitter.GetMessages()[i].Event.(*events.CounterEvent) t += e.GetDelta() } return t } tracksDroppedMessagesAnd := func(itMsg string, delta, total int) { It(itMsg, func() { var logMessageNotification *events.Envelope
package metric_sender_test import ( "errors" "github.com/cloudfoundry/dropsonde/emitter/fake" "github.com/cloudfoundry/dropsonde/events" "github.com/cloudfoundry/dropsonde/metric_sender" . "github.com/onsi/ginkgo" . "github.com/onsi/gomega" ) var _ = Describe("MetricSender", func() { var ( emitter *fake.FakeEventEmitter sender metric_sender.MetricSender ) BeforeEach(func() { emitter = fake.NewFakeEventEmitter("origin") sender = metric_sender.NewMetricSender(emitter) }) It("sends a metric to its emitter", func() { err := sender.SendValue("metric-name", 42, "answers") Expect(err).NotTo(HaveOccurred()) Expect(emitter.GetMessages()).To(HaveLen(1)) metric := emitter.GetMessages()[0].Event.(*events.ValueMetric) Expect(metric.GetName()).To(Equal("metric-name")) Expect(metric.GetValue()).To(BeNumerically("==", 42))
import ( "github.com/cloudfoundry/dropsonde/emitter/fake" "github.com/cloudfoundry/dropsonde/metric_sender" "github.com/cloudfoundry/dropsonde/metrics" . "github.com/onsi/ginkgo" . "github.com/onsi/gomega" "testing" ) func TestMonitor(t *testing.T) { RegisterFailHandler(Fail) RunSpecs(t, "Monitor Suite") } var ( fakeEventEmitter *fake.FakeEventEmitter ) var _ = BeforeSuite(func() { fakeEventEmitter = fake.NewFakeEventEmitter("MonitorTest") sender := metric_sender.NewMetricSender(fakeEventEmitter) metrics.Initialize(sender, nil) }) var _ = AfterSuite(func() { fakeEventEmitter.Close() })
package metric_sender_test import ( "errors" "github.com/cloudfoundry/dropsonde/emitter/fake" "github.com/cloudfoundry/dropsonde/events" "github.com/cloudfoundry/dropsonde/metric_sender" . "github.com/onsi/ginkgo" . "github.com/onsi/gomega" ) var _ = Describe("MetricSender", func() { var ( emitter *fake.FakeEventEmitter sender metric_sender.MetricSender ) BeforeEach(func() { emitter = fake.NewFakeEventEmitter("origin") sender = metric_sender.NewMetricSender(emitter) }) It("sends a metric to its emitter", func() { err := sender.SendValue("metric-name", 42, "answers") Expect(err).NotTo(HaveOccurred()) Expect(emitter.Messages).To(HaveLen(1)) metric := emitter.Messages[0].Event.(*events.ValueMetric) Expect(metric.GetName()).To(Equal("metric-name")) Expect(metric.GetValue()).To(BeNumerically("==", 42))
var readMessage *events.Envelope Eventually(buffer.GetOutputChannel).Should(Receive(&readMessage)) Expect(readMessage.GetLogMessage().GetMessage()).To(ContainSubstring("message 1")) sendLogMessages("message 2", inMessageChan) Eventually(buffer.GetOutputChannel).Should(Receive(&readMessage)) Expect(readMessage.GetLogMessage().GetMessage()).To(ContainSubstring("message 2")) }) Context("tracking dropped messages", func() { var ( fakeEventEmitter *fake.FakeEventEmitter mockBatcher *mockMetricBatcher ) tracksDroppedMessagesAnd := func(itMsg string, delta, total int) { It(itMsg, func() { var logMessageNotification *events.Envelope Eventually(buffer.GetOutputChannel).Should(Receive(&logMessageNotification)) Expect(logMessageNotification.GetEventType()).To(Equal(events.Envelope_LogMessage)) Expect(logMessageNotification.GetLogMessage().GetAppId()).To(Equal("fake-app-id")) Expect(logMessageNotification.GetLogMessage().GetMessage()).To( ContainSubstring(fmt.Sprintf("Log message output is too high. "+ "%d messages dropped (Total %d messages dropped) from doppler to test-sink-name.", delta, total)), ) var counterEventNotification *events.Envelope Eventually(buffer.GetOutputChannel).Should(Receive(&counterEventNotification))
"io" "strings" "time" "github.com/cloudfoundry/dropsonde/metric_sender" "github.com/cloudfoundry/dropsonde/metricbatcher" "github.com/cloudfoundry/dropsonde/metrics" "github.com/cloudfoundry/loggregatorlib/loggertesthelper" . "github.com/onsi/ginkgo" . "github.com/onsi/gomega" ) var _ = Describe("LogSender", func() { var ( emitter *fake.FakeEventEmitter sender log_sender.LogSender ) BeforeEach(func() { emitter = fake.NewFakeEventEmitter("origin") metricSender := metric_sender.NewMetricSender(emitter) batcher := metricbatcher.New(metricSender, time.Millisecond) metrics.Initialize(metricSender, batcher) sender = log_sender.NewLogSender(emitter, loggertesthelper.Logger()) }) AfterEach(func() { emitter.Close() for !emitter.IsClosed() { time.Sleep(10 * time.Millisecond) }
import ( "boshhmforwarder/valuemetricsender" "time" "github.com/cloudfoundry/dropsonde/emitter/fake" "github.com/cloudfoundry/dropsonde/envelope_sender" "github.com/cloudfoundry/dropsonde/envelopes" "github.com/gogo/protobuf/proto" . "github.com/onsi/ginkgo" . "github.com/onsi/gomega" ) var _ = Describe("ValueMetricSender", func() { var ( fakeEventEmitter *fake.FakeEventEmitter ) BeforeEach(func() { fakeEventEmitter = fake.NewFakeEventEmitter("MonitorTest") envelopes.Initialize(envelope_sender.NewEnvelopeSender(fakeEventEmitter)) }) AfterEach(func() { fakeEventEmitter.Close() }) It("emits bosh metrics", func() { valueMetricSender := valuemetricsender.NewValueMetricSender() timeInSeconds := time.Now().Unix() valueMetricSender.SendValueMetric("some-deployment", "some-job", "some-index", "some-event-name", timeInSeconds, 1.23, "some-unit")
import ( "bytes" "errors" "github.com/cloudfoundry/dropsonde/emitter/fake" "github.com/cloudfoundry/dropsonde/events" "github.com/cloudfoundry/dropsonde/log_sender" "github.com/cloudfoundry/loggregatorlib/loggertesthelper" "io" . "github.com/onsi/ginkgo" . "github.com/onsi/gomega" ) var _ = Describe("LogSender", func() { var ( emitter *fake.FakeEventEmitter sender log_sender.LogSender ) BeforeEach(func() { emitter = fake.NewFakeEventEmitter("origin") sender = log_sender.NewLogSender(emitter, nil) }) Describe("SendAppLog", func() { It("sends a log message event to its emitter", func() { err := sender.SendAppLog("app-id", "custom-log-message", "App", "0") Expect(err).NotTo(HaveOccurred()) Expect(emitter.Messages).To(HaveLen(1)) log := emitter.Messages[0].Event.(*events.LogMessage) Expect(log.GetMessageType()).To(Equal(events.LogMessage_OUT))
import ( "errors" "github.com/cloudfoundry/dropsonde/emitter/fake" "github.com/cloudfoundry/dropsonde/envelope_sender" "github.com/gogo/protobuf/proto" . "github.com/onsi/ginkgo" . "github.com/onsi/gomega" ) var _ = Describe("EnvelopeSender", func() { var ( emitter *fake.FakeEventEmitter sender envelope_sender.EnvelopeSender envOrigin string ) BeforeEach(func() { envOrigin = "original-origin" emitter = fake.NewFakeEventEmitter("origin") sender = envelope_sender.NewEnvelopeSender(emitter) }) It("sends an Envelope to its emitter", func() { err := sender.SendEnvelope(createTestEnvelope(envOrigin)) Expect(err).NotTo(HaveOccurred()) Expect(emitter.GetEnvelopes()).To(HaveLen(1)) envelope := emitter.GetEnvelopes()[0]