Example #1
0
TEST_F(StreamSocketTest, StreamSocketReceiveLineInString)
{
    StreamSocket stream;
    EXPECT_TRUE(stream.Create(AF_INET));
    EXPECT_FALSE(stream.Connect(SocketAddressInet("0.0.0.0:0")));
    EXPECT_TRUE(stream.Connect(m_address)) << m_address.ToString();
    struct timeval tv;
    tv.tv_sec = 5;
    tv.tv_usec = 0;
    EXPECT_TRUE(stream.WaitWriteable(&tv, true));
    std::string sent = "12345\n";
    EXPECT_TRUE(stream.SendAll(sent.data(), sent.size()));
    tv.tv_sec = 5;
    tv.tv_usec = 0;
    EXPECT_TRUE(stream.WaitReadable(&tv, true));
    std::string received;
    EXPECT_TRUE(stream.ReceiveLine(&received));
    EXPECT_EQ(sent, received);

    // Send all with timeout
    tv.tv_sec = 5;
    tv.tv_usec = 0;
    size_t sent_size;
    EXPECT_TRUE(stream.SendAll(sent.data(), sent.size(), &sent_size, &tv));
    EXPECT_EQ(sent.size(), sent_size);
    // peek size with 2
    EXPECT_TRUE(stream.ReceiveLine(&received, 2));
    EXPECT_EQ(sent, received);
}
Example #2
0
TEST_F(StreamSocketTest, StreamSocketReceiveLineInSmallerSizeBuffer)
{
    StreamSocket stream;
    EXPECT_TRUE(stream.Create(AF_INET));
    EXPECT_FALSE(stream.Connect(SocketAddressInet("0.0.0.0:0")));
    EXPECT_TRUE(stream.Connect(m_address)) << m_address.ToString();
    std::string sent = "12345\n";
    char buffer[5];
    size_t buffer_size = 5;
    size_t received_size;
    EXPECT_TRUE(stream.SendAll(sent.data(), sent.size()));
    EXPECT_FALSE(stream.ReceiveLine(buffer, buffer_size, &received_size));
    EXPECT_EQ(5U, received_size);
    for (size_t i = 0; i < received_size; ++i) {
        EXPECT_EQ(sent[i], buffer[i]);
    }
    // receive until '\n'
    EXPECT_TRUE(stream.ReceiveLine(buffer, buffer_size, &received_size));
    EXPECT_EQ(1U, received_size);
    EXPECT_EQ('\n', buffer[0]);
}
Example #3
0
TEST_F(StreamSocketTest, ConnectWithTimeout)
{
    StreamSocket stream;
    EXPECT_TRUE(stream.Create(AF_INET));
    EXPECT_FALSE(stream.Connect(SocketAddressInet("0.0.0.0:0"), 10));

    bool blocking = true;

    // For unknown reason, if we reuse failed socket, the following Connect
    // will faile with ECONNRESET, create a new socket here.
    EXPECT_TRUE(stream.Create(AF_INET));
    EXPECT_TRUE(stream.GetBlocking(&blocking));
    EXPECT_TRUE(blocking);

    EXPECT_TRUE(stream.Connect(m_address, 10));

    EXPECT_TRUE(stream.GetBlocking(&blocking));
    EXPECT_TRUE(blocking);

    EXPECT_TRUE(stream.SendAll("\n", 1));
}
Example #4
0
	bool TcpClient::Connect(const char * host, int port)
	{
		return Connect(SocketAddressInet(host, port));
	}