Skip to content

Тестирование

c-darwin edited this page Mar 6, 2016 · 2 revisions

Как тестировать -testRollBack=1

  1. Определение проблемы.
    1.1. Собираем блокчейн с нуля
    ./dcoin-go -testRollBack=1
    1.2. Делаем rollback
    ./dcoin-go -rollbackToBlockId=1 -testRollBack=1
    1.3. Анализируем результат:
    • роллбек выдал ошибку
    • роллбек дошел до 1-го блока, но есть >>ALERT<<
  2. Если есть ошибка или alert, то выполняем:
    ./dcoin-go -endBlockId=150000 -testRollBack=1
    -endBlockId устанавливаем равным текущему максимальному блоку деленному на 2
  3. Делаем бэкап litedb.db
  4. ./dcoin-go -rollbackToBlockId=1 -testRollBack=1
    Если есть ошибка или alert, то выполняем:
    ./dcoin-go -endBlockId=75000 -testRollBack=1
    Если нет ошибки или алерта, то используем бэкап litedb.db и выполняем
    ./dcoin-go -startBlockId=149999 -endBlockId=225000 -testRollBack=1

п 3 и 4 повторяем до тех пор, пока не будет обнаружен блок, вызывающий ошибку/алерт

Пересбор блоков

Если в процессе обработки блокчейна блоки начинаю собираться с нуля, то нужно найти баг при помощи:
cat dclog.txt | grep "(dcparser.(*Parser)" -a
cat dclog.txt | grep "infoBlockRestart" -a

Clone this wiki locally