diff --git a/.gitignore b/.gitignore index 2812f165..0ed921b1 100644 --- a/.gitignore +++ b/.gitignore @@ -29,7 +29,9 @@ lnd-debug lncli lncli-debug +# Integration test log files output*.log +/.backendlogs cmd/cmd *.key diff --git a/lnd_test.go b/lnd_test.go index 11bf9eb1..2a272ce2 100644 --- a/lnd_test.go +++ b/lnd_test.go @@ -5545,26 +5545,6 @@ func testMaxPendingChannels(net *lntest.NetworkHarness, t *harnessTest) { } } -func copyFile(dest, src string) error { - s, err := os.Open(src) - if err != nil { - return err - } - defer s.Close() - - d, err := os.Create(dest) - if err != nil { - return err - } - - if _, err := io.Copy(d, s); err != nil { - d.Close() - return err - } - - return d.Close() -} - // waitForTxInMempool polls until finding one transaction in the provided // miner's mempool. An error is returned if *one* transaction isn't found within // the given timeout. @@ -6173,7 +6153,7 @@ func testRevokedCloseRetribution(net *lntest.NetworkHarness, t *harnessTest) { // With the temporary file created, copy Bob's current state into the // temporary file we created above. Later after more updates, we'll // restore this state. - if err := copyFile(bobTempDbFile, net.Bob.DBPath()); err != nil { + if err := lntest.CopyFile(bobTempDbFile, net.Bob.DBPath()); err != nil { t.Fatalf("unable to copy database files: %v", err) } @@ -6412,7 +6392,7 @@ func testRevokedCloseRetributionZeroValueRemoteOutput(net *lntest.NetworkHarness // With the temporary file created, copy Carol's current state into the // temporary file we created above. Later after more updates, we'll // restore this state. - if err := copyFile(carolTempDbFile, carol.DBPath()); err != nil { + if err := lntest.CopyFile(carolTempDbFile, carol.DBPath()); err != nil { t.Fatalf("unable to copy database files: %v", err) } @@ -6727,7 +6707,7 @@ func testRevokedCloseRetributionRemoteHodl(net *lntest.NetworkHarness, // With the temporary file created, copy Carol's current state into the // temporary file we created above. Later after more updates, we'll // restore this state. - if err := copyFile(carolTempDbFile, carol.DBPath()); err != nil { + if err := lntest.CopyFile(carolTempDbFile, carol.DBPath()); err != nil { t.Fatalf("unable to copy database files: %v", err) } @@ -7125,7 +7105,7 @@ func testDataLossProtection(net *lntest.NetworkHarness, t *harnessTest) { // With the temporary file created, copy the current state into // the temporary file we created above. Later after more // updates, we'll restore this state. - if err := copyFile(tempDbFile, node.DBPath()); err != nil { + if err := lntest.CopyFile(tempDbFile, node.DBPath()); err != nil { t.Fatalf("unable to copy database files: %v", err) } @@ -12519,7 +12499,13 @@ func TestLightningNetworkDaemon(t *testing.T) { // setting of accepting non-standard transactions on simnet to reject them. // Transactions on the lightning network should always be standard to get // better guarantees of getting included in to blocks. - args := []string{"--rejectnonstd", "--txindex"} + logDir := "./.backendlogs" + args := []string{ + "--rejectnonstd", + "--txindex", + "--debuglevel=debug", + "--logdir=" + logDir, + } handlers := &rpcclient.NotificationHandlers{ OnTxAccepted: func(hash *chainhash.Hash, amt btcutil.Amount) { lndHarness.OnTxAccepted(hash) @@ -12529,7 +12515,21 @@ func TestLightningNetworkDaemon(t *testing.T) { if err != nil { ht.Fatalf("unable to create mining node: %v", err) } - defer btcdHarness.TearDown() + defer func() { + btcdHarness.TearDown() + + // After shutting down the chain backend, we'll make a copy of + // the log file before deleting the temporary log dir. + logFile := logDir + "/" + harnessNetParams.Name + "/btcd.log" + err := lntest.CopyFile("./output_btcd_chainbackend.log", + logFile) + if err != nil { + fmt.Printf("unable to copy file: %v\n", err) + } + if err = os.RemoveAll(logDir); err != nil { + fmt.Printf("Cannot remove dir %s: %v\n", logDir, err) + } + }() // First create the network harness to gain access to its // 'OnTxAccepted' call back. diff --git a/lntest/harness.go b/lntest/harness.go index 030bbb0a..0a3a9d2e 100644 --- a/lntest/harness.go +++ b/lntest/harness.go @@ -3,7 +3,9 @@ package lntest import ( "errors" "fmt" + "io" "io/ioutil" + "os" "strings" "sync" "time" @@ -1289,3 +1291,24 @@ func (n *NetworkHarness) sendCoins(ctx context.Context, amt btcutil.Amount, expectedBalance := initialBalance.ConfirmedBalance + int64(amt) return target.WaitForBalance(expectedBalance, true) } + +// CopyFile copies the file src to dest. +func CopyFile(dest, src string) error { + s, err := os.Open(src) + if err != nil { + return err + } + defer s.Close() + + d, err := os.Create(dest) + if err != nil { + return err + } + + if _, err := io.Copy(d, s); err != nil { + d.Close() + return err + } + + return d.Close() +}