2022-01-06 20:08:53
Библиотека Jepsen хорошо себя зарекомендовала в тестировании распределенных систем. Это подтверждают и отчёты о тестировании различных СУБД с описанием найденных проблем и публикации исследователей с анализом причин эффективности подхода, используемого в Jepsen. В то же время разработка тестов с использованием Jepsen в новом проекте может быть затруднена как минимум из-за использования языка Clojure, на котором написана библиотека. Clojure не настолько популярен среди разработчиков и тестировщиков распределенных систем как, например, Python или даже Java. Если "разобрать" Jepsen на части, то можно заметить, что самая главная часть всего фреймворка это т.н. "чекеры", которые проверяют историю операций на предмет соответствия моделям согласованности. Всего Кайл написал три библиотеки для проверки историй операций: gretchen, knossos, elle и некоторые чекеры входят в состав Jepsen. Все они написаны на Clojure и работают одинаково: принимают историю операций в родном для Clojure формате EDN и или говорят, что история операций соответствует выбранной модели согласованности или возвращает структуру с описанием ошибок. Результаты использования библиотеки Jepsen настолько успешные, что люди готовы изучать Clojure и писать на ней тесты для своих СУБД и распределённых систем. Я делаю такие выводы, потому что видел много репозиториев в которых начинали делать тесты и последнее изменение в таких репозиториях было несколько лет назад и потому что люди контрибьютят в код и документацию Jepsen. Но тесты подобные тем, которые делает Кайл можно писать без Clojure и без Jepsen, на любом языке программирования. А вот чекеры лучше использовать те, которые используются в Jepsen. Хотя бы затем, чтобы не переписывать их на другой язык и потому, что эти чекеры уже проверены в других тестах. Чтобы это было возможно я сделал утилиту для использования в командной строке на основе библиотек Knossos, Elle и Jepsen, она принимает на вход историю операций в формате JSON (он всё-таки более популярный нежели EDN), название чекера и проверяет историю. Её, в отличие, от Jepsen можно использовать и с Python и с другими более популярными языками.
https://github.com/ligurio/elle-cli
Буду рад конструктивному фидбеку.
620 viewsSergey Bronnikov, 17:08