void TCPTransportTest::setUp() { ola::InitLogging(ola::OLA_LOG_DEBUG, ola::OLA_LOG_STDERR); m_stream_ok = true; m_pdus_received = 0; m_localhost = IPV4SocketAddress::FromStringOrDie("127.0.0.1:9999"); // mock inflator CID cid; m_rx_callback.reset(NewCallback(this, &TCPTransportTest::PDUReceived)); m_inflator.reset(new MockInflator(m_cid, m_rx_callback.get())); // transport to test m_transport.reset( new IncomingStreamTransport(m_inflator.get(), &m_loopback, m_localhost)); // SelectServer m_ss.reset(new ola::io::SelectServer()); m_ss->RegisterSingleTimeout( ABORT_TIMEOUT_IN_MS, NewSingleCallback(this, &TCPTransportTest::FatalStop)); // loopback descriptor OLA_ASSERT(m_loopback.Init()); m_loopback.SetOnClose(NewSingleCallback(this, &TCPTransportTest::Stop)); m_loopback.SetOnData( NewCallback(this, &TCPTransportTest::Receive)); OLA_ASSERT(m_ss->AddReadDescriptor(&m_loopback)); }
/** * Test a short preamble. */ void TCPTransportTest::testShortPreamble() { uint8_t bogus_data[] = { 1, 2, 3, 4, 1, 2, 3, 4}; m_loopback.Send(bogus_data, sizeof(bogus_data)); m_ss->RunOnce(1, 0); m_loopback.CloseClient(); m_ss->RunOnce(1, 0); OLA_ASSERT(m_stream_ok); OLA_ASSERT_EQ(0u, m_pdus_received); }
/** * Test bogus data, this should show up as an invalid stream */ void TCPTransportTest::testBadPreamble() { uint8_t bogus_data[] = { 1, 2, 3, 4, 5, 0, 1, 0, 0, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4}; m_loopback.Send(bogus_data, sizeof(bogus_data)); m_ss->RunOnce(TimeInterval(1, 0)); m_loopback.CloseClient(); m_ss->RunOnce(TimeInterval(1, 0)); OLA_ASSERT_FALSE(m_stream_ok); OLA_ASSERT_EQ(0u, m_pdus_received); }
/** * Send a block of PDUs */ void TCPTransportTest::testSinglePDUBlock() { SendPDUBlock(__LINE__); m_ss->RunOnce(1, 0); m_loopback.CloseClient(); m_ss->RunOnce(1, 0); OLA_ASSERT(m_stream_ok); OLA_ASSERT_EQ(3u, m_pdus_received); }
void TCPTransportTest::SendPacket(const ola::testing::SourceLine &source_line, IOStack *packet) { IOQueue output; packet->MoveToIOQueue(&output); ola::testing::_FailIf( source_line, !m_loopback.Send(&output), "Loopback send failed"); }
/** * Send a block of PDUs */ void TCPTransportTest::testSinglePDUBlock() { SendPDUBlock(OLA_SOURCELINE()); m_ss->RunOnce(TimeInterval(1, 0)); m_loopback.CloseClient(); m_ss->RunOnce(TimeInterval(1, 0)); OLA_ASSERT(m_stream_ok); OLA_ASSERT_EQ(3u, m_pdus_received); }
/** * Test a 0-length PDU block */ void TCPTransportTest::testZeroLengthPDUBlock() { SendEmptyPDUBLock(__LINE__); SendPDU(__LINE__); m_ss->RunOnce(1, 0); m_loopback.CloseClient(); m_ss->RunOnce(1, 0); OLA_ASSERT(m_stream_ok); OLA_ASSERT_EQ(1u, m_pdus_received); }
/** * Test a 0-length PDU block */ void TCPTransportTest::testZeroLengthPDUBlock() { SendEmptyPDUBLock(OLA_SOURCELINE()); SendPDU(OLA_SOURCELINE()); m_ss->RunOnce(TimeInterval(1, 0)); m_loopback.CloseClient(); m_ss->RunOnce(TimeInterval(1, 0)); OLA_ASSERT(m_stream_ok); OLA_ASSERT_EQ(1u, m_pdus_received); }
void TCPTransportTest::SendPacket(const string &message, IOStack *packet) { IOQueue output; packet->MoveToIOQueue(&output); OLA_ASSERT_TRUE_MSG(m_loopback.Send(&output), message); }
void TCPTransportTest::tearDown() { // Close the loopback descriptor and drain the ss m_loopback.Close(); m_ss->RunOnce(0, 0); }