Skip to content

Commit b473e3f

Browse files
test/tcp,udp: Add TOS/TCLASS tests
1 parent f1d34a1 commit b473e3f

File tree

4 files changed

+125
-0
lines changed

4 files changed

+125
-0
lines changed

test/tcp.c

+55
Original file line numberDiff line numberDiff line change
@@ -227,3 +227,58 @@ int test_tcp(void)
227227

228228
return err;
229229
}
230+
231+
232+
static int tcp_tos(const char *addr)
233+
{
234+
struct tcp_test *tt;
235+
struct sa srv;
236+
int err;
237+
238+
tt = mem_zalloc(sizeof(*tt), destructor);
239+
if (!tt)
240+
return ENOMEM;
241+
242+
err = sa_set_str(&srv, addr, 0);
243+
TEST_ERR(err);
244+
245+
err = tcp_listen(&tt->ts, &srv, tcp_server_conn_handler, tt);
246+
TEST_ERR(err);
247+
248+
err = tcp_settos(tt->ts, 184);
249+
TEST_ERR(err);
250+
251+
err = tcp_local_get(tt->ts, &srv);
252+
TEST_ERR(err);
253+
254+
err = tcp_connect(&tt->tc, &srv, tcp_client_estab_handler,
255+
tcp_client_recv_handler, tcp_client_close_handler,
256+
tt);
257+
TEST_ERR(err);
258+
259+
err = re_main_timeout(500);
260+
TEST_ERR(err);
261+
262+
if (tt->err)
263+
err = tt->err;
264+
265+
out:
266+
mem_deref(tt);
267+
268+
return err;
269+
}
270+
271+
272+
int test_tcp_tos(void)
273+
{
274+
int err;
275+
276+
err = tcp_tos("127.0.0.1");
277+
TEST_ERR(err);
278+
279+
err = tcp_tos("::1");
280+
TEST_ERR(err);
281+
282+
out:
283+
return err;
284+
}

test/test.c

+2
Original file line numberDiff line numberDiff line change
@@ -216,6 +216,7 @@ static const struct test tests[] = {
216216
TEST(test_sys_fs_fopen),
217217
TEST(test_sys_getenv),
218218
TEST(test_tcp),
219+
TEST(test_tcp_tos),
219220
TEST(test_telev),
220221
TEST(test_text2pcap),
221222
#ifdef USE_TLS
@@ -236,6 +237,7 @@ static const struct test tests[] = {
236237
TEST(test_turn),
237238
TEST(test_turn_tcp),
238239
TEST(test_udp),
240+
TEST(test_udp_tos),
239241
TEST(test_unixsock),
240242
TEST(test_uri),
241243
TEST(test_uri_encode),

test/test.h

+2
Original file line numberDiff line numberDiff line change
@@ -332,6 +332,7 @@ int test_sys_fs_isfile(void);
332332
int test_sys_fs_fopen(void);
333333
int test_sys_getenv(void);
334334
int test_tcp(void);
335+
int test_tcp_tos(void);
335336
int test_telev(void);
336337
int test_text2pcap(void);
337338
int test_thread(void);
@@ -343,6 +344,7 @@ int test_turn(void);
343344
int test_turn_tcp(void);
344345
int test_turn_thread(void);
345346
int test_udp(void);
347+
int test_udp_tos(void);
346348
int test_unixsock(void);
347349
int test_uri(void);
348350
int test_uri_encode(void);

test/udp.c

+66
Original file line numberDiff line numberDiff line change
@@ -213,3 +213,69 @@ int test_udp(void)
213213

214214
return err;
215215
}
216+
217+
218+
static int udp_tos(const char *addr)
219+
{
220+
struct udp_test *ut;
221+
int layer = 0;
222+
int err;
223+
224+
ut = mem_zalloc(sizeof(*ut), destructor);
225+
if (!ut)
226+
return ENOMEM;
227+
228+
err = sa_set_str(&ut->cli, addr, 0);
229+
err |= sa_set_str(&ut->srv, addr, 0);
230+
TEST_ERR(err);
231+
232+
err = udp_listen(&ut->usc, &ut->cli, udp_recv_client, ut);
233+
err |= udp_listen(&ut->uss, &ut->srv, udp_recv_server, ut);
234+
TEST_ERR(err);
235+
236+
err = udp_settos(ut->usc, 184);
237+
err |= udp_settos(ut->uss, 120);
238+
TEST_ERR(err);
239+
240+
err = udp_local_get(ut->usc, &ut->cli);
241+
err |= udp_local_get(ut->uss, &ut->srv);
242+
TEST_ERR(err);
243+
244+
err = udp_register_helper(&ut->uh, ut->usc, layer,
245+
udp_helper_send, udp_helper_recv, ut);
246+
TEST_ERR(err);
247+
248+
/* Send from connected client UDP socket */
249+
err = udp_connect(ut->usc, &ut->srv);
250+
TEST_ERR(err);
251+
252+
/* Start test */
253+
err = send_data(ut->usc, &ut->srv, data0);
254+
TEST_ERR(err);
255+
256+
err = re_main_timeout(100);
257+
TEST_ERR(err);
258+
259+
if (ut->err)
260+
err = ut->err;
261+
262+
out:
263+
mem_deref(ut);
264+
265+
return err;
266+
}
267+
268+
269+
int test_udp_tos(void)
270+
{
271+
int err;
272+
273+
err = udp_tos("127.0.0.1");
274+
TEST_ERR(err);
275+
276+
err = udp_tos("::1");
277+
TEST_ERR(err);
278+
279+
out:
280+
return err;
281+
}

0 commit comments

Comments
 (0)