имитировать сетевой раздел с помощью набора тестов akka cluster multi-jvm

Я пытаюсь создать преобразователь разделения мозга для кластера akka. Но довольно сложно смоделировать сценарий, в котором определенные узлы недоступны для остальной части исходного кластера и формируют свой собственный кластер.

Это невозможно сделать, остановив и перезапустив узлы, потому что вновь запущенные узлы не совпадают, поскольку UID этих узлов изменился.

network failure injection в тестовом проводнике кажется многообещающим, но я не нашел об этом никакого документа. Итак, как я могу создать сценарий сетевого раздела?


person vincent chou    schedule 11.11.2015    source источник


Ответы (1)


Недавно я писал раздельный распознаватель мозга, и вот советы по тестированию, которые я нашел полезными:

  • Перед полной симуляцией, возможно, стоит покрыть некоторые части кода модульными тестами. Сам проект Akka делает нечто подобное для функции AutoDown. Вы просто эмулируете события и отправляете сообщения в DowningProvider и проверяете, отвечает ли он соответствующим образом. Это помогает протестировать некоторые крайние случаи без сложной настройки.

  • Для имитации разделения кластера и сети я использовал multi-jvm-тестирование. Ознакомьтесь с SplitBrainSpec или WeeklyUpSpec. Иногда они гораздо полезнее, чем документация. Для создания разделения сети следует использовать testConductor.blackhole, а для удаления разделения testConductor.passThrough. Я обнаружил, что важно всегда ставить барьеры и постоянно проверять текущее состояние кластера (перед запуском фактического теста дождитесь, пока все участники встанут/присоединятся к кластеру/просмотрят разделение сети).

person Valentina    schedule 12.08.2019