Modular architecture
See https://gitlab.com/picodata/picodata/picodata/-/merge_requests/52#note_851049809
Sergey V
Я вижу следующие проблемы в дизайне. Транспорт захардкожен, используется net.box, у которого нет реализации сервера на расте, и сервер можно запустить только один раз на инстанс через тарантул, и нельзя остановить без остановки процесса. На деле же в тестах реализация транспорта не тестируется. Похожая ситуация наблюдается в тестах couple и threesome: тестируется реализация raft и нашей обертки вокруг. Но из-за того, что реализация зависит от захардкоженного конкретного хранилища и транспорта, приходится затаскивать luatest, возиться с подпроцессами, временными директориями. В хорошем решении, как мне кажется, должен быть транспорт и хранилище, которые можно подменить: для транспорта реализовать простенькую структуру, чтобы в памяти одного процесса на расте имитировать пересылку messages между двумя объектами ConnectionPool, а для storage, как уже раньше говорил, сделать Storage::new(space_name_prefix, ...). И тогда можно будет тестировать всё на расте, в одном процессе, с невероятной скоростью, без лишних логов и Lua. Можно даже имитировать потерю сообщений на уровне транспорта.