mirror of
https://github.com/isar/libmdbx.git
synced 2025-08-26 10:04:28 +08:00
mdbx-test: доработка генератора ключей/значений для надежной генерации уникальных значений.
В текущем понимании коммитом этим устраняется застарелая проблема редких сбоев стохастического теста из-за вероятности ошибочной генерации повторяющихся пар key-value.
This commit is contained in:
@@ -108,10 +108,14 @@ class maker {
|
||||
|
||||
struct essentials {
|
||||
uint16_t minlen{0};
|
||||
enum { prng_fill_flag = 1, value_age_width = 8 };
|
||||
enum { prng_fill_flag = 1, value_age_minwidth = 5 };
|
||||
uint16_t flags{0};
|
||||
uint32_t maxlen{0};
|
||||
serial_t mask{0};
|
||||
unsigned bits;
|
||||
} key_essentials, value_essentials;
|
||||
unsigned value_age_bits;
|
||||
serial_t value_age_mask{0};
|
||||
|
||||
static serial_t mk_begin(serial_t serial, const essentials ¶ms,
|
||||
result &out);
|
||||
@@ -136,6 +140,11 @@ public:
|
||||
}
|
||||
return increment(serial, int64_t(uint64_t(delta) << mapping.split));
|
||||
}
|
||||
|
||||
serial_t remix_age(serial_t serial) const {
|
||||
return (UINT64_C(768097847591) * (serial ^ UINT64_C(768097847591))) &
|
||||
value_age_mask;
|
||||
}
|
||||
};
|
||||
|
||||
void log_pair(logging::loglevel level, const char *prefix, const buffer &key,
|
||||
|
Reference in New Issue
Block a user