mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-11-28 14:23:30 +01:00
Clean up bridge-stats code.
Only write a bridge-stats string if bridge stats have been initialized. This behavior is similar to dirreq-stats, entry-stats, etc. Also add a few unit tests for the bridge-stats code.
This commit is contained in:
parent
88083463cb
commit
d690a99dfe
@ -1197,8 +1197,8 @@ static char *bridge_stats_extrainfo = NULL;
|
||||
/** Return a newly allocated string holding our bridge usage stats by country
|
||||
* in a format suitable for inclusion in an extrainfo document. Return NULL on
|
||||
* failure. */
|
||||
static char *
|
||||
format_bridge_stats_extrainfo(time_t now)
|
||||
char *
|
||||
geoip_format_bridge_stats(time_t now)
|
||||
{
|
||||
char *out = NULL, *data = NULL;
|
||||
long duration = now - start_of_bridge_stats_interval;
|
||||
@ -1206,6 +1206,8 @@ format_bridge_stats_extrainfo(time_t now)
|
||||
|
||||
if (duration < 0)
|
||||
return NULL;
|
||||
if (!start_of_bridge_stats_interval)
|
||||
return NULL; /* Not initialized. */
|
||||
|
||||
format_iso_time(written, now);
|
||||
data = geoip_get_client_history(GEOIP_CLIENT_CONNECT);
|
||||
@ -1255,7 +1257,7 @@ geoip_bridge_stats_write(time_t now)
|
||||
geoip_remove_old_clients(start_of_bridge_stats_interval);
|
||||
|
||||
/* Generate formatted string */
|
||||
val = format_bridge_stats_extrainfo(now);
|
||||
val = geoip_format_bridge_stats(now);
|
||||
if (val == NULL)
|
||||
goto done;
|
||||
|
||||
|
@ -53,6 +53,7 @@ void geoip_entry_stats_term(void);
|
||||
void geoip_reset_entry_stats(time_t now);
|
||||
char *geoip_format_entry_stats(time_t now);
|
||||
void geoip_bridge_stats_init(time_t now);
|
||||
char *geoip_format_bridge_stats(time_t now);
|
||||
time_t geoip_bridge_stats_write(time_t now);
|
||||
void geoip_bridge_stats_term(void);
|
||||
const char *geoip_get_bridge_stats_extrainfo(time_t);
|
||||
|
@ -1483,7 +1483,10 @@ test_geoip(void)
|
||||
int i, j;
|
||||
time_t now = 1281533250; /* 2010-08-11 13:27:30 UTC */
|
||||
char *s = NULL;
|
||||
const char *dirreq_stats_1 =
|
||||
const char *bridge_stats_1 =
|
||||
"bridge-stats-end 2010-08-12 13:27:30 (86400 s)\n"
|
||||
"bridge-ips zz=24,xy=8\n",
|
||||
*dirreq_stats_1 =
|
||||
"dirreq-stats-end 2010-08-12 13:27:30 (86400 s)\n"
|
||||
"dirreq-v3-ips ab=8\n"
|
||||
"dirreq-v2-ips \n"
|
||||
@ -1594,6 +1597,24 @@ test_geoip(void)
|
||||
test_assert(s);
|
||||
test_streq("zz=24,xy=8", s);
|
||||
|
||||
/* Start testing bridge statistics by making sure that we don't output
|
||||
* bridge stats without initializing them. */
|
||||
s = geoip_format_bridge_stats(now + 86400);
|
||||
test_assert(!s);
|
||||
|
||||
/* Initialize stats and generate the bridge-stats history string out of
|
||||
* the connecting clients added above. */
|
||||
geoip_bridge_stats_init(now);
|
||||
s = geoip_format_bridge_stats(now + 86400);
|
||||
test_streq(bridge_stats_1, s);
|
||||
tor_free(s);
|
||||
|
||||
/* Stop collecting bridge stats and make sure we don't write a history
|
||||
* string anymore. */
|
||||
geoip_bridge_stats_term();
|
||||
s = geoip_format_bridge_stats(now + 86400);
|
||||
test_assert(!s);
|
||||
|
||||
/* Stop being a bridge and start being a directory mirror that gathers
|
||||
* directory request statistics. */
|
||||
geoip_bridge_stats_term();
|
||||
|
Loading…
Reference in New Issue
Block a user