diff options
author | Gavin Andresen <gavinandresen@gmail.com> | 2014-10-24 15:13:03 -0400 |
---|---|---|
committer | Gavin Andresen <gavinandresen@gmail.com> | 2014-10-24 15:13:41 -0400 |
commit | e401a2c557ddd1f7cf66df2e62f3324e3b7bcd40 (patch) | |
tree | 9e8b536cc4cfbe1f1a636d3db52b0eb21882c2b6 /qa/rpc-tests/getchaintips.py | |
parent | 505a9e1dae8eac680640e7b0dea3c0014351e519 (diff) | |
parent | 2290ed01bc1b4176a0c6b976707bf7dd6bc49f43 (diff) |
Merge pull request #5132
2290ed0 Work around #5113. (Daniel Kraft)
dcb9846 Extend getchaintips RPC test. (Daniel Kraft)
Signed-off-by: Gavin Andresen <gavinandresen@gmail.com>
Diffstat (limited to 'qa/rpc-tests/getchaintips.py')
-rwxr-xr-x | qa/rpc-tests/getchaintips.py | 50 |
1 files changed, 40 insertions, 10 deletions
diff --git a/qa/rpc-tests/getchaintips.py b/qa/rpc-tests/getchaintips.py index a83c499743..842fcad2b2 100755 --- a/qa/rpc-tests/getchaintips.py +++ b/qa/rpc-tests/getchaintips.py @@ -3,22 +3,52 @@ # Distributed under the MIT/X11 software license, see the accompanying # file COPYING or http://www.opensource.org/licenses/mit-license.php. -# Exercise the getchaintips API. - -# Since the test framework does not generate orphan blocks, we can -# unfortunately not check for them! +# Exercise the getchaintips API. We introduce a network split, work +# on chains of different lengths, and join the network together again. +# This gives us two tips, verify that it works. from test_framework import BitcoinTestFramework from util import assert_equal class GetChainTipsTest (BitcoinTestFramework): - def run_test (self, nodes): - res = nodes[0].getchaintips () - assert_equal (len (res), 1) - res = res[0] - assert_equal (res['branchlen'], 0) - assert_equal (res['height'], 200) + def run_test (self): + BitcoinTestFramework.run_test (self) + + tips = self.nodes[0].getchaintips () + assert_equal (len (tips), 1) + assert_equal (tips[0]['branchlen'], 0) + assert_equal (tips[0]['height'], 200) + + # Split the network and build two chains of different lengths. + self.split_network () + self.nodes[0].setgenerate (True, 10); + self.nodes[2].setgenerate (True, 20); + self.sync_all () + + tips = self.nodes[1].getchaintips () + assert_equal (len (tips), 1) + shortTip = tips[0] + assert_equal (shortTip['branchlen'], 0) + assert_equal (shortTip['height'], 210) + + tips = self.nodes[3].getchaintips () + assert_equal (len (tips), 1) + longTip = tips[0] + assert_equal (longTip['branchlen'], 0) + assert_equal (longTip['height'], 220) + + # Join the network halves and check that we now have two tips + # (at least at the nodes that previously had the short chain). + self.join_network () + + tips = self.nodes[0].getchaintips () + assert_equal (len (tips), 2) + assert_equal (tips[0], longTip) + + assert_equal (tips[1]['branchlen'], 10) + tips[1]['branchlen'] = 0; + assert_equal (tips[1], shortTip) if __name__ == '__main__': GetChainTipsTest ().main () |