mirror of
https://github.com/lightningequipment/circuitbreaker.git
synced 2026-08-13 12:33:02 +02:00
test: parameterize resolution type
This commit is contained in:
parent
e542b374ec
commit
c28e865d64
2 changed files with 65 additions and 2 deletions
|
|
@ -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
27
timeout_test.go
Normal 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)
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue