htlcswitch: add quiescence timeout that is aborted by Resume

This commit is contained in:
Keagan McClelland committed 2024-11-26 14:13:43 -07:00
1 parent 111c9b05f3
commit a4c49a88f1
3 files changed
+124

No files matched your search

+56
View File
@@ -3,6 +3,7 @@ package htlcswitch
import (
"bytes"
"testing"
"time"
"github.com/lightningnetwork/lnd/fn"
"github.com/lightningnetwork/lnd/lntypes"
@@ -417,3 +418,58 @@ func TestQuiescerResume(t *testing.T) {
require.True(t, resumeHooksCalled)
require.False(t, harness.quiescer.IsQuiescent())
}
func TestQuiescerTimeoutTriggers(t *testing.T) {
t.Parallel()
harness := initQuiescerTestHarness(lntypes.Local)
msg := lnwire.Stfu{
ChanID: cid,
Initiator: true,
}
timeoutGate := make(chan struct{})
harness.quiescer.cfg.timeoutDuration = time.Second
harness.quiescer.cfg.onTimeout = func() { close(timeoutGate) }
err := harness.quiescer.RecvStfu(msg, harness.pendingUpdates.Remote)
require.NoError(t, err)
err = harness.quiescer.SendOwedStfu(harness.pendingUpdates.Local)
require.NoError(t, err)
select {
case <-timeoutGate:
case <-time.After(2 * harness.quiescer.cfg.timeoutDuration):
t.Fatal("quiescence timeout did not trigger")
}
}
func TestQuiescerTimeoutAborts(t *testing.T) {
t.Parallel()
harness := initQuiescerTestHarness(lntypes.Local)
msg := lnwire.Stfu{
ChanID: cid,
Initiator: true,
}
timeoutGate := make(chan struct{})
harness.quiescer.cfg.timeoutDuration = time.Second
harness.quiescer.cfg.onTimeout = func() { close(timeoutGate) }
err := harness.quiescer.RecvStfu(msg, harness.pendingUpdates.Remote)
require.NoError(t, err)
err = harness.quiescer.SendOwedStfu(harness.pendingUpdates.Local)
require.NoError(t, err)
harness.quiescer.Resume()
select {
case <-timeoutGate:
t.Fatal("quiescence timeout triggered despite being resumed")
case <-time.After(2 * harness.quiescer.cfg.timeoutDuration):
}
}