From 91af4e3121e6f847f36470a5342b4bd3a8b81f1c Mon Sep 17 00:00:00 2001 From: Nikolas Haimerl Date: Mon, 30 Sep 2024 14:10:33 +0000 Subject: [PATCH] fix flaky tests --- .../bazel_rust_dependency_manager_test.py | 296 ++++++------------ .../manager/test_data/bazel_queries_ic.json | 2 +- .../test_cases/block_synchronization.rs | 8 + .../system_tests/test_cases/transfers.rs | 10 +- 4 files changed, 114 insertions(+), 202 deletions(-) diff --git a/ci/src/dependencies/scanner/manager/bazel_rust_dependency_manager_test.py b/ci/src/dependencies/scanner/manager/bazel_rust_dependency_manager_test.py index d326616ce0d..81ec602dd32 100644 --- a/ci/src/dependencies/scanner/manager/bazel_rust_dependency_manager_test.py +++ b/ci/src/dependencies/scanner/manager/bazel_rust_dependency_manager_test.py @@ -161,11 +161,7 @@ def test_parse_first_level_dependencies_and_projects_from_cargo_tree_one_project executor = MockBazelCargoExecutor(expected_cargo_tree_deps=[dep], expected_cargo_tree_responses=[cargo_tree_output]) bazel_test = BazelRustDependencyManager(executor=executor) - first_lvl_deps, projects = ( - bazel_test._BazelRustDependencyManager__get_first_level_dependencies_and_projects_from_cargo( - dep, pathlib.PurePath("/some/path/to") - ) - ) + first_lvl_deps, projects = bazel_test._BazelRustDependencyManager__get_first_level_dependencies_and_projects_from_cargo(dep, pathlib.PurePath('/some/path/to')) assert len(first_lvl_deps) == 0 assert len(projects) == 1 @@ -186,16 +182,10 @@ def test_parse_first_level_dependencies_and_projects_from_cargo_tree_one_dep_two executor = MockBazelCargoExecutor(expected_cargo_tree_deps=[dep], expected_cargo_tree_responses=[cargo_tree_output]) bazel_test = BazelRustDependencyManager(executor=executor) - first_lvl_deps, projects = ( - bazel_test._BazelRustDependencyManager__get_first_level_dependencies_and_projects_from_cargo( - dep, pathlib.PurePath("/path/to/project") - ) - ) + first_lvl_deps, projects = bazel_test._BazelRustDependencyManager__get_first_level_dependencies_and_projects_from_cargo(dep, pathlib.PurePath('/path/to/project')) assert len(first_lvl_deps) == 1 - assert first_lvl_deps[0] == Dependency( - id="https://crates.io/crates/first-lvl-dep", name="first-lvl-dep", version="0" - ) + assert first_lvl_deps[0] == Dependency(id="https://crates.io/crates/first-lvl-dep", name="first-lvl-dep", version="0") assert len(projects) == 2 projects.sort() assert projects[0] == "project/src/project1" @@ -219,18 +209,12 @@ def test_parse_first_level_dependencies_and_projects_from_cargo_tree_two_deps_th executor = MockBazelCargoExecutor(expected_cargo_tree_deps=[dep], expected_cargo_tree_responses=[cargo_tree_output]) bazel_test = BazelRustDependencyManager(executor=executor) - first_lvl_deps, projects = ( - bazel_test._BazelRustDependencyManager__get_first_level_dependencies_and_projects_from_cargo( - dep, pathlib.PurePath("/path/to/project") - ) - ) + first_lvl_deps, projects = bazel_test._BazelRustDependencyManager__get_first_level_dependencies_and_projects_from_cargo(dep, pathlib.PurePath('/path/to/project')) assert len(first_lvl_deps) == 2 first_lvl_deps = sorted(first_lvl_deps, key=lambda x: x.id) assert first_lvl_deps[0] == Dependency(id="first-lvl-dep", name="first-lvl-dep", version="1") - assert first_lvl_deps[1] == Dependency( - id="https://crates.io/crates/first-lvl-dep", name="first-lvl-dep", version="0" - ) + assert first_lvl_deps[1] == Dependency(id="https://crates.io/crates/first-lvl-dep", name="first-lvl-dep", version="0") assert len(projects) == 3 projects.sort() assert projects[0] == "project/src/project1" @@ -239,37 +223,22 @@ def test_parse_first_level_dependencies_and_projects_from_cargo_tree_two_deps_th def test_get_findings_for_cargo_only_repo(): - with open_test_file("test_data/cargo_audit_nns.json") as audit, open_test_file( - "test_data/cargo_tree_chrono.txt" - ) as chrono, open_test_file("test_data/cargo_tree_time.txt") as time: - expected_first_vulnerable_dep = Dependency( - id="https://crates.io/crates/chrono", - name="chrono", - version="0.4.19", - fix_version_for_vulnerability={"https://rustsec.org/advisories/RUSTSEC-2020-0159": [">=0.4.20"]}, - ) - expected_second_vulnerable_dep = Dependency( - id="https://crates.io/crates/time", - name="time", - version="0.1.45", - fix_version_for_vulnerability={ - "https://rustsec.org/advisories/RUSTSEC-2020-0071": [ - ">=0.2.23", - "=0.2.0", - "=0.2.1", - "=0.2.2", - "=0.2.3", - "=0.2.4", - "=0.2.5", - "=0.2.6", - ] - }, - ) - executor = MockBazelCargoExecutor( - expected_cargo_audit_output=json.load(audit), - expected_cargo_tree_deps=[expected_first_vulnerable_dep, expected_second_vulnerable_dep], - expected_cargo_tree_responses=[chrono.read(), time.read()], - ) + with open_test_file("test_data/cargo_audit_nns.json") as audit, open_test_file("test_data/cargo_tree_chrono.txt") as chrono, open_test_file("test_data/cargo_tree_time.txt") as time: + expected_first_vulnerable_dep = Dependency(id='https://crates.io/crates/chrono', name='chrono', version='0.4.19', + fix_version_for_vulnerability={ + 'https://rustsec.org/advisories/RUSTSEC-2020-0159': [ + '>=0.4.20']}) + expected_second_vulnerable_dep = Dependency(id='https://crates.io/crates/time', name='time', version='0.1.45', + fix_version_for_vulnerability={ + 'https://rustsec.org/advisories/RUSTSEC-2020-0071': ['>=0.2.23', + '=0.2.0', + '=0.2.1', + '=0.2.2', + '=0.2.3', + '=0.2.4', + '=0.2.5', + '=0.2.6']}) + executor = MockBazelCargoExecutor(expected_cargo_audit_output=json.load(audit), expected_cargo_tree_deps=[expected_first_vulnerable_dep, expected_second_vulnerable_dep], expected_cargo_tree_responses=[chrono.read(), time.read()]) bazel_test = BazelRustDependencyManager(executor=executor) findings = bazel_test.get_findings("nns-dapp", Project("nns-dapp", "nns-dapp"), None) @@ -291,101 +260,60 @@ def test_get_findings_for_cargo_only_repo(): # unique fields for first finding assert findings[0].vulnerable_dependency == expected_first_vulnerable_dep assert findings[0].vulnerabilities == [ - Vulnerability( - id="https://rustsec.org/advisories/RUSTSEC-2020-0159", - name="RUSTSEC-2020-0159", - description="Potential segfault in `localtime_r` invocations", - score=-1, - ) - ] + Vulnerability(id='https://rustsec.org/advisories/RUSTSEC-2020-0159', name='RUSTSEC-2020-0159', + description='Potential segfault in `localtime_r` invocations', score=-1)] assert findings[0].first_level_dependencies == [ - Dependency( - id="cycles-minting-canister", - name="cycles-minting-canister", - version="0.8.0", - fix_version_for_vulnerability={}, - ), - Dependency( - id="ic-nervous-system-common", - name="ic-nervous-system-common", - version="0.8.0", - fix_version_for_vulnerability={}, - ), - Dependency( - id="ic-nervous-system-root", - name="ic-nervous-system-root", - version="0.1.0", - fix_version_for_vulnerability={}, - ), - Dependency(id="ic-nns-common", name="ic-nns-common", version="0.8.0", fix_version_for_vulnerability={}), - Dependency( - id="ic-nns-governance", name="ic-nns-governance", version="0.8.0", fix_version_for_vulnerability={} - ), - Dependency(id="ic-sns-swap", name="ic-sns-swap", version="0.1.0", fix_version_for_vulnerability={}), - Dependency(id="ic-sns-wasm", name="ic-sns-wasm", version="1.0.0", fix_version_for_vulnerability={}), - Dependency( - id="registry-canister", name="registry-canister", version="0.8.0", fix_version_for_vulnerability={} - ), - ] + Dependency(id='cycles-minting-canister', name='cycles-minting-canister', version='0.8.0', + fix_version_for_vulnerability={}), + Dependency(id='ic-nervous-system-common', name='ic-nervous-system-common', version='0.8.0', + fix_version_for_vulnerability={}), + Dependency(id='ic-nervous-system-root', name='ic-nervous-system-root', version='0.1.0', + fix_version_for_vulnerability={}), + Dependency(id='ic-nns-common', name='ic-nns-common', version='0.8.0', + fix_version_for_vulnerability={}), + Dependency(id='ic-nns-governance', name='ic-nns-governance', version='0.8.0', + fix_version_for_vulnerability={}), + Dependency(id='ic-sns-swap', name='ic-sns-swap', version='0.1.0', + fix_version_for_vulnerability={}), + Dependency(id='ic-sns-wasm', name='ic-sns-wasm', version='1.0.0', + fix_version_for_vulnerability={}), + Dependency(id='registry-canister', name='registry-canister', version='0.8.0', + fix_version_for_vulnerability={})] assert findings[0].score == -1 # unique fields for second finding assert findings[1].vulnerable_dependency == expected_second_vulnerable_dep assert findings[1].vulnerabilities == [ - Vulnerability( - id="https://rustsec.org/advisories/RUSTSEC-2020-0071", - name="RUSTSEC-2020-0071", - description="Potential segfault in the time crate", - score=6, - ) - ] + Vulnerability(id='https://rustsec.org/advisories/RUSTSEC-2020-0071', name='RUSTSEC-2020-0071', + description='Potential segfault in the time crate', score=6)] assert findings[1].first_level_dependencies == [ - Dependency( - id="cycles-minting-canister", - name="cycles-minting-canister", - version="0.8.0", - fix_version_for_vulnerability={}, - ), - Dependency( - id="https://crates.io/crates/chrono", name="chrono", version="0.4.19", fix_version_for_vulnerability={} - ), - Dependency( - id="ic-nervous-system-common", - name="ic-nervous-system-common", - version="0.8.0", - fix_version_for_vulnerability={}, - ), - Dependency( - id="ic-nervous-system-root", - name="ic-nervous-system-root", - version="0.1.0", - fix_version_for_vulnerability={}, - ), - Dependency(id="ic-nns-common", name="ic-nns-common", version="0.8.0", fix_version_for_vulnerability={}), - Dependency( - id="ic-nns-governance", name="ic-nns-governance", version="0.8.0", fix_version_for_vulnerability={} - ), - Dependency(id="ic-sns-swap", name="ic-sns-swap", version="0.1.0", fix_version_for_vulnerability={}), - Dependency(id="ic-sns-wasm", name="ic-sns-wasm", version="1.0.0", fix_version_for_vulnerability={}), - Dependency( - id="registry-canister", name="registry-canister", version="0.8.0", fix_version_for_vulnerability={} - ), - ] + Dependency(id='cycles-minting-canister', name='cycles-minting-canister', version='0.8.0', + fix_version_for_vulnerability={}), + Dependency(id='https://crates.io/crates/chrono', name='chrono', version='0.4.19', + fix_version_for_vulnerability={}), + Dependency(id='ic-nervous-system-common', name='ic-nervous-system-common', version='0.8.0', + fix_version_for_vulnerability={}), + Dependency(id='ic-nervous-system-root', name='ic-nervous-system-root', version='0.1.0', + fix_version_for_vulnerability={}), + Dependency(id='ic-nns-common', name='ic-nns-common', version='0.8.0', + fix_version_for_vulnerability={}), + Dependency(id='ic-nns-governance', name='ic-nns-governance', version='0.8.0', + fix_version_for_vulnerability={}), + Dependency(id='ic-sns-swap', name='ic-sns-swap', version='0.1.0', + fix_version_for_vulnerability={}), + Dependency(id='ic-sns-wasm', name='ic-sns-wasm', version='1.0.0', + fix_version_for_vulnerability={}), + Dependency(id='registry-canister', name='registry-canister', version='0.8.0', + fix_version_for_vulnerability={})] assert findings[1].score == 6 def test_get_findings_for_bazel_repo(): - with open_test_file("test_data/cargo_audit_ic.json") as audit, open_test_file( - "test_data/bazel_queries_ic.json" - ) as bazel: + with open_test_file("test_data/cargo_audit_ic.json") as audit, open_test_file("test_data/bazel_queries_ic.json") as bazel: bazel_query_and_responses = json.load(bazel) expected_queries = bazel_query_and_responses["queries"] expected_responses = bazel_query_and_responses["responses"] - executor = MockBazelCargoExecutor( - expected_cargo_audit_output=json.load(audit), - expected_bazel_queries=expected_queries, - expected_bazel_responses=expected_responses, - ) + executor = MockBazelCargoExecutor(expected_cargo_audit_output=json.load(audit), expected_bazel_queries=expected_queries, expected_bazel_responses=expected_responses) bazel_test = BazelRustDependencyManager(executor=executor) findings = bazel_test.get_findings("ic", Project("ic", __test_get_ic_path()), None) @@ -402,20 +330,14 @@ def test_get_findings_for_bazel_repo(): assert finding.more_info is None # unique fields for first finding - assert findings[0].vulnerable_dependency == Dependency( - id="https://crates.io/crates/chrono", - name="chrono", - version="0.4.19", - fix_version_for_vulnerability={"https://rustsec.org/advisories/RUSTSEC-2020-0159": [">=0.4.20"]}, - ) + assert findings[0].vulnerable_dependency == Dependency(id='https://crates.io/crates/chrono', name='chrono', + version='0.4.19', + fix_version_for_vulnerability={ + 'https://rustsec.org/advisories/RUSTSEC-2020-0159': [ + '>=0.4.20']}) assert findings[0].vulnerabilities == [ - Vulnerability( - id="https://rustsec.org/advisories/RUSTSEC-2020-0159", - name="RUSTSEC-2020-0159", - description="Potential segfault in `localtime_r` invocations", - score=-1, - ) - ] + Vulnerability(id='https://rustsec.org/advisories/RUSTSEC-2020-0159', name='RUSTSEC-2020-0159', + description='Potential segfault in `localtime_r` invocations', score=-1)] assert findings[0].first_level_dependencies == [ Dependency(id='https://crates.io/crates/build-info', name='build-info', version='0.0.26', fix_version_for_vulnerability={}), @@ -442,7 +364,7 @@ def test_get_findings_for_bazel_repo(): '/rs/crypto/node_key_validation/tls_cert_validation', '/rs/crypto/utils/basic_sig', '/rs/elastic_common_schema', '/rs/monitoring/logger', '/rs/monitoring/onchain_observability/adapter', '/rs/nervous_system/common', '/rs/nns/cmc', '/rs/nns/governance', '/rs/nns/gtc', '/rs/nns/handlers/root/impl', '/rs/nns/handlers/root/interface', '/rs/nns/sns-wasm', '/rs/prep', '/rs/registry/canister', - '/rs/registry/nns_data_provider', '/rs/rosetta-api', '/rs/rosetta-api/ledger_suite/tests/sm-tests', '/rs/rosetta-api/ledger_canister_blocks_synchronizer', + '/rs/registry/nns_data_provider', '/rs/rosetta-api', '/rs/rosetta-api/icrc1/ledger/sm-tests', '/rs/rosetta-api/ledger_canister_blocks_synchronizer', '/rs/rosetta-api/ledger_canister_blocks_synchronizer/test_utils', '/rs/scenario_tests', '/rs/sns/governance', '/rs/sns/root', '/rs/sns/swap', '/rs/tests', '/rs/types/types', '/rs/validator', '/rs/validator/http_request_test_utils'] @@ -454,50 +376,33 @@ def test_get_findings_for_bazel_repo(): assert findings[0].score == -1 # unique fields for second finding - assert findings[1].vulnerable_dependency == Dependency( - id="https://crates.io/crates/rocksdb", - name="rocksdb", - version="0.15.0", - fix_version_for_vulnerability={"https://rustsec.org/advisories/RUSTSEC-2022-0046": [">=0.19.0"]}, - ) + assert findings[1].vulnerable_dependency == Dependency(id='https://crates.io/crates/rocksdb', name='rocksdb', + version='0.15.0', fix_version_for_vulnerability={ + 'https://rustsec.org/advisories/RUSTSEC-2022-0046': ['>=0.19.0']}) assert findings[1].vulnerabilities == [ - Vulnerability( - id="https://rustsec.org/advisories/RUSTSEC-2022-0046", - name="RUSTSEC-2022-0046", - description="Out-of-bounds read when opening multiple column families with TTL", - score=-1, - ) - ] + Vulnerability(id='https://rustsec.org/advisories/RUSTSEC-2022-0046', name='RUSTSEC-2022-0046', + description='Out-of-bounds read when opening multiple column families with TTL', + score=-1)] assert findings[1].first_level_dependencies == [] assert findings[1].projects == [__test_get_ic_path() + '/rs/artifact_pool'] assert findings[1].score == -1 # unique fields for third finding - assert findings[2].vulnerable_dependency == Dependency( - id="https://crates.io/crates/time", - name="time", - version="0.1.45", - fix_version_for_vulnerability={ - "https://rustsec.org/advisories/RUSTSEC-2020-0071": [ - ">=0.2.23", - "=0.2.0", - "=0.2.1", - "=0.2.2", - "=0.2.3", - "=0.2.4", - "=0.2.5", - "=0.2.6", - ] - }, - ) + assert findings[2].vulnerable_dependency == Dependency(id='https://crates.io/crates/time', name='time', + version='0.1.45', + fix_version_for_vulnerability={ + 'https://rustsec.org/advisories/RUSTSEC-2020-0071': [ + '>=0.2.23', + '=0.2.0', + '=0.2.1', + '=0.2.2', + '=0.2.3', + '=0.2.4', + '=0.2.5', + '=0.2.6']}) assert findings[2].vulnerabilities == [ - Vulnerability( - id="https://rustsec.org/advisories/RUSTSEC-2020-0071", - name="RUSTSEC-2020-0071", - description="Potential segfault in the time crate", - score=6, - ) - ] + Vulnerability(id='https://rustsec.org/advisories/RUSTSEC-2020-0071', name='RUSTSEC-2020-0071', + description='Potential segfault in the time crate', score=6)] assert findings[2].first_level_dependencies == [ Dependency(id='https://crates.io/crates/build-info', name='build-info', version='0.0.26', fix_version_for_vulnerability={}), @@ -527,7 +432,7 @@ def test_get_findings_for_bazel_repo(): '/rs/crypto/internal/crypto_lib/threshold_sig/bls12_381/der_utils', '/rs/crypto/internal/crypto_service_provider', '/rs/crypto/node_key_validation', '/rs/crypto/node_key_validation/tls_cert_validation', '/rs/crypto/utils/basic_sig', '/rs/elastic_common_schema', '/rs/monitoring/logger', '/rs/monitoring/onchain_observability/adapter', '/rs/nervous_system/common', '/rs/nns/cmc', '/rs/nns/governance', '/rs/nns/gtc', '/rs/nns/handlers/root/impl', '/rs/nns/handlers/root/interface', '/rs/nns/sns-wasm', - '/rs/prep', '/rs/registry/canister', '/rs/registry/nns_data_provider', '/rs/replica', '/rs/rosetta-api', '/rs/rosetta-api/ledger_suite/tests/sm-tests', + '/rs/prep', '/rs/registry/canister', '/rs/registry/nns_data_provider', '/rs/replica', '/rs/rosetta-api', '/rs/rosetta-api/icrc1/ledger/sm-tests', '/rs/rosetta-api/ledger_canister_blocks_synchronizer', '/rs/rosetta-api/ledger_canister_blocks_synchronizer/test_utils', '/rs/scenario_tests', '/rs/sns/governance', '/rs/sns/root', '/rs/sns/swap', '/rs/tests', '/rs/types/types', '/rs/validator', '/rs/validator/http_request_test_utils'] assert len(projects_2) == len(findings[2].projects) @@ -537,23 +442,15 @@ def test_get_findings_for_bazel_repo(): class MockBazelCargoExecutor(BazelCargoExecutor): - def __init__( - self, - expected_cargo_audit_output: typing.Dict = (), - expected_bazel_queries: typing.List[str] = (), - expected_bazel_responses: typing.List[str] = (), - expected_cargo_tree_deps: typing.List[Dependency] = (), - expected_cargo_tree_responses: typing.List[str] = (), - ): + + def __init__(self, expected_cargo_audit_output: typing.Dict = (), expected_bazel_queries: typing.List[str] = (), expected_bazel_responses: typing.List[str] = (), expected_cargo_tree_deps: typing.List[Dependency] = (), + expected_cargo_tree_responses: typing.List[str] = ()): self.cargo_audit = expected_cargo_audit_output assert len(expected_bazel_queries) == len(expected_bazel_responses) self.bazel = {} for i in range(len(expected_bazel_queries)): - assert ( - expected_bazel_queries[i] not in self.bazel - or self.bazel[expected_bazel_queries[i]] == expected_bazel_responses[i] - ) + assert expected_bazel_queries[i] not in self.bazel or self.bazel[expected_bazel_queries[i]] == expected_bazel_responses[i] self.bazel[expected_bazel_queries[i]] = expected_bazel_responses[i] assert len(expected_cargo_tree_deps) == len(expected_cargo_tree_responses) @@ -574,9 +471,8 @@ def get_bazel_query_output(self, bazel_query: str, path: pathlib.Path) -> str: def get_cargo_audit_output(self, path: pathlib.Path, cargo_home=None) -> typing.Dict: return self.cargo_audit - def get_cargo_tree_output_for_vulnerable_dependency( - self, vulnerable_dependency: Dependency, path: pathlib.Path, cargo_home=None - ) -> str: + def get_cargo_tree_output_for_vulnerable_dependency(self, vulnerable_dependency: Dependency, path: pathlib.Path, + cargo_home=None) -> str: dep_key = self.__dependency_key(vulnerable_dependency) assert dep_key in self.cargo_tree return self.cargo_tree[dep_key] diff --git a/ci/src/dependencies/scanner/manager/test_data/bazel_queries_ic.json b/ci/src/dependencies/scanner/manager/test_data/bazel_queries_ic.json index bbddb8e240e..7de1da8c6e8 100644 --- a/ci/src/dependencies/scanner/manager/test_data/bazel_queries_ic.json +++ b/ci/src/dependencies/scanner/manager/test_data/bazel_queries_ic.json @@ -1,4 +1,4 @@ { "queries": ["\"rdeps(@crate_index//:all, @crate_index__chrono-0.4.19//:*) except @crate_index__chrono-0.4.19//:*\"", "\"rdeps(@crate_index//:all, @crate_index//:build-info ,1)\" --keep_going", "\"rdeps(@crate_index//:all, @crate_index//:build-info-build ,1)\" --keep_going", "\"rdeps(@crate_index//:all, @crate_index//:build-info-common ,1)\" --keep_going", "\"rdeps(@crate_index//:all, @crate_index//:cddl ,1)\" --keep_going", "\"rdeps(@crate_index//:all, @crate_index//:cloudflare ,1)\" --keep_going", "\"rdeps(@crate_index//:all, @crate_index//:log4rs ,1)\" --keep_going", "\"rdeps(@crate_index//:all, @crate_index//:prometheus-parse ,1)\" --keep_going", "\"rdeps(@crate_index//:all, @crate_index//:rsa_0_4_0 ,1)\" --keep_going", "\"rdeps(@crate_index//:all, @crate_index//:simple_asn1 ,1)\" --keep_going", "\"rdeps(@crate_index//:all, @crate_index//:simplelog ,1)\" --keep_going", "\"rdeps(@crate_index//:all, @crate_index//:x509-parser ,1)\" --keep_going", "\"kind(\"rust_library\", rdeps(//rs/..., @crate_index__chrono-0.4.19//:*, 2)) except rdeps(@crate_index//:all, @crate_index__chrono-0.4.19//:*)\" --keep_going", "\"kind(\"rust_library\", rdeps(//rs/..., @crate_index__build-info-0.0.26//:*, 2)) except rdeps(@crate_index//:all, @crate_index__build-info-0.0.26//:*)\" --keep_going", "\"kind(\"rust_library\", rdeps(//rs/..., @crate_index__build-info-build-0.0.26//:*, 2)) except rdeps(@crate_index//:all, @crate_index__build-info-build-0.0.26//:*)\" --keep_going", "\"kind(\"rust_library\", rdeps(//rs/..., @crate_index__cddl-0.9.1//:*, 2)) except rdeps(@crate_index//:all, @crate_index__cddl-0.9.1//:*)\" --keep_going", "\"kind(\"rust_library\", rdeps(//rs/..., @crate_index__cloudflare-0.9.1//:*, 2)) except rdeps(@crate_index//:all, @crate_index__cloudflare-0.9.1//:*)\" --keep_going", "\"kind(\"rust_library\", rdeps(//rs/..., @crate_index__log4rs-1.2.0//:*, 2)) except rdeps(@crate_index//:all, @crate_index__log4rs-1.2.0//:*)\" --keep_going", "\"kind(\"rust_library\", rdeps(//rs/..., @crate_index__prometheus-parse-0.2.4//:*, 2)) except rdeps(@crate_index//:all, @crate_index__prometheus-parse-0.2.4//:*)\" --keep_going", "\"kind(\"rust_library\", rdeps(//rs/..., @crate_index__rsa-0.4.0//:*, 2)) except rdeps(@crate_index//:all, @crate_index__rsa-0.4.0//:*)\" --keep_going", "\"kind(\"rust_library\", rdeps(//rs/..., @crate_index__simple_asn1-0.5.4//:*, 2)) except rdeps(@crate_index//:all, @crate_index__simple_asn1-0.5.4//:*)\" --keep_going", "\"kind(\"rust_library\", rdeps(//rs/..., @crate_index__x509-parser-0.12.0//:*, 2)) except rdeps(@crate_index//:all, @crate_index__x509-parser-0.12.0//:*)\" --keep_going", "\"rdeps(@crate_index//:all, @crate_index__rocksdb-0.15.0//:*) except @crate_index__rocksdb-0.15.0//:*\"", "\"kind(\"rust_library\", rdeps(//rs/..., @crate_index__rocksdb-0.15.0//:*, 2)) except rdeps(@crate_index//:all, @crate_index__rocksdb-0.15.0//:*)\" --keep_going", "\"rdeps(@crate_index//:all, @crate_index__time-0.1.45//:*) except @crate_index__time-0.1.45//:*\"", "\"rdeps(@crate_index//:all, @crate_index//:build-info ,1)\" --keep_going", "\"rdeps(@crate_index//:all, @crate_index//:build-info-build ,1)\" --keep_going", "\"rdeps(@crate_index//:all, @crate_index//:build-info-common ,1)\" --keep_going", "\"rdeps(@crate_index//:all, @crate_index//:cddl ,1)\" --keep_going", "\"rdeps(@crate_index//:all, @crate_index//:chrono ,1)\" --keep_going", "\"rdeps(@crate_index//:all, @crate_index//:cloudflare ,1)\" --keep_going", "\"rdeps(@crate_index//:all, @crate_index//:log4rs ,1)\" --keep_going", "\"rdeps(@crate_index//:all, @crate_index//:prometheus-parse ,1)\" --keep_going", "\"rdeps(@crate_index//:all, @crate_index//:rsa_0_4_0 ,1)\" --keep_going", "\"rdeps(@crate_index//:all, @crate_index//:simple_asn1 ,1)\" --keep_going", "\"rdeps(@crate_index//:all, @crate_index//:simplelog ,1)\" --keep_going", "\"rdeps(@crate_index//:all, @crate_index//:thread_profiler ,1)\" --keep_going", "\"rdeps(@crate_index//:all, @crate_index//:x509-parser ,1)\" --keep_going", "\"kind(\"rust_library\", rdeps(//rs/..., @crate_index__time-0.1.45//:*, 2)) except rdeps(@crate_index//:all, @crate_index__time-0.1.45//:*)\" --keep_going", "\"kind(\"rust_library\", rdeps(//rs/..., @crate_index__build-info-0.0.26//:*, 2)) except rdeps(@crate_index//:all, @crate_index__build-info-0.0.26//:*)\" --keep_going", "\"kind(\"rust_library\", rdeps(//rs/..., @crate_index__build-info-build-0.0.26//:*, 2)) except rdeps(@crate_index//:all, @crate_index__build-info-build-0.0.26//:*)\" --keep_going", "\"kind(\"rust_library\", rdeps(//rs/..., @crate_index__cddl-0.9.1//:*, 2)) except rdeps(@crate_index//:all, @crate_index__cddl-0.9.1//:*)\" --keep_going", "\"kind(\"rust_library\", rdeps(//rs/..., @crate_index__chrono-0.4.19//:*, 2)) except rdeps(@crate_index//:all, @crate_index__chrono-0.4.19//:*)\" --keep_going", "\"kind(\"rust_library\", rdeps(//rs/..., @crate_index__cloudflare-0.9.1//:*, 2)) except rdeps(@crate_index//:all, @crate_index__cloudflare-0.9.1//:*)\" --keep_going", "\"kind(\"rust_library\", rdeps(//rs/..., @crate_index__log4rs-1.2.0//:*, 2)) except rdeps(@crate_index//:all, @crate_index__log4rs-1.2.0//:*)\" --keep_going", "\"kind(\"rust_library\", rdeps(//rs/..., @crate_index__prometheus-parse-0.2.4//:*, 2)) except rdeps(@crate_index//:all, @crate_index__prometheus-parse-0.2.4//:*)\" --keep_going", "\"kind(\"rust_library\", rdeps(//rs/..., @crate_index__rsa-0.4.0//:*, 2)) except rdeps(@crate_index//:all, @crate_index__rsa-0.4.0//:*)\" --keep_going", "\"kind(\"rust_library\", rdeps(//rs/..., @crate_index__simple_asn1-0.5.4//:*, 2)) except rdeps(@crate_index//:all, @crate_index__simple_asn1-0.5.4//:*)\" --keep_going", "\"kind(\"rust_library\", rdeps(//rs/..., @crate_index__thread_profiler-0.3.0//:*, 2)) except rdeps(@crate_index//:all, @crate_index__thread_profiler-0.3.0//:*)\" --keep_going", "\"kind(\"rust_library\", rdeps(//rs/..., @crate_index__x509-parser-0.12.0//:*, 2)) except rdeps(@crate_index//:all, @crate_index__x509-parser-0.12.0//:*)\" --keep_going"], - "responses": ["@crate_index//\n@crate_index__build-info-0.0.26//\n@crate_index__build-info-build-0.0.26//\n@crate_index__build-info-common-0.0.26//\n@crate_index__cddl-0.9.1//\n@crate_index__cloudflare-0.9.1//\n@crate_index__log4rs-1.2.0//\n@crate_index__prometheus-parse-0.2.4//\n@crate_index__rsa-0.4.0//\n@crate_index__simple_asn1-0.5.4//\n@crate_index__simplelog-0.11.2//\n@crate_index__x509-parser-0.12.0//", "@crate_index//", "@crate_index//", "", "@crate_index//", "@crate_index//", "@crate_index//", "@crate_index//", "@crate_index//", "@crate_index//", "", "@crate_index//", "rs/backup\nrs/crypto/node_key_validation/tls_cert_validation\nrs/elastic_common_schema\nrs/monitoring/logger\nrs/prep\nrs/registry/nns_data_provider\nrs/scenario_tests\nrs/tests\nrs/types/types\nrs/validator", "rs/nervous_system/common\nrs/nns/cmc\nrs/nns/governance\nrs/nns/gtc\nrs/nns/handlers/root/impl\nrs/nns/handlers/root/interface\nrs/nns/sns-wasm\nrs/registry/canister\nrs/sns/governance\nrs/sns/root\nrs/sns/swap", "", "rs/ledger_suite/tests/sm-tests", "", "rs/rosetta-api\nrs/rosetta-api/ledger_canister_blocks_synchronizer\nrs/rosetta-api/ledger_canister_blocks_synchronizer/test_utils", "rs/monitoring/onchain_observability/adapter", "rs/crypto/internal/crypto_lib/basic_sig/rsa_pkcs1", "rs/canister_client/sender\nrs/crypto\nrs/crypto/ecdsa_secp256k1\nrs/crypto/ecdsa_secp256r1\nrs/crypto/internal/crypto_lib/basic_sig/cose\nrs/crypto/internal/crypto_lib/basic_sig/der_utils\nrs/crypto/internal/crypto_lib/basic_sig/ecdsa_secp256k1\nrs/crypto/internal/crypto_lib/basic_sig/ecdsa_secp256r1\nrs/crypto/internal/crypto_lib/basic_sig/ed25519\nrs/crypto/internal/crypto_lib/basic_sig/iccsa\nrs/crypto/internal/crypto_lib/basic_sig/rsa_pkcs1\nrs/crypto/internal/crypto_lib/threshold_sig/bls12_381/der_utils\nrs/crypto/internal/crypto_service_provider\nrs/crypto/utils/basic_sig\nrs/nns/gtc\nrs/validator/http_request_test_utils", "rs/crypto/node_key_validation\nrs/crypto/node_key_validation/tls_cert_validation", "@crate_index//", "rs/artifact_pool", "@crate_index//\n@crate_index__build-info-0.0.26//\n@crate_index__build-info-build-0.0.26//\n@crate_index__build-info-common-0.0.26//\n@crate_index__cddl-0.9.1//\n@crate_index__chrono-0.4.19//\n@crate_index__cloudflare-0.9.1//\n@crate_index__log4rs-1.2.0//\n@crate_index__prometheus-parse-0.2.4//\n@crate_index__rsa-0.4.0//\n@crate_index__simple_asn1-0.5.4//\n@crate_index__simplelog-0.11.2//\n@crate_index__thread_profiler-0.3.0//\n@crate_index__x509-parser-0.12.0//", "@crate_index//", "@crate_index//", "", "@crate_index//", "@crate_index//", "@crate_index//", "@crate_index//", "@crate_index//", "@crate_index//", "@crate_index//", "", "@crate_index//", "@crate_index//", "", "rs/nervous_system/common\nrs/nns/cmc\nrs/nns/governance\nrs/nns/gtc\nrs/nns/handlers/root/impl\nrs/nns/handlers/root/interface\nrs/nns/sns-wasm\nrs/registry/canister\nrs/sns/governance\nrs/sns/root\nrs/sns/swap", "", "rs/ledger_suite/tests/sm-tests", "rs/backup\nrs/crypto/node_key_validation/tls_cert_validation\nrs/elastic_common_schema\nrs/monitoring/logger\nrs/prep\nrs/registry/nns_data_provider\nrs/scenario_tests\nrs/tests\nrs/types/types\nrs/validator", "", "rs/rosetta-api\nrs/rosetta-api/ledger_canister_blocks_synchronizer\nrs/rosetta-api/ledger_canister_blocks_synchronizer/test_utils", "rs/monitoring/onchain_observability/adapter", "rs/crypto/internal/crypto_lib/basic_sig/rsa_pkcs1", "rs/canister_client/sender\nrs/crypto\nrs/crypto/ecdsa_secp256k1\nrs/crypto/ecdsa_secp256r1\nrs/crypto/internal/crypto_lib/basic_sig/cose\nrs/crypto/internal/crypto_lib/basic_sig/der_utils\nrs/crypto/internal/crypto_lib/basic_sig/ecdsa_secp256k1\nrs/crypto/internal/crypto_lib/basic_sig/ecdsa_secp256r1\nrs/crypto/internal/crypto_lib/basic_sig/ed25519\nrs/crypto/internal/crypto_lib/basic_sig/iccsa\nrs/crypto/internal/crypto_lib/basic_sig/rsa_pkcs1\nrs/crypto/internal/crypto_lib/threshold_sig/bls12_381/der_utils\nrs/crypto/internal/crypto_service_provider\nrs/crypto/utils/basic_sig\nrs/nns/gtc\nrs/validator/http_request_test_utils", "rs/replica", "rs/crypto/node_key_validation\nrs/crypto/node_key_validation/tls_cert_validation"] + "responses": ["@crate_index//\n@crate_index__build-info-0.0.26//\n@crate_index__build-info-build-0.0.26//\n@crate_index__build-info-common-0.0.26//\n@crate_index__cddl-0.9.1//\n@crate_index__cloudflare-0.9.1//\n@crate_index__log4rs-1.2.0//\n@crate_index__prometheus-parse-0.2.4//\n@crate_index__rsa-0.4.0//\n@crate_index__simple_asn1-0.5.4//\n@crate_index__simplelog-0.11.2//\n@crate_index__x509-parser-0.12.0//", "@crate_index//", "@crate_index//", "", "@crate_index//", "@crate_index//", "@crate_index//", "@crate_index//", "@crate_index//", "@crate_index//", "", "@crate_index//", "rs/backup\nrs/crypto/node_key_validation/tls_cert_validation\nrs/elastic_common_schema\nrs/monitoring/logger\nrs/prep\nrs/registry/nns_data_provider\nrs/scenario_tests\nrs/tests\nrs/types/types\nrs/validator", "rs/nervous_system/common\nrs/nns/cmc\nrs/nns/governance\nrs/nns/gtc\nrs/nns/handlers/root/impl\nrs/nns/handlers/root/interface\nrs/nns/sns-wasm\nrs/registry/canister\nrs/sns/governance\nrs/sns/root\nrs/sns/swap", "", "rs/rosetta-api/icrc1/ledger/sm-tests", "", "rs/rosetta-api\nrs/rosetta-api/ledger_canister_blocks_synchronizer\nrs/rosetta-api/ledger_canister_blocks_synchronizer/test_utils", "rs/monitoring/onchain_observability/adapter", "rs/crypto/internal/crypto_lib/basic_sig/rsa_pkcs1", "rs/canister_client/sender\nrs/crypto\nrs/crypto/ecdsa_secp256k1\nrs/crypto/ecdsa_secp256r1\nrs/crypto/internal/crypto_lib/basic_sig/cose\nrs/crypto/internal/crypto_lib/basic_sig/der_utils\nrs/crypto/internal/crypto_lib/basic_sig/ecdsa_secp256k1\nrs/crypto/internal/crypto_lib/basic_sig/ecdsa_secp256r1\nrs/crypto/internal/crypto_lib/basic_sig/ed25519\nrs/crypto/internal/crypto_lib/basic_sig/iccsa\nrs/crypto/internal/crypto_lib/basic_sig/rsa_pkcs1\nrs/crypto/internal/crypto_lib/threshold_sig/bls12_381/der_utils\nrs/crypto/internal/crypto_service_provider\nrs/crypto/utils/basic_sig\nrs/nns/gtc\nrs/validator/http_request_test_utils", "rs/crypto/node_key_validation\nrs/crypto/node_key_validation/tls_cert_validation", "@crate_index//", "rs/artifact_pool", "@crate_index//\n@crate_index__build-info-0.0.26//\n@crate_index__build-info-build-0.0.26//\n@crate_index__build-info-common-0.0.26//\n@crate_index__cddl-0.9.1//\n@crate_index__chrono-0.4.19//\n@crate_index__cloudflare-0.9.1//\n@crate_index__log4rs-1.2.0//\n@crate_index__prometheus-parse-0.2.4//\n@crate_index__rsa-0.4.0//\n@crate_index__simple_asn1-0.5.4//\n@crate_index__simplelog-0.11.2//\n@crate_index__thread_profiler-0.3.0//\n@crate_index__x509-parser-0.12.0//", "@crate_index//", "@crate_index//", "", "@crate_index//", "@crate_index//", "@crate_index//", "@crate_index//", "@crate_index//", "@crate_index//", "@crate_index//", "", "@crate_index//", "@crate_index//", "", "rs/nervous_system/common\nrs/nns/cmc\nrs/nns/governance\nrs/nns/gtc\nrs/nns/handlers/root/impl\nrs/nns/handlers/root/interface\nrs/nns/sns-wasm\nrs/registry/canister\nrs/sns/governance\nrs/sns/root\nrs/sns/swap", "", "rs/rosetta-api/icrc1/ledger/sm-tests", "rs/backup\nrs/crypto/node_key_validation/tls_cert_validation\nrs/elastic_common_schema\nrs/monitoring/logger\nrs/prep\nrs/registry/nns_data_provider\nrs/scenario_tests\nrs/tests\nrs/types/types\nrs/validator", "", "rs/rosetta-api\nrs/rosetta-api/ledger_canister_blocks_synchronizer\nrs/rosetta-api/ledger_canister_blocks_synchronizer/test_utils", "rs/monitoring/onchain_observability/adapter", "rs/crypto/internal/crypto_lib/basic_sig/rsa_pkcs1", "rs/canister_client/sender\nrs/crypto\nrs/crypto/ecdsa_secp256k1\nrs/crypto/ecdsa_secp256r1\nrs/crypto/internal/crypto_lib/basic_sig/cose\nrs/crypto/internal/crypto_lib/basic_sig/der_utils\nrs/crypto/internal/crypto_lib/basic_sig/ecdsa_secp256k1\nrs/crypto/internal/crypto_lib/basic_sig/ecdsa_secp256r1\nrs/crypto/internal/crypto_lib/basic_sig/ed25519\nrs/crypto/internal/crypto_lib/basic_sig/iccsa\nrs/crypto/internal/crypto_lib/basic_sig/rsa_pkcs1\nrs/crypto/internal/crypto_lib/threshold_sig/bls12_381/der_utils\nrs/crypto/internal/crypto_service_provider\nrs/crypto/utils/basic_sig\nrs/nns/gtc\nrs/validator/http_request_test_utils", "rs/replica", "rs/crypto/node_key_validation\nrs/crypto/node_key_validation/tls_cert_validation"] } \ No newline at end of file diff --git a/rs/rosetta-api/tests/system_tests/test_cases/block_synchronization.rs b/rs/rosetta-api/tests/system_tests/test_cases/block_synchronization.rs index 5ab36757743..f945f7846b4 100644 --- a/rs/rosetta-api/tests/system_tests/test_cases/block_synchronization.rs +++ b/rs/rosetta-api/tests/system_tests/test_cases/block_synchronization.rs @@ -249,6 +249,14 @@ fn test_load_from_storage() { .await; env.generate_blocks(first_block_batch.to_owned()).await; + wait_for_rosetta_to_sync_up_to_block( + &env.rosetta_client, + env.network_identifier.clone(), + first_block_batch.len() as u64, + ) + .await + .unwrap(); + let replica_url = env.pocket_ic.url(); // We restart rosetta in offline mode to make sure it has to load the blocks from storage env = env diff --git a/rs/rosetta-api/tests/system_tests/test_cases/transfers.rs b/rs/rosetta-api/tests/system_tests/test_cases/transfers.rs index 71244d2780b..eb91532406b 100644 --- a/rs/rosetta-api/tests/system_tests/test_cases/transfers.rs +++ b/rs/rosetta-api/tests/system_tests/test_cases/transfers.rs @@ -2,6 +2,7 @@ use crate::common::system_test_environment::RosettaTestingEnvironment; use crate::common::utils::assert_rosetta_blockchain_is_valid; use crate::common::utils::get_test_agent; use crate::common::utils::test_identity; +use crate::common::utils::wait_for_rosetta_to_sync_up_to_block; use ic_agent::identity::BasicIdentity; use ic_agent::Identity; use ic_icrc1_test_utils::{minter_identity, valid_transactions_strategy, DEFAULT_TRANSFER_FEE}; @@ -61,9 +62,16 @@ fn test_icp_transfer() { .await; rosetta_testing_environment - .generate_blocks(args_with_caller) + .generate_blocks(args_with_caller.clone()) .await; + wait_for_rosetta_to_sync_up_to_block( + &rosetta_testing_environment.rosetta_client, + rosetta_testing_environment.network_identifier.clone(), + args_with_caller.len() as u64, + ) + .await + .unwrap(); // Let's check that rosetta has a valid blockchain when compared to the ledger assert_rosetta_blockchain_is_valid( &rosetta_testing_environment.rosetta_client,