func TestThatItSendsAllDataToAllDrainUrls(t *testing.T) { client1ReceivedChan := make(chan []byte) client2ReceivedChan := make(chan []byte) fakeSyslogDrain1, err := NewService(client1ReceivedChan, "127.0.0.1:34567") defer fakeSyslogDrain1.Stop() assert.NoError(t, err) go fakeSyslogDrain1.Serve() <-fakeSyslogDrain1.readyChan fakeSyslogDrain2, err := NewService(client2ReceivedChan, "127.0.0.1:34568") defer fakeSyslogDrain2.Stop() assert.NoError(t, err) go fakeSyslogDrain2.Serve() <-fakeSyslogDrain2.readyChan expectedMessageString := "Some Data" expectedMarshalledProtoBuffer := testhelpers.MarshalledDrainedLogMessage(t, expectedMessageString, "myApp", "syslog://localhost:34567", "syslog://localhost:34568") dataReadChannel <- expectedMarshalledProtoBuffer select { case <-time.After(200 * time.Millisecond): t.Errorf("Did not get message from client 1.") case message := <-client1ReceivedChan: assert.Contains(t, string(message), expectedMessageString) } select { case <-time.After(200 * time.Millisecond): t.Errorf("Did not get message from client 2.") case message := <-client2ReceivedChan: assert.Contains(t, string(message), expectedMessageString) } }
// *** Start Syslog Sink tests func TestThatItSendsAllMessageToKnownDrains(t *testing.T) { client1ReceivedChan := make(chan []byte) fakeSyslogDrain, err := NewService(client1ReceivedChan, "127.0.0.1:34566") defer fakeSyslogDrain.Stop() assert.NoError(t, err) go fakeSyslogDrain.Serve() <-fakeSyslogDrain.readyChan expectedMessageString := "Some Data" expectedMarshalledProtoBuffer := testhelpers.MarshalledDrainedLogMessage(t, expectedMessageString, "myApp", "syslog://localhost:34566") expectedSecondMessageString := "Some Data Without a drainurl" expectedSecondMarshalledProtoBuffer := testhelpers.MarshalledLogMessage(t, expectedSecondMessageString, "myApp") dataReadChannel <- expectedMarshalledProtoBuffer select { case <-time.After(200 * time.Millisecond): t.Errorf("Did not get the first message") case message := <-client1ReceivedChan: assert.Contains(t, string(message), expectedMessageString) } dataReadChannel <- expectedSecondMarshalledProtoBuffer select { case <-time.After(200 * time.Millisecond): t.Errorf("Did not get the second message") case message := <-client1ReceivedChan: assert.Contains(t, string(message), expectedSecondMessageString) } }
func TestThatItReestablishesConnectionToSinks(t *testing.T) { client1ReceivedChan := make(chan []byte) fakeSyslogDrain, err := NewService(client1ReceivedChan, "127.0.0.1:34569") assert.NoError(t, err) go fakeSyslogDrain.Serve() <-fakeSyslogDrain.readyChan expectedMessageString := "Some Data" expectedMarshalledProtoBuffer := testhelpers.MarshalledDrainedLogMessage(t, expectedMessageString, "myApp", "syslog://localhost:34569") dataReadChannel <- expectedMarshalledProtoBuffer select { case <-time.After(200 * time.Millisecond): t.Errorf("Did not get the first message") case message := <-client1ReceivedChan: assert.Contains(t, string(message), expectedMessageString) } fakeSyslogDrain.Stop() dataReadChannel <- expectedMarshalledProtoBuffer dataReadChannel <- expectedMarshalledProtoBuffer time.Sleep(18 * time.Second) client2ReceivedChan := make(chan []byte) fakeSyslogDrain, err = NewService(client2ReceivedChan, "127.0.0.1:34569") assert.NoError(t, err) go fakeSyslogDrain.Serve() <-fakeSyslogDrain.readyChan expectedMessageString3 := "Some Data3" expectedMarshalledProtoBuffer3 := testhelpers.MarshalledDrainedLogMessage(t, expectedMessageString3, "myApp", "syslog://localhost:34569") dataReadChannel <- expectedMarshalledProtoBuffer3 select { case <-time.After(200 * time.Millisecond): t.Errorf("Did not get the third message") case message := <-client2ReceivedChan: assert.Contains(t, string(message), expectedMessageString3) } fakeSyslogDrain.Stop() }
func TestThatItSendsAllDataToOnlyAuthoritiveMessagesWithDrainUrls(t *testing.T) { client1ReceivedChan := make(chan []byte) client2ReceivedChan := make(chan []byte) fakeSyslogDrain1, err := NewService(client1ReceivedChan, "127.0.0.1:34569") defer fakeSyslogDrain1.Stop() assert.NoError(t, err) go fakeSyslogDrain1.Serve() <-fakeSyslogDrain1.readyChan fakeSyslogDrain2, err := NewService(client2ReceivedChan, "127.0.0.1:34540") defer fakeSyslogDrain2.Stop() assert.NoError(t, err) go fakeSyslogDrain2.Serve() <-fakeSyslogDrain2.readyChan expectedMessageString := "Some Data" expectedMarshalledProtoBuffer := testhelpers.MarshalledDrainedLogMessage(t, expectedMessageString, "myApp", "syslog://localhost:34569") dataReadChannel <- expectedMarshalledProtoBuffer select { case <-time.After(200 * time.Millisecond): t.Errorf("Did not get message 1") case message := <-client1ReceivedChan: assert.Contains(t, string(message), expectedMessageString) } expectedSecondMessageString := "Some More Data" expectedSecondMarshalledProtoBuffer := testhelpers.MarshalledDrainedNonWardenLogMessage(t, expectedSecondMessageString, "myApp", "syslog://localhost:34540") dataReadChannel <- expectedSecondMarshalledProtoBuffer select { case <-time.After(200 * time.Millisecond): t.Errorf("Did not get message 2") case message := <-client1ReceivedChan: assert.Contains(t, string(message), expectedSecondMessageString) case <-client2ReceivedChan: t.Error("Should not have gotten the new message in this drain") } }