func TestThatItSends(t *testing.T) { receivedChan := make(chan []byte, 2) expectedMessageString := "Some data" expectedMessage := testhelpers.MarshalledLogMessage(t, expectedMessageString, "myApp") otherMessageString := "Some more stuff" otherMessage := testhelpers.MarshalledLogMessage(t, otherMessageString, "myApp") testhelpers.AddWSSink(t, receivedChan, SERVER_PORT, TAIL_PATH+"?app=myApp", testhelpers.VALID_SPACE_AUTHENTICATION_TOKEN) WaitForWebsocketRegistration() dataReadChannel <- expectedMessage dataReadChannel <- otherMessage select { case <-time.After(1 * time.Second): t.Errorf("Did not get message 1.") case message := <-receivedChan: testhelpers.AssertProtoBufferMessageEquals(t, expectedMessageString, message) } select { case <-time.After(1 * time.Second): t.Errorf("Did not get message 2.") case message := <-receivedChan: testhelpers.AssertProtoBufferMessageEquals(t, otherMessageString, message) } }
func TestThatItSendsAllDataToAllSinks(t *testing.T) { client1ReceivedChan := make(chan []byte) client2ReceivedChan := make(chan []byte) testhelpers.AddWSSink(t, client1ReceivedChan, SERVER_PORT, TAIL_PATH+"?app=myApp", testhelpers.VALID_SPACE_AUTHENTICATION_TOKEN) testhelpers.AddWSSink(t, client2ReceivedChan, SERVER_PORT, TAIL_PATH+"?app=myApp", testhelpers.VALID_SPACE_AUTHENTICATION_TOKEN) WaitForWebsocketRegistration() expectedMessageString := "Some Data" expectedMarshalledProtoBuffer := testhelpers.MarshalledLogMessage(t, expectedMessageString, "myApp") dataReadChannel <- expectedMarshalledProtoBuffer select { case <-time.After(200 * time.Millisecond): t.Errorf("Did not get message from client 1.") case message := <-client1ReceivedChan: testhelpers.AssertProtoBufferMessageEquals(t, expectedMessageString, message) } select { case <-time.After(200 * time.Millisecond): t.Errorf("Did not get message from client 2.") case message := <-client2ReceivedChan: testhelpers.AssertProtoBufferMessageEquals(t, expectedMessageString, message) } }
func TestItDumpsAllMessagesForAnAppUser(t *testing.T) { expectedMessageString := "Some data" expectedMessage := testhelpers.MarshalledLogMessage(t, expectedMessageString, "myApp") dataReadChannel <- expectedMessage req, err := http.NewRequest("GET", "http://localhost:"+SERVER_PORT+DUMP_PATH+"?app=myApp", nil) assert.NoError(t, err) req.Header.Add("Authorization", testhelpers.VALID_SPACE_AUTHENTICATION_TOKEN) resp, err := http.DefaultClient.Do(req) assert.NoError(t, err) assert.Equal(t, resp.Header.Get("Content-Type"), "application/octet-stream") assert.Equal(t, resp.StatusCode, 200) body, err := ioutil.ReadAll(resp.Body) assert.NoError(t, err) resp.Body.Close() messages, err := testhelpers.ParseDumpedMessages(body) assert.NoError(t, err) testhelpers.AssertProtoBufferMessageEquals(t, expectedMessageString, messages[len(messages)-1]) }
func TestRegisterAndFor(t *testing.T) { store := NewMessageStore(2) appId := "myApp" appMessageString := "AppMessage" appMessage := testhelpers.MarshalledLogMessage(t, appMessageString, "myApp") message, err := logmessage.ParseMessage(appMessage) store.Add(message, appId) messages, err := testhelpers.ParseDumpedMessages(store.DumpFor(appId)) assert.NoError(t, err) assert.Equal(t, len(messages), 1) testhelpers.AssertProtoBufferMessageEquals(t, appMessageString, messages[0]) }
func TestEndtoEndMessage(t *testing.T) { logger := gosteno.NewLogger("TestLogger") listener := agentlistener.NewAgentListener("localhost:3456", logger) dataChannel := listener.Start() sinkServer := sinkserver.NewSinkServer(messagestore.NewMessageStore(10), logger, testhelpers.SuccessfulAuthorizer, 30*time.Second) go sinkServer.Start(dataChannel, "localhost:8081") time.Sleep(1 * time.Millisecond) receivedChan := make(chan []byte) ws, _, _ := testhelpers.AddWSSink(t, receivedChan, "8081", "/tail/?app=myApp", testhelpers.VALID_SPACE_AUTHENTICATION_TOKEN) defer ws.Close() time.Sleep(50 * time.Millisecond) connection, err := net.Dial("udp", "localhost:3456") expectedMessageString := "Some Data" expectedMessage := testhelpers.MarshalledLogMessage(t, expectedMessageString, "myApp") _, err = connection.Write(expectedMessage) assert.NoError(t, err) testhelpers.AssertProtoBufferMessageEquals(t, expectedMessageString, <-receivedChan) }