diff --git a/plugins/net_plugin/net_plugin.cpp b/plugins/net_plugin/net_plugin.cpp index 3a5020ad7c..811348793c 100644 --- a/plugins/net_plugin/net_plugin.cpp +++ b/plugins/net_plugin/net_plugin.cpp @@ -540,7 +540,7 @@ namespace eosio { void on_irreversible_block( const block_id_type& id, uint32_t block_num ); void bcast_vote_message( const std::optional& exclude_peer, const chain::vote_message& msg ); - void warn_hs_message( uint32_t sender_peer, const chain::hs_message_warning& code ); + void warn_message( uint32_t sender_peer, const chain::hs_message_warning& code ); void start_conn_timer(boost::asio::steady_timer::duration du, std::weak_ptr from_connection); void start_expire_timer(); @@ -1188,7 +1188,7 @@ namespace eosio { void operator()( const chain::vote_message& msg ) const { // continue call to handle_message on connection strand - peer_dlog( c, "handle hs_vote_message" ); + peer_dlog( c, "handle vote_message" ); c->handle_message( msg ); } }; @@ -3729,6 +3729,7 @@ namespace eosio { // called from connection strand void connection::handle_message( const block_id_type& id, signed_block_ptr ptr ) { // post to dispatcher strand so that we don't have multiple threads validating the block header + peer_dlog(this, "posting block ${n} to dispatcher strand", ("n", ptr->block_num())); my_impl->dispatcher->strand.post([id, c{shared_from_this()}, ptr{std::move(ptr)}, cid=connection_id]() mutable { controller& cc = my_impl->chain_plug->chain(); @@ -3774,6 +3775,7 @@ namespace eosio { my_impl->dispatcher->bcast_block( obt->block(), obt->id() ); } + fc_dlog(logger, "posting block ${n} to app thread", ("n", ptr->block_num())); app().executor().post(priority::medium, exec_queue::read_write, [ptr{std::move(ptr)}, obt{std::move(obt)}, id, c{std::move(c)}]() mutable { c->process_signed_block( id, std::move(ptr), obt ); }); @@ -3968,7 +3970,7 @@ namespace eosio { }); } - void net_plugin_impl::warn_hs_message( uint32_t sender_peer, const chain::hs_message_warning& code ) { + void net_plugin_impl::warn_message( uint32_t sender_peer, const chain::hs_message_warning& code ) { // potentially react to (repeated) receipt of invalid, irrelevant, duplicate, etc. hotstuff messages from sender_peer (connection ID) here } @@ -4318,8 +4320,6 @@ namespace eosio { void net_plugin_impl::plugin_startup() { fc_ilog( logger, "my node_id is ${id}", ("id", node_id )); - controller& cc = chain_plug->chain(); - producer_plug = app().find_plugin(); set_producer_accounts(producer_plug->producer_accounts()); diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 8c79346a00..11a50d5f4a 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -69,7 +69,6 @@ configure_file(${CMAKE_CURRENT_SOURCE_DIR}/resource_monitor_plugin_test.py ${CMA configure_file(${CMAKE_CURRENT_SOURCE_DIR}/light_validation_sync_test.py ${CMAKE_CURRENT_BINARY_DIR}/light_validation_sync_test.py COPYONLY) configure_file(${CMAKE_CURRENT_SOURCE_DIR}/trace_plugin_test.py ${CMAKE_CURRENT_BINARY_DIR}/trace_plugin_test.py COPYONLY) configure_file(${CMAKE_CURRENT_SOURCE_DIR}/nested_container_multi_index_test.py ${CMAKE_CURRENT_BINARY_DIR}/nested_container_multi_index_test.py COPYONLY) -configure_file(${CMAKE_CURRENT_SOURCE_DIR}/large-lib-test.py ${CMAKE_CURRENT_BINARY_DIR}/large-lib-test.py COPYONLY) configure_file(${CMAKE_CURRENT_SOURCE_DIR}/auto_bp_peering_test.py ${CMAKE_CURRENT_BINARY_DIR}/auto_bp_peering_test.py COPYONLY) configure_file(${CMAKE_CURRENT_SOURCE_DIR}/auto_bp_peering_test_shape.json ${CMAKE_CURRENT_BINARY_DIR}/auto_bp_peering_test_shape.json COPYONLY) configure_file(${CMAKE_CURRENT_SOURCE_DIR}/gelf_test.py ${CMAKE_CURRENT_BINARY_DIR}/gelf_test.py COPYONLY) @@ -95,8 +94,12 @@ add_test(NAME nodeos_lib_if_test COMMAND tests/nodeos_lib_test.py -n 4 -p 3 -s r set_property(TEST nodeos_lib_if_test PROPERTY LABELS nonparallelizable_tests) add_test(NAME block_log_util_test COMMAND tests/block_log_util_test.py -v ${UNSHARE} WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) set_property(TEST block_log_util_test PROPERTY LABELS nonparallelizable_tests) +add_test(NAME block_log_util_if_test COMMAND tests/block_log_util_test.py --activate-if -v ${UNSHARE} WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) +set_property(TEST block_log_util_if_test PROPERTY LABELS nonparallelizable_tests) add_test(NAME block_log_retain_blocks_test COMMAND tests/block_log_retain_blocks_test.py -v ${UNSHARE} WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) set_property(TEST block_log_retain_blocks_test PROPERTY LABELS nonparallelizable_tests) +add_test(NAME block_log_retain_blocks_if_test COMMAND tests/block_log_retain_blocks_test.py --activate-if -v ${UNSHARE} WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) +set_property(TEST block_log_retain_blocks_if_test PROPERTY LABELS nonparallelizable_tests) option(ABIEOS_ONLY_LIBRARY "define and build the ABIEOS library" ON) set(ABIEOS_INSTALL_COMPONENT "dev") @@ -121,6 +124,8 @@ target_link_libraries(ship_streamer abieos Boost::program_options Boost::system add_test(NAME cluster_launcher COMMAND tests/cluster_launcher.py -v ${UNSHARE} WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) set_property(TEST cluster_launcher PROPERTY LABELS nonparallelizable_tests) +add_test(NAME cluster_launcher_if COMMAND tests/cluster_launcher.py --activate-if -v ${UNSHARE} WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) +set_property(TEST cluster_launcher_if PROPERTY LABELS nonparallelizable_tests) add_test(NAME ship_test COMMAND tests/ship_test.py -v --num-clients 10 --num-requests 5000 ${UNSHARE} WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) set_property(TEST ship_test PROPERTY LABELS nonparallelizable_tests) @@ -156,6 +161,8 @@ add_test(NAME distributed-transactions-test COMMAND tests/distributed-transactio set_property(TEST distributed-transactions-test PROPERTY LABELS nonparallelizable_tests) add_test(NAME distributed-transactions-speculative-test COMMAND tests/distributed-transactions-test.py -d 2 -p 4 -n 6 --speculative -v ${UNSHARE} WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) set_property(TEST distributed-transactions-speculative-test PROPERTY LABELS nonparallelizable_tests) +add_test(NAME distributed-transactions-if-test COMMAND tests/distributed-transactions-test.py -d 2 -p 4 -n 6 --activate-if -v ${UNSHARE} WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) +set_property(TEST distributed-transactions-if-test PROPERTY LABELS nonparallelizable_tests) add_test(NAME restart-scenarios-test-resync COMMAND tests/restart-scenarios-test.py -c resync -p4 -v ${UNSHARE} WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) set_property(TEST restart-scenarios-test-resync PROPERTY LABELS nonparallelizable_tests) add_test(NAME restart-scenarios-test-hard_replay COMMAND tests/restart-scenarios-test.py -c hardReplay -p4 -v ${UNSHARE} WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) @@ -202,14 +209,21 @@ set_property(TEST p2p_sync_throttle_test PROPERTY LABELS nonparallelizable_tests #add_test(NAME p2p_high_latency_test COMMAND tests/p2p_high_latency_test.py -v WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) #set_property(TEST p2p_high_latency_test PROPERTY LABELS nonparallelizable_tests) +# This test is too much for CI/CD machines. We do run it with fewer nodes as a nonparallelizable_tests above #add_test(NAME distributed_transactions_lr_test COMMAND tests/distributed-transactions-test.py -d 2 -p 21 -n 21 -v WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) #set_property(TEST distributed_transactions_lr_test PROPERTY LABELS long_running_tests) +#add_test(NAME distributed_transactions_if_lr_test COMMAND tests/distributed-transactions-test.py -d 2 -p 21 -n 21 --activate-if -v WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) +#set_property(TEST distributed_transactions_if_lr_test PROPERTY LABELS long_running_tests) add_test(NAME nodeos_forked_chain_lr_test COMMAND tests/nodeos_forked_chain_test.py -v --wallet-port 9901 ${UNSHARE} WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) set_property(TEST nodeos_forked_chain_lr_test PROPERTY LABELS long_running_tests) +add_test(NAME nodeos_forked_chain_if_lr_test COMMAND tests/nodeos_forked_chain_test.py -v --activate-if --wallet-port 9901 ${UNSHARE} WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) +set_property(TEST nodeos_forked_chain_if_lr_test PROPERTY LABELS long_running_tests) add_test(NAME nodeos_contrl_c_test COMMAND tests/nodeos_contrl_c_test.py -v --wallet-port 9901 ${UNSHARE} WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) set_property(TEST nodeos_contrl_c_test PROPERTY LABELS nonparallelizable_tests) +add_test(NAME nodeos_contrl_c_if_test COMMAND tests/nodeos_contrl_c_test.py --activate-if -v --wallet-port 9901 ${UNSHARE} WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) +set_property(TEST nodeos_contrl_c_if_test PROPERTY LABELS nonparallelizable_tests) add_test(NAME nodeos_voting_lr_test COMMAND tests/nodeos_voting_test.py -v --wallet-port 9902 ${UNSHARE} WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) set_property(TEST nodeos_voting_lr_test PROPERTY LABELS long_running_tests) @@ -219,12 +233,20 @@ set_property(TEST nodeos_under_min_avail_ram_lr_test PROPERTY LABELS long_runnin add_test(NAME nodeos_irreversible_mode_lr_test COMMAND tests/nodeos_irreversible_mode_test.py -v ${UNSHARE} WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) set_property(TEST nodeos_irreversible_mode_lr_test PROPERTY LABELS long_running_tests) +# requires https://github.com/AntelopeIO/leap/issues/2141 +#add_test(NAME nodeos_irreversible_mode_if_lr_test COMMAND tests/nodeos_irreversible_mode_test.py -v --activate-if ${UNSHARE} WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) +#set_property(TEST nodeos_irreversible_mode_if_lr_test PROPERTY LABELS long_running_tests) add_test(NAME nodeos_read_terminate_at_block_lr_test COMMAND tests/nodeos_read_terminate_at_block_test.py -v ${UNSHARE} WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) set_property(TEST nodeos_read_terminate_at_block_lr_test PROPERTY LABELS long_running_tests) +# requires https://github.com/AntelopeIO/leap/issues/2057 because running in irreversible mode currently switches different than non-irreversible mode +#add_test(NAME nodeos_read_terminate_at_block_if_lr_test COMMAND tests/nodeos_read_terminate_at_block_test.py --activate-if -v ${UNSHARE} WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) +#set_property(TEST nodeos_read_terminate_at_block_if_lr_test PROPERTY LABELS long_running_tests) add_test(NAME nodeos_chainbase_allocation_test COMMAND tests/nodeos_chainbase_allocation_test.py -v ${UNSHARE} WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) set_property(TEST nodeos_chainbase_allocation_test PROPERTY LABELS nonparallelizable_tests) +add_test(NAME nodeos_chainbase_allocation_if_test COMMAND tests/nodeos_chainbase_allocation_test.py --activate-if -v ${UNSHARE} WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) +set_property(TEST nodeos_chainbase_allocation_if_test PROPERTY LABELS nonparallelizable_tests) add_test(NAME nodeos_startup_catchup_lr_test COMMAND tests/nodeos_startup_catchup.py -v ${UNSHARE} WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) set_property(TEST nodeos_startup_catchup_lr_test PROPERTY LABELS long_running_tests) @@ -240,9 +262,13 @@ set_property(TEST nodeos_extra_packed_data_test PROPERTY LABELS nonparallelizabl add_test(NAME nodeos_producer_watermark_lr_test COMMAND tests/nodeos_producer_watermark_test.py -v ${UNSHARE} WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) set_property(TEST nodeos_producer_watermark_lr_test PROPERTY LABELS long_running_tests) +add_test(NAME nodeos_producer_watermark_if_lr_test COMMAND tests/nodeos_producer_watermark_test.py -v --activate-if ${UNSHARE} WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) +set_property(TEST nodeos_producer_watermark_if_lr_test PROPERTY LABELS long_running_tests) -add_test(NAME nodeos_high_transaction_lr_test COMMAND tests/nodeos_high_transaction_test.py -v -p 4 -n 8 --num-transactions 10000 --max-transactions-per-second 500 ${UNSHARE} WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) +add_test(NAME nodeos_high_transaction_lr_test COMMAND tests/nodeos_high_transaction_test.py -p 4 -n 8 --num-transactions 10000 --max-transactions-per-second 500 ${UNSHARE} WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) set_property(TEST nodeos_high_transaction_lr_test PROPERTY LABELS long_running_tests) +add_test(NAME nodeos_high_transaction_if_lr_test COMMAND tests/nodeos_high_transaction_test.py --activate-if -p 4 -n 8 --num-transactions 10000 --max-transactions-per-second 500 ${UNSHARE} WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) +set_property(TEST nodeos_high_transaction_if_lr_test PROPERTY LABELS long_running_tests) add_test(NAME nodeos_retry_transaction_lr_test COMMAND tests/nodeos_retry_transaction_test.py -v --num-transactions 100 --max-transactions-per-second 10 --total-accounts 5 ${UNSHARE} WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) set_property(TEST nodeos_retry_transaction_lr_test PROPERTY LABELS long_running_tests) @@ -252,6 +278,8 @@ set_property(TEST cli_test PROPERTY LABELS nonparallelizable_tests) add_test(NAME larger_lib_test COMMAND tests/large-lib-test.py ${UNSHARE} WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) set_property(TEST larger_lib_test PROPERTY LABELS nonparallelizable_tests) +add_test(NAME larger_lib_if_test COMMAND tests/large-lib-test.py --activate-if ${UNSHARE} WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) +set_property(TEST larger_lib_if_test PROPERTY LABELS nonparallelizable_tests) add_test(NAME leap_util_bls_test COMMAND tests/leap_util_bls_test.py WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) @@ -279,9 +307,13 @@ set_property(TEST nodeos_repeat_transaction_lr_test PROPERTY LABELS long_running add_test(NAME light_validation_sync_test COMMAND tests/light_validation_sync_test.py -v ${UNSHARE} WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) set_property(TEST light_validation_sync_test PROPERTY LABELS nonparallelizable_tests) +add_test(NAME light_validation_sync_if_test COMMAND tests/light_validation_sync_test.py --activate-if -v ${UNSHARE} WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) +set_property(TEST light_validation_sync_if_test PROPERTY LABELS nonparallelizable_tests) add_test(NAME auto_bp_peering_test COMMAND tests/auto_bp_peering_test.py -v ${UNSHARE} WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) set_property(TEST auto_bp_peering_test PROPERTY LABELS long_running_tests) +add_test(NAME auto_bp_peering_if_test COMMAND tests/auto_bp_peering_test.py -v --activate-if ${UNSHARE} WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) +set_property(TEST auto_bp_peering_if_test PROPERTY LABELS long_running_tests) add_test(NAME gelf_test COMMAND tests/gelf_test.py ${UNSHARE} WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) set_property(TEST gelf_test PROPERTY LABELS nonparallelizable_tests) diff --git a/tests/TestHarness/Cluster.py b/tests/TestHarness/Cluster.py index 0639cc0ba4..c678ca4364 100644 --- a/tests/TestHarness/Cluster.py +++ b/tests/TestHarness/Cluster.py @@ -167,7 +167,8 @@ def setAlternateVersionLabels(self, file): # pylint: disable=too-many-statements def launch(self, pnodes=1, unstartedNodes=0, totalNodes=1, prodCount=21, topo="mesh", delay=2, onlyBios=False, dontBootstrap=False, totalProducers=None, sharedProducers=0, extraNodeosArgs="", specificExtraNodeosArgs=None, specificNodeosInstances=None, onlySetProds=False, - pfSetupPolicy=PFSetupPolicy.FULL, alternateVersionLabelsFile=None, associatedNodeLabels=None, loadSystemContract=True, activateIF=False, + pfSetupPolicy=PFSetupPolicy.FULL, alternateVersionLabelsFile=None, associatedNodeLabels=None, loadSystemContract=True, + activateIF=False, biosFinalizer=True, nodeosLogPath=Path(Utils.TestLogRoot) / Path(f'{Path(sys.argv[0]).stem}{os.getpid()}'), genesisPath=None, maximumP2pPerHost=0, maximumClients=25, prodsEnableTraceApi=True): """Launch cluster. @@ -190,6 +191,8 @@ def launch(self, pnodes=1, unstartedNodes=0, totalNodes=1, prodCount=21, topo="m alternateVersionLabelsFile: Supply an alternate version labels file to use with associatedNodeLabels. associatedNodeLabels: Supply a dictionary of node numbers to use an alternate label for a specific node. loadSystemContract: indicate whether the eosio.system contract should be loaded + activateIF: Activate/enable instant-finality by setting finalizers + biosFinalizer: True if the biosNode should act as a finalizer genesisPath: set the path to a specific genesis.json to use maximumP2pPerHost: Maximum number of client nodes from any single IP address. Defaults to totalNodes if not set. maximumClients: Maximum number of clients from which connections are accepted, use 0 for no limit. Defaults to 25. @@ -520,7 +523,7 @@ def connectGroup(group, producerNodes, bridgeNodes) : return True Utils.Print("Bootstrap cluster.") - if not self.bootstrap(launcher, self.biosNode, self.startedNodesCount, prodCount + sharedProducers, totalProducers, pfSetupPolicy, onlyBios, onlySetProds, loadSystemContract, activateIF): + if not self.bootstrap(launcher, self.biosNode, self.startedNodesCount, prodCount + sharedProducers, totalProducers, pfSetupPolicy, onlyBios, onlySetProds, loadSystemContract, activateIF, biosFinalizer): Utils.Print("ERROR: Bootstrap failed.") return False @@ -992,17 +995,31 @@ def parseClusterKeys(totalNodes): Utils.Print(f'Found {len(producerKeys)} producer keys') return producerKeys - def activateInstantFinality(self, launcher, pnodes): + def activateInstantFinality(self, launcher, biosFinalizer, pnodes): # call setfinalizer - numFins = pnodes + numFins = 0 + for n in launcher.network.nodes.values(): + if n.keys[0].blspubkey is None: + continue + if len(n.producers) == 0: + continue + if n.index == Node.biosNodeId and not biosFinalizer: + continue + numFins = numFins + 1 + threshold = int(numFins * 2 / 3 + 1) - if threshold >= pnodes: - threshold = pnodes - 1 + if threshold > 2 and threshold == numFins: + # nodes are often stopped, so do not require all node votes + threshold = threshold - 1 + # pnodes does not include biosNode + if Utils.Debug: Utils.Print(f"threshold: {threshold}, numFins: {numFins}, pnodes: {pnodes}") setFinStr = f'{{"finalizer_policy": {{' setFinStr += f' "threshold": {threshold}, ' setFinStr += f' "finalizers": [' finNum = 1 for n in launcher.network.nodes.values(): + if n.index == Node.biosNodeId and not biosFinalizer: + continue if n.keys[0].blspubkey is None: continue if len(n.producers) == 0: @@ -1030,7 +1047,7 @@ def activateInstantFinality(self, launcher, pnodes): Utils.Print("ERROR: Failed to validate transaction %s got rolled into a LIB block on server port %d." % (transId, biosNode.port)) return None - def bootstrap(self, launcher, biosNode, totalNodes, prodCount, totalProducers, pfSetupPolicy, onlyBios=False, onlySetProds=False, loadSystemContract=True, activateIF=False): + def bootstrap(self, launcher, biosNode, totalNodes, prodCount, totalProducers, pfSetupPolicy, onlyBios=False, onlySetProds=False, loadSystemContract=True, activateIF=False, biosFinalizer=True): """Create 'prodCount' init accounts and deposits 10000000000 SYS in each. If prodCount is -1 will initialize all possible producers. Ensure nodes are inter-connected prior to this call. One way to validate this will be to check if every node has block 1.""" @@ -1094,7 +1111,7 @@ def bootstrap(self, launcher, biosNode, totalNodes, prodCount, totalProducers, return None if activateIF: - self.activateInstantFinality(launcher, self.productionNodesCount) + self.activateInstantFinality(launcher, biosFinalizer, self.productionNodesCount) Utils.Print("Creating accounts: %s " % ", ".join(producerKeys.keys())) producerKeys.pop(eosioName) diff --git a/tests/TestHarness/launcher.py b/tests/TestHarness/launcher.py index ff331401fb..34157d3231 100644 --- a/tests/TestHarness/launcher.py +++ b/tests/TestHarness/launcher.py @@ -291,7 +291,10 @@ def bind_nodes(self): is_bios = node.name == 'bios' if is_bios: node.keys.append(KeyStrings('EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV', - '5KQwrPbwdL6PhXujxW37FSSQZ1JiwsST4cqQzDeyXtP79zkvFD3')) + '5KQwrPbwdL6PhXujxW37FSSQZ1JiwsST4cqQzDeyXtP79zkvFD3', + 'PUB_BLS_qXP11UuMRiJLRFGF52711peFyBrRRVF7cPJY5wZZj2f/MpEY4eQvlQwXDpSPsqMSFXIChZTR/IXE9hySF8x7jQ2Na5eq0Vi4hcK19pcv2prYYF4PMbf02yjSmK2h3NMZYkjDEA==', + 'PVT_BLS_I3cpJdW51PHYnKrY3naidDQMqJZekJCm2Pdp6QkoBR26ADvq', + 'SIG_BLS_GBIXLkWRXnxhuaRwQYDup64aAghAiQu8AgBygj5Qojwi9G0nz1W/es5U29gPjRcET4JRrJpysqgWPgmDpTSESyZzQJARxriHylz/dmCbwG0/7fwPmMntc/VvVEUlTUQB78VswKEU1NOaYImixkLJZqE4f2xn9shHjilzv2neW39kXpEV5COxUAk/HVeRzYYMxr8SA8SaiJ0w3x2hQTWfxTAbH/Nv3SjNkFcO+nQrAckfRZrKlSPO9egBVgKKnOcPdXFpyA==')) node.producers.append('eosio') else: node.keys.append(KeyStrings(account.ownerPublicKey, account.ownerPrivateKey, account.blsFinalizerPublicKey, account.blsFinalizerPrivateKey, account.blsFinalizerPOP)) diff --git a/tests/auto_bp_peering_test.py b/tests/auto_bp_peering_test.py index a55bdd8807..666cbd5536 100755 --- a/tests/auto_bp_peering_test.py +++ b/tests/auto_bp_peering_test.py @@ -23,6 +23,7 @@ # Parse command line arguments args = TestHelper.parse_args({ "-v", + "--activate-if", "--dump-error-details", "--leave-running", "--keep-logs", @@ -30,6 +31,7 @@ }) Utils.Debug = args.v +activateIF=args.activate_if dumpErrorDetails = args.dump_error_details keepLogs = args.keep_logs @@ -83,6 +85,7 @@ def neighbors_in_schedule(name, schedule): totalNodes=totalNodes, pnodes=producerNodes, totalProducers=producerNodes, + activateIF=activateIF, topo="./tests/auto_bp_peering_test_shape.json", extraNodeosArgs=" --plugin eosio::net_api_plugin ", specificExtraNodeosArgs=specificNodeosArgs, @@ -94,7 +97,7 @@ def neighbors_in_schedule(name, schedule): cluster.nodes[nodeId].waitForProducer( "defproduceru", exitOnError=True, timeout=300) - # retrive the producer stable producer schedule + # retrieve the producer stable producer schedule scheduled_producers = [] schedule = cluster.nodes[0].processUrllibRequest( "chain", "get_producer_schedule") @@ -103,7 +106,7 @@ def neighbors_in_schedule(name, schedule): connection_check_failures = 0 for nodeId in range(0, producerNodes): - # retrive the connections in each node and check if each only connects to their neighbors in the schedule + # retrieve the connections in each node and check if each only connects to their neighbors in the schedule connections = cluster.nodes[nodeId].processUrllibRequest( "net", "connections") peers = [] diff --git a/tests/auto_bp_peering_test_shape.json b/tests/auto_bp_peering_test_shape.json index 93192a9769..74fbfba4d2 100644 --- a/tests/auto_bp_peering_test_shape.json +++ b/tests/auto_bp_peering_test_shape.json @@ -26,7 +26,10 @@ "keys": [ { "privkey":"5Jf4sTk7vwX1MYpLJ2eQFanVvKYXFqGBrCyANPukuP2BJ5WAAKZ", - "pubkey":"EOS58B33q9S7oNkgeFfcoW3VJYu4obfDiqn5RHGE2ige6jVjUhymR" + "pubkey":"EOS58B33q9S7oNkgeFfcoW3VJYu4obfDiqn5RHGE2ige6jVjUhymR", + "blspubkey":"PUB_BLS_2QQ72DAhKOWKfnBF77AnYn3GqD0M+Yh/05tqKNhqEQ0K4ixhIZ0rKbO2UuonqGAV1KYPgLzIfRz6zMD4iWI3FhOGE+UZ4Le5cELQ3NjOBFagG51XqM8Q1lpUqNanhCoDyfFnLg==", + "blsprivkey":"PVT_BLS_XwmVWf21N/j+hYJfo5+VHN1BtMY2wmKdQ7unaX/rzk+EJ5PX", + "blspop":"SIG_BLS_jvAPOOkvw19wuEzIt1ot8tn6aLeP55XQtSIY2eP3DMcZvEcdmlWVqNI/M8VNKL8RiN2F7XrRZ6O5cPPh4f3B/XfHOyUd3UXG3p++9m0tu0jCojtWQd6wJmTIR1LQ6DUWAQwBOx8Rd70FoznDEqJS/RZBV03x9FpBDQH7VB6BYs9UztynlWrL8LZaRbi8WNwF9CDzUJJsmOmHMnZO5qcTuo/cmSgV1X03bITdQ4IGq06yExBPepIX9ZZu5XH4QCIBo/fIcg==" } ], "peers": [ @@ -42,7 +45,10 @@ "keys": [ { "privkey":"5HviUPkTEtvF2B1nm8aZUnjma2TzgpKRjuXjwHyy3FME4xDbkZF", - "pubkey":"EOS5CbcTDgbks2ptTxvyCbT9HFbzX7PDHUY2wN4DDnVBhhQr2ZNDE" + "pubkey":"EOS5CbcTDgbks2ptTxvyCbT9HFbzX7PDHUY2wN4DDnVBhhQr2ZNDE", + "blspubkey":"PUB_BLS_g86vgFO5G0bcRuaEA95kNFxnsHyzVSOthKKN8MSJ2zLWj+WfCbIBIO73OxgzjVsZarSuMQrcbVu2MktqF6PGlPkPaSuJGnES3FQ0OAfebOMAsPeAd23Ge/3+cPl2OVgXSmHdhA==", + "blsprivkey":"PVT_BLS_AtgyGDKJdQWvCNyGJgyu9bWpMS7eQE07zB2nGTlhZ0nCX11C", + "blspop":"SIG_BLS_pzPEYt1zLPVbofA1YABSPb1gJdvUdUhREa+pQsj2eTSaEBEnb+w+AwO0cQLgYSYWNWRePIUUvj5MCWqlfIU5ulBL8tqlwdCqQ0o6W915axLq2l1qnbFK/XfN9dRxdJgWPdl57bCGmoii25gdyobgLUZaJzPfivE6iQ981IgGACAb5CRdVH5hPZq8Rab1O64OclwCT/8ho8TdcKoSQj0njbAfp9JZxv5EyuAkaNIQun9rn+vH++37n+nDeV6UgCUEzex3cQ==" } ], "peers": [ @@ -57,7 +63,10 @@ "keys": [ { "privkey":"5KkQbdxFHr8Pg1N3DEMDdU7emFgUTwQvh99FDJrodFhUbbsAtQT", - "pubkey":"EOS6Tkpf8kcDfa32WA9B4nTcEJ64ZdDMSNioDcaL6rzdMwnpzaWJB" + "pubkey":"EOS6Tkpf8kcDfa32WA9B4nTcEJ64ZdDMSNioDcaL6rzdMwnpzaWJB", + "blspubkey":"PUB_BLS_PerMKMuQdZ3N6NEOoQRdlB1BztNWAeHkmzqwcFwEQGEM8QMfv3mrrepX5yM4NKQHYDnfcPIQPpDt0gCi6afvpZgN0JHT4jUaNlbfsJKtbm5mOJcqggddamCKEz2lBC0OS2D5yw==", + "blsprivkey":"PVT_BLS_n4AshIQiCqCdIOC/lGkKauVOFE2KelMb3flVvodVsji15FHW", + "blspop":"SIG_BLS_oqOzQYpJRvQ88ExpJKmwgna29eXM5umPpLmjfHcdcUUKwS3NMWwvP1hLwLcj4XcU6CuM3RzfRo6PPE2sxrp2fUWpqP0bsuamcOOyF+V6TfJMYuDbepc1Jp9HUdli3X0QE6hL+umbO2PWE4KiCSn9tj9LRyXgc41IY7R/JeQCCQSNXMSWhebdB/KCapfxq8sYEzRhXcZik+bXUDC1AcLXaocvNV6o2nKHtJwQ7YyGXCvFXgMMcQ3PWFlQ8WErmxILOM3Z/w==" } ], "peers": [ @@ -72,7 +81,10 @@ "keys": [ { "privkey":"5JxTJJegQBpEL1p77TzkN1ompMB9gDwAfjM9chPzFCB4chxmwrE", - "pubkey":"EOS52ntDHqA2qj4xVo7KmxdezMRhvvBqpZBuKYJCsgihisxmywpAx" + "pubkey":"EOS52ntDHqA2qj4xVo7KmxdezMRhvvBqpZBuKYJCsgihisxmywpAx", + "blspubkey":"PUB_BLS_6C3UlotUoDwruilh6gE+qlKsqY7VrmT6eT3aTr9fC0kZUkQRo13/xMh7MZerbBED2Rho72BLHIaWnT01LLsCFIZg9pSyHBFt3EcKa4p6OyvTkQAFxNb739EYcTVx2n8Gi0d+iw==", + "blsprivkey":"PVT_BLS_Tw2Lozr/Qw2/uf13xo6vduAWqzJnWu2o0/s9WalErmkq4RPV", + "blspop":"SIG_BLS_mrKA0CFFTP3udLsaWH67ilVf/5dcCHfzJ+P8i+dEuVg4y+td8uyghJqDxnPoitMEjjSqP12kmSZciDXqWD+uGU7nY1YeDK5Tvi7cvd1qSOuATjDuW+amc/5SKp73NLsYwqVFcIex4XF+Quu/NRfDCfLj9ZRPtmuNAUevi2iz0ExeOkQTjQhKksb9ihN+6w4Wk0vJEjt0KbbW2Ny46J+P7PbanH34X9iCV3dT+lqnyp9om0hxKJJIH2R6P5hC2d8Ry8FBAw==" } ], "peers": [ @@ -87,7 +99,10 @@ "keys": [ { "privkey":"5K3h9XiAmrx9EuqD8CRxHgQwEVDaWpqrhrnpdvwHtVzwJFMhNmE", - "pubkey":"EOS7K5pQCk22ojetRdyumrqp6nJX6eiQiTWWcGkZAMGhoBxgcsxhK" + "pubkey":"EOS7K5pQCk22ojetRdyumrqp6nJX6eiQiTWWcGkZAMGhoBxgcsxhK", + "blspubkey":"PUB_BLS_R5fu+sEP4d2me/9fsyw3lsZeflW1/IuJ9IC5jvRYFDYyzj+gt4zswFgwyp946yEO7T7AC6/NYas5HkJhSWZh2VmulmAbquNLpuXOCVHQgnV7UqV0kmsUk+ADDvx2BqkRZWJGCQ==", + "blsprivkey":"PVT_BLS_C9srbwyvmESO1TY7XMKiQnQPhkrPOS3BkJQ1rOnThEytroKB", + "blspop":"SIG_BLS_mmjqef0rliHQx16BjTcxGTmJx1huB7e2yW+wXQU54f2S5/eUpwvjqZ8nH1YFbg8ZhrAQjBUmjNDSuU80R+zP55XheXSVTpP9nozkgu4uMOZAaBPRHA/Ip2iXwl58N+YIZ3mjaiDjJUhPgty3pjSsHPsF8+K4CrmOB3X9roKbYwvf6vlPvr6253yefF97HyIOiO1pKfqVfPD0WhgdEj8/x2tLz9Mqq8+PXIpuH5AK0F4S9EKc0A9+E+IF3swf3SAJZTVFAA==" } ], "peers": [ @@ -102,7 +117,10 @@ "keys": [ { "privkey":"5KNxJ5cGoMeDiPi7raQMx1oqkuB8afJSDa5UdwrkCSC5qqt6Lbf", - "pubkey":"EOS6kAMMmvYK9etVhffMBHXXZ16B1WPKLmUZ92iY9SMPWY2vwxutH" + "pubkey":"EOS6kAMMmvYK9etVhffMBHXXZ16B1WPKLmUZ92iY9SMPWY2vwxutH", + "blspubkey":"PUB_BLS_mzlgvVwJOzKAa4Pr6o77VG6hZfNtEuHcBO1t5F4S7pLaRPKBORndeBzG5eHs6XQP8YY1NZm/j4mIi6AsonXFY5sCpUUTBxEkOIZXRM0c6N+aO2oYILs8W+s8I5qbM0wA8JiWdA==", + "blsprivkey":"PVT_BLS_g4YpsnE+m3EDYgS/D/qtsLawM6+AjMQEbgehZ3ajL0v+kE/c", + "blspop":"SIG_BLS_nAIJtkPJhnmnpt0yjvKjra909mEAnm28whF2jBk9o0fwDohxR6bN+i7QHaQDUxsK36mvqFxQPT6Itdvwa9iOzi2pLHxl4tPHwMd99W5m7esqqY7LU1TjEEYwEB5bQLQD086bZpLwaBChaUN07xjxGg70WPsvYSpYCNP1HE2/vh8CdKbVaf6GYZN41SQp7MIE8MyE9n+Tq0A9C+2rkGSaiLW6xZFwUl35YE0mA4tJX+8eq8mhZBIQK9Q4sNguS9ULOfiKXQ==" } ], "peers": [ @@ -117,7 +135,10 @@ "keys": [ { "privkey":"5KWn533nXMjUv6tYoNyV6U6UGgvC2hBprGvYhoR9Xr6cE6dJAKX", - "pubkey":"EOS5g9Db5mR5rhhEewywW79XAYzqhzt7FQcV765xwqGnwBntif9dT" + "pubkey":"EOS5g9Db5mR5rhhEewywW79XAYzqhzt7FQcV765xwqGnwBntif9dT", + "blspubkey":"PUB_BLS_rNJHlhJQhwIv/UVEQc0H+OQdgFNnz+TdskL+PdAITgcUhCh052haT+47MI+pB1kLdpOm8PuoMCjHxsbhi85rR44xuod5XeoW16VG2lFKI3btW/BeESTs80wBMxmOec4WZeHfYQ==", + "blsprivkey":"PVT_BLS_puO016gn3EvSQT6gosof+M+qqKzHq/WNRs8KtA149RcqS92k", + "blspop":"SIG_BLS_7ghSt7t2p5Ua3n6TTx74g3Mw7s59hRWqBPS9plSdIe4arnoCFuWMzhy14qwafRgM+0XeWFIAjX/vdqvZ5GMech1NpfoOykGzRy26zctyjqXhKPIjFke0cRthAFNsgX8OYHmzuLAmR9KhWeg5VouDvTHPn1PgfQcxi4wWbo1AzIDhZAr7EzrHjUwkjSqaoscFquTGWs/LB7+CR6tBWxamfMP8QLletT1GYQM88wZoW8r3qrdxEiEMK4YIhQqVpycDcD9EqA==" } ], "peers": [ @@ -132,7 +153,10 @@ "keys": [ { "privkey":"5JLyZdVL9GyhhnmFZNXB6xLWVWivsMCtxTQmDRMGj9scNebDynq", - "pubkey":"EOS6npG3MJ3UD2Dom5UCpZQ1ezJ7rZSJ9AX4cQjJvsHU23jNVGWja" + "pubkey":"EOS6npG3MJ3UD2Dom5UCpZQ1ezJ7rZSJ9AX4cQjJvsHU23jNVGWja", + "blspubkey":"PUB_BLS_Ke23VMo/9Zaj6i98jiRWWhp+EGySRFHzcu5ADR6oqkc2bFAC5lq9u2jcyiv/S/4Y5LwsREojjfV5Ldw9GQF189AXy7B9fj/uusTL+6E6w+NuvNds1HlBRKkTjiaaAloHzCI76A==", + "blsprivkey":"PVT_BLS_HOX0t+2OPd8hixcTfVFTsrofFOYOzHuIro8+E7OC6nESSMYi", + "blspop":"SIG_BLS_7VFqeZT5Xs4InYO1bc5jEL3mtBaxkql8bihMn96BM3G6+crfJUENiSa3tMZljqYBEQTahNZ+6wdqUljCx/NniDypeNGT+2+jRH3ygc0EW5SNxU8LYw2F0X9IodlUVLkAApavtBW8e5BbvuLT1xbXs9vNThOl3f1OwSdUp3/QmjbWIQQQU5zC8RC8dxHKp6wYJ9OkAKJchflNmP3V6eXjqTwVt2eJFljZVpEhi8xSxt5wRnDjqynx7QcHCENH6wYGwv8ccw==" } ], "peers": [ @@ -147,7 +171,10 @@ "keys": [ { "privkey":"5Jjkwz2aSsq6cVW74rifqQzDzs85gAEQh6MhL3stEeoY8idnwG2", - "pubkey":"EOS8NybfYVLoS2iN7oaVwxqbkfcze19enjv1HMPpg4RisF9EsSuY6" + "pubkey":"EOS8NybfYVLoS2iN7oaVwxqbkfcze19enjv1HMPpg4RisF9EsSuY6", + "blspubkey":"PUB_BLS_4DL5kzRRD87P+ef1vmJTYVBrTMZio0VVHyFzl1+HQ7iZSKfOibULym9lnEtCrmoGKGnkz+rjkUGO+cJ9HfEhoy0AIRTsweior+fsBlIWsTFXzRaLVkVHhNDqsaE2184TbkN4Ng==", + "blsprivkey":"PVT_BLS_aioeutTXN2DajfJiH5Vs9KVPPGn/iAopE30g6LuZz1MMOsb1", + "blspop":"SIG_BLS_vziPolv/jeVrbOv3qh6BRtZsJmzfES4vtwVCpEIBCR+tlZXVByh6sX5JnI8kYbwHYwhoSChVLHeskZS4FAgR5Dqpq3NhhBDkzZh3knLejxQ30GsTHKDOUpIrh7iZg5QZ5KkAAUrxyTwARXqpPV+tMvGKZ+XAlaNLqnLue9Jt6r/FACo7rDCaA7C786SylnwNrpIm1Jx+2A5rpuJw2Fk2eWxZGcLDm9jk2GK6ehoqvUxUEvHcYoCKve7XMSej5v0V2DjMHg==" } ], "peers": [ @@ -162,7 +189,10 @@ "keys": [ { "privkey":"5K233w6Hb74Q5Cz3ocRnu3svompUd7XyNmcpNkJjJRdfJmKeVM7", - "pubkey":"EOS7ay3hqpGCXn8JaDQEsYBJ12SgnkuKx2gz66o5cJmzTUZ7x5GDo" + "pubkey":"EOS7ay3hqpGCXn8JaDQEsYBJ12SgnkuKx2gz66o5cJmzTUZ7x5GDo", + "blspubkey":"PUB_BLS_oYvv3nPGtWiijGPX133YK6uNcJaWaUpIKIoWpmRDnwtA9JY35yDi4q+nfX+9rtcJVymVMdHR66qRs0X+xmvOzGbo6thFx5QEGMtnIeY0hLrxINeCmXz+ZuZR5nSf5nQRQM9biQ==", + "blsprivkey":"PVT_BLS_BwLakQIIOl0UUxo5ducOnZUn31pDGBKLK9F8YgVaiW3DJTlv", + "blspop":"SIG_BLS_t54CRgY0jzXU0/vkw839V6uhlBMHkYRs28oQqNqeNW7zmTVDq0PRGYSxBwygtq4GPRYlvljsV0LWSRZKMH6So4hjP7OMbiEyzI63AHAzX6/VQLlIlpd8GxXtYRSSTbgFA4XVs7XvSua9s10ugn742CHBNhJIj8gzH7LbiFI6k6RzrRDCT9Ufx8DbqwavHm8L0sW6JG5gqsiyFgOu6gNF9IAvOWPJMSRstExtG1n7J8iNAT3141UXMPecIGh03ucS/FFUsQ==" } ], "peers": [ @@ -177,7 +207,10 @@ "keys": [ { "privkey":"5K3T3rhvCHyL4SkiMvkehgLwo9iwwqGhYdDmM6aQKpJYkm1p65N", - "pubkey":"EOS63XTEVf3PSjNxRE7boZz3E35s1GDv2TzXfX1iapa7SJRi7T3ay" + "pubkey":"EOS63XTEVf3PSjNxRE7boZz3E35s1GDv2TzXfX1iapa7SJRi7T3ay", + "blspubkey":"PUB_BLS_3zkCiJX8se9pkCX1k3ib3uhsaHKQnELuRqmDkt690HZtJv/ZjSltHNqH+Qxaj6gNpSCJAeRASrsRaX/on2u7yTgtJoQ2dJzFu7vvGicRcNzwfYw7JIluwUV4DXKi9GUYXp5yyQ==", + "blsprivkey":"PVT_BLS_Np3rOgi0hbSjHlULuIIxYYesbsQk3AZ/+2qhLLK+aQXK2pXx", + "blspop":"SIG_BLS_B6/RPSl9U9tRjbVXdK9PfnRPyXcVJtM+FScQfDWvDEX+eXYCDt8mA3zvyNgZHe4QTinDKTm1DTQQsXTHHN1Tcqh5hm2+dNNMyjHwPV2xev/hcXrNCKMMDwdjdRu/aYgP+ZgppWfaKobj0DSID0w62Ml5Blu4pA3xWqnZ4V1+/LqSXoZ2QZwB165ssep5CUgTQc+TyH9U4K45baE9qbcPrnRRv2S7Md/5//BWVLvYHgUGACBnJDDiBbowilb1AyAVywWXPA==" } ], "peers": [ @@ -192,7 +225,10 @@ "keys": [ { "privkey":"5KFMjaCKHrTEKRNk9UTrxz3cu1vdNcVo9PsmaUX3JhNWNYmg7Ak", - "pubkey":"EOS5faXpYaxXSQM8B71jowJGTPRFiWSuemzN13mcPUBbYxk1b1VEU" + "pubkey":"EOS5faXpYaxXSQM8B71jowJGTPRFiWSuemzN13mcPUBbYxk1b1VEU", + "blspubkey":"PUB_BLS_s+4jkyUOwY/4gSgE1fmnnecHiEiNViro0NSqUvvWIUW/XHVtyOpS0zxyYBebL1cDtsjt8sEsjmkytQh/1gPd22eNCfmoR59yaC9NSaXRf3BqXrFvT0peMfc3yK4QxTIEbKn0uA==", + "blsprivkey":"PVT_BLS_/nVghJD8wLC4WRITM3Bycz8Kux3ff6fVIM0UWZ5ug1nLDhIH", + "blspop":"SIG_BLS_Ny/t6zJlHhzhG00YyAacEOzpwuBfAWcA6AnbAAkkl0nK7ItW8LxxAeDVLe0HpngXVNcCZftlm/LVc8fsN5flSRnpuGOBBZRIQuOSQdLZZ8EiubDRayXQAtHd+A69/oAWJ5EFwjiakZKnL3T7znLLhWrmDGdOWdQlphQl5MnQ12HpeUr9svImAFFcUS6GivYA6bujRC02dRh2Ti+p/ghCodVublpQS1vgJSSildNuvw167Vl/EHy7Ldr1PzksOXIB78A1cw==" } ], "peers": [ @@ -207,7 +243,10 @@ "keys": [ { "privkey":"5KgUZEsvsiBrmBXvaK4GefQkhtwXKmEpjj4ChhBcyhbZkiLJ4gV", - "pubkey":"EOS7SaD1iNagvRTsAf6mAF42cEGRiLKoQZ5gtsjoUejamW4kEmddG" + "pubkey":"EOS7SaD1iNagvRTsAf6mAF42cEGRiLKoQZ5gtsjoUejamW4kEmddG", + "blspubkey":"PUB_BLS_X4UqZnjW3wGDTXkahT2IpE/oQWCtmqSsqjT+z1HOgmLGL9MWNOgCuFVtrM/a2wgUBTdR810ufLTCYBK2GCIFbux3VXk0GMhCDdWdMIq21Nb+aV8UlQUl4HFM1Vvh78YE1Ih0PA==", + "blsprivkey":"PVT_BLS_EUwcWVgEjVmELDQfU8PTThQhER3CywkOE9nK1mKoCyMZptSL", + "blspop":"SIG_BLS_VwIfZQ2ZGFH3ixgav6SvORPKyCXlK67LAB+Gh3z7XqV8kvRLFIhyBTn/4o0ZVEsZdmvTB7LESScw/OmZfhKKSCI/wL+A65CrIKHHI16M4LgGwXOlIomcRN24jaej1FwL3iq+X/1liyHlbUy4SRPJtDHScThkBFdnCyp6w7KjYp/l4qLMQzfAP1quv0McCFAN3ZY4xnk91VzKUhUXfrhcdvEiLgBK9w8iSpN5HkNI6gzMVsGeIMSYE+4fG8aoLWcVrFec8g==" } ], "peers": [ @@ -222,7 +261,10 @@ "keys": [ { "privkey":"5KAKiYtrxrhZzeiF2tb2kgyupdStyPcnZ7dfPQDUc9BLG6vigjc", - "pubkey":"EOS8gxmMjQD55oZmTfD5yBD2yPYQ4bRrJ16VVMkguRXroJK2FVWrt" + "pubkey":"EOS8gxmMjQD55oZmTfD5yBD2yPYQ4bRrJ16VVMkguRXroJK2FVWrt", + "blspubkey":"PUB_BLS_g2MIIdBynuUoUzNNgqAXQWO4BhyiIc/OeK2Ua1C2HydYdAdKgNyA9tSgkEpHHngKPqIsPaIgEX+heYvCUfpFucr4hSjV10lHHDWH2dJaOt+ovaXKFRhisbLs/z8tqhUT8ZQhxQ==", + "blsprivkey":"PVT_BLS_IgI19hZPymLgGfkiFUokvWp+MZ/kwZI+ocxXhT0x6iLi5PiI", + "blspop":"SIG_BLS_jVLa9rx+lbGPvsoLnoa814Xgf0w4CfNSxjT6+kgN16uMU0b1B0/ZSCz7JsIp8GsGN4IS8wUFL83fvRTnU9oFBMKvRv892swHEYWnGGIKR61xNrlaZmsIlK1JJUgcWkwIdWbz/Jx63eajOTNMArzds0L8rD2f983o1f7XSIl7u3Ggcw7oLSvmVNQiR6Dnm+oGsi7HEvSrj1SE4Ju7WslTJ6UhnhgSJVloJ3eNwhKhiqmpTnFZbwpVntev5kEt9EYWvT+H1w==" } ], "peers": [ @@ -237,7 +279,10 @@ "keys": [ { "privkey":"5HsYvqVcuHkddyZF9h7iR4YxUMUmvoz3CRetNb4GveiRkehNpK6", - "pubkey":"EOS5JcdUMhAgBTiXpry8xzFNeMhJH36ULjLYCe3Gj8Fy4r2kEJW52" + "pubkey":"EOS5JcdUMhAgBTiXpry8xzFNeMhJH36ULjLYCe3Gj8Fy4r2kEJW52", + "blspubkey":"PUB_BLS_dY09ToDbjuEuBI4l229tL8gmCPtaSXN/5jhScIID8+VJOLSKm8XImmsR0Aye8DMFBtM3RIJOd3T3LOfRojPBfhTi3fM0LjopSo3nCGIrpqNVylkqx2mFBQa45mCw+rASd6fc1A==", + "blsprivkey":"PVT_BLS_uQWbffjpl3NLhG34pzZfqWpVGaldFg1YzdoONwBpPmzcuH/z", + "blspop":"SIG_BLS_XOGo68vGcVRvFyj5odE3mwrEqndBwWbEadVp9kOHJxQgD8P7swxMqrVWcKMOXocC6OCG5u05EU8AlYMh7W1obZLJS2qfnfpPMWcRAFpIH9lM9Kloj6oyxQhvdt9OoiIUen2c8wTgHO/ngcuvSMOX33oopEDL5wNd3oGz6zKEha6qZEhF/X17E6azmzcYv7IMssYGFByUziqOoN+v37leuWNLOBvXCLSXC19iMfDFxRyzGK82Om0sH2pd4JJ5WQ8JsNdXXg==" } ], "peers": [ @@ -252,7 +297,10 @@ "keys": [ { "privkey":"5KA9YksaqmuwAU4WRUFEuHHbm2oXURZWNi5EmHXow4MrzZakAUf", - "pubkey":"EOS6dG5iBiVUenpni6FMCa5KPjYF2DcTXVbUTywAnQx9XQwz58Wg5" + "pubkey":"EOS6dG5iBiVUenpni6FMCa5KPjYF2DcTXVbUTywAnQx9XQwz58Wg5", + "blspubkey":"PUB_BLS_+Dc2uH8q2h6SEOIUtK13leSEjqsdvuOTpCMq+NqS7UmF0WH2jjg03Lt83mTJIVkZllt94UC2KsLAsvPZgmPYDNlu+o6W58TmF1gODm8A07P9qEHAuF5NPs8nQA/v4HUF0ugeCA==", + "blsprivkey":"PVT_BLS_3z3xLI5sAYKLKAp8roQBQacOldmkYLjMxWJPaTPPrHOPUurB", + "blspop":"SIG_BLS_sdadC/jUH9kE10xV0bjL8+jSuyrdqloHDzzDWKtcZ2PKMHSOZUEkv+xYasjWbK8Ms3sL6mBu3hR3Cy7r0yAiVsrfcEXFi9yqdAXpf3wcylkhHn557WBiWtR8rgqJLV8Ntxp7MoPiSZ67fe/jxwdrWi3gMmuie9iJ0V0vvAhPrg2Jz/fXdKmPzbwOfXEmzFoFt1LPxVXzgEr4ivmMyA6qkZ5DRZ1k/IgQtdnW7DsZKXwCtEY33aq4OVM+GdurIC8D1Npq4A==" } ], "peers": [ @@ -267,7 +315,10 @@ "keys": [ { "privkey":"5JUV8ELodV2N31nYpfkzjyzNTqSSJEW7A33yvC9vfcFEDsV2UJj", - "pubkey":"EOS5S4ECoqLgv1GK4NrAhdnv2TzteLEquGnurCbHX74v4mn4Z3bgY" + "pubkey":"EOS5S4ECoqLgv1GK4NrAhdnv2TzteLEquGnurCbHX74v4mn4Z3bgY", + "blspubkey":"PUB_BLS_x6zV19LZQDvAWUBCRHaOMEetFrYowz3kh0D9SgnLoy90KNpJmDs846hqb269EJ8EqcN4IKXV45/F+HvtwrdwYE3q7Wzr2SyGzaP++vvzPkEjAoUw+WfXCQKrt/SzM0IEXvzQNA==", + "blsprivkey":"PVT_BLS_9CancPk8azgD+5fwlkwF6X6RYE7gEE+ttDwoNQbj6Do4evA7", + "blspop":"SIG_BLS_ASM+N/I7e0WVM9I3gKZMoZR6Y4tKrFOlbGjUITn2DApp7QIqRvxYMlhMiX87AnME0z4VH9RrFS6z6RT+DuhtGB4B3iLj/9FczN/YY6hhHT9lPOpaaPg+oJWAHq+ks3cMpMZOPub8IdDxt7/C+Yxna176LZFAHgo2ytSu6dqujoiq3YL8TZtmi/UaB3KZnkcYVswcgyr6x8VkjtNHmmqAp6fnrWI5bm6Re6/TGXRJOYwwvKDI5WnkKVhrSQKR2n4Sr28YZw==" } ], "peers": [ @@ -282,7 +333,10 @@ "keys": [ { "privkey":"5KAx38nXk4Rck1XefFW8w7vPgzELVeieYUuCjeZJfPoi2jh2s2C", - "pubkey":"EOS5z4bsFKN14vJesR86ARJ2AvMaS4n39eE7ngKM3B38bYBCrLbZn" + "pubkey":"EOS5z4bsFKN14vJesR86ARJ2AvMaS4n39eE7ngKM3B38bYBCrLbZn", + "blspubkey":"PUB_BLS_ezWZ/Xx+SHahvgfyKnpXtcZmg/r+hC0fWa49f1GHCmffmcyJu9LHn8pEoFKn3moM9rvG65IJQ22tzgdo3zbN5NxZoAqBIXRmCmWdXdQUg+24jGVnJP/SoobnH18i4zsIPTVHbA==", + "blsprivkey":"PVT_BLS_1usu9agu2+LRi0Oydi1ch33NnS69d2rqaz28SxSwoG0cug0S", + "blspop":"SIG_BLS_M03lEaVS7pnR5Yb+8hWFhLu8Hs9iC/YW+A3BLC/wQhM6vdU7WWMooJZ2vkqq3g8KnsrmALsErOzA9HVdbDe9fuatwIQJoBzaLsGg2Jf/UKuLAqtvbhSg0RogCMcJ5bIQlHKkgcgWBaRj5I+jhprrydNEZmysf+R4K0+e3sDrQ4nsyrYbfyV4+WIH35LuZiwGcTmRwmw/y/JDV2HGy3+iSHfR0XJ/vpsc1nSAcxUa5yr6XP0ikTzHXZP575tP1QEJpZRjWQ==" } ], "peers": [ @@ -297,7 +351,10 @@ "keys": [ { "privkey":"5KhyQJFLkqtxrFyKtpEng9c8N5dD7gB4Q5q8LQL78e8J12LCiTz", - "pubkey":"EOS67KLwTrR9QYnUP6ETCcp4HyTits5VKALouRcnBkCuaRv7m6zg5" + "pubkey":"EOS67KLwTrR9QYnUP6ETCcp4HyTits5VKALouRcnBkCuaRv7m6zg5", + "blspubkey":"PUB_BLS_XY2ZdVr+YYeA6D1FjzqbTcfScGuVoh/OCHJTG815MhnO9kg2PUIXFT2VKi1INOMRAFUgz02weq3HQvzKNEm53bV+9paIqIO8Jzp8Isoh8gZlwdQhHMxnnUNnOVuftdkEYNyRBA==", + "blsprivkey":"PVT_BLS_wsvBRU8vAwpUkNHNviqh5M5njIPgZBeItQhx2V2AGyJlbsZB", + "blspop":"SIG_BLS_1Vx448M9mj9woG6ZLWTC6HfDihfK2E+skqfWrMBFYz1XM/QszwiJkZeNIUjgw08TJIj9V9qxJNuCus7cZbE3LRjlNNyEX2Y/NG2vTrGczxoEsX8JJku5zA2EiJyEV+sT/fHDTquvAoEo+weBsypiIrxu0b/0ZyGVWVzxIW/rmr/tRfjkGlqGBk/wnY/C7qIEFxVDuOTIjgKAXMm/3x+oZa06IqNSXxhJNjTn9eTyC+wGtWFWKpqb9u7DhQXo7rMNifiFwA==" } ], "peers": [ @@ -312,7 +369,10 @@ "keys": [ { "privkey":"5KRT1XwAy8RPFwH2SkwZdzACt6JaeFRefVTy4aBBLj9VtRzdcqH", - "pubkey":"EOS5tDpQJoHc4Y6cy4FapHdUCEXmZ4qwq3EF9q94c63dN2bNQWvj5" + "pubkey":"EOS5tDpQJoHc4Y6cy4FapHdUCEXmZ4qwq3EF9q94c63dN2bNQWvj5", + "blspubkey":"PUB_BLS_cwCKNO9Wg92QTOmugc7Uprz5btuUtSozRK+nQ55pVHdpFmNVVMfmQ13JlzAuJOgOaZRTQjUXZv2ixRgwyrJf5ma/q4ZWI9mF2KWHLz+YQGqAqGvkIkIgEOo+usYygXcW27KtVA==", + "blsprivkey":"PVT_BLS_IYNPpij9OFAhC81wG9ETvgkapFsJtz0CEAXV9lUzJHKVaiGm", + "blspop":"SIG_BLS_ZmM1tKfSGBH3bKWiJU4TunQIgTGMTknmy/0QFNmmaELqFrK4ke4DCaDpm+epJyQUWodHzYMr6XoPCa5dDf7fDurgdEtQgLuHMGJClz9S12hoaRGkDAS5ANS3O4oYJKMYUU3bFNtl9shBJi0o4VBYaLjdYVG9vNHp20wpoU+UYwHamC2InXWOiQ9BIQ1eVhEPruf5+/GdRBwGLnHynnXGhQ1rIv6psVE7RqKF6BK5Q1CifshmDg0U7ZiNozuneLIOAUSkXA==" } ], "peers": [ @@ -327,7 +387,10 @@ "keys": [ { "privkey":"5J7Jg9E17ae1dAunZSMMtDKE1r1XtrmBKWmU4DGa7atZXCpy1RE", - "pubkey":"EOS5NhoG6oyNdGdbujArjVPMTviym3ygrYJ7ttBRcfCJdrxLrXqAV" + "pubkey":"EOS5NhoG6oyNdGdbujArjVPMTviym3ygrYJ7ttBRcfCJdrxLrXqAV", + "blspubkey":"PUB_BLS_RWX8p32dBXAujzYM3X3nfj7wazMhp/1wvl7m06YsSmS2tSGX+MAJIwV3suklx0kK1Ye605XKfEIGTGQlAdAR/QrxuULMqDSWPSD7xskw2xqJg3xpFe+VUTs1f/9jBeIMMhdO8Q==", + "blsprivkey":"PVT_BLS_A1PVjrK/67D5MTHt5Qja6OBS68MTuFA1lDoskeFGqglNdrtR", + "blspop":"SIG_BLS_UaUg8HAyjB3WLO6Q43Xw7t13ZM6QM91sj1voB2Q0WiubPrv5xtgTkbTKa/K4ULgRRzwvT4kmxq0+XozdqaKs+zd0JBTH+T3BM2d/wiuQ1C85wnsfHy8YI6TZf9VOBegOARi8AE3nrfHbon1mixbxJIpmpo3+9TTlAyeIGuNdHWk48ZRt6g6QREKFT2RF2BAQBtLTzmL3sBoWcS1OqLAk4pRWqh4dExu5EHZde0Lt+cpZaQdyX3KKytKHez55LCkNaEmgsg==" } ], "peers": [ diff --git a/tests/block_log_retain_blocks_test.py b/tests/block_log_retain_blocks_test.py index f9d592c46f..50b4fbf9cd 100755 --- a/tests/block_log_retain_blocks_test.py +++ b/tests/block_log_retain_blocks_test.py @@ -19,9 +19,10 @@ Print=Utils.Print errorExit=Utils.errorExit -args=TestHelper.parse_args({"--keep-logs" ,"--dump-error-details","-v","--leave-running","--unshared"}) +args=TestHelper.parse_args({"--keep-logs","--activate-if","--dump-error-details","-v","--leave-running","--unshared"}) debug=args.v dumpErrorDetails=args.dump_error_details +activateIF=args.activate_if seed=1 Utils.Debug=debug @@ -47,7 +48,7 @@ specificExtraNodeosArgs[1]=f' --block-log-retain-blocks 10 ' Print("Stand up cluster") - if cluster.launch(pnodes=pnodes, totalNodes=total_nodes, specificExtraNodeosArgs=specificExtraNodeosArgs) is False: + if cluster.launch(pnodes=pnodes, totalNodes=total_nodes, activateIF=activateIF, specificExtraNodeosArgs=specificExtraNodeosArgs) is False: errorExit("Failed to stand up eos cluster.") Print ("Wait for Cluster stabilization") diff --git a/tests/block_log_util_test.py b/tests/block_log_util_test.py index 042e1467aa..4cb8648190 100755 --- a/tests/block_log_util_test.py +++ b/tests/block_log_util_test.py @@ -29,9 +29,10 @@ def verifyBlockLog(expected_block_num, trimmedBlockLog): appArgs=AppArgs() -args = TestHelper.parse_args({"--dump-error-details","--keep-logs","-v","--leave-running","--unshared"}) +args = TestHelper.parse_args({"--activate-if","--dump-error-details","--keep-logs","-v","--leave-running","--unshared"}) Utils.Debug=args.v pnodes=2 +activateIF=args.activate_if dumpErrorDetails=args.dump_error_details cluster=Cluster(unshared=args.unshared, keepRunning=args.leave_running, keepLogs=args.keep_logs) prodCount=2 @@ -49,7 +50,7 @@ def verifyBlockLog(expected_block_num, trimmedBlockLog): cluster.setWalletMgr(walletMgr) Print("Stand up cluster") - if cluster.launch(prodCount=prodCount, onlyBios=False, pnodes=pnodes, totalNodes=totalNodes, totalProducers=pnodes*prodCount) is False: + if cluster.launch(prodCount=prodCount, onlyBios=False, pnodes=pnodes, totalNodes=totalNodes, totalProducers=pnodes*prodCount, activateIF=activateIF) is False: Utils.errorExit("Failed to stand up eos cluster.") Print("Validating system accounts after bootstrap") diff --git a/tests/cluster_launcher.py b/tests/cluster_launcher.py index 4a0d450daa..ec4734ff71 100755 --- a/tests/cluster_launcher.py +++ b/tests/cluster_launcher.py @@ -17,8 +17,8 @@ appArgs = AppArgs() appArgs.add(flag="--plugin",action='append',type=str,help="Run nodes with additional plugins") -args=TestHelper.parse_args({"-p","-n","-d","-s","--keep-logs","--prod-count" - ,"--dump-error-details","-v","--leave-running" +args=TestHelper.parse_args({"-p","-n","-d","-s","--keep-logs","--prod-count", + "--activate-if","--dump-error-details","-v","--leave-running" ,"--unshared"}, applicationSpecificArgs=appArgs) pnodes=args.p @@ -26,6 +26,7 @@ topo=args.s debug=args.v prod_count = args.prod_count +activateIF=args.activate_if total_nodes=args.n if args.n > 0 else pnodes dumpErrorDetails=args.dump_error_details @@ -48,7 +49,7 @@ else: extraNodeosArgs = '' if cluster.launch(pnodes=pnodes, totalNodes=total_nodes, prodCount=prod_count, topo=topo, delay=delay, - extraNodeosArgs=extraNodeosArgs) is False: + activateIF=activateIF, extraNodeosArgs=extraNodeosArgs) is False: errorExit("Failed to stand up eos cluster.") testSuccessful=True diff --git a/tests/compute_transaction_test.py b/tests/compute_transaction_test.py index e257c3fb37..6488ee59e8 100755 --- a/tests/compute_transaction_test.py +++ b/tests/compute_transaction_test.py @@ -55,7 +55,7 @@ Print("Stand up cluster") extraNodeosArgs=" --http-max-response-time-ms 990000 --disable-subjective-api-billing false " - if cluster.launch(pnodes=pnodes, totalNodes=total_nodes, topo=topo, delay=delay,extraNodeosArgs=extraNodeosArgs ) is False: + if cluster.launch(pnodes=pnodes, totalNodes=total_nodes, activateIF=True, topo=topo, delay=delay,extraNodeosArgs=extraNodeosArgs ) is False: errorExit("Failed to stand up eos cluster.") Print ("Wait for Cluster stabilization") diff --git a/tests/get_account_test.py b/tests/get_account_test.py index c691c9a3a2..dd264a075a 100755 --- a/tests/get_account_test.py +++ b/tests/get_account_test.py @@ -55,7 +55,7 @@ Print("Stand up cluster") extraNodeosArgs=" --http-max-response-time-ms 990000 --disable-subjective-api-billing false " - if cluster.launch(pnodes=pnodes, totalNodes=total_nodes, topo=topo, delay=delay,extraNodeosArgs=extraNodeosArgs ) is False: + if cluster.launch(pnodes=pnodes, totalNodes=total_nodes, activateIF=True, topo=topo, delay=delay,extraNodeosArgs=extraNodeosArgs ) is False: errorExit("Failed to stand up eos cluster.") Print ("Wait for Cluster stabilization") diff --git a/tests/large-lib-test.py b/tests/large-lib-test.py index 6c5138b4b1..f49fac33e7 100755 --- a/tests/large-lib-test.py +++ b/tests/large-lib-test.py @@ -19,12 +19,13 @@ Print=Utils.Print errorExit=Utils.errorExit -args=TestHelper.parse_args({"--kill-sig","--kill-count","--keep-logs" - ,"--dump-error-details","-v","--leave-running","--unshared" +args=TestHelper.parse_args({"--kill-sig","--kill-count","--keep-logs", + "--activate-if","--dump-error-details","-v","--leave-running","--unshared" }) pnodes=1 total_nodes=3 # first one is producer, and last two are speculative nodes debug=args.v +activateIF=args.activate_if dumpErrorDetails=args.dump_error_details relaunchTimeout=10 # Don't want to set too big, trying to reduce test time, but needs to be large enough for test to finish before @@ -55,6 +56,8 @@ def relaunchNode(node: Node, chainArg="", skipGenesis=True, relaunchAssertMessag pnodes=pnodes, totalNodes=total_nodes, totalProducers=1, + activateIF=activateIF, + biosFinalizer=False, topo="mesh") is False: errorExit("Failed to stand up eos cluster.") diff --git a/tests/light_validation_sync_test.py b/tests/light_validation_sync_test.py index df6e2e95d2..9e49b85464 100755 --- a/tests/light_validation_sync_test.py +++ b/tests/light_validation_sync_test.py @@ -18,9 +18,10 @@ ############################################################### # Parse command line arguments -args = TestHelper.parse_args({"-v","--dump-error-details","--leave-running","--keep-logs","--unshared"}) +args = TestHelper.parse_args({"-v","--activate-if","--dump-error-details","--leave-running","--keep-logs","--unshared"}) Utils.Debug = args.v dumpErrorDetails=args.dump_error_details +activateIF=args.activate_if dontKill=args.leave_running keepLogs=args.keep_logs @@ -37,6 +38,7 @@ totalProducers=1, totalNodes=2, loadSystemContract=False, + activateIF=activateIF, specificExtraNodeosArgs={ 1:"--validation-mode light"}) diff --git a/tests/nested_container_multi_index_test.py b/tests/nested_container_multi_index_test.py index 442fadb14a..59001eb48b 100755 --- a/tests/nested_container_multi_index_test.py +++ b/tests/nested_container_multi_index_test.py @@ -69,7 +69,7 @@ def create_action(action, data, contract_account, usr): (pnodes, total_nodes-pnodes, topo, delay)) Print("Stand up cluster") - if cluster.launch(pnodes=1, totalNodes=1) is False: + if cluster.launch(pnodes=1, totalNodes=1, activateIF=True) is False: errorExit("Failed to stand up eos cluster.") Print ("Wait for Cluster stabilization") diff --git a/tests/nodeos_chainbase_allocation_test.py b/tests/nodeos_chainbase_allocation_test.py index 3285413b0a..cfc65f7197 100755 --- a/tests/nodeos_chainbase_allocation_test.py +++ b/tests/nodeos_chainbase_allocation_test.py @@ -16,9 +16,10 @@ ############################################################### # Parse command line arguments -args = TestHelper.parse_args({"-v","--dump-error-details","--leave-running","--keep-logs","--unshared"}) +args = TestHelper.parse_args({"-v","--activate-if","--dump-error-details","--leave-running","--keep-logs","--unshared"}) Utils.Debug = args.v dumpErrorDetails=args.dump_error_details +activateIF=args.activate_if walletMgr=WalletMgr(True) cluster=Cluster(unshared=args.unshared, keepRunning=args.leave_running, keepLogs=args.keep_logs) @@ -43,6 +44,7 @@ prodCount=1, totalProducers=1, totalNodes=3, + activateIF=activateIF, loadSystemContract=False, specificExtraNodeosArgs={ 1:"--read-mode irreversible --plugin eosio::producer_api_plugin"}) diff --git a/tests/nodeos_contrl_c_test.py b/tests/nodeos_contrl_c_test.py index e379a6bf0f..97c72c7944 100755 --- a/tests/nodeos_contrl_c_test.py +++ b/tests/nodeos_contrl_c_test.py @@ -18,7 +18,7 @@ Print = Utils.Print errorExit=Utils.errorExit -args = TestHelper.parse_args({"--wallet-port", "-v","--unshared"}) +args = TestHelper.parse_args({"--wallet-port","--activate-if","-v","--unshared"}) cluster=Cluster(unshared=args.unshared) totalProducerNodes=2 @@ -26,6 +26,7 @@ totalNodes=totalProducerNodes+totalNonProducerNodes maxActiveProducers=2 totalProducers=maxActiveProducers +activateIF=args.activate_if walletPort=args.wallet_port walletMgr=WalletMgr(True, port=walletPort) producerEndpoint = '127.0.0.1:8888' @@ -51,6 +52,7 @@ if cluster.launch(prodCount=1, topo="bridge", pnodes=totalProducerNodes, totalNodes=totalNodes, totalProducers=totalProducers, + activateIF=activateIF, specificExtraNodeosArgs=specificExtraNodeosArgs, extraNodeosArgs=extraNodeosArgs) is False: Utils.cmdError("launcher") diff --git a/tests/nodeos_extra_packed_data_test.py b/tests/nodeos_extra_packed_data_test.py index 3ac0b71007..b816183fbd 100755 --- a/tests/nodeos_extra_packed_data_test.py +++ b/tests/nodeos_extra_packed_data_test.py @@ -8,9 +8,9 @@ from TestHarness.TestHelper import AppArgs ############################################################### -# nodeos_run_test +# nodeos_extra_packed_data_test # -# General test that tests a wide range of general use actions around nodeos and keosd +# Tests nodeos accepts trx with extra data packed at the end. # ############################################################### @@ -69,6 +69,7 @@ if cluster.launch(totalNodes=totalNodes, pnodes=pnodes, dontBootstrap=dontBootstrap, + activateIF=True, specificExtraNodeosArgs=specificExtraNodeosArgs, associatedNodeLabels=associatedNodeLabels) is False: cmdError("launcher") diff --git a/tests/nodeos_forked_chain_test.py b/tests/nodeos_forked_chain_test.py index d70a0387c4..e4efc3dd64 100755 --- a/tests/nodeos_forked_chain_test.py +++ b/tests/nodeos_forked_chain_test.py @@ -127,7 +127,7 @@ def getMinHeadAndLib(prodNodes): appArgs = AppArgs() extraArgs = appArgs.add(flag="--num-ship-clients", type=int, help="How many ship_streamers should be started", default=2) -args = TestHelper.parse_args({"--prod-count","--dump-error-details","--keep-logs","-v","--leave-running", +args = TestHelper.parse_args({"--prod-count","--activate-if","--dump-error-details","--keep-logs","-v","--leave-running", "--wallet-port","--unshared"}, applicationSpecificArgs=appArgs) Utils.Debug=args.v totalProducerNodes=2 @@ -135,6 +135,7 @@ def getMinHeadAndLib(prodNodes): totalNodes=totalProducerNodes+totalNonProducerNodes maxActiveProducers=21 totalProducers=maxActiveProducers +activateIF=args.activate_if dumpErrorDetails=args.dump_error_details prodCount=args.prod_count walletPort=args.wallet_port @@ -166,7 +167,7 @@ def getMinHeadAndLib(prodNodes): # and the only connection between those 2 groups is through the bridge node if cluster.launch(prodCount=prodCount, topo="bridge", pnodes=totalProducerNodes, - totalNodes=totalNodes, totalProducers=totalProducers, + totalNodes=totalNodes, totalProducers=totalProducers, activateIF=activateIF, biosFinalizer=False, specificExtraNodeosArgs=specificExtraNodeosArgs) is False: Utils.cmdError("launcher") Utils.errorExit("Failed to stand up eos cluster.") diff --git a/tests/nodeos_high_transaction_test.py b/tests/nodeos_high_transaction_test.py index 0b0550408a..6f99cc6348 100755 --- a/tests/nodeos_high_transaction_test.py +++ b/tests/nodeos_high_transaction_test.py @@ -27,7 +27,7 @@ extraArgs = appArgs.add(flag="--max-transactions-per-second", type=int, help="How many transactions per second should be sent", default=500) extraArgs = appArgs.add(flag="--total-accounts", type=int, help="How many accounts should be involved in sending transfers. Must be greater than %d" % (minTotalAccounts), default=100) extraArgs = appArgs.add_bool(flag="--send-duplicates", help="If identical transactions should be sent to all nodes") -args = TestHelper.parse_args({"-p", "-n","--dump-error-details","--keep-logs","-v","--leave-running","--unshared"}, applicationSpecificArgs=appArgs) +args = TestHelper.parse_args({"-p", "-n","--activate-if","--dump-error-details","--keep-logs","-v","--leave-running","--unshared"}, applicationSpecificArgs=appArgs) Utils.Debug=args.v totalProducerNodes=args.p @@ -37,6 +37,7 @@ totalNonProducerNodes=totalNodes-totalProducerNodes maxActiveProducers=totalProducerNodes totalProducers=totalProducerNodes +activateIF=args.activate_if dumpErrorDetails=args.dump_error_details cluster=Cluster(unshared=args.unshared, keepRunning=args.leave_running, keepLogs=args.keep_logs) walletPort=TestHelper.DEFAULT_WALLET_PORT @@ -70,7 +71,7 @@ if cluster.launch(pnodes=totalProducerNodes, totalNodes=totalNodes, totalProducers=totalProducers, - topo="ring") is False: + topo="ring", activateIF=activateIF) is False: Utils.cmdError("launcher") Utils.errorExit("Failed to stand up eos cluster.") diff --git a/tests/nodeos_irreversible_mode_test.py b/tests/nodeos_irreversible_mode_test.py index 812e338695..dd60f6e1f9 100755 --- a/tests/nodeos_irreversible_mode_test.py +++ b/tests/nodeos_irreversible_mode_test.py @@ -24,8 +24,9 @@ totalNodes = 20 # Parse command line arguments -args = TestHelper.parse_args({"-v","--dump-error-details","--leave-running","--keep-logs","--unshared"}) +args = TestHelper.parse_args({"-v","--activate-if","--dump-error-details","--leave-running","--keep-logs","--unshared"}) Utils.Debug = args.v +activateIF=args.activate_if dumpErrorDetails=args.dump_error_details speculativeReadMode="head" blockLogRetainBlocks="10000" @@ -164,6 +165,7 @@ def relaunchNode(node: Node, chainArg="", addSwapFlags=None, relaunchAssertMessa totalProducers=numOfProducers, totalNodes=totalNodes, pnodes=1, + activateIF=activateIF, topo="mesh", specificExtraNodeosArgs={ 0:"--enable-stale-production", diff --git a/tests/nodeos_producer_watermark_test.py b/tests/nodeos_producer_watermark_test.py index b39aa4925d..86decc9b3f 100755 --- a/tests/nodeos_producer_watermark_test.py +++ b/tests/nodeos_producer_watermark_test.py @@ -147,11 +147,12 @@ def verifyProductionRounds(trans, node, prodsActive, rounds): Print=Utils.Print errorExit=Utils.errorExit -args = TestHelper.parse_args({"--prod-count","--dump-error-details","--keep-logs","-v","--leave-running", +args = TestHelper.parse_args({"--prod-count","--activate-if","--dump-error-details","--keep-logs","-v","--leave-running", "--wallet-port","--unshared"}) Utils.Debug=args.v totalNodes=3 cluster=Cluster(unshared=args.unshared, keepRunning=args.leave_running, keepLogs=args.keep_logs) +activateIF=args.activate_if dumpErrorDetails=args.dump_error_details prodCount=args.prod_count walletPort=args.wallet_port @@ -169,7 +170,8 @@ def verifyProductionRounds(trans, node, prodsActive, rounds): cluster.setWalletMgr(walletMgr) Print("Stand up cluster") - if cluster.launch(prodCount=prodCount, onlyBios=False, pnodes=totalNodes, totalNodes=totalNodes, totalProducers=totalNodes, onlySetProds=True, sharedProducers=1) is False: + if cluster.launch(prodCount=prodCount, onlyBios=False, pnodes=totalNodes, totalNodes=totalNodes, totalProducers=totalNodes, + onlySetProds=True, sharedProducers=1, activateIF=activateIF) is False: Utils.cmdError("launcher") Utils.errorExit("Failed to stand up eos cluster.") diff --git a/tests/nodeos_read_terminate_at_block_test.py b/tests/nodeos_read_terminate_at_block_test.py index aace1a5645..6f34e19b4f 100755 --- a/tests/nodeos_read_terminate_at_block_test.py +++ b/tests/nodeos_read_terminate_at_block_test.py @@ -24,6 +24,7 @@ # Parse command line arguments args = TestHelper.parse_args({ "-v", + "--activate-if", "--dump-error-details", "--leave-running", "--keep-logs", @@ -31,6 +32,7 @@ }) Utils.Debug = args.v +activateIF=args.activate_if dumpErrorDetails = args.dump_error_details # Wrapper function to execute test @@ -195,6 +197,7 @@ def checkHeadOrSpeculative(head, lib): totalNodes=totalNodes, pnodes=1, topo="mesh", + activateIF=activateIF, specificExtraNodeosArgs=specificNodeosArgs, ) diff --git a/tests/trx_generator/main.cpp b/tests/trx_generator/main.cpp index fab8fba31c..2ca977e14e 100644 --- a/tests/trx_generator/main.cpp +++ b/tests/trx_generator/main.cpp @@ -203,6 +203,7 @@ int main(int argc, char** argv) { et::trx_tps_tester tester{generator, monitor, tester_config}; if (!tester.run()) { + wlog("Exiting main with OTHER_FAIL"); return OTHER_FAIL; } } else { @@ -212,14 +213,16 @@ int main(int argc, char** argv) { et::trx_tps_tester tester{generator, monitor, tester_config}; if (!tester.run()) { + wlog("Exiting main with OTHER_FAIL"); return OTHER_FAIL; } } if (monitor->terminated_early()) { + wlog("Exiting main with TERMINATED_EARLY"); return TERMINATED_EARLY; } - - return SUCCESS; + ilog("Exiting main SUCCESS"); + return SUCCESS; }