Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

lntest/timeout: split into darwin and non-darwin timeouts #2846

Merged
merged 2 commits into from
Mar 28, 2019
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
66 changes: 25 additions & 41 deletions lnd_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -625,9 +625,8 @@ func makeFakePayHash(t *harnessTest) []byte {

// createPayReqs is a helper method that will create a slice of payment
// requests for the given node.
func createPayReqs(ctx context.Context, node *lntest.HarnessNode,
paymentAmt btcutil.Amount, numInvoices int) ([]string, [][]byte,
[]*lnrpc.Invoice, error) {
func createPayReqs(node *lntest.HarnessNode, paymentAmt btcutil.Amount,
numInvoices int) ([]string, [][]byte, []*lnrpc.Invoice, error) {

payReqs := make([]string, numInvoices)
rHashes := make([][]byte, numInvoices)
Expand All @@ -644,7 +643,10 @@ func createPayReqs(ctx context.Context, node *lntest.HarnessNode,
RPreimage: preimage,
Value: int64(paymentAmt),
}
resp, err := node.AddInvoice(ctx, invoice)
ctxt, _ := context.WithTimeout(
context.Background(), defaultTimeout,
)
resp, err := node.AddInvoice(ctxt, invoice)
if err != nil {
return nil, nil, nil, fmt.Errorf("unable to add "+
"invoice: %v", err)
Expand Down Expand Up @@ -4045,9 +4047,8 @@ func testMultiHopPayments(net *lntest.NetworkHarness, t *harnessTest) {
// satoshis with a different preimage each time.
const numPayments = 5
const paymentAmt = 1000
ctxt, _ = context.WithTimeout(ctxb, defaultTimeout)
payReqs, _, _, err := createPayReqs(
ctxt, net.Bob, paymentAmt, numPayments,
net.Bob, paymentAmt, numPayments,
)
if err != nil {
t.Fatalf("unable to create pay reqs: %v", err)
Expand Down Expand Up @@ -4270,9 +4271,8 @@ func testSingleHopSendToRoute(net *lntest.NetworkHarness, t *harnessTest) {
// Create 5 invoices for Bob, which expect a payment from Alice for 1k
// satoshis with a different preimage each time.
const numPayments = 5
ctxt, _ = context.WithTimeout(ctxb, defaultTimeout)
_, rHashes, _, err := createPayReqs(
ctxt, net.Bob, paymentAmt, numPayments,
net.Bob, paymentAmt, numPayments,
)
if err != nil {
t.Fatalf("unable to create pay reqs: %v", err)
Expand Down Expand Up @@ -4455,9 +4455,8 @@ func testMultiHopSendToRoute(net *lntest.NetworkHarness, t *harnessTest) {
// Create 5 invoices for Carol, which expect a payment from Alice for 1k
// satoshis with a different preimage each time.
const numPayments = 5
ctxt, _ = context.WithTimeout(ctxb, defaultTimeout)
_, rHashes, _, err := createPayReqs(
ctxt, carol, paymentAmt, numPayments,
carol, paymentAmt, numPayments,
)
if err != nil {
t.Fatalf("unable to create pay reqs: %v", err)
Expand Down Expand Up @@ -4982,9 +4981,8 @@ func testPrivateChannels(net *lntest.NetworkHarness, t *harnessTest) {
// by only using one of the channels.
const numPayments = 2
const paymentAmt = 70000
ctxt, _ = context.WithTimeout(ctxb, defaultTimeout)
payReqs, _, _, err := createPayReqs(
ctxt, net.Bob, paymentAmt, numPayments,
net.Bob, paymentAmt, numPayments,
)
if err != nil {
t.Fatalf("unable to create pay reqs: %v", err)
Expand Down Expand Up @@ -5039,9 +5037,8 @@ func testPrivateChannels(net *lntest.NetworkHarness, t *harnessTest) {
// Alice should also be able to route payments using this channel,
// so send two payments of 60k back to Carol.
const paymentAmt60k = 60000
ctxt, _ = context.WithTimeout(ctxb, defaultTimeout)
payReqs, _, _, err = createPayReqs(
ctxt, carol, paymentAmt60k, numPayments,
carol, paymentAmt60k, numPayments,
)
if err != nil {
t.Fatalf("unable to create pay reqs: %v", err)
Expand Down Expand Up @@ -5702,9 +5699,8 @@ func testInvoiceSubscriptions(net *lntest.NetworkHarness, t *harnessTest) {

// We'll now add 3 more invoices to Bob's invoice registry.
const numInvoices = 3
ctxt, _ = context.WithTimeout(ctxb, defaultTimeout)
payReqs, _, newInvoices, err := createPayReqs(
ctxt, net.Bob, paymentAmt, numInvoices,
net.Bob, paymentAmt, numInvoices,
)
if err != nil {
t.Fatalf("unable to create pay reqs: %v", err)
Expand Down Expand Up @@ -6720,9 +6716,8 @@ func testRevokedCloseRetribution(net *lntest.NetworkHarness, t *harnessTest) {

// With the channel open, we'll create a few invoices for Bob that
// Carol will pay to in order to advance the state of the channel.
ctxt, _ = context.WithTimeout(ctxb, defaultTimeout)
bobPayReqs, _, _, err := createPayReqs(
ctxt, net.Bob, paymentAmt, numInvoices,
net.Bob, paymentAmt, numInvoices,
)
if err != nil {
t.Fatalf("unable to create pay reqs: %v", err)
Expand Down Expand Up @@ -6984,9 +6979,8 @@ func testRevokedCloseRetributionZeroValueRemoteOutput(net *lntest.NetworkHarness

// With the channel open, we'll create a few invoices for Carol that
// Dave will pay to in order to advance the state of the channel.
ctxt, _ = context.WithTimeout(ctxb, defaultTimeout)
carolPayReqs, _, _, err := createPayReqs(
ctxt, carol, paymentAmt, numInvoices,
carol, paymentAmt, numInvoices,
)
if err != nil {
t.Fatalf("unable to create pay reqs: %v", err)
Expand Down Expand Up @@ -7236,9 +7230,8 @@ func testRevokedCloseRetributionRemoteHodl(net *lntest.NetworkHarness,

// With the channel open, we'll create a few invoices for Carol that
// Dave will pay to in order to advance the state of the channel.
ctxt, _ = context.WithTimeout(ctxb, defaultTimeout)
carolPayReqs, _, _, err := createPayReqs(
ctxt, carol, paymentAmt, numInvoices,
carol, paymentAmt, numInvoices,
)
if err != nil {
t.Fatalf("unable to create pay reqs: %v", err)
Expand Down Expand Up @@ -7299,9 +7292,8 @@ func testRevokedCloseRetributionRemoteHodl(net *lntest.NetworkHarness,
// At this point, we'll also send over a set of HTLC's from Carol to
// Dave. This ensures that the final revoked transaction has HTLC's in
// both directions.
ctxt, _ = context.WithTimeout(ctxb, defaultTimeout)
davePayReqs, _, _, err := createPayReqs(
ctxt, dave, paymentAmt, numInvoices,
dave, paymentAmt, numInvoices,
)
if err != nil {
t.Fatalf("unable to create pay reqs: %v", err)
Expand Down Expand Up @@ -7690,9 +7682,8 @@ func testDataLossProtection(net *lntest.NetworkHarness, t *harnessTest) {
// the channel.
// TODO(halseth): have dangling HTLCs on the commitment, able to
// retrive funds?
ctxt, _ = context.WithTimeout(ctxb, defaultTimeout)
payReqs, _, _, err := createPayReqs(
ctxt, node, paymentAmt, numInvoices,
node, paymentAmt, numInvoices,
)
if err != nil {
t.Fatalf("unable to create pay reqs: %v", err)
Expand Down Expand Up @@ -8878,9 +8869,8 @@ func testAsyncPayments(net *lntest.NetworkHarness, t *harnessTest) {

// With the channel open, we'll create invoices for Bob that Alice
// will pay to in order to advance the state of the channel.
ctxt, _ = context.WithTimeout(ctxb, defaultTimeout)
bobPayReqs, _, _, err := createPayReqs(
ctxt, net.Bob, paymentAmt, numInvoices,
net.Bob, paymentAmt, numInvoices,
)
if err != nil {
t.Fatalf("unable to create pay reqs: %v", err)
Expand All @@ -8897,7 +8887,7 @@ func testAsyncPayments(net *lntest.NetworkHarness, t *harnessTest) {
// Open up a payment stream to Alice that we'll use to send payment to
// Bob. We also create a small helper function to send payments to Bob,
// consuming the payment hashes we generated above.
ctxt, _ = context.WithTimeout(ctxb, time.Minute)
ctxt, _ = context.WithTimeout(ctxb, lntest.AsyncBenchmarkTimeout)
alicePayStream, err := net.Alice.SendPayment(ctxt)
if err != nil {
t.Fatalf("unable to create payment stream for alice: %v", err)
Expand Down Expand Up @@ -9030,19 +9020,17 @@ func testBidirectionalAsyncPayments(net *lntest.NetworkHarness, t *harnessTest)

// With the channel open, we'll create invoices for Bob that Alice
// will pay to in order to advance the state of the channel.
ctxt, _ = context.WithTimeout(ctxb, defaultTimeout)
bobPayReqs, _, _, err := createPayReqs(
ctxt, net.Bob, paymentAmt, numInvoices,
net.Bob, paymentAmt, numInvoices,
)
if err != nil {
t.Fatalf("unable to create pay reqs: %v", err)
}

// With the channel open, we'll create invoices for Alice that Bob
// will pay to in order to advance the state of the channel.
ctxt, _ = context.WithTimeout(ctxb, defaultTimeout)
alicePayReqs, _, _, err := createPayReqs(
ctxt, net.Alice, paymentAmt, numInvoices,
net.Alice, paymentAmt, numInvoices,
)
if err != nil {
t.Fatalf("unable to create pay reqs: %v", err)
Expand Down Expand Up @@ -11143,9 +11131,8 @@ func testSwitchCircuitPersistence(net *lntest.NetworkHarness, t *harnessTest) {
// satoshis with a different preimage each time.
const numPayments = 5
const paymentAmt = 1000
ctxt, _ = context.WithTimeout(ctxb, defaultTimeout)
payReqs, _, _, err := createPayReqs(
ctxt, carol, paymentAmt, numPayments,
carol, paymentAmt, numPayments,
)
if err != nil {
t.Fatalf("unable to create pay reqs: %v", err)
Expand Down Expand Up @@ -11483,9 +11470,8 @@ func testSwitchOfflineDelivery(net *lntest.NetworkHarness, t *harnessTest) {
// satoshis with a different preimage each time.
const numPayments = 5
const paymentAmt = 1000
ctxt, _ = context.WithTimeout(ctxb, defaultTimeout)
payReqs, _, _, err := createPayReqs(
ctxt, carol, paymentAmt, numPayments,
carol, paymentAmt, numPayments,
)
if err != nil {
t.Fatalf("unable to create pay reqs: %v", err)
Expand Down Expand Up @@ -11831,9 +11817,8 @@ func testSwitchOfflineDeliveryPersistence(net *lntest.NetworkHarness, t *harness
// satoshis with a different preimage each time.
const numPayments = 5
const paymentAmt = 1000
ctxt, _ = context.WithTimeout(ctxb, defaultTimeout)
payReqs, _, _, err := createPayReqs(
ctxt, carol, paymentAmt, numPayments,
carol, paymentAmt, numPayments,
)
if err != nil {
t.Fatalf("unable to create pay reqs: %v", err)
Expand Down Expand Up @@ -12182,9 +12167,8 @@ func testSwitchOfflineDeliveryOutgoingOffline(
// satoshis with a different preimage each time.
const numPayments = 5
const paymentAmt = 1000
ctxt, _ = context.WithTimeout(ctxb, defaultTimeout)
payReqs, _, _, err := createPayReqs(
ctxt, carol, paymentAmt, numPayments,
carol, paymentAmt, numPayments,
)
if err != nil {
t.Fatalf("unable to create pay reqs: %v", err)
Expand Down
23 changes: 2 additions & 21 deletions lntest/harness.go
Original file line number Diff line number Diff line change
Expand Up @@ -24,27 +24,8 @@ import (
"github.com/lightningnetwork/lnd/lnwire"
)

const (
// DefaultCSV is the CSV delay (remotedelay) we will start our test
// nodes with.
DefaultCSV = 4

// MinerMempoolTimeout is the max time we will wait for a transaction
// to propagate to the mining node's mempool.
MinerMempoolTimeout = time.Second * 30

// ChannelOpenTimeout is the max time we will wait before a channel to
// be considered opened.
ChannelOpenTimeout = time.Second * 30

// ChannelCloseTimeout is the max time we will wait before a channel is
// considered closed.
ChannelCloseTimeout = time.Second * 30

// DefaultTimeout is a timeout that will be used for various wait
// scenarios where no custom timeout value is defined.
DefaultTimeout = time.Second * 30
)
// DefaultCSV is the CSV delay (remotedelay) we will start our test nodes with.
const DefaultCSV = 4

// NetworkHarness is an integration testing harness for the lightning network.
// The harness by default is created with two active nodes on the network:
Expand Down
27 changes: 27 additions & 0 deletions lntest/timeouts.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
// +build !darwin

package lntest

import "time"

const (
// MinerMempoolTimeout is the max time we will wait for a transaction
// to propagate to the mining node's mempool.
MinerMempoolTimeout = time.Second * 30

// ChannelOpenTimeout is the max time we will wait before a channel to
// be considered opened.
ChannelOpenTimeout = time.Second * 30

// ChannelCloseTimeout is the max time we will wait before a channel is
// considered closed.
ChannelCloseTimeout = time.Second * 30

// DefaultTimeout is a timeout that will be used for various wait
// scenarios where no custom timeout value is defined.
DefaultTimeout = time.Second * 30

// AsyncBenchmarkTimeout is the timeout used when running the async
// payments benchmark.
AsyncBenchmarkTimeout = time.Minute
)
28 changes: 28 additions & 0 deletions lntest/timeouts_darwin.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
// +build darwin

package lntest

import "time"

const (
// MinerMempoolTimeout is the max time we will wait for a transaction
// to propagate to the mining node's mempool.
MinerMempoolTimeout = time.Second * 30

// ChannelOpenTimeout is the max time we will wait before a channel to
// be considered opened.
ChannelOpenTimeout = time.Second * 30

// ChannelCloseTimeout is the max time we will wait before a channel is
// considered closed.
ChannelCloseTimeout = time.Second * 30

// DefaultTimeout is a timeout that will be used for various wait
// scenarios where no custom timeout value is defined.
DefaultTimeout = time.Second * 30

// AsyncBenchmarkTimeout is the timeout used when running the async
// payments benchmark. This timeout takes considerably longer on darwin
// after go1.12 corrected its use of fsync.
AsyncBenchmarkTimeout = time.Minute * 3
)