Пример #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);
}
Пример #2
0
TEST_F(StreamSocketTest, StreamSocketReceiveAll)
{
    StreamSocket stream;
    EXPECT_TRUE(stream.Create(AF_INET));
    EXPECT_TRUE(stream.Connect(m_address)) << m_address.ToString();
    std::string sent = "12345\n";
    EXPECT_TRUE(stream.SendAll(sent.data(), sent.size()));
    char buffer1[6], buffer2[5];
    size_t buffer1_size = 6;
    size_t buffer2_size = 5;
    size_t received_size;
    EXPECT_TRUE(stream.ReceiveAll(buffer1, buffer1_size));
    EXPECT_STREQ(sent.data(), buffer1);

    // with timeout
    EXPECT_TRUE(stream.SendAll(sent.data(), sent.size()));
    struct timeval tv;
    tv.tv_sec = 5;
    tv.tv_usec = 0;
    EXPECT_TRUE(stream.ReceiveAll(buffer1, buffer1_size, &received_size, &tv));
    EXPECT_EQ(6U, received_size);
    EXPECT_STREQ(sent.data(), buffer1);

    EXPECT_TRUE(stream.SendAll(sent.data(), sent.size()));
    EXPECT_TRUE(stream.ReceiveAll(buffer2, buffer2_size, &received_size));
    EXPECT_EQ(5U, received_size);
    for (size_t i = 0; i < received_size; ++i) {
        EXPECT_EQ(sent[i], buffer2[i]);
    }
}
Пример #3
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]);
}
Пример #4
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));
}
Пример #5
0
TEST_F(StreamSocketTest, StreamSocketReceiveLineInEqualSizeBuffer)
{
    StreamSocket stream;
    EXPECT_TRUE(stream.Create(AF_INET));
    EXPECT_TRUE(stream.Connect(m_address)) << m_address.ToString();
    std::string sent = "12345\n";
    char buffer[6];
    size_t received_size;
    size_t buffer_size = 6;
    EXPECT_TRUE(stream.SendAll(sent.data(), sent.size()));
    EXPECT_TRUE(stream.ReceiveLine(buffer, buffer_size, &received_size));
    EXPECT_EQ(6U, received_size);
    EXPECT_STREQ(sent.data(), buffer);
}
Пример #6
0
TEST_F(StreamSocketTest, StreamSocketReceiveLineInLargerSizeBuffer)
{
    StreamSocket stream;
    EXPECT_TRUE(stream.Create(AF_INET));
    EXPECT_TRUE(stream.Connect(m_address)) << m_address.ToString();
    std::string sent = "12345\n";
    char buffer[10];
    size_t buffer_size = 10;
    size_t received_size;
    EXPECT_TRUE(stream.SendAll(sent.data(), sent.size()));
    EXPECT_TRUE(stream.ReceiveLine(buffer, buffer_size, &received_size));
    EXPECT_EQ(6U, received_size);
    for (size_t i = 0; i < received_size; ++i) {
        EXPECT_EQ(sent[i], buffer[i]);
    }
}