OSDN Git Service

test add invalid tx to txpool
authorlbqds <lbqds@outlook.com>
Thu, 12 Apr 2018 10:24:01 +0000 (18:24 +0800)
committerlbqds <lbqds@outlook.com>
Thu, 12 Apr 2018 10:24:01 +0000 (18:24 +0800)
test/protocol_test.go

index de509b8..7029e8a 100644 (file)
@@ -247,3 +247,40 @@ func TestTxPoolDependencyTx(t *testing.T) {
                t.Fatal("process dependency tx failed")
        }
 }
+
+func TestAddInvalidTxToTxPool(t *testing.T) {
+       chainDB := dbm.NewDB("tx_pool_test", "leveldb", "tx_pool_test")
+       defer os.RemoveAll("tx_pool_test")
+
+       chain, _, txPool, err := MockChain(chainDB)
+       if err != nil {
+               t.Fatal(err)
+       }
+
+       if err := AppendBlocks(chain, 7); err != nil {
+               t.Fatal(err)
+       }
+
+       block, err := chain.GetBlockByHeight(1)
+       if err != nil {
+               t.Fatal(err)
+       }
+
+       //invalid tx, output amount greater than input
+       tx, err := CreateTxFromTx(block.Transactions[0], 0, 60000000000, []byte{byte(vm.OP_TRUE)})
+       if err != nil {
+               t.Fatal(err)
+       }
+
+       if _, err := chain.ValidateTx(tx); err == nil {
+               t.Fatalf("add invalid tx to txpool success")
+       }
+
+       if txPool.IsTransactionInPool(&tx.ID) {
+               t.Fatalf("add invalid tx to txpool success")
+       }
+
+       if !txPool.IsTransactionInErrCache(&tx.ID) {
+               t.Fatalf("can't find invalid tx in txpool err cache")
+       }
+}