func New(host string, config *config.Config, logger *gosteno.Logger, storeAdapter storeadapter.StoreAdapter, messageDrainBufferSize uint, dropsondeOrigin string, dialTimeout time.Duration) *Doppler { cfcomponent.Logger = logger keepAliveInterval := 30 * time.Second appStoreCache := cache.NewAppServiceCache() appStoreWatcher, newAppServiceChan, deletedAppServiceChan := store.NewAppServiceStoreWatcher(storeAdapter, appStoreCache) var dropsondeUDPListener agentlistener.Listener var dropsondeTLSListener agentlistener.Listener var dropsondeBytesChan <-chan []byte listenerEnvelopeChan := make(chan *events.Envelope) if config.EnableTLSTransport { tlsConfig := &tls.Config{ Certificates: []tls.Certificate{config.TLSListenerConfig.Cert}, InsecureSkipVerify: config.TLSListenerConfig.InsecureSkipVerify, } dropsondeTLSListener = tlslistener.New(fmt.Sprintf("%s:%d", host, config.TLSListenerConfig.Port), tlsConfig, listenerEnvelopeChan, logger) } dropsondeUDPListener, dropsondeBytesChan = agentlistener.NewAgentListener(fmt.Sprintf("%s:%d", host, config.DropsondeIncomingMessagesPort), logger, "dropsondeListener") signatureVerifier := signature.NewVerifier(logger, config.SharedSecret) unmarshallerCollection := dropsonde_unmarshaller.NewDropsondeUnmarshallerCollection(logger, config.UnmarshallerCount) blacklist := blacklist.New(config.BlackListIps) metricTTL := time.Duration(config.ContainerMetricTTLSeconds) * time.Second sinkTimeout := time.Duration(config.SinkInactivityTimeoutSeconds) * time.Second sinkIOTimeout := time.Duration(config.SinkIOTimeoutSeconds) * time.Second sinkManager := sinkmanager.New(config.MaxRetainedLogMessages, config.SkipCertVerify, blacklist, logger, messageDrainBufferSize, dropsondeOrigin, sinkTimeout, sinkIOTimeout, metricTTL, dialTimeout) return &Doppler{ Logger: logger, dropsondeUDPListener: dropsondeUDPListener, dropsondeTLSListener: dropsondeTLSListener, sinkManager: sinkManager, messageRouter: sinkserver.NewMessageRouter(sinkManager, logger), websocketServer: websocketserver.New(fmt.Sprintf("%s:%d", host, config.OutgoingPort), sinkManager, keepAliveInterval, config.MessageDrainBufferSize, dropsondeOrigin, logger), newAppServiceChan: newAppServiceChan, deletedAppServiceChan: deletedAppServiceChan, appStoreWatcher: appStoreWatcher, storeAdapter: storeAdapter, dropsondeBytesChan: dropsondeBytesChan, dropsondeUnmarshallerCollection: unmarshallerCollection, envelopeChan: listenerEnvelopeChan, wrappedEnvelopeChan: make(chan *events.Envelope), signatureVerifier: signatureVerifier, dropsondeVerifiedBytesChan: make(chan []byte), uptimeMonitor: monitor.NewUptimeMonitor(time.Duration(config.MonitorIntervalSeconds) * time.Second), } }
"github.com/cloudfoundry/loggregatorlib/loggertesthelper" "github.com/gogo/protobuf/proto" "github.com/nu7hatch/gouuid" ) const address = "127.0.0.1:4567" var _ = Describe("Tcplistener", func() { Context("dropsonde metric emission", func() { var envelopeChan chan *events.Envelope var tlsListener agentlistener.Listener BeforeEach(func() { envelopeChan = make(chan *events.Envelope) tlsListener = tlslistener.New(address, config, envelopeChan, loggertesthelper.Logger()) go tlsListener.Start() }) AfterEach(func() { tlsListener.Stop() }) It("sends all types of messages as a gob", func() { for name, eventType := range events.Envelope_EventType_value { envelope := createEnvelope(events.Envelope_EventType(eventType)) conn := openTLSConnection() err := writeGob(conn, envelope) Expect(err).ToNot(HaveOccurred())