From f8b98a1d3bdaf264eccf78c264d0088caadf7bd6 Mon Sep 17 00:00:00 2001 From: eugene Date: Thu, 7 Jan 2021 16:26:24 -0500 Subject: [PATCH] lntest/channels: introduce subpackage to deduplicate static structs --- breacharbiter_test.go | 11 ++-- channeldb/channel_test.go | 42 ++---------- contractcourt/briefcase_test.go | 15 +---- htlcswitch/test_utils.go | 37 +---------- test_utils.go => lntest/channels/channels.go | 30 +++++++-- peer/test_utils.go | 67 ++------------------ 6 files changed, 44 insertions(+), 158 deletions(-) rename test_utils.go => lntest/channels/channels.go (63%) diff --git a/breacharbiter_test.go b/breacharbiter_test.go index 43831efb..0aef6fde 100644 --- a/breacharbiter_test.go +++ b/breacharbiter_test.go @@ -29,6 +29,7 @@ import ( "github.com/lightningnetwork/lnd/htlcswitch" "github.com/lightningnetwork/lnd/input" "github.com/lightningnetwork/lnd/keychain" + "github.com/lightningnetwork/lnd/lntest/channels" "github.com/lightningnetwork/lnd/lntest/mock" "github.com/lightningnetwork/lnd/lntest/wait" "github.com/lightningnetwork/lnd/lnwallet" @@ -1679,7 +1680,7 @@ func createTestArbiter(t *testing.T, contractBreaches chan *ContractBreachEvent, }) aliceKeyPriv, _ := btcec.PrivKeyFromBytes(btcec.S256(), - alicesPrivKey) + channels.AlicesPrivKey) signer := &mock.SingleSigner{Privkey: aliceKeyPriv} // Assemble our test arbiter. @@ -1714,9 +1715,9 @@ func createTestArbiter(t *testing.T, contractBreaches chan *ContractBreachEvent, func createInitChannels(revocationWindow int) (*lnwallet.LightningChannel, *lnwallet.LightningChannel, func(), error) { aliceKeyPriv, aliceKeyPub := btcec.PrivKeyFromBytes(btcec.S256(), - alicesPrivKey) + channels.AlicesPrivKey) bobKeyPriv, bobKeyPub := btcec.PrivKeyFromBytes(btcec.S256(), - bobsPrivKey) + channels.BobsPrivKey) channelCapacity, err := btcutil.NewAmount(10) if err != nil { @@ -1730,7 +1731,7 @@ func createInitChannels(revocationWindow int) (*lnwallet.LightningChannel, *lnwa csvTimeoutBob := uint32(4) prevOut := &wire.OutPoint{ - Hash: chainhash.Hash(testHdSeed), + Hash: channels.TestHdSeed, Index: 0, } fundingTxIn := wire.NewTxIn(prevOut, nil, nil) @@ -1887,7 +1888,7 @@ func createInitChannels(revocationWindow int) (*lnwallet.LightningChannel, *lnwa RemoteCommitment: aliceCommit, Db: dbAlice, Packager: channeldb.NewChannelPackager(shortChanID), - FundingTxn: testTx, + FundingTxn: channels.TestFundingTx, } bobChannelState := &channeldb.OpenChannel{ LocalChanCfg: bobCfg, diff --git a/channeldb/channel_test.go b/channeldb/channel_test.go index cc64597d..5d203889 100644 --- a/channeldb/channel_test.go +++ b/channeldb/channel_test.go @@ -8,16 +8,16 @@ import ( "runtime" "testing" - "github.com/lightningnetwork/lnd/channeldb/kvdb" - "github.com/btcsuite/btcd/btcec" "github.com/btcsuite/btcd/chaincfg/chainhash" "github.com/btcsuite/btcd/wire" "github.com/btcsuite/btcutil" _ "github.com/btcsuite/btcwallet/walletdb/bdb" "github.com/davecgh/go-spew/spew" + "github.com/lightningnetwork/lnd/channeldb/kvdb" "github.com/lightningnetwork/lnd/clock" "github.com/lightningnetwork/lnd/keychain" + "github.com/lightningnetwork/lnd/lntest/channels" "github.com/lightningnetwork/lnd/lnwire" "github.com/lightningnetwork/lnd/shachain" ) @@ -34,38 +34,6 @@ var ( 0x48, 0x59, 0xe6, 0x96, 0x31, 0x13, 0xa1, 0x17, 0x2d, 0xe7, 0x93, 0xe4, } - testTx = &wire.MsgTx{ - Version: 1, - TxIn: []*wire.TxIn{ - { - PreviousOutPoint: wire.OutPoint{ - Hash: chainhash.Hash{}, - Index: 0xffffffff, - }, - SignatureScript: []byte{0x04, 0x31, 0xdc, 0x00, 0x1b, 0x01, 0x62}, - Sequence: 0xffffffff, - }, - }, - TxOut: []*wire.TxOut{ - { - Value: 5000000000, - PkScript: []byte{ - 0x41, // OP_DATA_65 - 0x04, 0xd6, 0x4b, 0xdf, 0xd0, 0x9e, 0xb1, 0xc5, - 0xfe, 0x29, 0x5a, 0xbd, 0xeb, 0x1d, 0xca, 0x42, - 0x81, 0xbe, 0x98, 0x8e, 0x2d, 0xa0, 0xb6, 0xc1, - 0xc6, 0xa5, 0x9d, 0xc2, 0x26, 0xc2, 0x86, 0x24, - 0xe1, 0x81, 0x75, 0xe8, 0x51, 0xc9, 0x6b, 0x97, - 0x3d, 0x81, 0xb0, 0x1c, 0xc3, 0x1f, 0x04, 0x78, - 0x34, 0xbc, 0x06, 0xd6, 0xd6, 0xed, 0xf6, 0x20, - 0xd1, 0x84, 0x24, 0x1a, 0x6a, 0xed, 0x8b, 0x63, - 0xa6, // 65-byte signature - 0xac, // OP_CHECKSIG - }, - }, - }, - LockTime: 5, - } privKey, pubKey = btcec.PrivKeyFromBytes(btcec.S256(), key[:]) wireSig, _ = lnwire.NewSigFromSignature(testSig) @@ -340,7 +308,7 @@ func createTestChannelState(t *testing.T, cdb *DB) *OpenChannel { RemoteBalance: lnwire.MilliSatoshi(3000), CommitFee: btcutil.Amount(rand.Int63()), FeePerKw: btcutil.Amount(5000), - CommitTx: testTx, + CommitTx: channels.TestFundingTx, CommitSig: bytes.Repeat([]byte{1}, 71), }, RemoteCommitment: ChannelCommitment{ @@ -349,7 +317,7 @@ func createTestChannelState(t *testing.T, cdb *DB) *OpenChannel { RemoteBalance: lnwire.MilliSatoshi(9000), CommitFee: btcutil.Amount(rand.Int63()), FeePerKw: btcutil.Amount(5000), - CommitTx: testTx, + CommitTx: channels.TestFundingTx, CommitSig: bytes.Repeat([]byte{1}, 71), }, NumConfsRequired: 4, @@ -359,7 +327,7 @@ func createTestChannelState(t *testing.T, cdb *DB) *OpenChannel { RevocationStore: store, Db: cdb, Packager: NewChannelPackager(chanID), - FundingTxn: testTx, + FundingTxn: channels.TestFundingTx, ThawHeight: uint32(defaultPendingHeight), } } diff --git a/contractcourt/briefcase_test.go b/contractcourt/briefcase_test.go index 98d30ba9..e1315e27 100644 --- a/contractcourt/briefcase_test.go +++ b/contractcourt/briefcase_test.go @@ -18,6 +18,7 @@ import ( "github.com/lightningnetwork/lnd/channeldb" "github.com/lightningnetwork/lnd/channeldb/kvdb" "github.com/lightningnetwork/lnd/input" + "github.com/lightningnetwork/lnd/lntest/channels" "github.com/lightningnetwork/lnd/lnwallet" ) @@ -135,19 +136,7 @@ var ( LockTime: 123, } - // A valid, DER-encoded signature (taken from btcec unit tests). - testSigBytes = []byte{ - 0x30, 0x44, 0x02, 0x20, 0x4e, 0x45, 0xe1, 0x69, - 0x32, 0xb8, 0xaf, 0x51, 0x49, 0x61, 0xa1, 0xd3, - 0xa1, 0xa2, 0x5f, 0xdf, 0x3f, 0x4f, 0x77, 0x32, - 0xe9, 0xd6, 0x24, 0xc6, 0xc6, 0x15, 0x48, 0xab, - 0x5f, 0xb8, 0xcd, 0x41, 0x02, 0x20, 0x18, 0x15, - 0x22, 0xec, 0x8e, 0xca, 0x07, 0xde, 0x48, 0x60, - 0xa4, 0xac, 0xdd, 0x12, 0x90, 0x9d, 0x83, 0x1c, - 0xc5, 0x6c, 0xbb, 0xac, 0x46, 0x22, 0x08, 0x22, - 0x21, 0xa8, 0x76, 0x8d, 0x1d, 0x09, - } - testSig, _ = btcec.ParseDERSignature(testSigBytes, btcec.S256()) + testSig, _ = btcec.ParseDERSignature(channels.TestSigBytes, btcec.S256()) testSignDetails = &input.SignDetails{ SignDesc: testSignDesc, diff --git a/htlcswitch/test_utils.go b/htlcswitch/test_utils.go index 7d14abce..18cf3151 100644 --- a/htlcswitch/test_utils.go +++ b/htlcswitch/test_utils.go @@ -29,6 +29,7 @@ import ( "github.com/lightningnetwork/lnd/input" "github.com/lightningnetwork/lnd/keychain" "github.com/lightningnetwork/lnd/lnpeer" + "github.com/lightningnetwork/lnd/lntest/channels" "github.com/lightningnetwork/lnd/lntest/mock" "github.com/lightningnetwork/lnd/lntest/wait" "github.com/lightningnetwork/lnd/lntypes" @@ -55,40 +56,6 @@ var ( _, _ = testSig.S.SetString("1880105606924982582529128710493133386286603"+ "3135609736119018462340006816851118", 10) - // testTx is used as the default funding txn for single-funder channels. - testTx = &wire.MsgTx{ - Version: 1, - TxIn: []*wire.TxIn{ - { - PreviousOutPoint: wire.OutPoint{ - Hash: chainhash.Hash{}, - Index: 0xffffffff, - }, - SignatureScript: []byte{0x04, 0x31, 0xdc, 0x00, 0x1b, 0x01, 0x62}, - Sequence: 0xffffffff, - }, - }, - TxOut: []*wire.TxOut{ - { - Value: 5000000000, - PkScript: []byte{ - 0x41, // OP_DATA_65 - 0x04, 0xd6, 0x4b, 0xdf, 0xd0, 0x9e, 0xb1, 0xc5, - 0xfe, 0x29, 0x5a, 0xbd, 0xeb, 0x1d, 0xca, 0x42, - 0x81, 0xbe, 0x98, 0x8e, 0x2d, 0xa0, 0xb6, 0xc1, - 0xc6, 0xa5, 0x9d, 0xc2, 0x26, 0xc2, 0x86, 0x24, - 0xe1, 0x81, 0x75, 0xe8, 0x51, 0xc9, 0x6b, 0x97, - 0x3d, 0x81, 0xb0, 0x1c, 0xc3, 0x1f, 0x04, 0x78, - 0x34, 0xbc, 0x06, 0xd6, 0xd6, 0xed, 0xf6, 0x20, - 0xd1, 0x84, 0x24, 0x1a, 0x6a, 0xed, 0x8b, 0x63, - 0xa6, // 65-byte signature - 0xac, // OP_CHECKSIG - }, - }, - }, - LockTime: 5, - } - testBatchTimeout = 50 * time.Millisecond ) @@ -341,7 +308,7 @@ func createTestChannel(alicePrivKey, bobPrivKey []byte, ShortChannelID: chanID, Db: dbAlice, Packager: channeldb.NewChannelPackager(chanID), - FundingTxn: testTx, + FundingTxn: channels.TestFundingTx, } bobChannelState := &channeldb.OpenChannel{ diff --git a/test_utils.go b/lntest/channels/channels.go similarity index 63% rename from test_utils.go rename to lntest/channels/channels.go index 78c2601e..fbe3487e 100644 --- a/test_utils.go +++ b/lntest/channels/channels.go @@ -1,4 +1,4 @@ -package lnd +package channels import ( "github.com/btcsuite/btcd/chaincfg/chainhash" @@ -6,30 +6,33 @@ import ( ) var ( - alicesPrivKey = []byte{ + // AlicesPrivKey is the default alice private key. + AlicesPrivKey = []byte{ 0x2b, 0xd8, 0x06, 0xc9, 0x7f, 0x0e, 0x00, 0xaf, 0x1a, 0x1f, 0xc3, 0x32, 0x8f, 0xa7, 0x63, 0xa9, 0x26, 0x97, 0x23, 0xc8, 0xdb, 0x8f, 0xac, 0x4f, 0x93, 0xaf, 0x71, 0xdb, 0x18, 0x6d, 0x6e, 0x90, } - bobsPrivKey = []byte{ + // BobsPrivKey is the default bob private key. + BobsPrivKey = []byte{ 0x81, 0xb6, 0x37, 0xd8, 0xfc, 0xd2, 0xc6, 0xda, 0x63, 0x59, 0xe6, 0x96, 0x31, 0x13, 0xa1, 0x17, 0xd, 0xe7, 0x95, 0xe4, 0xb7, 0x25, 0xb8, 0x4d, 0x1e, 0xb, 0x4c, 0xfd, 0x9e, 0xc5, 0x8c, 0xe9, } - // Use a hard-coded HD seed. - testHdSeed = [32]byte{ + // TestHdSeed is a hard-coded HD seed. + TestHdSeed = chainhash.Hash{ 0xb7, 0x94, 0x38, 0x5f, 0x2d, 0x1e, 0xf7, 0xab, 0x4d, 0x92, 0x73, 0xd1, 0x90, 0x63, 0x81, 0xb4, 0x4f, 0x2f, 0x6f, 0x25, 0x88, 0xa3, 0xef, 0xb9, 0x6a, 0x49, 0x18, 0x83, 0x31, 0x98, 0x47, 0x53, } - // testTx is used as the default funding txn for single-funder channels. - testTx = &wire.MsgTx{ + // TestFundingTx is a serializable transaction we use for mocking + // the funding transaction. + TestFundingTx = &wire.MsgTx{ Version: 1, TxIn: []*wire.TxIn{ { @@ -61,4 +64,17 @@ var ( }, LockTime: 5, } + + // TestSigBytes is a valid, DER-encoded signature (taken from btcec unit tests). + TestSigBytes = []byte{ + 0x30, 0x44, 0x02, 0x20, 0x4e, 0x45, 0xe1, 0x69, + 0x32, 0xb8, 0xaf, 0x51, 0x49, 0x61, 0xa1, 0xd3, + 0xa1, 0xa2, 0x5f, 0xdf, 0x3f, 0x4f, 0x77, 0x32, + 0xe9, 0xd6, 0x24, 0xc6, 0xc6, 0x15, 0x48, 0xab, + 0x5f, 0xb8, 0xcd, 0x41, 0x02, 0x20, 0x18, 0x15, + 0x22, 0xec, 0x8e, 0xca, 0x07, 0xde, 0x48, 0x60, + 0xa4, 0xac, 0xdd, 0x12, 0x90, 0x9d, 0x83, 0x1c, + 0xc5, 0x6c, 0xbb, 0xac, 0x46, 0x22, 0x08, 0x22, + 0x21, 0xa8, 0x76, 0x8d, 0x1d, 0x09, + } ) diff --git a/peer/test_utils.go b/peer/test_utils.go index 4039ae8a..e2534c1c 100644 --- a/peer/test_utils.go +++ b/peer/test_utils.go @@ -21,6 +21,7 @@ import ( "github.com/lightningnetwork/lnd/htlcswitch" "github.com/lightningnetwork/lnd/input" "github.com/lightningnetwork/lnd/keychain" + "github.com/lightningnetwork/lnd/lntest/channels" "github.com/lightningnetwork/lnd/lntest/mock" "github.com/lightningnetwork/lnd/lnwallet" "github.com/lightningnetwork/lnd/lnwallet/chainfee" @@ -41,64 +42,8 @@ const ( ) var ( - alicesPrivKey = []byte{ - 0x2b, 0xd8, 0x06, 0xc9, 0x7f, 0x0e, 0x00, 0xaf, - 0x1a, 0x1f, 0xc3, 0x32, 0x8f, 0xa7, 0x63, 0xa9, - 0x26, 0x97, 0x23, 0xc8, 0xdb, 0x8f, 0xac, 0x4f, - 0x93, 0xaf, 0x71, 0xdb, 0x18, 0x6d, 0x6e, 0x90, - } - - bobsPrivKey = []byte{ - 0x81, 0xb6, 0x37, 0xd8, 0xfc, 0xd2, 0xc6, 0xda, - 0x63, 0x59, 0xe6, 0x96, 0x31, 0x13, 0xa1, 0x17, - 0xd, 0xe7, 0x95, 0xe4, 0xb7, 0x25, 0xb8, 0x4d, - 0x1e, 0xb, 0x4c, 0xfd, 0x9e, 0xc5, 0x8c, 0xe9, - } - - // Use a hard-coded HD seed. - testHdSeed = [32]byte{ - 0xb7, 0x94, 0x38, 0x5f, 0x2d, 0x1e, 0xf7, 0xab, - 0x4d, 0x92, 0x73, 0xd1, 0x90, 0x63, 0x81, 0xb4, - 0x4f, 0x2f, 0x6f, 0x25, 0x88, 0xa3, 0xef, 0xb9, - 0x6a, 0x49, 0x18, 0x83, 0x31, 0x98, 0x47, 0x53, - } - // Just use some arbitrary bytes as delivery script. - dummyDeliveryScript = alicesPrivKey - - // testTx is used as the default funding txn for single-funder channels. - testTx = &wire.MsgTx{ - Version: 1, - TxIn: []*wire.TxIn{ - { - PreviousOutPoint: wire.OutPoint{ - Hash: chainhash.Hash{}, - Index: 0xffffffff, - }, - SignatureScript: []byte{0x04, 0x31, 0xdc, 0x00, 0x1b, 0x01, 0x62}, - Sequence: 0xffffffff, - }, - }, - TxOut: []*wire.TxOut{ - { - Value: 5000000000, - PkScript: []byte{ - 0x41, // OP_DATA_65 - 0x04, 0xd6, 0x4b, 0xdf, 0xd0, 0x9e, 0xb1, 0xc5, - 0xfe, 0x29, 0x5a, 0xbd, 0xeb, 0x1d, 0xca, 0x42, - 0x81, 0xbe, 0x98, 0x8e, 0x2d, 0xa0, 0xb6, 0xc1, - 0xc6, 0xa5, 0x9d, 0xc2, 0x26, 0xc2, 0x86, 0x24, - 0xe1, 0x81, 0x75, 0xe8, 0x51, 0xc9, 0x6b, 0x97, - 0x3d, 0x81, 0xb0, 0x1c, 0xc3, 0x1f, 0x04, 0x78, - 0x34, 0xbc, 0x06, 0xd6, 0xd6, 0xed, 0xf6, 0x20, - 0xd1, 0x84, 0x24, 0x1a, 0x6a, 0xed, 0x8b, 0x63, - 0xa6, // 65-byte signature - 0xac, // OP_CHECKSIG - }, - }, - }, - LockTime: 5, - } + dummyDeliveryScript = channels.AlicesPrivKey ) // noUpdate is a function which can be used as a parameter in createTestPeer to @@ -114,11 +59,11 @@ func createTestPeer(notifier chainntnfs.ChainNotifier, *Brontide, *lnwallet.LightningChannel, func(), error) { aliceKeyPriv, aliceKeyPub := btcec.PrivKeyFromBytes( - btcec.S256(), alicesPrivKey, + btcec.S256(), channels.AlicesPrivKey, ) aliceKeySigner := &keychain.PrivKeyDigestSigner{PrivKey: aliceKeyPriv} bobKeyPriv, bobKeyPub := btcec.PrivKeyFromBytes( - btcec.S256(), bobsPrivKey, + btcec.S256(), channels.BobsPrivKey, ) channelCapacity := btcutil.Amount(10 * 1e8) @@ -129,7 +74,7 @@ func createTestPeer(notifier chainntnfs.ChainNotifier, csvTimeoutBob := uint32(4) prevOut := &wire.OutPoint{ - Hash: chainhash.Hash(testHdSeed), + Hash: channels.TestHdSeed, Index: 0, } fundingTxIn := wire.NewTxIn(prevOut, nil, nil) @@ -286,7 +231,7 @@ func createTestPeer(notifier chainntnfs.ChainNotifier, RemoteCommitment: aliceCommit, Db: dbAlice, Packager: channeldb.NewChannelPackager(shortChanID), - FundingTxn: testTx, + FundingTxn: channels.TestFundingTx, } bobChannelState := &channeldb.OpenChannel{ LocalChanCfg: bobCfg,