Ver Fonte

stop mining in protocol test even if an error occurs

Malte Kraus há 8 anos atrás
pai
commit
0500290a97
1 ficheiros alterados com 23 adições e 21 exclusões
  1. 23 21
      tests/test_proto.py

+ 23 - 21
tests/test_proto.py

@@ -16,27 +16,29 @@ def test_proto():
     miner2.start_mining()
     miner1.start_mining()
 
-    sleep(5)
-    target_key = Signing.generate_private_key()
-    chain = miner1.chainbuilder.primary_block_chain
-    reward_trans = chain.blocks[20].transactions[0]
-    trans_in = TransactionInput(reward_trans.get_hash(), 0)
-    trans_targ = TransactionTarget(target_key, reward_trans.targets[0].amount)
-
-    trans = Transaction([trans_in], [trans_targ])
-    trans.sign([reward_key])
-    logging.warning(repr(trans.to_json_compatible()))
-    assert trans.verify(chain, set()), "transaction should be valid"
-
-    proto2.received('transaction', trans.to_json_compatible(), None)
-    sleep(5)
-
-    chain_len1 = len(miner1.chainbuilder.primary_block_chain.blocks)
-    chain_len2 = len(miner2.chainbuilder.primary_block_chain.blocks)
-    print("Length of chain of miner 1: {}".format(chain_len1))
-    print("Length of chain of miner 2: {}".format(chain_len2))
-    miner1.stop_mining()
-    miner2.stop_mining()
+    try:
+        sleep(5)
+        target_key = Signing.generate_private_key()
+        chain = miner1.chainbuilder.primary_block_chain
+        reward_trans = chain.blocks[20].transactions[0]
+        trans_in = TransactionInput(reward_trans.get_hash(), 0)
+        trans_targ = TransactionTarget(target_key, reward_trans.targets[0].amount)
+
+        trans = Transaction([trans_in], [trans_targ])
+        trans.sign([reward_key])
+        logging.warning(repr(trans.to_json_compatible()))
+        assert trans.verify(chain, set()), "transaction should be valid"
+
+        proto2.received('transaction', trans.to_json_compatible(), None)
+        sleep(5)
+
+        chain_len1 = len(miner1.chainbuilder.primary_block_chain.blocks)
+        chain_len2 = len(miner2.chainbuilder.primary_block_chain.blocks)
+        print("Length of chain of miner 1: {}".format(chain_len1))
+        print("Length of chain of miner 2: {}".format(chain_len2))
+    finally:
+        miner1.stop_mining()
+        miner2.stop_mining()
 
     assert max(chain_len1, chain_len2) * 90 // 100 < min(chain_len1, chain_len2), "chain lengths are VERY different"