From d7e1277ed2f21f8c53c4facd3b5ec5a206a2ed97 Mon Sep 17 00:00:00 2001 From: Julien Maffre <42961061+jumaffre@users.noreply.github.com> Date: Fri, 18 Feb 2022 15:42:26 +0000 Subject: [PATCH] Infra split network start and open (#3566) --- tests/code_update.py | 2 +- tests/committable.py | 2 +- tests/connections.py | 2 +- tests/e2e_batched.py | 4 ++-- tests/e2e_common_endpoints.py | 2 +- tests/e2e_logging.py | 2 +- tests/e2e_operations.py | 4 ++-- tests/e2e_suite.py | 2 +- tests/e2e_tutorial.py | 2 +- tests/election.py | 2 +- tests/governance.py | 4 ++-- tests/governance_history.py | 2 +- tests/historical_query_perf.py | 2 +- tests/infra/consortium.py | 2 +- tests/infra/network.py | 17 ++++++++++++----- tests/infra/runner.py | 2 +- .../custom_authorization.py | 10 +++++----- tests/js-launch-host-process/host_process.py | 2 +- tests/js-modules/modules.py | 2 +- tests/jwt_test.py | 6 +++--- tests/lts_compatibility.py | 4 ++-- tests/memberclient.py | 2 +- tests/membership.py | 8 ++++---- tests/partitions_test.py | 4 ++-- tests/reconfiguration.py | 6 +++--- tests/recovery.py | 2 +- tests/rotation.py | 2 +- tests/schema.py | 4 ++-- tests/start_network.py | 2 +- tests/tlstest.py | 2 +- tests/vegeta_stress.py | 2 +- 31 files changed, 59 insertions(+), 52 deletions(-) diff --git a/tests/code_update.py b/tests/code_update.py index fe5e34ab7345..212787f078da 100644 --- a/tests/code_update.py +++ b/tests/code_update.py @@ -182,7 +182,7 @@ def run(args): with infra.network.network( args.nodes, args.binary_dir, args.debug_nodes, args.perf_nodes, pdb=args.pdb ) as network: - network.start_and_join(args) + network.start_and_open(args) test_verify_quotes(network, args) test_add_node_with_bad_code(network, args) diff --git a/tests/committable.py b/tests/committable.py index 34c2cf8a787d..06588d685112 100644 --- a/tests/committable.py +++ b/tests/committable.py @@ -42,7 +42,7 @@ def run(args): with infra.network.network( hosts, args.binary_dir, args.debug_nodes, args.perf_nodes, pdb=args.pdb ) as network: - network.start_and_join(args) + network.start_and_open(args) primary, backups = network.find_nodes() # Suspend three of the backups to prevent commit diff --git a/tests/connections.py b/tests/connections.py index efb5e94bcf4f..62f8fb86f486 100644 --- a/tests/connections.py +++ b/tests/connections.py @@ -72,7 +72,7 @@ def run(args): args.nodes, args.binary_dir, args.debug_nodes, args.perf_nodes, pdb=args.pdb ) as network: check = infra.checker.Checker() - network.start_and_join(args) + network.start_and_open(args) primary, _ = network.find_nodes() caps = interface_caps(primary.local_node_id) diff --git a/tests/e2e_batched.py b/tests/e2e_batched.py index 48708b82c8b0..a8d98afdef8f 100644 --- a/tests/e2e_batched.py +++ b/tests/e2e_batched.py @@ -62,7 +62,7 @@ def run(args): with infra.network.network( args.nodes, args.binary_dir, args.debug_nodes, args.perf_nodes, pdb=args.pdb ) as network: - network.start_and_join(args) + network.start_and_open(args) network = test(network, args, batch_size=1) network = test(network, args, batch_size=10) @@ -94,7 +94,7 @@ def run_to_destruction(args): with infra.network.network( args.nodes, args.binary_dir, args.debug_nodes, args.perf_nodes, pdb=args.pdb ) as network: - network.start_and_join(args) + network.start_and_open(args) LOG.warning("About to issue transactions until destruction") try: diff --git a/tests/e2e_common_endpoints.py b/tests/e2e_common_endpoints.py index 18df7268cbbc..f236d861b3ce 100644 --- a/tests/e2e_common_endpoints.py +++ b/tests/e2e_common_endpoints.py @@ -163,7 +163,7 @@ def run(args): with infra.network.network( args.nodes, args.binary_dir, args.debug_nodes, args.perf_nodes, pdb=args.pdb ) as network: - network.start_and_join(args) + network.start_and_open(args) network = test_primary(network, args) network = test_network_node_info(network, args) diff --git a/tests/e2e_logging.py b/tests/e2e_logging.py index 8d59264032fc..4e24eea712ed 100644 --- a/tests/e2e_logging.py +++ b/tests/e2e_logging.py @@ -1317,7 +1317,7 @@ def additional_interfaces(local_node_id): pdb=args.pdb, txs=txs, ) as network: - network.start_and_join(args) + network.start_and_open(args) network = test(network, args) network = test_illegal(network, args) diff --git a/tests/e2e_operations.py b/tests/e2e_operations.py index e00d897bcaf1..36723072d949 100644 --- a/tests/e2e_operations.py +++ b/tests/e2e_operations.py @@ -124,7 +124,7 @@ def run_file_operations(args): ) as network: args.common_read_only_ledger_dir = tmp_dir - network.start_and_join(args) + network.start_and_open(args) test_save_committed_ledger_files(network, args) test_parse_snapshot_file(network, args) @@ -140,7 +140,7 @@ def run_tls_san_checks(args): pdb=args.pdb, ) as network: args.common_read_only_ledger_dir = None # Reset from previous test - network.start_and_join(args) + network.start_and_open(args) LOG.info("Check SAN value in TLS certificate") dummy_san = "*.dummy.com" diff --git a/tests/e2e_suite.py b/tests/e2e_suite.py index bccc422e258a..d5f1f26c9648 100644 --- a/tests/e2e_suite.py +++ b/tests/e2e_suite.py @@ -80,7 +80,7 @@ def run(args): ) if not args.dry_run: - network.start_and_join(args) + network.start_and_open(args) LOG.info(f"Running {len(chosen_suite)} tests for {args.test_duration} seconds") diff --git a/tests/e2e_tutorial.py b/tests/e2e_tutorial.py index b690a87c3a7a..1cbf1aa8350f 100644 --- a/tests/e2e_tutorial.py +++ b/tests/e2e_tutorial.py @@ -11,7 +11,7 @@ def run(args): ) as network: for node in network.nodes: node.curl = True - network.start_and_join(args) + network.start_and_open(args) primary, _ = network.find_primary() uncommitted_ledger_dir, committed_ledger_dirs = list(primary.get_ledger()) diff --git a/tests/election.py b/tests/election.py index 61e2d2100b59..997babfe98cb 100644 --- a/tests/election.py +++ b/tests/election.py @@ -49,7 +49,7 @@ def run(args): ) as network: check = infra.checker.Checker() - network.start_and_join(args) + network.start_and_open(args) current_view = None primary, current_view = network.find_primary() diff --git a/tests/governance.py b/tests/governance.py index 1595cd30f4c9..ca3729f738be 100644 --- a/tests/governance.py +++ b/tests/governance.py @@ -394,7 +394,7 @@ def gov(args): with infra.network.network( args.nodes, args.binary_dir, args.debug_nodes, args.perf_nodes, pdb=args.pdb ) as network: - network.start_and_join(args) + network.start_and_open(args) network.consortium.set_authenticate_session(args.authenticate_session) test_create_endpoint(network, args) test_consensus_status(network, args) @@ -415,7 +415,7 @@ def js_gov(args): with infra.network.network( args.nodes, args.binary_dir, args.debug_nodes, args.perf_nodes, pdb=args.pdb ) as network: - network.start_and_join(args) + network.start_and_open(args) governance_js.test_proposal_validation(network, args) governance_js.test_proposal_storage(network, args) governance_js.test_proposal_withdrawal(network, args) diff --git a/tests/governance_history.py b/tests/governance_history.py index c197fb0f77b6..43cda9c0eeda 100644 --- a/tests/governance_history.py +++ b/tests/governance_history.py @@ -153,7 +153,7 @@ def run(args): pdb=args.pdb, txs=txs, ) as network: - network.start_and_join(args) + network.start_and_open(args) primary, _ = network.find_primary() ledger_directories = primary.remote.ledger_paths() diff --git a/tests/historical_query_perf.py b/tests/historical_query_perf.py index 60a5ecae89f3..94fd56c4ddd9 100644 --- a/tests/historical_query_perf.py +++ b/tests/historical_query_perf.py @@ -141,7 +141,7 @@ def run(args): with infra.network.network( args.nodes, args.binary_dir, args.debug_nodes, args.perf_nodes, pdb=args.pdb ) as network: - network.start_and_join(args) + network.start_and_open(args) network = test_historical_query_range(network, args) diff --git a/tests/infra/consortium.py b/tests/infra/consortium.py index 4f8c0fb37dd0..920c12c29060 100644 --- a/tests/infra/consortium.py +++ b/tests/infra/consortium.py @@ -173,7 +173,7 @@ def make_proposal(self, proposal_name, **kwargs): return f"@{proposal_output_path}", f"@{ballot_output_path}" def activate(self, remote_node): - for m in self.members: + for m in [m for m in self.members if not m.is_retired]: m.ack(remote_node) def generate_and_propose_new_member( diff --git a/tests/infra/network.py b/tests/infra/network.py index e4c502cdb97f..dc458ab84e99 100644 --- a/tests/infra/network.py +++ b/tests/infra/network.py @@ -380,7 +380,7 @@ def _setup_common_folder(self, constitution): infra.proc.ccall(*cmd).returncode == 0 ), f"Could not symlink {self.KEY_GEN} to {self.common_dir}" - def start_and_join(self, args, **kwargs): + def start(self, args, **kwargs): """ Starts a CCF network. :param args: command line arguments to configure the CCF nodes. @@ -416,15 +416,12 @@ def start_and_join(self, args, **kwargs): authenticate_session=not args.disable_member_session_auth, reconfiguration_type=args.reconfiguration_type, ) - initial_users = [ - f"user{user_id}" for user_id in list(range(max(0, args.initial_user_count))) - ] - self.create_users(initial_users, args.participants_curve) primary = self._start_all_nodes(args, **kwargs) self.wait_for_all_nodes_to_commit(primary=primary) LOG.success("All nodes joined network") + def open(self, args): self.consortium.activate(self.find_random_node()) if args.js_app_bundle: @@ -440,6 +437,11 @@ def start_and_join(self, args, **kwargs): if self.jwt_issuer: self.jwt_issuer.register(self) + initial_users = [ + f"user{user_id}" for user_id in list(range(max(0, args.initial_user_count))) + ] + self.create_users(initial_users, args.participants_curve) + self.consortium.add_users_and_transition_service_to_open( self.find_random_node(), initial_users ) @@ -450,6 +452,10 @@ def start_and_join(self, args, **kwargs): ) LOG.success("***** Network is now open *****") + def start_and_open(self, args, **kwargs): + self.start(args, **kwargs) + self.open(args) + def start_in_recovery( self, args, @@ -507,6 +513,7 @@ def recover(self, args): Recovers a CCF network previously started in recovery mode. :param args: command line arguments to configure the CCF nodes. """ + self.consortium.activate(self.find_random_node()) self.consortium.check_for_service( self.find_random_node(), status=ServiceStatus.OPENING ) diff --git a/tests/infra/runner.py b/tests/infra/runner.py index 303b6ca2ae59..5b8fe3fd94cb 100644 --- a/tests/infra/runner.py +++ b/tests/infra/runner.py @@ -95,7 +95,7 @@ def run(get_command, args): with infra.network.network( hosts, args.binary_dir, args.debug_nodes, args.perf_nodes, pdb=args.pdb ) as network: - network.start_and_join(args) + network.start_and_open(args) primary, backups = network.find_nodes() command_args = get_command_args(args, get_command) diff --git a/tests/js-custom-authorization/custom_authorization.py b/tests/js-custom-authorization/custom_authorization.py index e1b1a0271ad8..c1a1c4189ee6 100644 --- a/tests/js-custom-authorization/custom_authorization.py +++ b/tests/js-custom-authorization/custom_authorization.py @@ -35,7 +35,7 @@ def run(args): with infra.network.network( args.nodes, args.binary_dir, args.debug_nodes, args.perf_nodes, pdb=args.pdb ) as network: - network.start_and_join(args) + network.start_and_open(args) network = test_custom_auth(network, args) @@ -80,7 +80,7 @@ def run_limits(args): with infra.network.network( args.nodes, args.binary_dir, args.debug_nodes, args.perf_nodes, pdb=args.pdb ) as network: - network.start_and_join(args) + network.start_and_open(args) network = test_stack_size_limit(network, args) network = test_heap_size_limit(network, args) @@ -214,7 +214,7 @@ def run_authn(args): with infra.network.network( args.nodes, args.binary_dir, args.debug_nodes, args.perf_nodes, pdb=args.pdb ) as network: - network.start_and_join(args) + network.start_and_open(args) network = test_jwt_auth(network, args) network = test_multi_auth(network, args) network = test_role_based_access(network, args) @@ -371,7 +371,7 @@ def run_content_types(args): with infra.network.network( args.nodes, args.binary_dir, args.debug_nodes, args.perf_nodes, pdb=args.pdb ) as network: - network.start_and_join(args) + network.start_and_open(args) network = test_content_types(network, args) network = test_accept_header(network, args) network = test_supported_methods(network, args) @@ -459,7 +459,7 @@ def run_request_object(args): with infra.network.network( args.nodes, args.binary_dir, args.debug_nodes, args.perf_nodes, pdb=args.pdb ) as network: - network.start_and_join(args) + network.start_and_open(args) network = test_request_object_api(network, args) diff --git a/tests/js-launch-host-process/host_process.py b/tests/js-launch-host-process/host_process.py index 55d3cc809fda..f180139fb846 100644 --- a/tests/js-launch-host-process/host_process.py +++ b/tests/js-launch-host-process/host_process.py @@ -74,7 +74,7 @@ def run(args): with infra.network.network( args.nodes, args.binary_dir, args.debug_nodes, args.perf_nodes, pdb=args.pdb ) as network: - network.start_and_join(args) + network.start_and_open(args) network = test_host_process_launch(network, args) network = test_host_process_launch_many(network, args) diff --git a/tests/js-modules/modules.py b/tests/js-modules/modules.py index a49ecdbc3fc8..60e06ed77a61 100644 --- a/tests/js-modules/modules.py +++ b/tests/js-modules/modules.py @@ -607,7 +607,7 @@ def run(args): with infra.network.network( args.nodes, args.binary_dir, args.debug_nodes, args.perf_nodes, pdb=args.pdb ) as network: - network.start_and_join(args) + network.start_and_open(args) network = test_module_import(network, args) network = test_dynamic_module_import(network, args) network = test_bytecode_cache(network, args) diff --git a/tests/jwt_test.py b/tests/jwt_test.py index 539046be3a08..6f7942f58f85 100644 --- a/tests/jwt_test.py +++ b/tests/jwt_test.py @@ -501,7 +501,7 @@ def run_auto(args): with infra.network.network( args.nodes, args.binary_dir, args.debug_nodes, args.perf_nodes, pdb=args.pdb ) as network: - network.start_and_join(args) + network.start_and_open(args) test_jwt_endpoint(network, args) test_jwt_without_key_policy(network, args) if args.enclave_type != "virtual": @@ -520,7 +520,7 @@ def run_manual(args): with infra.network.network( args.nodes, args.binary_dir, args.debug_nodes, args.perf_nodes, pdb=args.pdb ) as network: - network.start_and_join(args) + network.start_and_open(args) test_jwt_key_initial_refresh(network, args) # Check that initial refresh also works on backups @@ -534,7 +534,7 @@ def run_ca_cert(args): with infra.network.network( args.nodes, args.binary_dir, args.debug_nodes, args.perf_nodes, pdb=args.pdb ) as network: - network.start_and_join(args) + network.start_and_open(args) ca_certs.test_cert_store(network, args) diff --git a/tests/lts_compatibility.py b/tests/lts_compatibility.py index ed360acfee15..3e8579ead5c1 100644 --- a/tests/lts_compatibility.py +++ b/tests/lts_compatibility.py @@ -196,7 +196,7 @@ def run_code_upgrade_from( jwt_issuer=jwt_issuer, version=from_version, ) as network: - network.start_and_join(args, node_container_image=from_container_image) + network.start_and_open(args, node_container_image=from_container_image) old_nodes = network.get_joined_nodes() primary, _ = network.find_primary() @@ -433,7 +433,7 @@ def run_ledger_compatibility_since_first(args, local_branch, use_snapshot): if idx == 0: LOG.info(f"Starting new service (version: {version})") network = infra.network.Network(**network_args) - network.start_and_join(args) + network.start_and_open(args) else: LOG.info(f"Recovering service (new version: {version})") network = infra.network.Network( diff --git a/tests/memberclient.py b/tests/memberclient.py index a717ad61947d..89ec0ccb5fcb 100644 --- a/tests/memberclient.py +++ b/tests/memberclient.py @@ -232,7 +232,7 @@ def run(args): with infra.network.network( args.nodes, args.binary_dir, args.debug_nodes, args.perf_nodes, pdb=args.pdb ) as network: - network.start_and_join(args) + network.start_and_open(args) network = test_missing_signature_header(network, args) network = test_corrupted_signature(network, args) diff --git a/tests/membership.py b/tests/membership.py index 0160d4357f6d..b28a53ccdfd0 100644 --- a/tests/membership.py +++ b/tests/membership.py @@ -123,7 +123,7 @@ def service_startups(args): args.initial_operator_count = 1 with infra.network.network(args.nodes, args.binary_dir, pdb=args.pdb) as network: try: - network.start_and_join(args) + network.start_and_open(args) assert False, "Service cannot be opened with no recovery members" except AssertionError: primary, _ = network.find_primary() @@ -141,7 +141,7 @@ def service_startups(args): args.initial_recovery_member_count = 1 args.initial_operator_count = 2 with infra.network.network(args.nodes, args.binary_dir, pdb=args.pdb) as network: - network.start_and_join(args) + network.start_and_open(args) LOG.info( "Starting service with a recovery operator member, a recovery non-operator member and a non-recovery non-operator member" @@ -150,7 +150,7 @@ def service_startups(args): args.initial_recovery_member_count = 2 args.initial_operator_count = 1 with infra.network.network(args.nodes, args.binary_dir, pdb=args.pdb) as network: - network.start_and_join(args) + network.start_and_open(args) def recovery_shares_scenario(args): @@ -163,7 +163,7 @@ def recovery_shares_scenario(args): with infra.network.network( args.nodes, args.binary_dir, args.debug_nodes, args.perf_nodes, pdb=args.pdb ) as network: - network.start_and_join(args) + network.start_and_open(args) # Membership changes trigger re-sharing and re-keying and are # only supported with CFT diff --git a/tests/partitions_test.py b/tests/partitions_test.py index 3965acd4c5d7..7f213d96a15e 100644 --- a/tests/partitions_test.py +++ b/tests/partitions_test.py @@ -307,7 +307,7 @@ def run_2tx_reconfig_tests(args): pdb=local_args.pdb, init_partitioner=True, ) as network: - network.start_and_join(local_args) + network.start_and_open(local_args) test_learner_does_not_take_part(network, local_args) @@ -324,7 +324,7 @@ def run(args): txs=txs, init_partitioner=True, ) as network: - network.start_and_join(args) + network.start_and_open(args) test_invalid_partitions(network, args) test_partition_majority(network, args) diff --git a/tests/reconfiguration.py b/tests/reconfiguration.py index a3ce5813fdae..bdedfc779844 100644 --- a/tests/reconfiguration.py +++ b/tests/reconfiguration.py @@ -555,7 +555,7 @@ def run(args): pdb=args.pdb, txs=txs, ) as network: - network.start_and_join(args) + network.start_and_open(args) test_version(network, args) @@ -600,7 +600,7 @@ def run_join_old_snapshot(args): pdb=args.pdb, txs=txs, ) as network: - network.start_and_join(args) + network.start_and_open(args) primary, _ = network.find_primary() # First, retrieve and save one committed snapshot @@ -731,7 +731,7 @@ def run_migration_tests(args): args.perf_nodes, pdb=args.pdb, ) as network: - network.start_and_join(args) + network.start_and_open(args) test_migration_2tx_reconfiguration(network, args) primary, _ = network.find_primary() new_node = network.nodes[-1] diff --git a/tests/recovery.py b/tests/recovery.py index b74167975e84..6dae2ab7a25b 100644 --- a/tests/recovery.py +++ b/tests/recovery.py @@ -157,7 +157,7 @@ def run(args): pdb=args.pdb, txs=txs, ) as network: - network.start_and_join(args) + network.start_and_open(args) for i in range(args.recovery): # Issue transactions which will required historical ledger queries recovery diff --git a/tests/rotation.py b/tests/rotation.py index 2f65f76bb4a3..8d5d4e004245 100644 --- a/tests/rotation.py +++ b/tests/rotation.py @@ -12,7 +12,7 @@ def run(args): with infra.network.network( args.nodes, args.binary_dir, args.debug_nodes, args.perf_nodes, pdb=args.pdb ) as network: - network.start_and_join(args) + network.start_and_open(args) # Replace primary repeatedly and check the network still operates LOG.info(f"Retiring primary {args.rotation_retirements} times") diff --git a/tests/schema.py b/tests/schema.py index 006755617774..f7f39fd09474 100644 --- a/tests/schema.py +++ b/tests/schema.py @@ -96,7 +96,7 @@ def fetch_schema(client, prefix, file_prefix=None): with infra.network.network( args.nodes, args.binary_dir, args.debug_nodes, args.perf_nodes ) as network: - network.start_and_join(args) + network.start_and_open(args) primary, _ = network.find_primary() check = infra.checker.Checker() @@ -149,7 +149,7 @@ def run_nobuiltins(args): with infra.network.network( args.nodes, args.binary_dir, args.debug_nodes, args.perf_nodes, pdb=args.pdb ) as network: - network.start_and_join(args) + network.start_and_open(args) nobuiltins.test_nobuiltins_endpoints(network, args) diff --git a/tests/start_network.py b/tests/start_network.py index f8307a22db94..55ae8a257a08 100644 --- a/tests/start_network.py +++ b/tests/start_network.py @@ -66,7 +66,7 @@ def run(args): ) network.recover(args) else: - network.start_and_join(args) + network.start_and_open(args) nodes = network.get_joined_nodes() max_len = max([len(str(node.local_node_id)) for node in nodes]) diff --git a/tests/tlstest.py b/tests/tlstest.py index b7aefa168a98..fb9b3dd19004 100644 --- a/tests/tlstest.py +++ b/tests/tlstest.py @@ -91,7 +91,7 @@ def run(args): with infra.network.network( args.nodes, args.binary_dir, args.debug_nodes, args.perf_nodes, pdb=args.pdb ) as network: - network.start_and_join(args) + network.start_and_open(args) test(network, args) diff --git a/tests/vegeta_stress.py b/tests/vegeta_stress.py index f31b422f3d38..c040b23bbb6f 100644 --- a/tests/vegeta_stress.py +++ b/tests/vegeta_stress.py @@ -30,7 +30,7 @@ def run(args, additional_attack_args): args.perf_nodes, pdb=args.pdb, ) as network: - network.start_and_join(args) + network.start_and_open(args) primary, _ = network.find_primary() primary_hostname = (