kernel-netlink: Add non-dumping variants of echo and stress tests
This commit is contained in:
@@ -39,6 +39,37 @@ bool netlink_msg_loss(struct nlmsghdr *hdr)
|
||||
}
|
||||
|
||||
START_TEST(test_echo)
|
||||
{
|
||||
netlink_socket_t *s;
|
||||
struct nlmsghdr *out;
|
||||
struct rtmsg *msg;
|
||||
char dst[] = {
|
||||
127,0,0,1
|
||||
};
|
||||
size_t len;
|
||||
netlink_buf_t request = {
|
||||
.hdr = {
|
||||
.nlmsg_len = NLMSG_LENGTH(sizeof(struct rtmsg)),
|
||||
.nlmsg_flags = NLM_F_REQUEST,
|
||||
.nlmsg_type = RTM_GETROUTE,
|
||||
},
|
||||
};
|
||||
|
||||
msg = NLMSG_DATA(&request.hdr);
|
||||
msg->rtm_family = AF_INET;
|
||||
netlink_add_attribute(&request.hdr, RTA_DST,
|
||||
chunk_from_thing(dst), sizeof(request));
|
||||
|
||||
s = netlink_socket_create(NETLINK_ROUTE, NULL);
|
||||
|
||||
ck_assert(s->send(s, &request.hdr, &out, &len) == SUCCESS);
|
||||
ck_assert_int_eq(out->nlmsg_type, RTM_NEWROUTE);
|
||||
free(out);
|
||||
s->destroy(s);
|
||||
}
|
||||
END_TEST
|
||||
|
||||
START_TEST(test_echo_dump)
|
||||
{
|
||||
netlink_socket_t *s;
|
||||
struct nlmsghdr *out, *current;
|
||||
@@ -75,6 +106,38 @@ END_TEST
|
||||
|
||||
CALLBACK(stress, void*,
|
||||
netlink_socket_t *s)
|
||||
{
|
||||
struct nlmsghdr *out;
|
||||
struct rtmsg *msg;
|
||||
char dst[] = {
|
||||
127,0,0,1
|
||||
};
|
||||
size_t len;
|
||||
int i;
|
||||
netlink_buf_t request = {
|
||||
.hdr = {
|
||||
.nlmsg_len = NLMSG_LENGTH(sizeof(struct rtmsg)),
|
||||
.nlmsg_flags = NLM_F_REQUEST,
|
||||
.nlmsg_type = RTM_GETROUTE,
|
||||
},
|
||||
};
|
||||
|
||||
for (i = 0; i < 10; i++)
|
||||
{
|
||||
msg = NLMSG_DATA(&request.hdr);
|
||||
msg->rtm_family = AF_INET;
|
||||
netlink_add_attribute(&request.hdr, RTA_DST,
|
||||
chunk_from_thing(dst), sizeof(request));
|
||||
|
||||
ck_assert(s->send(s, &request.hdr, &out, &len) == SUCCESS);
|
||||
ck_assert_int_eq(out->nlmsg_type, RTM_NEWROUTE);
|
||||
free(out);
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
CALLBACK(stress_dump, void*,
|
||||
netlink_socket_t *s)
|
||||
{
|
||||
struct nlmsghdr *out, *current;
|
||||
struct rtgenmsg *msg;
|
||||
@@ -129,6 +192,25 @@ START_TEST(test_stress)
|
||||
}
|
||||
END_TEST
|
||||
|
||||
START_TEST(test_stress_dump)
|
||||
{
|
||||
thread_t *threads[10];
|
||||
netlink_socket_t *s;
|
||||
int i;
|
||||
|
||||
s = netlink_socket_create(NETLINK_ROUTE, NULL);
|
||||
for (i = 0; i < countof(threads); i++)
|
||||
{
|
||||
threads[i] = thread_create(stress_dump, s);
|
||||
}
|
||||
for (i = 0; i < countof(threads); i++)
|
||||
{
|
||||
threads[i]->join(threads[i]);
|
||||
}
|
||||
s->destroy(s);
|
||||
}
|
||||
END_TEST
|
||||
|
||||
START_TEST(test_retransmit_success)
|
||||
{
|
||||
netlink_socket_t *s;
|
||||
@@ -203,10 +285,12 @@ Suite *socket_suite_create()
|
||||
|
||||
tc = tcase_create("echo");
|
||||
tcase_add_test(tc, test_echo);
|
||||
tcase_add_test(tc, test_echo_dump);
|
||||
suite_add_tcase(s, tc);
|
||||
|
||||
tc = tcase_create("stress");
|
||||
tcase_add_test(tc, test_stress);
|
||||
tcase_add_test(tc, test_stress_dump);
|
||||
suite_add_tcase(s, tc);
|
||||
|
||||
tc = tcase_create("retransmit");
|
||||
|
||||
Reference in New Issue
Block a user