forked from TrueCloudLab/neoneo-go
rpcsrv: fix TestSubClientWaitWithMissedEvent
Add error channel to prevent data race in the test. Increase waiting interval for subscriptions awaiting up to 2 seconds. Failing is caused by slow subscriptions. Close #2958 Signed-off-by: Ekaterina Pavlova <ekt@morphbits.io> Signed-off-by: Ekaterina Pavlova <ekt@morphbits.io>
This commit is contained in:
parent
86f16bb931
commit
56e6119f78
1 changed files with 9 additions and 2 deletions
|
@ -2051,9 +2051,14 @@ func testSubClientWaitWithMissedEvent(t *testing.T, local bool) {
|
||||||
tx := b1.Transactions[0]
|
tx := b1.Transactions[0]
|
||||||
|
|
||||||
rcvr := make(chan *state.AppExecResult)
|
rcvr := make(chan *state.AppExecResult)
|
||||||
|
errCh := make(chan error) // Error channel for goroutine errors
|
||||||
|
|
||||||
go func() {
|
go func() {
|
||||||
aer, err := act.Wait(tx.Hash(), tx.ValidUntilBlock, nil)
|
aer, err := act.Wait(tx.Hash(), tx.ValidUntilBlock, nil)
|
||||||
require.NoError(t, err)
|
if err != nil {
|
||||||
|
errCh <- err
|
||||||
|
return
|
||||||
|
}
|
||||||
rcvr <- aer
|
rcvr <- aer
|
||||||
}()
|
}()
|
||||||
|
|
||||||
|
@ -2064,7 +2069,7 @@ func testSubClientWaitWithMissedEvent(t *testing.T, local bool) {
|
||||||
rpcSrv.subsLock.Lock()
|
rpcSrv.subsLock.Lock()
|
||||||
defer rpcSrv.subsLock.Unlock()
|
defer rpcSrv.subsLock.Unlock()
|
||||||
return len(rpcSrv.subscribers) == 1
|
return len(rpcSrv.subscribers) == 1
|
||||||
}, time.Second, 100*time.Millisecond)
|
}, 2*time.Second, 100*time.Millisecond)
|
||||||
|
|
||||||
rpcSrv.subsLock.Lock()
|
rpcSrv.subsLock.Lock()
|
||||||
// Suppress normal event delivery.
|
// Suppress normal event delivery.
|
||||||
|
@ -2101,6 +2106,8 @@ waitloop:
|
||||||
require.Equal(t, trigger.Application, aer.Trigger)
|
require.Equal(t, trigger.Application, aer.Trigger)
|
||||||
require.Equal(t, vmstate.Halt, aer.VMState)
|
require.Equal(t, vmstate.Halt, aer.VMState)
|
||||||
break waitloop
|
break waitloop
|
||||||
|
case err := <-errCh:
|
||||||
|
t.Fatalf("Error waiting for transaction: %v", err)
|
||||||
case <-time.NewTimer(chain.GetConfig().TimePerBlock).C:
|
case <-time.NewTimer(chain.GetConfig().TimePerBlock).C:
|
||||||
t.Fatal("transaction failed to be awaited")
|
t.Fatal("transaction failed to be awaited")
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue