Skip to content

Commit

Permalink
shared/tester: Add tester_io_set_complete_func
Browse files Browse the repository at this point in the history
This adds tester_io_set_complete_func which can be used to set a
callback when all iovec has been sent/received.
  • Loading branch information
Vudentz committed Nov 15, 2022
1 parent f96bccd commit 918c73a
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 0 deletions.
16 changes: 16 additions & 0 deletions src/shared/tester.c
Original file line number Diff line number Diff line change
Expand Up @@ -89,6 +89,7 @@ struct test_case {
tester_data_func_t test_func;
tester_data_func_t teardown_func;
tester_data_func_t post_teardown_func;
tester_data_func_t io_complete_func;
gdouble start_time;
gdouble end_time;
unsigned int timeout;
Expand Down Expand Up @@ -913,6 +914,9 @@ static bool test_io_send(struct io *io, void *user_data)

g_assert_cmpint(len, ==, iov->iov_len);

if (!test->iovcnt && test->io_complete_func)
test->io_complete_func(test->test_data);

return false;
}

Expand All @@ -937,10 +941,15 @@ static bool test_io_recv(struct io *io, void *user_data)

g_assert_cmpint(len, ==, iov->iov_len);

if (memcmp(buf, iov->iov_base, len))
tester_monitor('!', 0x0004, 0x0000, iov->iov_base, len);

g_assert(memcmp(buf, iov->iov_base, len) == 0);

if (test->iovcnt)
io_set_write_handler(io, test_io_send, NULL, NULL);
else if (test->io_complete_func)
test->io_complete_func(test->test_data);

return true;
}
Expand Down Expand Up @@ -1004,6 +1013,13 @@ void tester_io_send(void)
io_set_write_handler(ios[1], test_io_send, NULL, NULL);
}

void tester_io_set_complete_func(tester_data_func_t func)
{
struct test_case *test = tester_get_test();

test->io_complete_func = func;
}

int tester_run(void)
{
int ret;
Expand Down
1 change: 1 addition & 0 deletions src/shared/tester.h
Original file line number Diff line number Diff line change
Expand Up @@ -78,3 +78,4 @@ void tester_wait(unsigned int seconds, tester_wait_func_t func,

struct io *tester_setup_io(const struct iovec *iov, int iovcnt);
void tester_io_send(void);
void tester_io_set_complete_func(tester_data_func_t func);

0 comments on commit 918c73a

Please sign in to comment.