lntest/itest: move harness to new file
This in prep for a bigger move in the next commit.
This commit is contained in:
parent
98da919bf1
commit
95634186c2
@ -71,81 +71,6 @@ const (
|
|||||||
noFeeLimitMsat = math.MaxInt64
|
noFeeLimitMsat = math.MaxInt64
|
||||||
)
|
)
|
||||||
|
|
||||||
// harnessTest wraps a regular testing.T providing enhanced error detection
|
|
||||||
// and propagation. All error will be augmented with a full stack-trace in
|
|
||||||
// order to aid in debugging. Additionally, any panics caused by active
|
|
||||||
// test cases will also be handled and represented as fatals.
|
|
||||||
type harnessTest struct {
|
|
||||||
t *testing.T
|
|
||||||
|
|
||||||
// testCase is populated during test execution and represents the
|
|
||||||
// current test case.
|
|
||||||
testCase *testCase
|
|
||||||
|
|
||||||
// lndHarness is a reference to the current network harness. Will be
|
|
||||||
// nil if not yet set up.
|
|
||||||
lndHarness *lntest.NetworkHarness
|
|
||||||
}
|
|
||||||
|
|
||||||
// newHarnessTest creates a new instance of a harnessTest from a regular
|
|
||||||
// testing.T instance.
|
|
||||||
func newHarnessTest(t *testing.T, net *lntest.NetworkHarness) *harnessTest {
|
|
||||||
return &harnessTest{t, nil, net}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Skipf calls the underlying testing.T's Skip method, causing the current test
|
|
||||||
// to be skipped.
|
|
||||||
func (h *harnessTest) Skipf(format string, args ...interface{}) {
|
|
||||||
h.t.Skipf(format, args...)
|
|
||||||
}
|
|
||||||
|
|
||||||
// Fatalf causes the current active test case to fail with a fatal error. All
|
|
||||||
// integration tests should mark test failures solely with this method due to
|
|
||||||
// the error stack traces it produces.
|
|
||||||
func (h *harnessTest) Fatalf(format string, a ...interface{}) {
|
|
||||||
if h.lndHarness != nil {
|
|
||||||
h.lndHarness.SaveProfilesPages()
|
|
||||||
}
|
|
||||||
|
|
||||||
stacktrace := errors.Wrap(fmt.Sprintf(format, a...), 1).ErrorStack()
|
|
||||||
|
|
||||||
if h.testCase != nil {
|
|
||||||
h.t.Fatalf("Failed: (%v): exited with error: \n"+
|
|
||||||
"%v", h.testCase.name, stacktrace)
|
|
||||||
} else {
|
|
||||||
h.t.Fatalf("Error outside of test: %v", stacktrace)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// RunTestCase executes a harness test case. Any errors or panics will be
|
|
||||||
// represented as fatal.
|
|
||||||
func (h *harnessTest) RunTestCase(testCase *testCase) {
|
|
||||||
h.testCase = testCase
|
|
||||||
defer func() {
|
|
||||||
h.testCase = nil
|
|
||||||
}()
|
|
||||||
|
|
||||||
defer func() {
|
|
||||||
if err := recover(); err != nil {
|
|
||||||
description := errors.Wrap(err, 2).ErrorStack()
|
|
||||||
h.t.Fatalf("Failed: (%v) panicked with: \n%v",
|
|
||||||
h.testCase.name, description)
|
|
||||||
}
|
|
||||||
}()
|
|
||||||
|
|
||||||
testCase.test(h.lndHarness, h)
|
|
||||||
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
func (h *harnessTest) Logf(format string, args ...interface{}) {
|
|
||||||
h.t.Logf(format, args...)
|
|
||||||
}
|
|
||||||
|
|
||||||
func (h *harnessTest) Log(args ...interface{}) {
|
|
||||||
h.t.Log(args...)
|
|
||||||
}
|
|
||||||
|
|
||||||
func assertTxInBlock(t *harnessTest, block *wire.MsgBlock, txid *chainhash.Hash) {
|
func assertTxInBlock(t *harnessTest, block *wire.MsgBlock, txid *chainhash.Hash) {
|
||||||
for _, tx := range block.Transactions {
|
for _, tx := range block.Transactions {
|
||||||
sha := tx.TxHash()
|
sha := tx.TxHash()
|
||||||
|
90
lntest/itest/test_harness.go
Normal file
90
lntest/itest/test_harness.go
Normal file
@ -0,0 +1,90 @@
|
|||||||
|
package itest
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
"testing"
|
||||||
|
|
||||||
|
"github.com/go-errors/errors"
|
||||||
|
"github.com/lightningnetwork/lnd/lntest"
|
||||||
|
)
|
||||||
|
|
||||||
|
// harnessTest wraps a regular testing.T providing enhanced error detection
|
||||||
|
// and propagation. All error will be augmented with a full stack-trace in
|
||||||
|
// order to aid in debugging. Additionally, any panics caused by active
|
||||||
|
// test cases will also be handled and represented as fatals.
|
||||||
|
type harnessTest struct {
|
||||||
|
t *testing.T
|
||||||
|
|
||||||
|
// testCase is populated during test execution and represents the
|
||||||
|
// current test case.
|
||||||
|
testCase *testCase
|
||||||
|
|
||||||
|
// lndHarness is a reference to the current network harness. Will be
|
||||||
|
// nil if not yet set up.
|
||||||
|
lndHarness *lntest.NetworkHarness
|
||||||
|
}
|
||||||
|
|
||||||
|
// newHarnessTest creates a new instance of a harnessTest from a regular
|
||||||
|
// testing.T instance.
|
||||||
|
func newHarnessTest(t *testing.T, net *lntest.NetworkHarness) *harnessTest {
|
||||||
|
return &harnessTest{t, nil, net}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Skipf calls the underlying testing.T's Skip method, causing the current test
|
||||||
|
// to be skipped.
|
||||||
|
func (h *harnessTest) Skipf(format string, args ...interface{}) {
|
||||||
|
h.t.Skipf(format, args...)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Fatalf causes the current active test case to fail with a fatal error. All
|
||||||
|
// integration tests should mark test failures solely with this method due to
|
||||||
|
// the error stack traces it produces.
|
||||||
|
func (h *harnessTest) Fatalf(format string, a ...interface{}) {
|
||||||
|
if h.lndHarness != nil {
|
||||||
|
h.lndHarness.SaveProfilesPages()
|
||||||
|
}
|
||||||
|
|
||||||
|
stacktrace := errors.Wrap(fmt.Sprintf(format, a...), 1).ErrorStack()
|
||||||
|
|
||||||
|
if h.testCase != nil {
|
||||||
|
h.t.Fatalf("Failed: (%v): exited with error: \n"+
|
||||||
|
"%v", h.testCase.name, stacktrace)
|
||||||
|
} else {
|
||||||
|
h.t.Fatalf("Error outside of test: %v", stacktrace)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// RunTestCase executes a harness test case. Any errors or panics will be
|
||||||
|
// represented as fatal.
|
||||||
|
func (h *harnessTest) RunTestCase(testCase *testCase) {
|
||||||
|
|
||||||
|
h.testCase = testCase
|
||||||
|
defer func() {
|
||||||
|
h.testCase = nil
|
||||||
|
}()
|
||||||
|
|
||||||
|
defer func() {
|
||||||
|
if err := recover(); err != nil {
|
||||||
|
description := errors.Wrap(err, 2).ErrorStack()
|
||||||
|
h.t.Fatalf("Failed: (%v) panicked with: \n%v",
|
||||||
|
h.testCase.name, description)
|
||||||
|
}
|
||||||
|
}()
|
||||||
|
|
||||||
|
testCase.test(h.lndHarness, h)
|
||||||
|
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
func (h *harnessTest) Logf(format string, args ...interface{}) {
|
||||||
|
h.t.Logf(format, args...)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (h *harnessTest) Log(args ...interface{}) {
|
||||||
|
h.t.Log(args...)
|
||||||
|
}
|
||||||
|
|
||||||
|
type testCase struct {
|
||||||
|
name string
|
||||||
|
test func(net *lntest.NetworkHarness, t *harnessTest)
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user