Jepsen - это популярная библиотека для тестирования согласованности в
распределённых системах. Jepsen позволяет тестировать распределённые системы
как чёрный ящик и проверять насколько система ведёт себя корректно в
соответствии с выбранной моделью согласованности.
Чтобы убедиться в эффективности Jepsen достаточно почитать отчёты о тестировании с
её помощью таких популярных проектов, как etcd, mongodb и другие. Когда в Tarantool
появилась поддержка синхронной репликации, то мы решили сделать несколько
тестов для Tarantool с использованием Jepsen. И этой задачей занимался я. До
этого я сталкивался с различными библиотеками для написания тестов: pytest,
avocado, самописные фреймворки. И после использования Jepsen у меня остались
смешанные чувства. С одной стороны это библиотека, которая с высокой
вероятностью поможет найти проблемы с репликации и MVCC, бери, да пользуйся. А
с другой стороны Jepsen неидеален, в ней есть несколько проблем, без которых
она была бы ещё лучше. Вот про эти проблемы, присущие Jepsen, я и хотел здесь
написать.
Читать →