summaryrefslogtreecommitdiff
path: root/src/third_party/wiredtiger/test/cppsuite/test_harness/database_model.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/third_party/wiredtiger/test/cppsuite/test_harness/database_model.h')
-rw-r--r--src/third_party/wiredtiger/test/cppsuite/test_harness/database_model.h89
1 files changed, 89 insertions, 0 deletions
diff --git a/src/third_party/wiredtiger/test/cppsuite/test_harness/database_model.h b/src/third_party/wiredtiger/test/cppsuite/test_harness/database_model.h
new file mode 100644
index 00000000000..07e7c007ea7
--- /dev/null
+++ b/src/third_party/wiredtiger/test/cppsuite/test_harness/database_model.h
@@ -0,0 +1,89 @@
+/*-
+ * Public Domain 2014-present MongoDB, Inc.
+ * Public Domain 2008-2014 WiredTiger, Inc.
+ *
+ * This is free and unencumbered software released into the public domain.
+ *
+ * Anyone is free to copy, modify, publish, use, compile, sell, or
+ * distribute this software, either in source code form or as a compiled
+ * binary, for any purpose, commercial or non-commercial, and by any
+ * means.
+ *
+ * In jurisdictions that recognize copyright laws, the author or authors
+ * of this software dedicate any and all copyright interest in the
+ * software to the public domain. We make this dedication for the benefit
+ * of the public at large and to the detriment of our heirs and
+ * successors. We intend this dedication to be an overt act of
+ * relinquishment in perpetuity of all present and future rights to this
+ * software under copyright law.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+ * IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR
+ * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+ * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+ * OTHER DEALINGS IN THE SOFTWARE.
+ */
+
+#ifndef DATABASE_MODEL_H
+#define DATABASE_MODEL_H
+
+#include <map>
+#include <string>
+
+namespace test_harness {
+
+/* Key/Value type. */
+typedef std::string key_value_t;
+
+/* Representation of key states. */
+struct key_t {
+ bool exists;
+};
+
+/* Iterator type used to iterate over keys that are stored in the data model. */
+typedef std::map<test_harness::key_value_t, test_harness::key_t>::const_iterator keys_iterator_t;
+
+/* Representation of a value. */
+struct value_t {
+ key_value_t value;
+};
+
+/* A collection is made of mapped Key objects. */
+struct collection_t {
+ std::map<key_value_t, key_t> keys;
+ std::map<key_value_t, value_t> *values = {nullptr};
+};
+
+/* Representation of the collections in memory. */
+class database {
+ public:
+ const keys_iterator_t
+ get_collection_keys_begin(const std::string &collection_name) const
+ {
+ return (collections.at(collection_name).keys.begin());
+ }
+
+ const keys_iterator_t
+ get_collection_keys_end(const std::string &collection_name) const
+ {
+ return (collections.at(collection_name).keys.end());
+ }
+
+ const std::vector<std::string>
+ get_collection_names() const
+ {
+ std::vector<std::string> collection_names;
+
+ for (auto const &it : collections)
+ collection_names.push_back(it.first);
+
+ return (collection_names);
+ }
+
+ std::map<std::string, collection_t> collections;
+};
+} // namespace test_harness
+
+#endif