func main() { configFilePath := flag.String("configPath", "", "path to the configuration file") flag.Parse() conf := config.Configuration(*configFilePath) if len(conf.Syslog) > 0 { logging.SetSysLogger(conf.Syslog) } logging.SetLevel(conf.LogLevel) dropsonde.Initialize("localhost:"+strconv.Itoa(conf.MetronPort), valuemetricsender.ForwarderOrigin) go func() { err := tcp.Open(conf.IncomingPort, forwarder.StartMessageForwarder(valuemetricsender.NewValueMetricSender())) if err != nil { logging.Log.Panic("Could not open the TCP port", err) } }() logging.Log.Info("Bosh HM forwarder initialized") infoHandler := handlers.NewInfoHandler() router := mux.NewRouter() router.Handle("/info", infoHandler).Methods("GET") if conf.DebugPort > 0 { go pprofServer(conf.DebugPort) } logging.Log.Info(fmt.Sprintf("Starting Info Server on port %d", conf.InfoPort)) err := http.ListenAndServe(net.JoinHostPort("", fmt.Sprintf("%d", conf.InfoPort)), router) if err != nil { logging.Log.Panic("Failed to start up alerter: ", err) } }
"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") Eventually(fakeEventEmitter.GetEnvelopes()).Should(HaveLen(1)) Expect(fakeEventEmitter.GetEnvelopes()[0].Origin).Should(Equal(proto.String(valuemetricsender.ForwarderOrigin))) Expect(fakeEventEmitter.GetEnvelopes()[0].ValueMetric).ShouldNot(BeNil()) Expect(fakeEventEmitter.GetEnvelopes()[0].Timestamp).ShouldNot(Equal(timeInSeconds * int64(time.Second))) }) })