diff --git a/test/config.h b/test/config.h index 30106545..2ab4742a 100644 --- a/test/config.h +++ b/test/config.h @@ -124,7 +124,8 @@ inline bool parse_option_intptr(int argc, char *const argv[], int &narg, #pragma pack(push, 1) struct keygen_params_pod { - /* Параметры генератора пар key-value. + /* Параметры генератора пар key-value. Также может быть полезным описание + * алгоритма генерации в keygen.h * * Ключи и значения генерируются по задаваемым параметрам на основе "плоской" * исходной координаты. При этом, в общем случае, в процессе тестов исходная @@ -146,15 +147,15 @@ struct keygen_params_pod { * данных не анализируется движком и не оказывает влияния на его работу. * - Для таблиц "с дубликатами", при наличии более одного значения для * некоторого ключа, формируется дочернее btree-поддерево. Это дерево - * формируется в отдельном "кусте" страниц и обслуживается независимо - * от окружения родительского ключа. + * формируется во вложенной странице или отдельном "кусте" страниц, + * и обслуживается независимо от окружения родительского ключа. * - Таким образом, паттерн генерации значений имеет смысл только для * таблиц "с дубликатами" и только в контексте одного значения ключа. - * Иначе говоря, нет смысла в со-координации генерации паттернов для - * ключей и значений. Более того, генерацию значений всегда необходимо - * рассматривать в контексте связки с одним значением ключа. - * - Тем не менее, во всех случаях достаточно важным является равномерная - * всех возможных сочетаний длин ключей и данных. + * Иначе говоря, не имеет смысла взаимная координация при генерации + * значений для разных ключей. Поэтому генерацию значений следует + * рассматривать только в контексте связки с одним значением ключа. + * - Тем не менее, во всех случаях достаточно важным является равновероятное + * распределение всех возможных сочетаний длин ключей и данных. * * width: * Большинство тестов предполагают создание или итерирование некоторого @@ -166,7 +167,7 @@ struct keygen_params_pod { * степени двойки. Это ограничение можно снять, но ценой увеличения * вычислительной сложности, включая потерю простоты и прозрачности. * - * С другой стороны, не-битовый width может быть полезен: + * С другой стороны, не-n-битовый width может быть полезен: * - Позволит генерировать ключи/значения в точно задаваемом диапазоне. * Например, перебрать в псевдо-случайном порядке 10001 значение. * - Позволит поровну разделять заданное пространство (диапазон) @@ -203,7 +204,7 @@ struct keygen_params_pod { * rotate и offset: * Для проверки слияния и разделения страниц внутри движка требуются * генерация ключей/значений в виде не-смежных последовательностей, как-бы - * в виде "пунктира", который постепенно заполняет весь заданных диапазон. + * в виде "пунктира", который постепенно заполняет весь заданный диапазон. * * Параметры позволяют генерировать такой "пунктир". Соответственно rotate * задает циклический сдвиг вправо, а offset задает смещение, точнее говоря diff --git a/test/keygen.h b/test/keygen.h index 8b251f85..c36cc1a2 100644 --- a/test/keygen.h +++ b/test/keygen.h @@ -23,9 +23,8 @@ namespace keygen { /* Под "генерацией ключей" здесь понимается генерация обоих значений для * пар key-value, т.е. не только ключей, но и ассоциированных с ними данных. - */ - -/* Генерацию ключей нельзя отнести к простым задачам, так как требования + * + * Генерацию ключей нельзя отнести к простым задачам, так как требования * примерно следующие: * - генерация разного количества уникальных ключей различной длины * в задаваемом диапазоне; @@ -67,7 +66,8 @@ namespace keygen { * 1) смещение (сложение) по модулю; * 2) циклический сдвиг; * 3) добавление абсолютного смещения (базы); - */ + * + * Также см. описание параметров генератора ключей и значений в config.h */ typedef uint64_t serial_t; diff --git a/test/main.cc b/test/main.cc index 0806914e..c6b15ea2 100644 --- a/test/main.cc +++ b/test/main.cc @@ -323,10 +323,10 @@ int main(int argc, char *const argv[]) { continue; if (config::parse_option(argc, argv, narg, "keygen.width", - params.keygen.width, 1, 64)) + params.keygen.width, 8, 64)) continue; if (config::parse_option(argc, argv, narg, "keygen.mesh", - params.keygen.mesh, 1, 64)) + params.keygen.mesh, 0, 64)) continue; if (config::parse_option(argc, argv, narg, "keygen.seed", params.keygen.seed, config::no_scale)) @@ -335,10 +335,10 @@ int main(int argc, char *const argv[]) { params.keygen.zero_fill)) continue; if (config::parse_option(argc, argv, narg, "keygen.split", - params.keygen.split, 1, 64)) + params.keygen.split, 0, 63)) continue; if (config::parse_option(argc, argv, narg, "keygen.rotate", - params.keygen.rotate, 1, 64)) + params.keygen.rotate, 0, 63)) continue; if (config::parse_option(argc, argv, narg, "keygen.offset", params.keygen.offset, config::binary))