From e7ae967f2e0243aec66c1fcd35833a989b88d8b4 Mon Sep 17 00:00:00 2001 From: TomekIdczak97 Date: Tue, 20 Aug 2019 17:49:11 +0200 Subject: [PATCH] test_metrics_flush_basic --- test/storage/slab_pmem/check_slab_pmem.c | 57 ++++++++++++++++++++++++ 1 file changed, 57 insertions(+) diff --git a/test/storage/slab_pmem/check_slab_pmem.c b/test/storage/slab_pmem/check_slab_pmem.c index 12cfcf197..151446a40 100644 --- a/test/storage/slab_pmem/check_slab_pmem.c +++ b/test/storage/slab_pmem/check_slab_pmem.c @@ -1173,6 +1173,7 @@ START_TEST(test_metrics_append_basic) #define KEY "key" #define VAL "val" #define APPEND "append" + struct bstring key, val, append; item_rstatus_e status; struct item *it; @@ -1215,6 +1216,61 @@ START_TEST(test_metrics_append_basic) } END_TEST +START_TEST(test_metrics_flush_basic) +{ +#define KEY1 "key1" +#define VAL1 "val1" +#define KEY2 "key2" +#define VAL2 "val2" + + struct bstring key1, val1, key2, val2; + item_rstatus_e status; + struct item *it; + + test_reset(1); + + key1 = str2bstr(KEY1); + val1 = str2bstr(VAL1); + + key2 = str2bstr(KEY2); + val2 = str2bstr(VAL2); + + time_update(); + status = item_reserve(&it, &key1, &val1, val1.len, 0, INT32_MAX); + ck_assert_msg(status == ITEM_OK, "item_reserve not OK - return status %d", status); + item_insert(it, &key1); + + time_update(); + status = item_reserve(&it, &key2, &val2, val2.len, 0, INT32_MAX); + ck_assert_msg(status == ITEM_OK, "item_reserve not OK - return status %d", status); + item_insert(it, &key2); + + item_flush(); + + it = item_get(&key1); + ck_assert_msg(it == NULL, "item with key %.*s still exists after flush", key1.len, key1.data); + it = item_get(&key2); + ck_assert_msg(it == NULL, "item with key %.*s still exists after flush", key2.len, key2.data); + + slab_metrics_st copy = metrics; + + metric_reset((struct metric *)&metrics, METRIC_CARDINALITY(metrics)); + test_reset(0); + + test_assert_metrics((struct metric *)©, (struct metric *)&metrics, METRIC_CARDINALITY(metrics)); + + it = item_get(&key1); + ck_assert_msg(it == NULL, "item with key %.*s still exists after flush", key1.len, key1.data); + it = item_get(&key2); + ck_assert_msg(it == NULL, "item with key %.*s still exists after flush", key2.len, key2.data); + +#undef KEY1 +#undef VAL1 +#undef KEY2 +#undef VAL2 +} +END_TEST + START_TEST(test_metrics_lruq_rebuild) { #define NUM_ITEMS 3 @@ -1338,6 +1394,7 @@ slab_suite(void) tcase_add_test(tc_smetrics, test_metrics_insert_large); tcase_add_test(tc_smetrics, test_metrics_reserve_backfill_link); tcase_add_test(tc_smetrics, test_metrics_append_basic); + tcase_add_test(tc_smetrics, test_metrics_flush_basic); tcase_add_test(tc_smetrics, test_metrics_lruq_rebuild); return s;