"net/http/httptest" "net/url" "sync" "sync/atomic" "time" ) var _ = Describe("Loggregator Consumer", func() { var ( connection consumer.LoggregatorConsumer endpoint string testServer *httptest.Server fakeHandler *FakeHandler tlsSettings *tls.Config consumerProxyFunc func(*http.Request) (*url.URL, error) appGuid string authToken string incomingChan <-chan *logmessage.LogMessage messagesToSend chan []byte err error ) BeforeSuite(func() { buf := &bytes.Buffer{} log.SetOutput(buf) }) BeforeEach(func() { messagesToSend = make(chan []byte, 256)
Message: []byte(message), AppId: proto.String("my-app-guid"), MessageType: &messageType, SourceName: &sourceName, Timestamp: proto.Int64(timestamp), } } var _ = Describe("Loggregator Consumer", func() { var ( connection consumer.LoggregatorConsumer endpoint string testServer *httptest.Server fakeHandler *FakeHandler tlsSettings *tls.Config proxy func(*http.Request) (*url.URL, error) appGuid string authToken string incomingChan <-chan *logmessage.LogMessage err error ) BeforeEach(func() { fakeHandler = &FakeHandler{} fakeHandler.closeConnection = make(chan bool) }) AfterEach(func() { if testServer != nil { testServer.Close()
"log" "net/http" "net/http/httptest" "net/url" "time" ) var _ = Describe("Loggregator Consumer behind a Proxy", func() { var ( connection consumer.LoggregatorConsumer endpoint string testServer *httptest.Server tlsSettings *tls.Config consumerProxyFunc func(*http.Request) (*url.URL, error) appGuid string authToken string incomingChan <-chan *logmessage.LogMessage messagesToSend chan []byte testProxyServer *httptest.Server goProxyHandler *goproxy.ProxyHttpServer err error ) BeforeEach(func() { messagesToSend = make(chan []byte, 256) testServer = httptest.NewServer(handlers.NewWebsocketHandler(messagesToSend, 100*time.Millisecond, loggertesthelper.Logger())) endpoint = "ws://" + testServer.Listener.Addr().String() goProxyHandler = goproxy.NewProxyHttpServer() goProxyHandler.Logger = log.New(bytes.NewBufferString(""), "", 0)
import ( "crypto/tls" "encoding/json" consumer "github.com/cloudfoundry/loggregator_consumer" . "github.com/onsi/ginkgo" . "github.com/onsi/gomega" "os" "io/ioutil" "strings" ) var _ = Describe("LoggregatorConsumer:", func() { var appGuid, authToken string var connection consumer.LoggregatorConsumer BeforeEach(func() { var err error appGuid = os.Getenv("TEST_APP_GUID") loggregatorEndpoint := os.Getenv("LOGGREGATOR_ENDPOINT") connection = consumer.New(loggregatorEndpoint, &tls.Config{InsecureSkipVerify: true}, nil) authToken, err = getAuthToken() Expect(err).NotTo(HaveOccurred()) }) AfterEach(func() { connection.Close() })
noaaConsumer.ContainerMetrics(APP_ID, AUTH_TOKEN) expected := fmt.Sprintf("CEF:0|cloud_foundry|loggregator_trafficcontroller|1.0|GET /apps/%s/containermetrics|GET /apps/%[1]s/containermetrics|0|", APP_ID) Eventually(testContents).Should(ContainSubstring(expected)) }) It("logs firehose access", func() { noaaConsumer.Firehose("foo", AUTH_TOKEN) expected := "CEF:0|cloud_foundry|loggregator_trafficcontroller|1.0|GET /firehose/foo|GET /firehose/foo|0|" Eventually(testContents).Should(ContainSubstring(expected)) }) }) Context("with legacy endpoints", func() { var legacyConsumer loggregator_consumer.LoggregatorConsumer JustBeforeEach(func() { tcURL := fmt.Sprintf("ws://%s:%d", localIPAddress, TRAFFIC_CONTROLLER_LEGACY_PORT) legacyConsumer = loggregator_consumer.New(tcURL, &tls.Config{}, nil) }) AfterEach(func() { legacyConsumer.Close() }) It("logs tail access", func() { legacyConsumer.Tail(APP_ID, AUTH_TOKEN) expected := fmt.Sprintf("CEF:0|cloud_foundry|loggregator_trafficcontroller|1.0|GET /tail/?app=%s|GET /tail/?app=%[1]s|0|", APP_ID) Eventually(testContents).Should(ContainSubstring(expected))