diff options
author | Jonas Schnelli <jonas.schnelli@include7.ch> | 2015-05-02 12:53:35 +0200 |
---|---|---|
committer | Jonas Schnelli <jonas.schnelli@include7.ch> | 2015-05-18 15:25:45 +0200 |
commit | 64937fe51acc269fc96b784fc97bd4cfe3c1d072 (patch) | |
tree | e665ff0ccf03aa88847d9ecbfb9fb5f6ef6bbca8 /qa/rpc-tests/test_framework.py | |
parent | 26e08a16a6fb64b535d10f5d459183092deefa50 (diff) |
[QA] restructure rpc tests directory
* move non-test classes to subdir `test-framework`
Diffstat (limited to 'qa/rpc-tests/test_framework.py')
-rwxr-xr-x | qa/rpc-tests/test_framework.py | 180 |
1 files changed, 0 insertions, 180 deletions
diff --git a/qa/rpc-tests/test_framework.py b/qa/rpc-tests/test_framework.py deleted file mode 100755 index 15a357a340..0000000000 --- a/qa/rpc-tests/test_framework.py +++ /dev/null @@ -1,180 +0,0 @@ -#!/usr/bin/env python2 -# Copyright (c) 2014 The Bitcoin Core developers -# Distributed under the MIT software license, see the accompanying -# file COPYING or http://www.opensource.org/licenses/mit-license.php. - -# Base class for RPC testing - -# Add python-bitcoinrpc to module search path: -import os -import sys -sys.path.append(os.path.join(os.path.dirname(os.path.abspath(__file__)), "python-bitcoinrpc")) - -import shutil -import tempfile -import traceback - -from bitcoinrpc.authproxy import AuthServiceProxy, JSONRPCException -from util import * - - -class BitcoinTestFramework(object): - - # These may be over-ridden by subclasses: - def run_test(self): - for node in self.nodes: - assert_equal(node.getblockcount(), 200) - assert_equal(node.getbalance(), 25*50) - - def add_options(self, parser): - pass - - def setup_chain(self): - print("Initializing test directory "+self.options.tmpdir) - initialize_chain(self.options.tmpdir) - - def setup_nodes(self): - return start_nodes(4, self.options.tmpdir) - - def setup_network(self, split = False): - self.nodes = self.setup_nodes() - - # Connect the nodes as a "chain". This allows us - # to split the network between nodes 1 and 2 to get - # two halves that can work on competing chains. - - # If we joined network halves, connect the nodes from the joint - # on outward. This ensures that chains are properly reorganised. - if not split: - connect_nodes_bi(self.nodes, 1, 2) - sync_blocks(self.nodes[1:3]) - sync_mempools(self.nodes[1:3]) - - connect_nodes_bi(self.nodes, 0, 1) - connect_nodes_bi(self.nodes, 2, 3) - self.is_network_split = split - self.sync_all() - - def split_network(self): - """ - Split the network of four nodes into nodes 0/1 and 2/3. - """ - assert not self.is_network_split - stop_nodes(self.nodes) - wait_bitcoinds() - self.setup_network(True) - - def sync_all(self): - if self.is_network_split: - sync_blocks(self.nodes[:2]) - sync_blocks(self.nodes[2:]) - sync_mempools(self.nodes[:2]) - sync_mempools(self.nodes[2:]) - else: - sync_blocks(self.nodes) - sync_mempools(self.nodes) - - def join_network(self): - """ - Join the (previously split) network halves together. - """ - assert self.is_network_split - stop_nodes(self.nodes) - wait_bitcoinds() - self.setup_network(False) - - def main(self): - import optparse - - parser = optparse.OptionParser(usage="%prog [options]") - parser.add_option("--nocleanup", dest="nocleanup", default=False, action="store_true", - help="Leave bitcoinds and test.* datadir on exit or error") - parser.add_option("--noshutdown", dest="noshutdown", default=False, action="store_true", - help="Don't stop bitcoinds after the test execution") - parser.add_option("--srcdir", dest="srcdir", default="../../src", - help="Source directory containing bitcoind/bitcoin-cli (default: %default)") - parser.add_option("--tmpdir", dest="tmpdir", default=tempfile.mkdtemp(prefix="test"), - help="Root directory for datadirs") - parser.add_option("--tracerpc", dest="trace_rpc", default=False, action="store_true", - help="Print out all RPC calls as they are made") - self.add_options(parser) - (self.options, self.args) = parser.parse_args() - - if self.options.trace_rpc: - import logging - logging.basicConfig(level=logging.DEBUG) - - os.environ['PATH'] = self.options.srcdir+":"+os.environ['PATH'] - - check_json_precision() - - success = False - try: - if not os.path.isdir(self.options.tmpdir): - os.makedirs(self.options.tmpdir) - self.setup_chain() - - self.setup_network() - - self.run_test() - - success = True - - except JSONRPCException as e: - print("JSONRPC error: "+e.error['message']) - traceback.print_tb(sys.exc_info()[2]) - except AssertionError as e: - print("Assertion failed: "+e.message) - traceback.print_tb(sys.exc_info()[2]) - except Exception as e: - print("Unexpected exception caught during testing: "+str(e)) - traceback.print_tb(sys.exc_info()[2]) - - if not self.options.noshutdown: - print("Stopping nodes") - stop_nodes(self.nodes) - wait_bitcoinds() - else: - print("Note: bitcoinds were not stopped and may still be running") - - if not self.options.nocleanup and not self.options.noshutdown: - print("Cleaning up") - shutil.rmtree(self.options.tmpdir) - - if success: - print("Tests successful") - sys.exit(0) - else: - print("Failed") - sys.exit(1) - - -# Test framework for doing p2p comparison testing, which sets up some bitcoind -# binaries: -# 1 binary: test binary -# 2 binaries: 1 test binary, 1 ref binary -# n>2 binaries: 1 test binary, n-1 ref binaries - -class ComparisonTestFramework(BitcoinTestFramework): - - # Can override the num_nodes variable to indicate how many nodes to run. - def __init__(self): - self.num_nodes = 2 - - def add_options(self, parser): - parser.add_option("--testbinary", dest="testbinary", - default=os.getenv("BITCOIND", "bitcoind"), - help="bitcoind binary to test") - parser.add_option("--refbinary", dest="refbinary", - default=os.getenv("BITCOIND", "bitcoind"), - help="bitcoind binary to use for reference nodes (if any)") - - def setup_chain(self): - print "Initializing test directory "+self.options.tmpdir - initialize_chain_clean(self.options.tmpdir, self.num_nodes) - - def setup_network(self): - self.nodes = start_nodes(self.num_nodes, self.options.tmpdir, - extra_args=[['-debug', '-whitelist=127.0.0.1']] * self.num_nodes, - binary=[self.options.testbinary] + - [self.options.refbinary]*(self.num_nodes-1)) |