notary: fix "Condition never satisfied" in Notary test, fix #2422

The theory is:
 * we add a block
 * it triggers notary
 * which can process the fallback before we're to setFinalizeWithError
 * it'll fail and require an additional block to enter, but it's never added
 * FAIL

The solution is:
 * always add an additional block, but treat the first fb specially

Signed-off-by: Roman Khimov <roman@nspcc.ru>
This commit is contained in:
Roman Khimov 2024-03-05 17:46:00 +03:00
parent 49edf9e498
commit d2a7162217

View file

@ -600,22 +600,14 @@ func TestNotary(t *testing.T) {
// Add block before allowing tx to finalize to exclude race condition when
// main transaction is finalized between `finalizeWithError` restore and adding new block.
e.AddNewBlock(t)
mtx.RLock()
start := len(completedTxes)
mtx.RUnlock()
setFinalizeWithError(false)
for i := range requests {
if i != 0 {
e.AddNewBlock(t)
}
require.Eventually(t, func() bool {
mtx.RLock()
defer mtx.RUnlock()
return len(completedTxes)-start >= i+1
}, time.Second*3, time.Millisecond)
for i := range requests[1:] {
e.AddNewBlock(t)
_ = getCompletedTx(t, true, requests[i+1].FallbackTransaction.Hash())
checkMainTx(t, requesters, requests, len(requests), false)
checkFallbackTxs(t, requests[:i+1], true)
checkFallbackTxs(t, requests[i+1:], false)
checkFallbackTxs(t, requests[:i+2], true)
checkFallbackTxs(t, requests[i+2:], false)
}
// OnRequestRemoval: missing account