From 15d94e647c90334bab800c9cebfa5f40171a0817 Mon Sep 17 00:00:00 2001 From: Sebastian Waisbrot Date: Sat, 17 Oct 2015 22:41:00 -0700 Subject: [PATCH 1/2] Add test to hit expire based swap --- deps/ccommon/include/cc_metric.h | 2 +- test/storage/cuckoo/check_cuckoo.c | 50 ++++++++++++++++++++++++++++++ 2 files changed, 51 insertions(+), 1 deletion(-) diff --git a/deps/ccommon/include/cc_metric.h b/deps/ccommon/include/cc_metric.h index 6a357bd42..ccb2c5b66 100644 --- a/deps/ccommon/include/cc_metric.h +++ b/deps/ccommon/include/cc_metric.h @@ -58,7 +58,7 @@ extern "C" { metric_decr_n((_base)->_metric, _delta); \ } \ } while(0) -#define DECR(_base, _metric) INCR_N(_base, _metric, 1) +#define DECR(_base, _metric) DECR_N(_base, _metric, 1) #define METRIC_DECLARE(_name, _type, _description) \ diff --git a/test/storage/cuckoo/check_cuckoo.c b/test/storage/cuckoo/check_cuckoo.c index a27d63bb4..c1773297f 100644 --- a/test/storage/cuckoo/check_cuckoo.c +++ b/test/storage/cuckoo/check_cuckoo.c @@ -367,6 +367,55 @@ START_TEST(test_insert_replace_expired) } END_TEST +START_TEST(test_insert_insert_expire_swap) +{ + struct bstring key; + struct val val; + rstatus_t status; + char keystring[30]; + uint64_t i; + cuckoo_metrics_st metrics; + int hits = 0; + + cuckoo_teardown(); + status = cuckoo_setup(CUCKOO_ITEM_SIZE, CUCKOO_NITEM, CUCKOO_POLICY_EXPIRE, false, &metrics); + ck_assert_msg(status == CC_OK, + "could not setup cuckoo module"); + +#define NOW 12345678 + now = NOW; + for (i = 0; metrics.item_curr.counter < CUCKOO_NITEM; i++) { + key.len = sprintf(keystring, "%llu", i); + key.data = keystring; + + val.type = VAL_TYPE_INT; + val.vint = i; + + status = cuckoo_insert(&key, &val, now + i); + ck_assert_msg(status == CC_OK, "cuckoo_insert not OK - return status %d", + status); + } + + key.len = sprintf(keystring, "%llu", i); + key.data = keystring; + + val.type = VAL_TYPE_INT; + val.vint = i; + + status = cuckoo_insert(&key, &val, now + i); + ck_assert_msg(status == CC_OK, "cuckoo_insert not OK - return status %d", + status); + + for (;i > 0 && hits < CUCKOO_NITEM;i--) { + if (cuckoo_get(&key) != NULL) { + hits++; + } + } + ck_assert_msg(hits == CUCKOO_NITEM, "expected %d hits, got %d", + CUCKOO_NITEM, hits); +#undef NOW +} +END_TEST /* * test suite */ @@ -394,6 +443,7 @@ cuckoo_suite(void) tcase_add_test(tc_basic_req, test_expire_basic_random_true); tcase_add_test(tc_basic_req, test_expire_basic_random_false); tcase_add_test(tc_basic_req, test_insert_replace_expired); + tcase_add_test(tc_basic_req, test_insert_insert_expire_swap); return s; } From 04e85f9bc0f2944170ebfd0323849838f0a364ee Mon Sep 17 00:00:00 2001 From: Sebastian Waisbrot Date: Mon, 26 Oct 2015 16:34:32 -0700 Subject: [PATCH 2/2] Feedback --- test/storage/cuckoo/check_cuckoo.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/storage/cuckoo/check_cuckoo.c b/test/storage/cuckoo/check_cuckoo.c index c1773297f..11019984e 100644 --- a/test/storage/cuckoo/check_cuckoo.c +++ b/test/storage/cuckoo/check_cuckoo.c @@ -369,6 +369,7 @@ END_TEST START_TEST(test_insert_insert_expire_swap) { +#define NOW 12345678 struct bstring key; struct val val; rstatus_t status; @@ -382,7 +383,6 @@ START_TEST(test_insert_insert_expire_swap) ck_assert_msg(status == CC_OK, "could not setup cuckoo module"); -#define NOW 12345678 now = NOW; for (i = 0; metrics.item_curr.counter < CUCKOO_NITEM; i++) { key.len = sprintf(keystring, "%llu", i);