diff options
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.h | 89 |
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 |