Skip to content

Commit

Permalink
[tests] Test FileUpload: find unused UDP port (#2086)
Browse files Browse the repository at this point in the history
  • Loading branch information
maxsharabayko authored Aug 16, 2021
1 parent ae11c18 commit 399e8bf
Showing 1 changed file with 24 additions and 5 deletions.
29 changes: 24 additions & 5 deletions test/test_file_transmission.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -45,17 +45,35 @@ TEST(Transmission, FileUpload)
sa_lsn.sin_addr.s_addr = INADDR_ANY;
sa_lsn.sin_port = htons(5555);

// Find unused a port not used by any other service.
// Otherwise srt_connect may actually connect.
int bind_res = -1;
for (int port = 5000; port <= 5555; ++port)
{
sa_lsn.sin_port = htons(port);
bind_res = srt_bind(sock_lsn, (sockaddr*)&sa_lsn, sizeof sa_lsn);
if (bind_res == 0)
{
std::cout << "Running test on port " << port << "\n";
break;
}

ASSERT_TRUE(bind_res == SRT_EINVOP) << "Bind failed not due to an occupied port. Result " << bind_res;
}

ASSERT_GE(bind_res, 0);

srt_bind(sock_lsn, (sockaddr*)&sa_lsn, sizeof sa_lsn);

int optval = 0;
int optlen = sizeof optval;
ASSERT_EQ(srt_getsockflag(sock_lsn, SRTO_SNDBUF, &optval, &optlen), 0);
size_t filesize = 7 * optval;
const size_t filesize = 7 * optval;

{
std::cout << "WILL CREATE source file with size=" << filesize << " (= 7 * " << optval << "[sndbuf])\n";
std::ofstream outfile("file.source", std::ios::out | std::ios::binary);
ASSERT_EQ(!!outfile, true);
ASSERT_EQ(!!outfile, true) << srt_getlasterror_str();

srand(time(0));

Expand Down Expand Up @@ -96,6 +114,7 @@ TEST(Transmission, FileUpload)
ASSERT_NE(n, SRT_ERROR);
if (n == 0)
{
std::cerr << "Received 0 bytes, breaking.\n";
break;
}

Expand All @@ -110,7 +129,7 @@ TEST(Transmission, FileUpload)

sockaddr_in sa = sockaddr_in();
sa.sin_family = AF_INET;
sa.sin_port = htons(5555);
sa.sin_port = sa_lsn.sin_port;
ASSERT_EQ(inet_pton(AF_INET, "127.0.0.1", &sa.sin_addr), 1);

srt_connect(sock_clr, (sockaddr*)&sa, sizeof(sa));
Expand All @@ -126,8 +145,8 @@ TEST(Transmission, FileUpload)
size_t shift = 0;
while (n > 0)
{
int st = srt_send(sock_clr, buf.data()+shift, n);
ASSERT_GT(st, 0);
const int st = srt_send(sock_clr, buf.data()+shift, n);
ASSERT_GT(st, 0) << srt_getlasterror_str();

n -= st;
shift += st;
Expand Down

0 comments on commit 399e8bf

Please sign in to comment.