mdbx-test: minor refine comments & keygen-params ranges.

Change-Id: I8ebb0647d4d5a8637d57a39e9ddee4727bffb18f
This commit is contained in:
Leonid Yuriev 2020-05-26 18:39:36 +03:00
parent ffa29f9466
commit 7f920b5cfc
3 changed files with 19 additions and 18 deletions

View File

@ -124,7 +124,8 @@ inline bool parse_option_intptr(int argc, char *const argv[], int &narg,
#pragma pack(push, 1) #pragma pack(push, 1)
struct keygen_params_pod { struct keygen_params_pod {
/* Параметры генератора пар key-value. /* Параметры генератора пар key-value. Также может быть полезным описание
* алгоритма генерации в keygen.h
* *
* Ключи и значения генерируются по задаваемым параметрам на основе "плоской" * Ключи и значения генерируются по задаваемым параметрам на основе "плоской"
* исходной координаты. При этом, в общем случае, в процессе тестов исходная * исходной координаты. При этом, в общем случае, в процессе тестов исходная
@ -146,15 +147,15 @@ struct keygen_params_pod {
* данных не анализируется движком и не оказывает влияния на его работу. * данных не анализируется движком и не оказывает влияния на его работу.
* - Для таблиц "с дубликатами", при наличии более одного значения для * - Для таблиц "с дубликатами", при наличии более одного значения для
* некоторого ключа, формируется дочернее btree-поддерево. Это дерево * некоторого ключа, формируется дочернее btree-поддерево. Это дерево
* формируется в отдельном "кусте" страниц и обслуживается независимо * формируется во вложенной странице или отдельном "кусте" страниц,
* от окружения родительского ключа. * и обслуживается независимо от окружения родительского ключа.
* - Таким образом, паттерн генерации значений имеет смысл только для * - Таким образом, паттерн генерации значений имеет смысл только для
* таблиц "с дубликатами" и только в контексте одного значения ключа. * таблиц "с дубликатами" и только в контексте одного значения ключа.
* Иначе говоря, нет смысла в со-координации генерации паттернов для * Иначе говоря, не имеет смысла взаимная координация при генерации
* ключей и значений. Более того, генерацию значений всегда необходимо * значений для разных ключей. Поэтому генерацию значений следует
* рассматривать в контексте связки с одним значением ключа. * рассматривать только в контексте связки с одним значением ключа.
* - Тем не менее, во всех случаях достаточно важным является равномерная * - Тем не менее, во всех случаях достаточно важным является равновероятное
* всех возможных сочетаний длин ключей и данных. * распределение всех возможных сочетаний длин ключей и данных.
* *
* width: * width:
* Большинство тестов предполагают создание или итерирование некоторого * Большинство тестов предполагают создание или итерирование некоторого
@ -166,7 +167,7 @@ struct keygen_params_pod {
* степени двойки. Это ограничение можно снять, но ценой увеличения * степени двойки. Это ограничение можно снять, но ценой увеличения
* вычислительной сложности, включая потерю простоты и прозрачности. * вычислительной сложности, включая потерю простоты и прозрачности.
* *
* С другой стороны, не-битовый width может быть полезен: * С другой стороны, не-n-битовый width может быть полезен:
* - Позволит генерировать ключи/значения в точно задаваемом диапазоне. * - Позволит генерировать ключи/значения в точно задаваемом диапазоне.
* Например, перебрать в псевдо-случайном порядке 10001 значение. * Например, перебрать в псевдо-случайном порядке 10001 значение.
* - Позволит поровну разделять заданное пространство (диапазон) * - Позволит поровну разделять заданное пространство (диапазон)
@ -203,7 +204,7 @@ struct keygen_params_pod {
* rotate и offset: * rotate и offset:
* Для проверки слияния и разделения страниц внутри движка требуются * Для проверки слияния и разделения страниц внутри движка требуются
* генерация ключей/значений в виде не-смежных последовательностей, как-бы * генерация ключей/значений в виде не-смежных последовательностей, как-бы
* в виде "пунктира", который постепенно заполняет весь заданных диапазон. * в виде "пунктира", который постепенно заполняет весь заданный диапазон.
* *
* Параметры позволяют генерировать такой "пунктир". Соответственно rotate * Параметры позволяют генерировать такой "пунктир". Соответственно rotate
* задает циклический сдвиг вправо, а offset задает смещение, точнее говоря * задает циклический сдвиг вправо, а offset задает смещение, точнее говоря

View File

@ -23,9 +23,8 @@ namespace keygen {
/* Под "генерацией ключей" здесь понимается генерация обоих значений для /* Под "генерацией ключей" здесь понимается генерация обоих значений для
* пар key-value, т.е. не только ключей, но и ассоциированных с ними данных. * пар key-value, т.е. не только ключей, но и ассоциированных с ними данных.
*/ *
* Генерацию ключей нельзя отнести к простым задачам, так как требования
/* Генерацию ключей нельзя отнести к простым задачам, так как требования
* примерно следующие: * примерно следующие:
* - генерация разного количества уникальных ключей различной длины * - генерация разного количества уникальных ключей различной длины
* в задаваемом диапазоне; * в задаваемом диапазоне;
@ -67,7 +66,8 @@ namespace keygen {
* 1) смещение (сложение) по модулю; * 1) смещение (сложение) по модулю;
* 2) циклический сдвиг; * 2) циклический сдвиг;
* 3) добавление абсолютного смещения (базы); * 3) добавление абсолютного смещения (базы);
*/ *
* Также см. описание параметров генератора ключей и значений в config.h */
typedef uint64_t serial_t; typedef uint64_t serial_t;

View File

@ -323,10 +323,10 @@ int main(int argc, char *const argv[]) {
continue; continue;
if (config::parse_option(argc, argv, narg, "keygen.width", if (config::parse_option(argc, argv, narg, "keygen.width",
params.keygen.width, 1, 64)) params.keygen.width, 8, 64))
continue; continue;
if (config::parse_option(argc, argv, narg, "keygen.mesh", if (config::parse_option(argc, argv, narg, "keygen.mesh",
params.keygen.mesh, 1, 64)) params.keygen.mesh, 0, 64))
continue; continue;
if (config::parse_option(argc, argv, narg, "keygen.seed", if (config::parse_option(argc, argv, narg, "keygen.seed",
params.keygen.seed, config::no_scale)) params.keygen.seed, config::no_scale))
@ -335,10 +335,10 @@ int main(int argc, char *const argv[]) {
params.keygen.zero_fill)) params.keygen.zero_fill))
continue; continue;
if (config::parse_option(argc, argv, narg, "keygen.split", if (config::parse_option(argc, argv, narg, "keygen.split",
params.keygen.split, 1, 64)) params.keygen.split, 0, 63))
continue; continue;
if (config::parse_option(argc, argv, narg, "keygen.rotate", if (config::parse_option(argc, argv, narg, "keygen.rotate",
params.keygen.rotate, 1, 64)) params.keygen.rotate, 0, 63))
continue; continue;
if (config::parse_option(argc, argv, narg, "keygen.offset", if (config::parse_option(argc, argv, narg, "keygen.offset",
params.keygen.offset, config::binary)) params.keygen.offset, config::binary))