File: test_socketdata.cpp

package info (click to toggle)
srt 1.5.4-3
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 5,804 kB
  • sloc: cpp: 52,175; ansic: 5,746; tcl: 1,183; sh: 318; python: 99; makefile: 38
file content (69 lines) | stat: -rw-r--r-- 1,791 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69

#include <chrono>
#include <thread>
#include <iostream>

#include "gtest/gtest.h"
#include "test_env.h"

#include "srt.h"
#include "netinet_any.h"

using namespace std;
using namespace std::chrono;
using namespace srt;

TEST(SocketData, PeerName)
{
    srt::TestInit srtinit;

    // Single-threaded one-app connect/accept action

    int csock = srt_create_socket();
    int lsock = srt_create_socket();

    bool rd_nonblocking = false;

    srt_setsockflag(csock, SRTO_RCVSYN, &rd_nonblocking, sizeof (rd_nonblocking));
    //srt_setsockflag(lsock, SRTO_RCVSYN, &rd_nonblocking, sizeof (rd_nonblocking));

    sockaddr_any addr = srt::CreateAddr("127.0.0.1", 5000, AF_INET);

    ASSERT_NE(srt_bind(lsock, addr.get(), addr.size()), -1);

    ASSERT_NE(srt_listen(lsock, 5), -1);

    ASSERT_NE(srt_connect(csock, addr.get(), addr.size()), -1);

    sockaddr_any rev_addr;
    int accepted_sock = srt_accept(lsock, rev_addr.get(), &rev_addr.len);

    // Wait to make sure that the socket is connected.

    int retry = 10;
    while (srt_getsockstate(csock) != SRTS_CONNECTED && retry)
    {
        this_thread::sleep_for(milliseconds(500));
        --retry;
    }

    ASSERT_NE(retry, 0);

    // Now checkups
    sockaddr_any peer_addr;
    ASSERT_NE(srt_getpeername(csock, peer_addr.get(), &peer_addr.len), -1);
    sockaddr_any my_addr;
    ASSERT_NE(srt_getsockname(csock, my_addr.get(), &my_addr.len), -1);

    cout << "Connect address: " << addr.str() << endl;
    cout << "Peer address: " << peer_addr.str() << endl;
    cout << "Accept address: " << rev_addr.str() << endl;
    cout << "Caller address: " << my_addr.str() << endl;

    EXPECT_EQ(peer_addr, addr);
    EXPECT_EQ(my_addr, rev_addr);

    srt_close(csock);
    srt_close(accepted_sock);
    srt_close(lsock);
}