LINUX.ORG.RU

Нужна простая помощь в тестировании движка Key-Value

 , , , ,


1

4

Прошу помочь в тестировании key-value движка MDBX. Хватит даже полудохлой (в разумных пределах) виртуалки с установленным компилятором C++, make и компрессором lz4 для логов.

Достаточно клонировать репозиторий и запустить «на выходные» скрипт, т.е. выполнить три команды:

git clone https://github.com/leo-yuriev/libmdbx
cd libmdbx
./test/long_stochastic.sh

ВАЖНО: будет почищен каталог /dev/shm !!! Поэтому, если у вас работает какой-нибудь postgresql, то его следует остановить. Как вариант - закомментировать в скрипте соответствующую строку.

Немного пояснений:

  • тест стохастический «от легкого к тяжелому».
  • тест работает в памяти, потому нагрузит memory bandwidth и CPU, но не диск.
  • тест сам подстроится под размер ОЗУ.
  • тест можно считать «бесконечным» и прервать/перезапустить когда он станет мешать.
  • чем больше (суммарно) отработает тест, тем тщательнее будет проверка.

В случае сбоя нужно быть готовым предоставить инфу:

  • «последний экран» вывода в терминал и lz4-файл из /dev/shm.
  • минимальную информацию о системе (версию компилятора и т.п.)
  • технически это лучше делать через заведение issue на github, а остальные варианты обсуждать здесь.

На всякий:

  • комбинаторная сложность возможных состояний БД и последовательности операций такова, что примерно невозможно проверить все варианты.
  • в такой ситуации стохастический тест (со случайным поведением) является разумным компромиссом.
  • соответственно, «коллективное стохастическое тестирование» будет плюсом к собственным тестам (которые периодически прогоняются по нескольку сотен часов).

Всем добра.

Ответ на: комментарий от erthink

обожаю опенсурс, ни привета ни ответа, хоть бы сами установить пытались тогда, а то просто перечислили набор названий

для нормальных людей объясняю:

sudo apt install build-essential lz4

anonymous ()
Ответ на: комментарий от slovazap

Ага, теперь это называется «стохастическое тестирование». А без коннекта к BTC.com оно сможет? Хорошая попытка, но нет :))))

Все исходники открыто доступны.

Поэтому потрудитесь показать пальцем, либо примите капли.

erthink ()
Ответ на: комментарий от anonymous

Ты гарантируешь отсутствие малвари и прочего нехорошего в предлагаемом ПО?

«Гарантии дает только страховой полис…» О. Бендер.

Тем не менее, при совпадении хешей упомянутой дряни нет с вероятностью порядка 1/2**300.

$ git show -s --pretty="commit-hash %H, tree-hash %T" master
commit-hash 3ac2af61aa499251e23d356d7b069c9b6b26c871, tree-hash e7e142332ead8d4cda85600a61c840d0ca718b0a
erthink ()
Ответ на: комментарий от anonymous

Жду отчётов: социологического (сколько людей откликнулось) и технического (что проверили, какие результаты).

Отчетов составлять я конечно не буду. Но раз попросил помощи, то разумно сказать о результатах:

  • по статистике github с домена linux.org.ru было 7 уникальных переходов.

  • увеличение кол-ва клонирования репозитория на общем фоне не прослеживается.

  • багов не нашли, если не считать ENOSYS в одном случае.

Короче, чуть меньше чем горохом об стену.

erthink ()
Ответ на: комментарий от Harald

а на чём-нибудь ARM-овом интересует? Raspberry, beaglebone, SAMA5D2 девборда?

Исходно были проблемы с unaligned data access, которые я (скорее всего) усугубил серией допеределок. Поэтому, с большой вероятностью, будет падать на ARM-ах без unaligned access или включенным контролем.

Принципиально бороться с таким проблемами я намерен в следующей версии движка (почти полная переделка и переход на C++).

А надо ли устранять эти проблемы в текущей master-ветке - вопрос открытый. со своей стороны я готов поправить код, если это кому-то нужно, но пока таких issues нет. На Эльбрусах libmdbx заработал больше года назад.

erthink ()
Ответ на: комментарий от Harald

На всякий - возможно я излишне сгустил краски в предыдущем ответе. Лучше переформулировать/уточнить:

  • на aarch64, ARM8 и ARM7 с поддержкой unaligned access всё прекрасно работает (тесты гоняли, но можно еще).
  • на «старых» ARM-ах без поддержки unaligned или в включенным контролем - будет падать по понятным причинам, которые unreasonable устранять.
erthink ()