summaryrefslogtreecommitdiffstats
path: root/searchlib/src/tests/attribute/enumeratedsave
diff options
context:
space:
mode:
authorTor Egge <Tor.Egge@broadpark.no>2019-08-26 12:04:52 +0200
committerTor Egge <Tor.Egge@broadpark.no>2019-08-26 16:15:32 +0200
commitdab8f7407cd1872bbe5c10b9a94ab4a8cd91eaa3 (patch)
treec78e7942f5555f0c2ca5c5d0888861f972a78d86 /searchlib/src/tests/attribute/enumeratedsave
parentb26d567a0eb28d97f0601440c781ea5e5a3c1ed1 (diff)
Use unique store enumerator when saving enumerated attribute vectors.
Diffstat (limited to 'searchlib/src/tests/attribute/enumeratedsave')
-rw-r--r--searchlib/src/tests/attribute/enumeratedsave/enumeratedsave_test.cpp17
1 files changed, 17 insertions, 0 deletions
diff --git a/searchlib/src/tests/attribute/enumeratedsave/enumeratedsave_test.cpp b/searchlib/src/tests/attribute/enumeratedsave/enumeratedsave_test.cpp
index 9972fa785eb..b9feeb124ce 100644
--- a/searchlib/src/tests/attribute/enumeratedsave/enumeratedsave_test.cpp
+++ b/searchlib/src/tests/attribute/enumeratedsave/enumeratedsave_test.cpp
@@ -8,6 +8,7 @@
#include <vespa/searchlib/attribute/attributeguard.h>
#include <vespa/searchlib/attribute/attributememoryfilebufferwriter.h>
#include <vespa/searchlib/attribute/attributememorysavetarget.h>
+#include <vespa/searchlib/attribute/attributesaver.h>
#include <vespa/searchlib/attribute/attrvector.h>
#include <vespa/searchlib/attribute/multinumericattribute.h>
#include <vespa/searchlib/attribute/multistringattribute.h>
@@ -142,6 +143,7 @@ private:
SearchContextPtr getSearch(const V & vec);
MemAttr::SP saveMem(AttributeVector &v);
+ void saveMemDuringCompaction(AttributeVector &v);
void checkMem(AttributeVector &v, const MemAttr &e);
MemAttr::SP saveBoth(AttributePtr v);
AttributePtr make(Config cfg, const vespalib::string &pref, bool fastSearch = false);
@@ -503,6 +505,19 @@ EnumeratedSaveTest::saveMem(AttributeVector &v)
return res;
}
+void
+EnumeratedSaveTest::saveMemDuringCompaction(AttributeVector &v)
+{
+ MemAttr::SP res(new MemAttr);
+ auto *enum_store_base = v.getEnumStoreBase();
+ if (enum_store_base != nullptr) {
+ auto saver = v.onInitSave(v.getBaseFileName());
+ // Simulate compaction
+ enum_store_base->get_data_store_base().bump_compaction_count();
+ auto save_result = saver->save(*res);
+ EXPECT_EQUAL(!v.hasMultiValue(), save_result);
+ }
+}
void
EnumeratedSaveTest::checkMem(AttributeVector &v, const MemAttr &e)
@@ -608,6 +623,8 @@ EnumeratedSaveTest::testReload(AttributePtr v0,
TEST_DO((checkLoad<VectorType, BufferType>(v, pref + "2_e", v2)));
TEST_DO(checkMem(*v, supportsEnumerated ? *emv2 : *mv2));
+ saveMemDuringCompaction(*v);
+
TermFieldMatchData md;
SearchContextPtr sc = getSearch<VectorType>(as<VectorType>(v));
sc->fetchPostings(true);