diff options
author | Tor Egge <Tor.Egge@broadpark.no> | 2019-08-26 12:04:52 +0200 |
---|---|---|
committer | Tor Egge <Tor.Egge@broadpark.no> | 2019-08-26 16:15:32 +0200 |
commit | dab8f7407cd1872bbe5c10b9a94ab4a8cd91eaa3 (patch) | |
tree | c78e7942f5555f0c2ca5c5d0888861f972a78d86 /searchlib/src/tests/attribute/enumeratedsave | |
parent | b26d567a0eb28d97f0601440c781ea5e5a3c1ed1 (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.cpp | 17 |
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); |