Exemplo n.º 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);
}
Exemplo n.º 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]);
    }
}
Exemplo n.º 3
0
TEST(Socket, Attach)
{
    StreamSocket socket;
    EXPECT_TRUE(socket.Create(AF_INET));
    int handle, old_handle;
    handle = socket.Handle();
    EXPECT_LT(-1, handle);
    old_handle = socket.Detach();
    EXPECT_EQ(handle, old_handle);
    EXPECT_EQ(-1, socket.Handle());
}
Exemplo n.º 4
0
TEST(Socket, SocketOption)
{
    StreamSocket socket;
    EXPECT_TRUE(socket.Create(AF_INET));
    EXPECT_TRUE(socket.SetCloexec(true));
    EXPECT_TRUE(socket.SetLinger(true, 5));
    struct linger l;
    EXPECT_TRUE(socket.GetOption(SOL_SOCKET, SO_LINGER, &l));
    EXPECT_TRUE(l.l_onoff);
    EXPECT_EQ(5, l.l_linger);
}
Exemplo n.º 5
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));
}
Exemplo n.º 6
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);
}
Exemplo n.º 7
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]);
    }
}
Exemplo n.º 8
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]);
}