test: parameterize resolution type

This commit is contained in:
Joost Jager 2022-10-13 14:06:50 +02:00
parent e542b374ec
commit c28e865d64
No known key found for this signature in database
GPG key ID: B9A26449A5528325
2 changed files with 65 additions and 2 deletions

View file

@ -10,6 +10,28 @@ import (
)
func TestProcess(t *testing.T) {
defer Timeout()()
t.Run("settle", func(t *testing.T) {
testProcess(t, resolveEventSettle)
})
t.Run("forward fail", func(t *testing.T) {
testProcess(t, resolveEventForwardFail)
})
t.Run("link fail", func(t *testing.T) {
testProcess(t, resolveEventLinkFail)
})
}
type resolveEvent int
const (
resolveEventSettle resolveEvent = iota
resolveEventForwardFail
resolveEventLinkFail
)
func testProcess(t *testing.T, event resolveEvent) {
p := newProcess()
resolved := make(chan struct{})
@ -43,13 +65,25 @@ func TestProcess(t *testing.T) {
resp := <-client.htlcInterceptorResponses
require.Equal(t, routerrpc.ResolveHoldForwardAction_RESUME, resp.Action)
client.htlcEvents <- &routerrpc.HtlcEvent{
htlcEvent := &routerrpc.HtlcEvent{
EventType: routerrpc.HtlcEvent_FORWARD,
IncomingChannelId: key.ChanId,
IncomingHtlcId: key.HtlcId,
Event: &routerrpc.HtlcEvent_SettleEvent{},
}
switch event {
case resolveEventForwardFail:
htlcEvent.Event = &routerrpc.HtlcEvent_ForwardFailEvent{}
case resolveEventLinkFail:
htlcEvent.Event = &routerrpc.HtlcEvent_LinkFailEvent{}
case resolveEventSettle:
htlcEvent.Event = &routerrpc.HtlcEvent_SettleEvent{}
}
client.htlcEvents <- htlcEvent
<-resolved
cancel()
@ -57,6 +91,8 @@ func TestProcess(t *testing.T) {
}
func TestRateLimit(t *testing.T) {
defer Timeout()()
p := newProcess()
cfg := &config{

27
timeout_test.go Normal file
View file

@ -0,0 +1,27 @@
package main
import (
"os"
"runtime/pprof"
"time"
)
const testTimeout = 5 * time.Second
// Timeout implements a test level timeout.
func Timeout() func() {
done := make(chan struct{})
go func() {
select {
case <-time.After(testTimeout):
_ = pprof.Lookup("goroutine").WriteTo(os.Stdout, 1)
panic("test timeout")
case <-done:
}
}()
return func() {
close(done)
}
}