Skip to content

Commit

Permalink
test/tcp,udp: Add TOS/TCLASS tests
Browse files Browse the repository at this point in the history
  • Loading branch information
maximilianfridrich committed Dec 16, 2024
1 parent f1d34a1 commit 9bfbc91
Show file tree
Hide file tree
Showing 4 changed files with 143 additions and 0 deletions.
64 changes: 64 additions & 0 deletions test/tcp.c
Original file line number Diff line number Diff line change
Expand Up @@ -227,3 +227,67 @@ int test_tcp(void)

return err;
}


#if !defined(WIN32)
static int tcp_tos(const char *addr)
{
struct tcp_test *tt;
struct sa srv;
int err;

tt = mem_zalloc(sizeof(*tt), destructor);
if (!tt)
return ENOMEM;

err = sa_set_str(&srv, addr, 0);
TEST_ERR(err);

err = tcp_listen(&tt->ts, &srv, tcp_server_conn_handler, tt);
TEST_ERR(err);

err = tcp_settos(tt->ts, 184);
TEST_ERR(err);

err = tcp_local_get(tt->ts, &srv);
TEST_ERR(err);

err = tcp_connect(&tt->tc, &srv, tcp_client_estab_handler,
tcp_client_recv_handler, tcp_client_close_handler,
tt);
TEST_ERR(err);

err = re_main_timeout(500);
TEST_ERR(err);

if (tt->err)
err = tt->err;

out:
mem_deref(tt);

return err;
}


int test_tcp_tos(void)
{
int err;

err = tcp_tos("127.0.0.1");
TEST_ERR(err);

err = tcp_tos("::1");
TEST_ERR(err);

out:
return err;
}
#else
/* Outcome of the TOS test on Windows would be dependent on the
* DisableUserTOSSetting Windows registry setting. */
int test_tcp_tos(void)
{
return 0;
}
#endif
2 changes: 2 additions & 0 deletions test/test.c
Original file line number Diff line number Diff line change
Expand Up @@ -216,6 +216,7 @@ static const struct test tests[] = {
TEST(test_sys_fs_fopen),
TEST(test_sys_getenv),
TEST(test_tcp),
TEST(test_tcp_tos),
TEST(test_telev),
TEST(test_text2pcap),
#ifdef USE_TLS
Expand All @@ -236,6 +237,7 @@ static const struct test tests[] = {
TEST(test_turn),
TEST(test_turn_tcp),
TEST(test_udp),
TEST(test_udp_tos),
TEST(test_unixsock),
TEST(test_uri),
TEST(test_uri_encode),
Expand Down
2 changes: 2 additions & 0 deletions test/test.h
Original file line number Diff line number Diff line change
Expand Up @@ -332,6 +332,7 @@ int test_sys_fs_isfile(void);
int test_sys_fs_fopen(void);
int test_sys_getenv(void);
int test_tcp(void);
int test_tcp_tos(void);
int test_telev(void);
int test_text2pcap(void);
int test_thread(void);
Expand All @@ -343,6 +344,7 @@ int test_turn(void);
int test_turn_tcp(void);
int test_turn_thread(void);
int test_udp(void);
int test_udp_tos(void);
int test_unixsock(void);
int test_uri(void);
int test_uri_encode(void);
Expand Down
75 changes: 75 additions & 0 deletions test/udp.c
Original file line number Diff line number Diff line change
Expand Up @@ -213,3 +213,78 @@ int test_udp(void)

return err;
}


#if !defined(WIN32)
static int udp_tos(const char *addr)
{
struct udp_test *ut;
int layer = 0;
int err;

ut = mem_zalloc(sizeof(*ut), destructor);
if (!ut)
return ENOMEM;

err = sa_set_str(&ut->cli, addr, 0);
err |= sa_set_str(&ut->srv, addr, 0);
TEST_ERR(err);

err = udp_listen(&ut->usc, &ut->cli, udp_recv_client, ut);
err |= udp_listen(&ut->uss, &ut->srv, udp_recv_server, ut);
TEST_ERR(err);

err = udp_settos(ut->usc, 184);
err |= udp_settos(ut->uss, 120);
TEST_ERR(err);

err = udp_local_get(ut->usc, &ut->cli);
err |= udp_local_get(ut->uss, &ut->srv);
TEST_ERR(err);

err = udp_register_helper(&ut->uh, ut->usc, layer,
udp_helper_send, udp_helper_recv, ut);
TEST_ERR(err);

/* Send from connected client UDP socket */
err = udp_connect(ut->usc, &ut->srv);
TEST_ERR(err);

/* Start test */
err = send_data(ut->usc, &ut->srv, data0);
TEST_ERR(err);

err = re_main_timeout(100);
TEST_ERR(err);

if (ut->err)
err = ut->err;

out:
mem_deref(ut);

return err;
}


int test_udp_tos(void)
{
int err;

err = udp_tos("127.0.0.1");
TEST_ERR(err);

err = udp_tos("::1");
TEST_ERR(err);

out:
return err;
}
#else
/* Outcome of the TOS test on Windows would be dependent on the
* DisableUserTOSSetting Windows registry setting. */
int test_udp_tos(void)
{
return 0;
}
#endif

0 comments on commit 9bfbc91

Please sign in to comment.