Loading src/test/include.am +1 −0 Original line number Diff line number Diff line Loading @@ -102,6 +102,7 @@ src_test_test_SOURCES = \ src/test/test_tortls.c \ src/test/test_util.c \ src/test/test_util_format.c \ src/test/test_util_process.c \ src/test/test_helpers.c \ src/test/test_dns.c \ src/test/testing_common.c \ Loading src/test/test.c +2 −1 Original line number Diff line number Diff line Loading @@ -1168,6 +1168,7 @@ extern struct testcase_t thread_tests[]; extern struct testcase_t tortls_tests[]; extern struct testcase_t util_tests[]; extern struct testcase_t util_format_tests[]; extern struct testcase_t util_process_tests[]; extern struct testcase_t dns_tests[]; struct testgroup_t testgroups[] = { Loading Loading @@ -1220,8 +1221,8 @@ struct testgroup_t testgroups[] = { { "util/", util_tests }, { "util/format/", util_format_tests }, { "util/logging/", logging_tests }, { "util/process/", util_process_tests }, { "util/thread/", thread_tests }, { "dns/", dns_tests }, END_OF_GROUPS }; src/test/test_util_process.c 0 → 100644 +72 −0 Original line number Diff line number Diff line /* Copyright (c) 2010-2015, The Tor Project, Inc. */ /* See LICENSE for licensing information */ #define UTIL_PROCESS_PRIVATE #include "orconfig.h" #include "or.h" #include "test.h" #include "util_process.h" #include "log_test_helpers.h" #define NS_MODULE util_process static void temp_callback(int r, void *s) { (void)r; (void)s; } static void test_util_process_set_waitpid_callback(void *ignored) { (void)ignored; waitpid_callback_t *res; int previous_log = setup_capture_of_logs(LOG_WARN); pid_t pid = (pid_t)42; res = set_waitpid_callback(pid, temp_callback, NULL); tt_assert(res); res = set_waitpid_callback(pid, temp_callback, NULL); tt_assert(res); tt_str_op(mock_saved_log_at(0), OP_EQ, "Replaced a waitpid monitor on pid 42. That should be " "impossible.\n"); done: teardown_capture_of_logs(previous_log); } static void test_util_process_clear_waitpid_callback(void *ignored) { (void)ignored; waitpid_callback_t *res; int previous_log = setup_capture_of_logs(LOG_WARN); pid_t pid = (pid_t)43; clear_waitpid_callback(NULL); res = set_waitpid_callback(pid, temp_callback, NULL); clear_waitpid_callback(res); tt_int_op(mock_saved_log_number(), OP_EQ, 0); clear_waitpid_callback(res); tt_str_op(mock_saved_log_at(0), OP_EQ, "Couldn't remove waitpid monitor for pid 43.\n"); done: teardown_capture_of_logs(previous_log); } struct testcase_t util_process_tests[] = { { "set_waitpid_callback", test_util_process_set_waitpid_callback, 0, NULL, NULL }, { "clear_waitpid_callback", test_util_process_clear_waitpid_callback, 0, NULL, NULL }, END_OF_TESTCASES }; Loading
src/test/include.am +1 −0 Original line number Diff line number Diff line Loading @@ -102,6 +102,7 @@ src_test_test_SOURCES = \ src/test/test_tortls.c \ src/test/test_util.c \ src/test/test_util_format.c \ src/test/test_util_process.c \ src/test/test_helpers.c \ src/test/test_dns.c \ src/test/testing_common.c \ Loading
src/test/test.c +2 −1 Original line number Diff line number Diff line Loading @@ -1168,6 +1168,7 @@ extern struct testcase_t thread_tests[]; extern struct testcase_t tortls_tests[]; extern struct testcase_t util_tests[]; extern struct testcase_t util_format_tests[]; extern struct testcase_t util_process_tests[]; extern struct testcase_t dns_tests[]; struct testgroup_t testgroups[] = { Loading Loading @@ -1220,8 +1221,8 @@ struct testgroup_t testgroups[] = { { "util/", util_tests }, { "util/format/", util_format_tests }, { "util/logging/", logging_tests }, { "util/process/", util_process_tests }, { "util/thread/", thread_tests }, { "dns/", dns_tests }, END_OF_GROUPS };
src/test/test_util_process.c 0 → 100644 +72 −0 Original line number Diff line number Diff line /* Copyright (c) 2010-2015, The Tor Project, Inc. */ /* See LICENSE for licensing information */ #define UTIL_PROCESS_PRIVATE #include "orconfig.h" #include "or.h" #include "test.h" #include "util_process.h" #include "log_test_helpers.h" #define NS_MODULE util_process static void temp_callback(int r, void *s) { (void)r; (void)s; } static void test_util_process_set_waitpid_callback(void *ignored) { (void)ignored; waitpid_callback_t *res; int previous_log = setup_capture_of_logs(LOG_WARN); pid_t pid = (pid_t)42; res = set_waitpid_callback(pid, temp_callback, NULL); tt_assert(res); res = set_waitpid_callback(pid, temp_callback, NULL); tt_assert(res); tt_str_op(mock_saved_log_at(0), OP_EQ, "Replaced a waitpid monitor on pid 42. That should be " "impossible.\n"); done: teardown_capture_of_logs(previous_log); } static void test_util_process_clear_waitpid_callback(void *ignored) { (void)ignored; waitpid_callback_t *res; int previous_log = setup_capture_of_logs(LOG_WARN); pid_t pid = (pid_t)43; clear_waitpid_callback(NULL); res = set_waitpid_callback(pid, temp_callback, NULL); clear_waitpid_callback(res); tt_int_op(mock_saved_log_number(), OP_EQ, 0); clear_waitpid_callback(res); tt_str_op(mock_saved_log_at(0), OP_EQ, "Couldn't remove waitpid monitor for pid 43.\n"); done: teardown_capture_of_logs(previous_log); } struct testcase_t util_process_tests[] = { { "set_waitpid_callback", test_util_process_set_waitpid_callback, 0, NULL, NULL }, { "clear_waitpid_callback", test_util_process_clear_waitpid_callback, 0, NULL, NULL }, END_OF_TESTCASES };