48 lines
1.4 KiB
Go
48 lines
1.4 KiB
Go
|
package routing
|
||
|
|
||
|
import (
|
||
|
"testing"
|
||
|
"time"
|
||
|
|
||
|
"github.com/lightningnetwork/lnd/routing/route"
|
||
|
)
|
||
|
|
||
|
// TestMissionControlStateFailureResult tests setting failure results on the
|
||
|
// mission control state.
|
||
|
func TestMissionControlStateFailureResult(t *testing.T) {
|
||
|
const minFailureRelaxInterval = time.Minute
|
||
|
state := newMissionControlState(minFailureRelaxInterval)
|
||
|
|
||
|
var (
|
||
|
from = route.Vertex{1}
|
||
|
to = route.Vertex{2}
|
||
|
timestamp = testTime
|
||
|
)
|
||
|
|
||
|
// Report a 1000 sat failure.
|
||
|
state.setLastPairResult(from, to, timestamp, &pairResult{amt: 1000})
|
||
|
result, _ := state.getLastPairResult(from)
|
||
|
if result[to].FailAmt != 1000 {
|
||
|
t.Fatalf("unexpected fail amount %v", result[to].FailAmt)
|
||
|
}
|
||
|
|
||
|
// Report an 1100 sat failure one hour later. It is expected to
|
||
|
// overwrite the previous failure.
|
||
|
timestamp = timestamp.Add(time.Hour)
|
||
|
state.setLastPairResult(from, to, timestamp, &pairResult{amt: 1100})
|
||
|
result, _ = state.getLastPairResult(from)
|
||
|
if result[to].FailAmt != 1100 {
|
||
|
t.Fatalf("unexpected fail amount %v", result[to].FailAmt)
|
||
|
}
|
||
|
|
||
|
// Report a 1200 sat failure one second later. Because this increase of
|
||
|
// the failure amount is too soon after the previous failure, the result
|
||
|
// is not applied.
|
||
|
timestamp = timestamp.Add(time.Second)
|
||
|
state.setLastPairResult(from, to, timestamp, &pairResult{amt: 1200})
|
||
|
result, _ = state.getLastPairResult(from)
|
||
|
if result[to].FailAmt != 1100 {
|
||
|
t.Fatalf("unexpected fail amount %v", result[to].FailAmt)
|
||
|
}
|
||
|
}
|