Мой собственный харнесс нарыл баг в моей же реализации Raft. Как так вышло — разбираюсь
Мой собственный харнесс нарыл баг в моей же реализации Raft. Как так вышло — разбираюсь Вечно зелёный набор тестов — это лотерея. Он может реально ловить ошибки, а может просто делать вид, что смотрит. По цвету статуса ты хрен отличишь. Автор наваял Raft на TypeScript и построил вокруг него зоопарк багов: семь экспонатов, каждый вырубает ровно одно правило алгоритма, а харнесс обязан это дело поймать, причём с сидом и именем нарушенного свойства. Правда, один из экспонатов завёлся случайно. И вот харнесс нашёл настоящий баг в самой реализации. Каждое из пяти свойств безопасности на месте, логи сходятся, ничего не падает — а на двадцать пятом сиде две реплики разъехались навеки. Дальше в статье разбирается, почему так вышло, как устроен этот харнесс и чего такой подход вообще не доказывает. Читать разбор 👉 Frontender's notes