test_util_process.c 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. /* Copyright (c) 2010-2015, The Tor Project, Inc. */
  2. /* See LICENSE for licensing information */
  3. #define UTIL_PROCESS_PRIVATE
  4. #include "orconfig.h"
  5. #include "or.h"
  6. #include "test.h"
  7. #include "util_process.h"
  8. #include "log_test_helpers.h"
  9. #define NS_MODULE util_process
  10. static void
  11. temp_callback(int r, void *s)
  12. {
  13. (void)r;
  14. (void)s;
  15. }
  16. static void
  17. test_util_process_set_waitpid_callback(void *ignored)
  18. {
  19. (void)ignored;
  20. waitpid_callback_t *res;
  21. int previous_log = setup_capture_of_logs(LOG_WARN);
  22. pid_t pid = (pid_t)42;
  23. res = set_waitpid_callback(pid, temp_callback, NULL);
  24. tt_assert(res);
  25. res = set_waitpid_callback(pid, temp_callback, NULL);
  26. tt_assert(res);
  27. tt_str_op(mock_saved_log_at(0), OP_EQ,
  28. "Replaced a waitpid monitor on pid 42. That should be "
  29. "impossible.\n");
  30. done:
  31. teardown_capture_of_logs(previous_log);
  32. }
  33. static void
  34. test_util_process_clear_waitpid_callback(void *ignored)
  35. {
  36. (void)ignored;
  37. waitpid_callback_t *res;
  38. int previous_log = setup_capture_of_logs(LOG_WARN);
  39. pid_t pid = (pid_t)43;
  40. clear_waitpid_callback(NULL);
  41. res = set_waitpid_callback(pid, temp_callback, NULL);
  42. clear_waitpid_callback(res);
  43. tt_int_op(mock_saved_log_number(), OP_EQ, 0);
  44. clear_waitpid_callback(res);
  45. tt_str_op(mock_saved_log_at(0), OP_EQ,
  46. "Couldn't remove waitpid monitor for pid 43.\n");
  47. done:
  48. teardown_capture_of_logs(previous_log);
  49. }
  50. struct testcase_t util_process_tests[] = {
  51. { "set_waitpid_callback", test_util_process_set_waitpid_callback, 0,
  52. NULL, NULL },
  53. { "clear_waitpid_callback", test_util_process_clear_waitpid_callback, 0,
  54. NULL, NULL },
  55. END_OF_TESTCASES
  56. };