From: Chengcheng Zhang <943420582@qq.com> Date: Tue, 9 Jul 2019 06:35:03 +0000 (+0800) Subject: update X-Git-Url: http://git.osdn.net/view?p=bytom%2Fvapor.git;a=commitdiff_plain;h=29e4313765d6ab5086fdc04f07b1c6cf42afad2a update --- diff --git a/test/wallet_test.go b/test/wallet_test.go index e3ee954b..b7fe9fb2 100644 --- a/test/wallet_test.go +++ b/test/wallet_test.go @@ -193,87 +193,93 @@ func TestRescanWallet(t *testing.T) { } func TestMemPoolTxQueryLoop(t *testing.T) { - dirPath, err := ioutil.TempDir(".", "") - if err != nil { - t.Fatal(err) - } - config.CommonConfig = config.DefaultConfig() - testDB := dbm.NewDB("testdb", "leveldb", dirPath) - defer func() { - testDB.Close() - os.RemoveAll(dirPath) - }() - - store := database.NewStore(testDB) - dispatcher := event.NewDispatcher() - txPool := protocol.NewTxPool(store, dispatcher) - - chain, err := protocol.NewChain(store, txPool, dispatcher) - if err != nil { - t.Fatal(err) - } + query := func() { + dirPath, err := ioutil.TempDir(".", "") + if err != nil { + t.Fatal(err) + } + config.CommonConfig = config.DefaultConfig() + testDB := dbm.NewDB("testdb", "leveldb", dirPath) + defer func() { + testDB.Close() + os.RemoveAll(dirPath) + }() - accountStore := database.NewAccountStore(testDB) - accountManager := account.NewManager(accountStore, chain) - hsm, err := pseudohsm.New(dirPath) - if err != nil { - t.Fatal(err) - } + store := database.NewStore(testDB) + dispatcher := event.NewDispatcher() + txPool := protocol.NewTxPool(store, dispatcher) - xpub1, _, err := hsm.XCreate("test_pub1", "password", "en") - if err != nil { - t.Fatal(err) - } + chain, err := protocol.NewChain(store, txPool, dispatcher) + if err != nil { + t.Fatal(err) + } - testAccount, err := accountManager.Create([]chainkd.XPub{xpub1.XPub}, 1, "testAccount", signers.BIP0044) - if err != nil { - t.Fatal(err) - } + accountStore := database.NewAccountStore(testDB) + accountManager := account.NewManager(accountStore, chain) + hsm, err := pseudohsm.New(dirPath) + if err != nil { + t.Fatal(err) + } - controlProg, err := accountManager.CreateAddress(testAccount.ID, false) - if err != nil { - t.Fatal(err) - } + xpub1, _, err := hsm.XCreate("test_pub1", "password", "en") + if err != nil { + t.Fatal(err) + } - controlProg.KeyIndex = 1 + testAccount, err := accountManager.Create([]chainkd.XPub{xpub1.XPub}, 1, "testAccount", signers.BIP0044) + if err != nil { + t.Fatal(err) + } - reg := asset.NewRegistry(testDB, chain) - asset := bc.AssetID{V0: 5} + controlProg, err := accountManager.CreateAddress(testAccount.ID, false) + if err != nil { + t.Fatal(err) + } - utxos := []*account.UTXO{} - btmUtxo := mockUTXO(controlProg, consensus.BTMAssetID) - utxos = append(utxos, btmUtxo) - OtherUtxo := mockUTXO(controlProg, &asset) - utxos = append(utxos, OtherUtxo) + controlProg.KeyIndex = 1 - _, txData, err := mockTxData(utxos, testAccount) - if err != nil { - t.Fatal(err) - } + reg := asset.NewRegistry(testDB, chain) + asset := bc.AssetID{V0: 5} - tx := types.NewTx(*txData) - txStatus := bc.NewTransactionStatus() - txStatus.SetStatus(0, false) - walletStore := database.NewWalletStore(testDB) - w := newMockWallet(walletStore, accountManager, reg, chain, dispatcher, false) - go w.Wallet.MemPoolTxQueryLoop() - w.Wallet.EventDispatcher.Post(protocol.TxMsgEvent{TxMsg: &protocol.TxPoolMsg{TxDesc: &protocol.TxDesc{Tx: tx}, MsgType: protocol.MsgNewTx}}) - time.Sleep(time.Millisecond * 10) - if _, err := w.Wallet.GetUnconfirmedTxByTxID(tx.ID.String()); err != nil { - t.Fatal("dispatch new tx msg error:", err) - } - w.Wallet.EventDispatcher.Post(protocol.TxMsgEvent{TxMsg: &protocol.TxPoolMsg{TxDesc: &protocol.TxDesc{Tx: tx}, MsgType: protocol.MsgRemoveTx}}) - time.Sleep(time.Millisecond * 10) - txs, err := w.Wallet.GetUnconfirmedTxs(testAccount.ID) - if err != nil { - t.Fatal("get unconfirmed tx error:", err) - } + utxos := []*account.UTXO{} + btmUtxo := mockUTXO(controlProg, consensus.BTMAssetID) + utxos = append(utxos, btmUtxo) + OtherUtxo := mockUTXO(controlProg, &asset) + utxos = append(utxos, OtherUtxo) - if len(txs) != 0 { - t.Fatal("dispatch remove tx msg error") - } + _, txData, err := mockTxData(utxos, testAccount) + if err != nil { + t.Fatal(err) + } - w.Wallet.EventDispatcher.Post(protocol.TxMsgEvent{TxMsg: &protocol.TxPoolMsg{TxDesc: &protocol.TxDesc{Tx: tx}, MsgType: 2}}) + tx := types.NewTx(*txData) + txStatus := bc.NewTransactionStatus() + txStatus.SetStatus(0, false) + walletStore := database.NewWalletStore(testDB) + w := newMockWallet(walletStore, accountManager, reg, chain, dispatcher, false) + go w.Wallet.MemPoolTxQueryLoop() + w.Wallet.EventDispatcher.Post(protocol.TxMsgEvent{TxMsg: &protocol.TxPoolMsg{TxDesc: &protocol.TxDesc{Tx: tx}, MsgType: protocol.MsgNewTx}}) + time.Sleep(time.Millisecond * 10) + if _, err := w.Wallet.GetUnconfirmedTxByTxID(tx.ID.String()); err != nil { + t.Fatal("dispatch new tx msg error:", err) + } + w.Wallet.EventDispatcher.Post(protocol.TxMsgEvent{TxMsg: &protocol.TxPoolMsg{TxDesc: &protocol.TxDesc{Tx: tx}, MsgType: protocol.MsgRemoveTx}}) + time.Sleep(time.Millisecond * 10) + txs, err := w.Wallet.GetUnconfirmedTxs(testAccount.ID) + if err != nil { + t.Fatal("get unconfirmed tx error:", err) + } + + if len(txs) != 0 { + t.Fatal("dispatch remove tx msg error") + } + + w.Wallet.EventDispatcher.Post(protocol.TxMsgEvent{TxMsg: &protocol.TxPoolMsg{TxDesc: &protocol.TxDesc{Tx: tx}, MsgType: 2}}) + } + for i := 0; i < 100; i++ { + fmt.Printf("case i: %v\n", i) + query() + } } func mockUTXO(controlProg *account.CtrlProgram, assetID *bc.AssetID) *account.UTXO {