Skip to content

Commit

Permalink
Merge pull request #1975 from halseth/fwdtrigger-force
Browse files Browse the repository at this point in the history
[tests] Force tick on FwdEventTicker
  • Loading branch information
cfromknecht committed Jan 8, 2019
2 parents 154a8a9 + c9868aa commit 75ec66d
Showing 1 changed file with 55 additions and 5 deletions.
60 changes: 55 additions & 5 deletions htlcswitch/switch_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ import (
"github.com/go-errors/errors"
"github.com/lightningnetwork/lnd/channeldb"
"github.com/lightningnetwork/lnd/lnwire"
"github.com/lightningnetwork/lnd/ticker"
)

func genPreimage() ([32]byte, error) {
Expand Down Expand Up @@ -1835,7 +1836,60 @@ func TestMultiHopPaymentForwardingEvents(t *testing.T) {
n.carolChannelLink,
)
firstHop := n.firstBobChannelLink.ShortChanID()
for i := 0; i < numPayments; i++ {
for i := 0; i < numPayments/2; i++ {
_, err := n.makePayment(
n.aliceServer, n.carolServer, firstHop, hops, finalAmt,
htlcAmt, totalTimelock,
).Wait(30 * time.Second)
if err != nil {
t.Fatalf("unable to send payment: %v", err)
}
}

bobLog, ok := n.bobServer.htlcSwitch.cfg.FwdingLog.(*mockForwardingLog)
if !ok {
t.Fatalf("mockForwardingLog assertion failed")
}

// After sending 5 of the payments, trigger the forwarding ticker, to
// make sure the events are properly flushed.
bobTicker, ok := n.bobServer.htlcSwitch.cfg.FwdEventTicker.(*ticker.Mock)
if !ok {
t.Fatalf("mockTicker assertion failed")
}

// We'll trigger the ticker, and wait for the events to appear in Bob's
// forwarding log.
timeout := time.After(15 * time.Second)
for {
select {
case bobTicker.Force <- time.Now():
case <-time.After(1 * time.Second):
t.Fatalf("unable to force tick")
}

// If all 5 events is found in Bob's log, we can break out and
// continue the test.
bobLog.Lock()
if len(bobLog.events) == 5 {
bobLog.Unlock()
break
}
bobLog.Unlock()

// Otherwise wait a little bit before checking again.
select {
case <-time.After(50 * time.Millisecond):
case <-timeout:
bobLog.Lock()
defer bobLog.Unlock()
t.Fatalf("expected 5 events in event log, instead "+
"found: %v", spew.Sdump(bobLog.events))
}
}

// Send the remaining payments.
for i := numPayments / 2; i < numPayments; i++ {
_, err := n.makePayment(
n.aliceServer, n.carolServer, firstHop, hops, finalAmt,
htlcAmt, totalTimelock,
Expand Down Expand Up @@ -1874,10 +1928,6 @@ func TestMultiHopPaymentForwardingEvents(t *testing.T) {
}

// Bob on the other hand, should have 10 events.
bobLog, ok := n.bobServer.htlcSwitch.cfg.FwdingLog.(*mockForwardingLog)
if !ok {
t.Fatalf("mockForwardingLog assertion failed")
}
bobLog.Lock()
defer bobLog.Unlock()
if len(bobLog.events) != 10 {
Expand Down

0 comments on commit 75ec66d

Please sign in to comment.