int previous_log = setup_capture_of_logs(LOG_DEBUG);
libevent_logging_callback(_EVENT_LOG_DEBUG, "hello world");
- tt_int_op(mock_saved_log_number(), OP_EQ, 1);
- tt_str_op(mock_saved_log_at(0), OP_EQ,
- "Message from libevent: hello world\n");
- tt_int_op(mock_saved_severity_at(0), OP_EQ, LOG_DEBUG);
+ expect_log_msg("Message from libevent: hello world\n");
+ expect_log_severity(LOG_DEBUG);
mock_clean_saved_logs();
libevent_logging_callback(_EVENT_LOG_MSG, "hello world another time");
- tt_int_op(mock_saved_log_number(), OP_EQ, 1);
- tt_str_op(mock_saved_log_at(0), OP_EQ,
- "Message from libevent: hello world another time\n");
- tt_int_op(mock_saved_severity_at(0), OP_EQ, LOG_INFO);
+ expect_log_msg("Message from libevent: hello world another time\n");
+ expect_log_severity(LOG_INFO);
mock_clean_saved_logs();
libevent_logging_callback(_EVENT_LOG_WARN, "hello world a third time");
- tt_int_op(mock_saved_log_number(), OP_EQ, 1);
- tt_str_op(mock_saved_log_at(0), OP_EQ,
- "Warning from libevent: hello world a third time\n");
- tt_int_op(mock_saved_severity_at(0), OP_EQ, LOG_WARN);
+ expect_log_msg("Warning from libevent: hello world a third time\n");
+ expect_log_severity(LOG_WARN);
mock_clean_saved_logs();
libevent_logging_callback(_EVENT_LOG_ERR, "hello world a fourth time");
- tt_int_op(mock_saved_log_number(), OP_EQ, 1);
- tt_str_op(mock_saved_log_at(0), OP_EQ,
- "Error from libevent: hello world a fourth time\n");
- tt_int_op(mock_saved_severity_at(0), OP_EQ, LOG_ERR);
+ expect_log_msg("Error from libevent: hello world a fourth time\n");
+ expect_log_severity(LOG_ERR);
mock_clean_saved_logs();
libevent_logging_callback(42, "hello world a fifth time");
- tt_int_op(mock_saved_log_number(), OP_EQ, 1);
- tt_str_op(mock_saved_log_at(0), OP_EQ,
- "Message [42] from libevent: hello world a fifth time\n");
- tt_int_op(mock_saved_severity_at(0), OP_EQ, LOG_WARN);
+ expect_log_msg("Message [42] from libevent: hello world a fifth time\n");
+ expect_log_severity(LOG_WARN);
mock_clean_saved_logs();
libevent_logging_callback(_EVENT_LOG_DEBUG,
"012345678901234567890123456789"
"012345678901234567890123456789"
);
- tt_int_op(mock_saved_log_number(), OP_EQ, 1);
- tt_str_op(mock_saved_log_at(0), OP_EQ, "Message from libevent: "
+ expect_log_msg("Message from libevent: "
"012345678901234567890123456789"
"012345678901234567890123456789"
"012345678901234567890123456789"
"012345678901234567890123456789"
"012345678901234567890123456789"
"012345678901234567890123456789\n");
- tt_int_op(mock_saved_severity_at(0), OP_EQ, LOG_DEBUG);
+ expect_log_severity(LOG_DEBUG);
mock_clean_saved_logs();
libevent_logging_callback(42, "xxx\n");
- tt_int_op(mock_saved_log_number(), OP_EQ, 1);
- tt_str_op(mock_saved_log_at(0), OP_EQ, "Message [42] from libevent: xxx\n");
- tt_int_op(mock_saved_severity_at(0), OP_EQ, LOG_WARN);
+ expect_log_msg("Message [42] from libevent: xxx\n");
+ expect_log_severity(LOG_WARN);
suppress_libevent_log_msg("something");
mock_clean_saved_logs();
libevent_logging_callback(_EVENT_LOG_MSG, "hello there");
- tt_int_op(mock_saved_log_number(), OP_EQ, 1);
- tt_str_op(mock_saved_log_at(0), OP_EQ,
- "Message from libevent: hello there\n");
- tt_int_op(mock_saved_severity_at(0), OP_EQ, LOG_INFO);
+ expect_log_msg("Message from libevent: hello there\n");
+ expect_log_severity(LOG_INFO);
mock_clean_saved_logs();
libevent_logging_callback(_EVENT_LOG_MSG, "hello there something else");
- tt_int_op(mock_saved_log_number(), OP_EQ, 0);
+ expect_no_log_msg("hello there something else");
// No way of verifying the result of this, it seems =/
configure_libevent_logging();
tor_free(td);
}
-#define expect_log_msg(str) \
- tt_assert_msg(mock_saved_log_has_message(str), \
- "expected log to contain " # str);
-
-#define expect_no_log_msg(str) \
- tt_assert_msg(!mock_saved_log_has_message(str), \
- "expected log to not contain " # str);
-
static void
test_options_validate__uname_for_server(void *ignored)
{
fixed_get_uname_result = "Windows 2000";
mock_clean_saved_logs();
options_validate(tdata->old_opt, tdata->opt, tdata->def_opt, 0, &msg);
- tt_int_op(mock_saved_log_number(), OP_EQ, 1);
+ expect_log_entry();
tor_free(msg);
done:
/* options_test_data_t *tdata = get_options_test_data(""); */
/* ret = options_validate(tdata->old_opt, tdata->opt, */
/* tdata->def_opt, 0, &msg); */
-/* tt_str_op(mock_saved_log_at(0), OP_EQ, */
-/* "SocksPort, TransPort, NATDPort, DNSPort, and ORPort are all " */
-/* "undefined, and there aren't any hidden services configured. " */
+/* expect_log_msg("SocksPort, TransPort, NATDPort, DNSPort, and ORPort " */
+/* "are all undefined, and there aren't any hidden services " */
+/* "configured. " */
/* " Tor will still run, but probably won't do anything.\n"); */
/* done: */
/* teardown_capture_of_logs(previous_log); */
/* ret = options_validate(tdata->old_opt, tdata->opt, */
/* tdata->def_opt, 0, &msg); */
/* tt_int_op(ret, OP_EQ, -1); */
- /* tt_str_op(mock_saved_log_at(1), OP_EQ, */
- /* "Bad SchedulerLowWaterMark__ option\n"); */
+ /* expect_log_msg("Bad SchedulerLowWaterMark__ option\n"); */
free_options_test_data(tdata);
tdata = get_options_test_data("SchedulerLowWaterMark__ 42\n"
tt_int_op(ret, OP_EQ, -1);
tt_assert(tdata->opt->PathsNeededToBuildCircuits > 0.90 &&
tdata->opt->PathsNeededToBuildCircuits < 0.92);
- tt_int_op(mock_saved_log_number(), OP_EQ, 0);
+ expect_no_log_entry();
tor_free(msg);
done:
tdata->opt->FirewallPorts = smartlist_new();
ret = options_validate(tdata->old_opt, tdata->opt, tdata->def_opt, 0, &msg);
tt_int_op(ret, OP_EQ, -1);
- tt_int_op(mock_saved_log_number(), OP_EQ, 4);
+ expect_log_entry();
tt_str_op(tdata->opt->ReachableDirAddresses->value, OP_EQ, "*:81");
tt_str_op(tdata->opt->ReachableORAddresses->value, OP_EQ, "*:444");
tor_free(msg);
ret = options_validate(tdata->old_opt, tdata->opt, tdata->def_opt, 0, &msg);
tt_int_op(ret, OP_EQ, -1);
- tt_int_op(mock_saved_log_number(), OP_EQ, 4);
+ expect_log_entry();
tt_str_op(tdata->opt->ReachableAddresses->value, OP_EQ, "*:82");
tor_free(msg);
int previous_log = setup_capture_of_logs(LOG_INFO);
tor_tls_log_one_error(NULL, 0, LOG_WARN, 0, "something");
- tt_int_op(mock_saved_log_number(), OP_EQ, 1);
- tt_str_op(mock_saved_log_at(0), OP_EQ, "TLS error while something: "
+ expect_log_msg("TLS error while something: "
"(null) (in (null):(null):---)\n");
mock_clean_saved_logs();
tor_tls_log_one_error(tls, 0, LOG_WARN, 0, NULL);
- tt_int_op(mock_saved_log_number(), OP_EQ, 1);
- tt_str_op(mock_saved_log_at(0), OP_EQ, "TLS error: (null) "
+ expect_log_msg("TLS error: (null) "
"(in (null):(null):---)\n");
mock_clean_saved_logs();
tls->address = tor_strdup("127.hello");
tor_tls_log_one_error(tls, 0, LOG_WARN, 0, NULL);
- tt_int_op(mock_saved_log_number(), OP_EQ, 1);
- tt_str_op(mock_saved_log_at(0), OP_EQ, "TLS error with 127.hello: (null) "
- "(in (null):(null):---)\n");
+ expect_log_msg("TLS error with 127.hello: "
+ "(null) (in (null):(null):---)\n");
tor_free(tls->address);
mock_clean_saved_logs();
tls->address = tor_strdup("127.hello");
tor_tls_log_one_error(tls, 0, LOG_WARN, 0, "blarg");
- tt_int_op(mock_saved_log_number(), OP_EQ, 1);
- tt_str_op(mock_saved_log_at(0), OP_EQ, "TLS error while blarg with "
+ expect_log_msg("TLS error while blarg with "
"127.hello: (null) (in (null):(null):---)\n");
mock_clean_saved_logs();
tor_tls_log_one_error(tls, ERR_PACK(1, 2, 3), LOG_WARN, 0, NULL);
- tt_int_op(mock_saved_log_number(), OP_EQ, 1);
- tt_str_op(mock_saved_log_at(0), OP_EQ, "TLS error with 127.hello: "
+ expect_log_msg("TLS error with 127.hello: "
"BN lib (in unknown library:(null):---)\n");
mock_clean_saved_logs();
tor_tls_log_one_error(tls, ERR_PACK(1, 2, SSL_R_HTTP_REQUEST),
LOG_WARN, 0, NULL);
- tt_int_op(mock_saved_log_number(), OP_EQ, 1);
- tt_int_op(mock_saved_severity_at(0), OP_EQ, LOG_INFO);
+ expect_log_severity(LOG_INFO);
mock_clean_saved_logs();
tor_tls_log_one_error(tls, ERR_PACK(1, 2, SSL_R_HTTPS_PROXY_REQUEST),
LOG_WARN, 0, NULL);
- tt_int_op(mock_saved_log_number(), OP_EQ, 1);
- tt_int_op(mock_saved_severity_at(0), OP_EQ, LOG_INFO);
+ expect_log_severity(LOG_INFO);
mock_clean_saved_logs();
tor_tls_log_one_error(tls, ERR_PACK(1, 2, SSL_R_RECORD_LENGTH_MISMATCH),
LOG_WARN, 0, NULL);
- tt_int_op(mock_saved_log_number(), OP_EQ, 1);
- tt_int_op(mock_saved_severity_at(0), OP_EQ, LOG_INFO);
+ expect_log_severity(LOG_INFO);
mock_clean_saved_logs();
tor_tls_log_one_error(tls, ERR_PACK(1, 2, SSL_R_RECORD_TOO_LARGE),
LOG_WARN, 0, NULL);
- tt_int_op(mock_saved_log_number(), OP_EQ, 1);
- tt_int_op(mock_saved_severity_at(0), OP_EQ, LOG_INFO);
+ expect_log_severity(LOG_INFO);
mock_clean_saved_logs();
tor_tls_log_one_error(tls, ERR_PACK(1, 2, SSL_R_UNKNOWN_PROTOCOL),
LOG_WARN, 0, NULL);
- tt_int_op(mock_saved_log_number(), OP_EQ, 1);
- tt_int_op(mock_saved_severity_at(0), OP_EQ, LOG_INFO);
+ expect_log_severity(LOG_INFO);
mock_clean_saved_logs();
tor_tls_log_one_error(tls, ERR_PACK(1, 2, SSL_R_UNSUPPORTED_PROTOCOL),
LOG_WARN, 0, NULL);
- tt_int_op(mock_saved_log_number(), OP_EQ, 1);
- tt_int_op(mock_saved_severity_at(0), OP_EQ, LOG_INFO);
+ expect_log_severity(LOG_INFO);
tls->ssl = SSL_new(ctx);
mock_clean_saved_logs();
tor_tls_log_one_error(tls, 0, LOG_WARN, 0, NULL);
- tt_int_op(mock_saved_log_number(), OP_EQ, 1);
- tt_str_op(mock_saved_log_at(0), OP_EQ, "TLS error with 127.hello: (null)"
+ expect_log_msg("TLS error with 127.hello: (null)"
" (in (null):(null):" SSL_STATE_STR ")\n");
done:
ret = tor_tls_get_error(tls, 0, 0, "something", LOG_WARN, 0);
tt_int_op(ret, OP_EQ, TOR_TLS_ERROR_IO);
- tt_int_op(mock_saved_log_number(), OP_EQ, 1);
- tt_str_op(mock_saved_log_at(0), OP_EQ, "TLS error: unexpected close while"
+ expect_log_msg("TLS error: unexpected close while"
" something (before/accept initialization)\n");
mock_clean_saved_logs();
ret = tor_tls_get_error(tls, 2, 0, "something", LOG_WARN, 0);
tt_int_op(ret, OP_EQ, 0);
- tt_int_op(mock_saved_log_number(), OP_EQ, 0);
+ expect_no_log_entry();
mock_clean_saved_logs();
ret = tor_tls_get_error(tls, 0, 1, "something", LOG_WARN, 0);
tt_int_op(ret, OP_EQ, -11);
- tt_int_op(mock_saved_log_number(), OP_EQ, 0);
+ expect_no_log_entry();
mock_clean_saved_logs();
ERR_clear_error();
ERR_put_error(ERR_LIB_BN, 2, -1, "somewhere.c", 99);
ret = tor_tls_get_error(tls, 0, 0, "something", LOG_WARN, 0);
tt_int_op(ret, OP_EQ, TOR_TLS_ERROR_MISC);
- tt_int_op(mock_saved_log_number(), OP_EQ, 1);
- tt_str_op(mock_saved_log_at(0), OP_EQ, "TLS error while something: (null)"
+ expect_log_msg("TLS error while something: (null)"
" (in bignum routines:(null):before/accept initialization)\n");
mock_clean_saved_logs();
SSL_get_rbio(tls->ssl)->flags = BIO_FLAGS_READ;
ret = tor_tls_get_error(tls, -1, 0, "something", LOG_WARN, 0);
tt_int_op(ret, OP_EQ, TOR_TLS_WANTREAD);
- tt_int_op(mock_saved_log_number(), OP_EQ, 0);
+ expect_no_log_entry();
mock_clean_saved_logs();
ERR_clear_error();
SSL_get_rbio(tls->ssl)->flags = BIO_FLAGS_WRITE;
ret = tor_tls_get_error(tls, -1, 0, "something", LOG_WARN, 0);
tt_int_op(ret, OP_EQ, TOR_TLS_WANTWRITE);
- tt_int_op(mock_saved_log_number(), OP_EQ, 0);
+ expect_no_log_entry();
mock_clean_saved_logs();
ERR_clear_error();
tls->ssl->s3->warn_alert =SSL_AD_CLOSE_NOTIFY;
ret = tor_tls_get_error(tls, 0, 0, "something", LOG_WARN, 0);
tt_int_op(ret, OP_EQ, TOR_TLS_CLOSE);
- tt_int_op(mock_saved_log_number(), OP_EQ, 1);
+ expect_log_entry();
mock_clean_saved_logs();
ret = tor_tls_get_error(tls, 0, 2, "something", LOG_WARN, 0);
tt_int_op(ret, OP_EQ, -10);
- tt_int_op(mock_saved_log_number(), OP_EQ, 0);
+ expect_no_log_entry();
mock_clean_saved_logs();
ERR_put_error(ERR_LIB_SYS, 2, -1, "somewhere.c", 99);
ret = tor_tls_get_error(tls, -1, 0, "something", LOG_WARN, 0);
tt_int_op(ret, OP_EQ, -9);
- tt_int_op(mock_saved_log_number(), OP_EQ, 2);
- tt_str_op(mock_saved_log_at(1), OP_EQ,
- "TLS error while something: (null) (in system library:"
+ expect_log_msg("TLS error while something: (null) (in system library:"
"connect:before/accept initialization)\n");
done:
ssl = tor_malloc_zero(sizeof(SSL));
tor_tls_debug_state_callback(ssl, 32, 45);
- tt_int_op(mock_saved_log_number(), OP_EQ, 1);
+
n = snprintf(buf, 1000, "SSL %p is now in state unknown"
" state [type=32,val=45].\n", ssl);
buf[n]='\0';
- if (strcasecmp(mock_saved_log_at(0), buf))
- tt_str_op(mock_saved_log_at(0), OP_EQ, buf);
+ expect_log_msg(buf);
done:
teardown_capture_of_logs(previous_log);
SSL_set_state(ssl, SSL3_ST_SW_SRVR_HELLO_A);
mock_clean_saved_logs();
tor_tls_server_info_callback(ssl, SSL_CB_ACCEPT_LOOP, 0);
- tt_int_op(mock_saved_log_number(), OP_EQ, 1);
- tt_str_op(mock_saved_log_at(0), OP_EQ,
- "Couldn't look up the tls for an SSL*. How odd!\n");
+ expect_log_msg("Couldn't look up the tls for an SSL*. How odd!\n");
SSL_set_state(ssl, SSL3_ST_SW_SRVR_HELLO_B);
mock_clean_saved_logs();
tor_tls_server_info_callback(ssl, SSL_CB_ACCEPT_LOOP, 0);
- tt_int_op(mock_saved_log_number(), OP_EQ, 1);
- tt_str_op(mock_saved_log_at(0), OP_EQ,
- "Couldn't look up the tls for an SSL*. How odd!\n");
+ expect_log_msg("Couldn't look up the tls for an SSL*. How odd!\n");
SSL_set_state(ssl, 99);
mock_clean_saved_logs();
tor_tls_server_info_callback(ssl, SSL_CB_ACCEPT_LOOP, 0);
- tt_int_op(mock_saved_log_number(), OP_EQ, 0);
+ expect_no_log_entry();
SSL_set_ex_data(tls->ssl, tor_tls_object_ex_data_index, tls);
SSL_set_state(ssl, SSL3_ST_SW_SRVR_HELLO_B);
tls->state = TOR_TLS_ST_HANDSHAKE;
ret = tor_tls_handshake(tls);
tt_int_op(ret, OP_EQ, TOR_TLS_ERROR_MISC);
- tt_int_op(mock_saved_log_number(), OP_EQ, 2);
+ expect_log_entry();
/* This fails on jessie. Investigate why! */
#if 0
- tt_str_op(mock_saved_log_at(0), OP_EQ,
- "TLS error while handshaking: (null) (in bignum routines:"
+ expect_log_msg("TLS error while handshaking: (null) (in bignum routines:"
"(null):SSLv3 write client hello B)\n");
- tt_str_op(mock_saved_log_at(1), OP_EQ,
- "TLS error while handshaking: (null) (in system library:"
+ expect_log_msg("TLS error while handshaking: (null) (in system library:"
"connect:SSLv3 write client hello B)\n");
#endif
- tt_int_op(mock_saved_severity_at(0), OP_EQ, LOG_INFO);
- tt_int_op(mock_saved_severity_at(1), OP_EQ, LOG_INFO);
+ expect_log_severity(LOG_INFO);
tls->isServer = 0;
method->ssl_connect = setting_error_ssl_connect;
tls->state = TOR_TLS_ST_HANDSHAKE;
ret = tor_tls_handshake(tls);
tt_int_op(ret, OP_EQ, TOR_TLS_ERROR_MISC);
- tt_int_op(mock_saved_log_number(), OP_EQ, 2);
+ expect_log_entry();
#if 0
/* See above */
- tt_str_op(mock_saved_log_at(0), OP_EQ, "TLS error while handshaking: "
+ expect_log_msg("TLS error while handshaking: "
"(null) (in bignum routines:(null):SSLv3 write client hello B)\n");
- tt_str_op(mock_saved_log_at(1), OP_EQ, "TLS error while handshaking: "
+ expect_log_msg("TLS error while handshaking: "
"(null) (in system library:connect:SSLv3 write client hello B)\n");
#endif
- tt_int_op(mock_saved_severity_at(0), OP_EQ, LOG_WARN);
- tt_int_op(mock_saved_severity_at(1), OP_EQ, LOG_WARN);
+ expect_log_severity(LOG_WARN);
done:
teardown_capture_of_logs(previous_log);