Skip to content

Commit 5921fee

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

File tree

4 files changed

+128
-0
lines changed

4 files changed

+128
-0
lines changed

test/tcp.c

+56
Original file line numberDiff line numberDiff line change
@@ -227,3 +227,59 @@ 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+
err |= tcp_settos(tt->ts, 120);
250+
TEST_ERR(err);
251+
252+
err = tcp_local_get(tt->ts, &srv);
253+
TEST_ERR(err);
254+
255+
err = tcp_connect(&tt->tc, &srv, tcp_client_estab_handler,
256+
tcp_client_recv_handler, tcp_client_close_handler,
257+
tt);
258+
TEST_ERR(err);
259+
260+
err = re_main_timeout(500);
261+
TEST_ERR(err);
262+
263+
if (tt->err)
264+
err = tt->err;
265+
266+
out:
267+
mem_deref(tt);
268+
269+
return err;
270+
}
271+
272+
273+
int test_tcp_tos(void)
274+
{
275+
int err;
276+
277+
err = tcp_tos("127.0.0.1");
278+
TEST_ERR(err);
279+
280+
err = tcp_tos("::1");
281+
TEST_ERR(err);
282+
283+
out:
284+
return err;
285+
}

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

+68
Original file line numberDiff line numberDiff line change
@@ -213,3 +213,71 @@ 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+
udp_rxbuf_presz_set(ut->uss, 16);
241+
242+
err = udp_local_get(ut->usc, &ut->cli);
243+
err |= udp_local_get(ut->uss, &ut->srv);
244+
TEST_ERR(err);
245+
246+
err = udp_register_helper(&ut->uh, ut->usc, layer,
247+
udp_helper_send, udp_helper_recv, ut);
248+
TEST_ERR(err);
249+
250+
/* Send from connected client UDP socket */
251+
err = udp_connect(ut->usc, &ut->srv);
252+
TEST_ERR(err);
253+
254+
/* Start test */
255+
err = send_data(ut->usc, &ut->srv, data0);
256+
TEST_ERR(err);
257+
258+
err = re_main_timeout(100);
259+
TEST_ERR(err);
260+
261+
if (ut->err)
262+
err = ut->err;
263+
264+
out:
265+
mem_deref(ut);
266+
267+
return err;
268+
}
269+
270+
271+
int test_udp_tos(void)
272+
{
273+
int err;
274+
275+
err = udp_tos("127.0.0.1");
276+
TEST_ERR(err);
277+
278+
err = udp_tos("::1");
279+
TEST_ERR(err);
280+
281+
out:
282+
return err;
283+
}

0 commit comments

Comments
 (0)