From d28bdb25c599ac5f971fd293adf6a613fbd8cd37 Mon Sep 17 00:00:00 2001 From: Duarte Nunes Date: Tue, 16 Jan 2018 23:02:09 +0000 Subject: [PATCH] tests/memtable_test: Test hash caching Signed-off-by: Duarte Nunes --- tests/memtable_test.cc | 64 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 64 insertions(+) diff --git a/tests/memtable_test.cc b/tests/memtable_test.cc index d14b392f6b..1ac9d579d3 100644 --- a/tests/memtable_test.cc +++ b/tests/memtable_test.cc @@ -442,3 +442,67 @@ SEASTAR_TEST_CASE(test_exception_safety_of_reads) { } while (injector.failed()); }); } + +SEASTAR_TEST_CASE(test_hash_is_cached) { + return seastar::async([] { + auto s = schema_builder("ks", "cf") + .with_column("pk", bytes_type, column_kind::partition_key) + .with_column("v", bytes_type, column_kind::regular_column) + .build(); + + auto mt = make_lw_shared(s); + + auto m = make_unique_mutation(s); + set_column(m, "v"); + mt->apply(m); + + { + auto rd = mt->make_flat_reader(s); + rd().get0()->as_partition_start(); + clustering_row row = rd().get0()->as_clustering_row(); + BOOST_REQUIRE(!row.cells().cell_hash_for(0)); + } + + { + auto slice = s->full_slice(); + slice.options.set(); + auto rd = mt->make_flat_reader(s, query::full_partition_range, slice); + rd().get0()->as_partition_start(); + clustering_row row = rd().get0()->as_clustering_row(); + BOOST_REQUIRE(row.cells().cell_hash_for(0)); + } + + { + auto rd = mt->make_flat_reader(s); + rd().get0()->as_partition_start(); + clustering_row row = rd().get0()->as_clustering_row(); + BOOST_REQUIRE(row.cells().cell_hash_for(0)); + } + + set_column(m, "v"); + mt->apply(m); + + { + auto rd = mt->make_flat_reader(s); + rd().get0()->as_partition_start(); + clustering_row row = rd().get0()->as_clustering_row(); + BOOST_REQUIRE(!row.cells().cell_hash_for(0)); + } + + { + auto slice = s->full_slice(); + slice.options.set(); + auto rd = mt->make_flat_reader(s, query::full_partition_range, slice); + rd().get0()->as_partition_start(); + clustering_row row = rd().get0()->as_clustering_row(); + BOOST_REQUIRE(row.cells().cell_hash_for(0)); + } + + { + auto rd = mt->make_flat_reader(s); + rd().get0()->as_partition_start(); + clustering_row row = rd().get0()->as_clustering_row(); + BOOST_REQUIRE(row.cells().cell_hash_for(0)); + } + }); +}