func main() { flag.Parse() config, logger := parseConfig(*debug, *configFilePath, *logFilePath) dopplerClientPool := initializeClientPool(config, logger) dopplerForwarder := dopplerforwarder.New(dopplerClientPool, logger) byteSigner := signer.New(config.SharedSecret, dopplerForwarder) marshaller := eventmarshaller.New(byteSigner, logger) varzShim := varzforwarder.New(config.Job, metricTTL, marshaller, logger) messageTagger := tagger.New(config.Deployment, config.Job, config.Index, varzShim) aggregator := messageaggregator.New(messageTagger, logger) dropsondeUnmarshaller := eventunmarshaller.New(aggregator, logger) dropsondeReader := networkreader.New(fmt.Sprintf("localhost:%d", config.DropsondeIncomingMessagesPort), "dropsondeAgentListener", dropsondeUnmarshaller, logger) // TODO: remove next two lines when legacy support is removed (or extracted to injector) legacyUnmarshaller := legacyunmarshaller.New(aggregator, logger) legacyReader := networkreader.New(fmt.Sprintf("localhost:%d", config.LegacyIncomingMessagesPort), "legacyAgentListener", legacyUnmarshaller, logger) instrumentables := []instrumentation.Instrumentable{ legacyReader, dropsondeReader, legacyUnmarshaller, dropsondeUnmarshaller, aggregator, varzShim, marshaller, } go startMonitoringEndpoints(config, instrumentables, logger) go legacyReader.Start() dropsondeReader.Start() }
func main() { // Metron is intended to be light-weight so we occupy only one core runtime.GOMAXPROCS(1) flag.Parse() config, logger := parseConfig(*debug, *configFilePath, *logFilePath) dopplerClientPool := initializeClientPool(config, logger) dopplerForwarder := dopplerforwarder.New(dopplerClientPool, logger) byteSigner := signer.New(config.SharedSecret, dopplerForwarder) marshaller := eventmarshaller.New(byteSigner, logger) messageTagger := tagger.New(config.Deployment, config.Job, config.Index, marshaller) aggregator := messageaggregator.New(messageTagger, logger) initializeMetrics(byteSigner, config, logger) dropsondeUnmarshaller := eventunmarshaller.New(aggregator, logger) dropsondeReader := networkreader.New(fmt.Sprintf("localhost:%d", config.DropsondeIncomingMessagesPort), "dropsondeAgentListener", dropsondeUnmarshaller, logger) // TODO: remove next four lines when legacy support is removed (or extracted to injector) legacyMarshaller := eventmarshaller.New(byteSigner, logger) legacyMessageTagger := tagger.New(config.Deployment, config.Job, config.Index, legacyMarshaller) legacyUnmarshaller := legacyunmarshaller.New(legacyMessageTagger, logger) legacyReader := networkreader.New(fmt.Sprintf("localhost:%d", config.LegacyIncomingMessagesPort), "legacyAgentListener", legacyUnmarshaller, logger) go legacyReader.Start() dropsondeReader.Start() }
"github.com/gogo/protobuf/proto" . "github.com/onsi/ginkgo" . "github.com/onsi/gomega" ) var _ = Describe("LegacyUnmarshaller", func() { var ( unmarshaller *legacyunmarshaller.LegacyUnmarshaller writer mocks.MockEnvelopeWriter ) Context("Run", func() { BeforeEach(func() { writer = mocks.MockEnvelopeWriter{} unmarshaller = legacyunmarshaller.New(&writer, loggertesthelper.Logger()) }) It("unmarshals bytes on channel into envelopes", func() { envelope := &logmessage.LogEnvelope{ RoutingKey: proto.String("fake-routing-key"), Signature: []byte{1, 2, 3}, LogMessage: &logmessage.LogMessage{ Message: []byte{4, 5, 6}, MessageType: logmessage.LogMessage_OUT.Enum(), Timestamp: proto.Int64(123), AppId: proto.String("fake-app-id"), }, } message, _ := proto.Marshal(envelope)