From 1aac7de1ea8cacf2d93f25dc7a4366350035c91c Mon Sep 17 00:00:00 2001 From: Sebastian Hahn Date: Thu, 17 Sep 2009 00:20:25 +0200 Subject: Fix unit tests and compile issues on Snow Leopard --- src/or/circuitbuild.c | 27 +++++++++++++++++---------- src/or/test.c | 4 ++-- 2 files changed, 19 insertions(+), 12 deletions(-) (limited to 'src') diff --git a/src/or/circuitbuild.c b/src/or/circuitbuild.c index 1cb1fd214..c20db4b20 100644 --- a/src/or/circuitbuild.c +++ b/src/or/circuitbuild.c @@ -368,13 +368,15 @@ circuit_build_times_parse_state(circuit_build_times_t *cbt, uint32_t count, k; build_time_t ms; int ok; - ms = tor_parse_ulong(ms_str, 0, 0, BUILD_TIME_MAX, &ok, NULL); + ms = (build_time_t)tor_parse_ulong(ms_str, 0, 0, + BUILD_TIME_MAX, &ok, NULL); if (!ok) { *msg = tor_strdup("Unable to parse circuit build times: " "Unparsable bin number"); break; } - count = tor_parse_ulong(count_str, 0, 0, UINT32_MAX, &ok, NULL); + count = (uint32_t)tor_parse_ulong(count_str, 0, 0, + UINT32_MAX, &ok, NULL); if (!ok) { *msg = tor_strdup("Unable to parse circuit build times: " "Unparsable bin count"); @@ -405,7 +407,7 @@ circuit_build_times_parse_state(circuit_build_times_t *cbt, tor_assert(cbt->total_build_times == state->TotalBuildTimes); tor_assert(tot_values == cbt->total_build_times); circuit_build_times_set_timeout(cbt); - return msg ? -1 : 0; + return *msg ? -1 : 0; } /** @@ -516,7 +518,8 @@ circuit_build_times_generate_sample(circuit_build_times_t *cbt, u = q_lo + ((q_hi-q_lo)*r)/(1.0*UINT64_MAX); tor_assert(0 <= u && u < 1.0); - ret = lround(circuit_build_times_calculate_timeout(cbt, u)); + /* circuit_build_times_calculate_timeout returns <= INT32_MAX */ + ret = (uint32_t)lround(circuit_build_times_calculate_timeout(cbt, u)); tor_assert(ret > 0); return ret; } @@ -704,12 +707,12 @@ circuit_build_times_check_too_many_timeouts(circuit_build_times_t *cbt) cbt->Xm = Xm; circuit_build_times_initial_alpha(cbt, 1.0-timeout_rate, - cbt->timeout*1000.0); + cbt->timeout*1000); timeout = circuit_build_times_calculate_timeout(cbt, BUILDTIMEOUT_QUANTILE_CUTOFF); - - cbt->timeout = lround(timeout/1000.0); + /* timeout is INT32_MAX at most */ + cbt->timeout = (uint32_t)lround(timeout/1000.0); if (cbt->timeout < BUILD_TIMEOUT_MIN_VALUE) { log_warn(LD_CIRC, "Reset buildtimeout to low value %lf. Setting to %d", @@ -779,7 +782,8 @@ circuit_build_times_set_timeout(circuit_build_times_t *cbt) BUILDTIMEOUT_QUANTILE_CUTOFF); cbt->have_computed_timeout = 1; - cbt->timeout = lround(timeout/1000.0); + /* timeout is INT32_MAX at most */ + cbt->timeout = (uint32_t)lround(timeout/1000.0); if (cbt->timeout < BUILD_TIMEOUT_MIN_VALUE) { log_warn(LD_CIRC, "Set buildtimeout to low value %lf. Setting to %d", @@ -1376,11 +1380,14 @@ circuit_send_next_onion_skin(origin_circuit_t *circ) hop = onion_next_hop_in_cpath(circ->cpath); if (!hop) { struct timeval end; + long timediff; tor_gettimeofday(&end); + timediff = tv_mdiff(&circ->_base.highres_created, &end); + if (timediff > INT32_MAX) + timediff = INT32_MAX; /* done building the circuit. whew. */ circuit_set_state(TO_CIRCUIT(circ), CIRCUIT_STATE_OPEN); - circuit_build_times_add_time(&circ_times, - tv_mdiff(&circ->_base.highres_created, &end)); + circuit_build_times_add_time(&circ_times, (uint32_t)timediff); circuit_build_times_set_timeout(&circ_times); log_info(LD_CIRC,"circuit built!"); circuit_reset_failure_count(0); diff --git a/src/or/test.c b/src/or/test.c index 06bfccece..df7bead4b 100644 --- a/src/or/test.c +++ b/src/or/test.c @@ -3436,7 +3436,7 @@ test_circuit_timeout(void) memset(&state, 0, sizeof(or_state_t)); circuitbuild_running_unit_tests(); -#define timeout0 (30*1000.0) +#define timeout0 (build_time_t)(30*1000.0) initial.Xm = 750; circuit_build_times_initial_alpha(&initial, BUILDTIMEOUT_QUANTILE_CUTOFF, timeout0); @@ -3444,7 +3444,7 @@ test_circuit_timeout(void) int n = 0; for (i=0; i < MIN_CIRCUITS_TO_OBSERVE; i++) { if (circuit_build_times_add_time(&estimate, - circuit_build_times_generate_sample(&initial, 0, 1)) == 0) { + circuit_build_times_generate_sample(&initial, 0, .98)) == 0) { n++; } } -- cgit v1.2.3