aboutsummaryrefslogtreecommitdiff
path: root/src/test/test.c
diff options
context:
space:
mode:
authorDavid Goulet <dgoulet@torproject.org>2018-02-02 10:15:28 -0500
committerDavid Goulet <dgoulet@torproject.org>2018-02-02 14:48:41 -0500
commit51839f47650463f59bd2cc84da05d5bc535d699d (patch)
tree0d75973ecb70a578e0c9db02fe1643e0afaabf61 /src/test/test.c
parenta2aaf9509ba578f4e7705b506ee9a0f764d24ff2 (diff)
downloadtor-51839f47650463f59bd2cc84da05d5bc535d699d.tar.gz
tor-51839f47650463f59bd2cc84da05d5bc535d699d.zip
geoip: Hook the client history cache into the OOM handler
If the cache is using 20% of our maximum allowed memory, clean 10% of it. Same behavior as the HS descriptor cache. Closes #25122 Signed-off-by: David Goulet <dgoulet@torproject.org>
Diffstat (limited to 'src/test/test.c')
-rw-r--r--src/test/test.c18
1 files changed, 18 insertions, 0 deletions
diff --git a/src/test/test.c b/src/test/test.c
index 9a41b976b8..e2fbfd21b4 100644
--- a/src/test/test.c
+++ b/src/test/test.c
@@ -912,6 +912,24 @@ test_geoip(void *arg)
tt_str_op(entry_stats_2,OP_EQ, s);
tor_free(s);
+ /* Test the OOM handler. Add a client, run the OOM. */
+ geoip_entry_stats_init(now);
+ SET_TEST_ADDRESS(100);
+ geoip_note_client_seen(GEOIP_CLIENT_CONNECT, &addr, NULL,
+ now - (12 * 60 * 60));
+ /* We've seen this 12 hours ago. Run the OOM, it should clean the entry
+ * because it is above the minimum cutoff of 4 hours. */
+ size_t bytes_removed = geoip_client_cache_handle_oom(now, 1000);
+ tt_size_op(bytes_removed, OP_GT, 0);
+
+ /* Do it again but this time with an entry with a lower cutoff. */
+ geoip_entry_stats_init(now);
+ SET_TEST_ADDRESS(100);
+ geoip_note_client_seen(GEOIP_CLIENT_CONNECT, &addr, NULL,
+ now - (3 * 60 * 60));
+ bytes_removed = geoip_client_cache_handle_oom(now, 1000);
+ tt_size_op(bytes_removed, OP_EQ, 0);
+
/* Stop collecting entry statistics. */
geoip_entry_stats_term();
get_options_mutable()->EntryStatistics = 0;