summaryrefslogtreecommitdiff
path: root/src/third_party/wiredtiger/test/format/config.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/third_party/wiredtiger/test/format/config.h')
-rw-r--r--src/third_party/wiredtiger/test/format/config.h315
1 files changed, 315 insertions, 0 deletions
diff --git a/src/third_party/wiredtiger/test/format/config.h b/src/third_party/wiredtiger/test/format/config.h
new file mode 100644
index 00000000000..a5190469c7f
--- /dev/null
+++ b/src/third_party/wiredtiger/test/format/config.h
@@ -0,0 +1,315 @@
+/*-
+ * Public Domain 2014-2016 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.
+ */
+
+/*
+ * Configuration for the wts program is an array of string-based parameters.
+ * This is the structure used to declare them.
+ */
+typedef struct {
+ const char *name; /* Configuration item */
+ const char *desc; /* Configuration description */
+
+ /* Value is a boolean, yes if roll of 1-to-100 is <= CONFIG->min. */
+#define C_BOOL 0x001
+
+ /* Not a simple randomization, handle outside the main loop. */
+#define C_IGNORE 0x002
+
+ /* Value was set from command-line or file, ignore for all runs. */
+#define C_PERM 0x004
+
+ /* Value isn't random for this run, ignore just for this run. */
+#define C_TEMP 0x008
+
+ /* Value is a string. */
+#define C_STRING 0x020
+ u_int flags;
+
+ uint32_t min; /* Minimum value */
+ uint32_t maxrand; /* Maximum value randomly chosen */
+ uint32_t maxset; /* Maximum value explicitly set */
+ uint32_t *v; /* Value for this run */
+ char **vstr; /* Value for string options */
+} CONFIG;
+
+#define COMPRESSION_LIST \
+ "(none | bzip | bzip-raw | lz4 | lz4-noraw | lzo | none | " \
+ "snappy | zlib | zlib-noraw)"
+
+static CONFIG c[] = {
+ { "abort",
+ "if timed run should drop core", /* 0% */
+ C_BOOL, 0, 0, 0, &g.c_abort, NULL },
+
+ { "auto_throttle",
+ "if LSM inserts are throttled", /* 90% */
+ C_BOOL, 90, 0, 0, &g.c_auto_throttle, NULL },
+
+ { "backups",
+ "if backups are enabled", /* 5% */
+ C_BOOL, 5, 0, 0, &g.c_backups, NULL },
+
+ { "bitcnt",
+ "number of bits for fixed-length column-store files",
+ 0x0, 1, 8, 8, &g.c_bitcnt, NULL },
+
+ { "bloom",
+ "if bloom filters are configured", /* 95% */
+ C_BOOL, 95, 0, 0, &g.c_bloom, NULL },
+
+ { "bloom_bit_count",
+ "number of bits per item for LSM bloom filters",
+ 0x0, 4, 64, 1000, &g.c_bloom_bit_count, NULL },
+
+ { "bloom_hash_count",
+ "number of hash values per item for LSM bloom filters",
+ 0x0, 4, 32, 100, &g.c_bloom_hash_count, NULL },
+
+ { "bloom_oldest",
+ "if bloom_oldest=true", /* 10% */
+ C_BOOL, 10, 0, 0, &g.c_bloom_oldest, NULL },
+
+ { "cache",
+ "size of the cache in MB",
+ 0x0, 1, 100, 100 * 1024, &g.c_cache, NULL },
+
+ { "checkpoints",
+ "if periodic checkpoints are done", /* 95% */
+ C_BOOL, 95, 0, 0, &g.c_checkpoints, NULL },
+
+ { "checksum",
+ "type of checksums (on | off | uncompressed)",
+ C_IGNORE|C_STRING, 1, 3, 3, NULL, &g.c_checksum },
+
+ { "chunk_size",
+ "LSM chunk size in MB",
+ 0x0, 1, 10, 100, &g.c_chunk_size, NULL },
+
+ { "compaction",
+ "if compaction is running", /* 10% */
+ C_BOOL, 10, 0, 0, &g.c_compact, NULL },
+
+ { "compression",
+ "type of compression " COMPRESSION_LIST,
+ C_IGNORE|C_STRING, 0, 0, 0, NULL, &g.c_compression },
+
+ { "data_extend",
+ "if data files are extended", /* 5% */
+ C_BOOL, 5, 0, 0, &g.c_data_extend, NULL },
+
+ { "data_source",
+ "data source (file | helium | kvsbdb | lsm | table)",
+ C_IGNORE|C_STRING, 0, 0, 0, NULL, &g.c_data_source },
+
+ { "delete_pct",
+ "percent operations that are deletes",
+ 0x0, 0, 45, 90, &g.c_delete_pct, NULL },
+
+ { "dictionary",
+ "if values are dictionary compressed", /* 20% */
+ C_BOOL, 20, 0, 0, &g.c_dictionary, NULL },
+
+ { "direct_io",
+ "if direct I/O is configured for data objects", /* 0% */
+ C_IGNORE, 0, 0, 1, &g.c_direct_io, NULL },
+
+ { "encryption",
+ "type of encryption (none | rotn-7)",
+ C_IGNORE|C_STRING, 0, 0, 0, NULL, &g.c_encryption },
+
+ { "evict_max",
+ "the maximum number of eviction workers",
+ 0x0, 0, 5, 100, &g.c_evict_max, NULL },
+
+ { "file_type",
+ "type of store to create (fix | var | row)",
+ C_IGNORE|C_STRING, 1, 3, 3, NULL, &g.c_file_type },
+
+ { "firstfit",
+ "if allocation is firstfit", /* 10% */
+ C_BOOL, 10, 0, 0, &g.c_firstfit, NULL },
+
+ { "huffman_key",
+ "if keys are huffman encoded", /* 20% */
+ C_BOOL, 20, 0, 0, &g.c_huffman_key, NULL },
+
+ { "huffman_value",
+ "if values are huffman encoded", /* 20% */
+ C_BOOL, 20, 0, 0, &g.c_huffman_value, NULL },
+
+ { "in_memory",
+ "if in-memory configured",
+ C_IGNORE, 0, 0, 1, &g.c_in_memory, NULL },
+
+ { "insert_pct",
+ "percent operations that are inserts",
+ 0x0, 0, 45, 90, &g.c_insert_pct, NULL },
+
+ { "internal_key_truncation",
+ "if internal keys are truncated", /* 95% */
+ C_BOOL, 95, 0, 0, &g.c_internal_key_truncation, NULL },
+
+ { "internal_page_max",
+ "maximum size of Btree internal nodes",
+ 0x0, 9, 17, 27, &g.c_intl_page_max, NULL },
+
+ { "isolation",
+ "isolation level "
+ "(random | read-uncommitted | read-committed | snapshot)",
+ C_IGNORE|C_STRING, 1, 4, 4, NULL, &g.c_isolation },
+
+ { "key_gap",
+ "gap between instantiated keys on a Btree page",
+ 0x0, 0, 20, 20, &g.c_key_gap, NULL },
+
+ { "key_max",
+ "maximum size of keys",
+ 0x0, 20, 128, MEGABYTE(10), &g.c_key_max, NULL },
+
+ { "key_min",
+ "minimum size of keys",
+ 0x0, 10, 32, 256, &g.c_key_min, NULL },
+
+ { "leaf_page_max",
+ "maximum size of Btree leaf nodes",
+ 0x0, 9, 17, 27, &g.c_leaf_page_max, NULL },
+
+ { "leak_memory",
+ "if memory should be leaked on close",
+ C_BOOL, 0, 0, 0, &g.c_leak_memory, NULL },
+
+ { "logging",
+ "if logging configured", /* 30% */
+ C_BOOL, 30, 0, 0, &g.c_logging, NULL },
+
+ { "logging_archive",
+ "if log file archival configured", /* 50% */
+ C_BOOL, 50, 0, 0, &g.c_logging_archive, NULL },
+
+ { "logging_compression",
+ "type of logging compression " COMPRESSION_LIST,
+ C_IGNORE|C_STRING, 0, 0, 0, NULL, &g.c_logging_compression },
+
+ { "logging_prealloc",
+ "if log file pre-allocation configured", /* 50% */
+ C_BOOL, 50, 0, 0, &g.c_logging_prealloc, NULL },
+
+ { "long_running_txn",
+ "if a long-running transaction configured", /* 0% */
+ C_BOOL, 0, 0, 0, &g.c_long_running_txn, NULL },
+
+ { "lsm_worker_threads",
+ "the number of LSM worker threads",
+ 0x0, 3, 4, 20, &g.c_lsm_worker_threads, NULL },
+
+ { "merge_max",
+ "the maximum number of chunks to include in a merge operation",
+ 0x0, 4, 20, 100, &g.c_merge_max, NULL },
+
+ { "mmap",
+ "configure for mmap operations", /* 90% */
+ C_BOOL, 90, 0, 0, &g.c_mmap, NULL },
+
+ { "ops",
+ "the number of modification operations done per run",
+ 0x0, 0, M(2), M(100), &g.c_ops, NULL },
+
+ { "prefix_compression",
+ "if keys are prefix compressed", /* 80% */
+ C_BOOL, 80, 0, 0, &g.c_prefix_compression, NULL },
+
+ { "prefix_compression_min",
+ "minimum gain before prefix compression is used",
+ 0x0, 0, 8, 256, &g.c_prefix_compression_min, NULL },
+
+ { "repeat_data_pct",
+ "percent duplicate values in row- or var-length column-stores",
+ 0x0, 0, 90, 90, &g.c_repeat_data_pct, NULL },
+
+ { "reverse",
+ "collate in reverse order", /* 10% */
+ C_BOOL, 10, 0, 0, &g.c_reverse, NULL },
+
+ { "rows",
+ "the number of rows to create",
+ 0x0, 10, M(1), M(100), &g.c_rows, NULL },
+
+ { "runs",
+ "the number of runs",
+ C_IGNORE, 0, UINT_MAX, UINT_MAX, &g.c_runs, NULL },
+
+ { "rebalance",
+ "rebalance testing", /* 100% */
+ C_BOOL, 100, 1, 0, &g.c_rebalance, NULL },
+
+ { "salvage",
+ "salvage testing", /* 100% */
+ C_BOOL, 100, 1, 0, &g.c_salvage, NULL },
+
+ { "split_pct",
+ "page split size as a percentage of the maximum page size",
+ 0x0, 40, 85, 85, &g.c_split_pct, NULL },
+
+ { "statistics",
+ "maintain statistics", /* 20% */
+ C_BOOL, 20, 0, 0, &g.c_statistics, NULL },
+
+ { "statistics_server",
+ "run the statistics server thread", /* 5% */
+ C_BOOL, 5, 0, 0, &g.c_statistics_server, NULL },
+
+ { "threads",
+ "the number of worker threads",
+ 0x0, 1, 32, 128, &g.c_threads, NULL },
+
+ { "timer",
+ "maximum time to run in minutes (default 20 minutes)",
+ C_IGNORE, 0, UINT_MAX, UINT_MAX, &g.c_timer, NULL },
+
+ { "value_max",
+ "maximum size of values",
+ 0x0, 32, 4096, MEGABYTE(10), &g.c_value_max, NULL },
+
+ { "value_min",
+ "minimum size of values",
+ 0x0, 0, 20, 4096, &g.c_value_min, NULL },
+
+ { "verify",
+ "to regularly verify during a run", /* 100% */
+ C_BOOL, 100, 1, 0, &g.c_verify, NULL },
+
+ { "wiredtiger_config",
+ "configuration string used to wiredtiger_open",
+ C_IGNORE|C_STRING, 0, 0, 0, NULL, &g.c_config_open },
+
+ { "write_pct",
+ "percent operations that are writes",
+ 0x0, 0, 90, 90, &g.c_write_pct, NULL },
+
+ { NULL, NULL, 0x0, 0, 0, 0, NULL, NULL }
+};