From f64b9c228a5ade6d9b593900e0064fd94f32441a Mon Sep 17 00:00:00 2001 From: Max Summe Date: Fri, 19 Jul 2024 13:01:01 -0700 Subject: [PATCH 01/11] move gov init to its own crate --- Cargo.lock | 6 + rs/nns/governance/api/src/pb.rs | 78 +++++++++- rs/nns/governance/init/BUILD.bazel | 57 ++++++++ rs/nns/governance/init/Cargo.toml | 13 ++ .../{src/init.rs => init/src/lib.rs} | 18 ++- .../src/governance/tests/neurons_fund.rs | 8 +- rs/nns/governance/src/lib.rs | 1 - rs/nns/governance/tests/governance.rs | 2 +- rs/nns/integration_tests/BUILD.bazel | 2 +- rs/nns/integration_tests/Cargo.toml | 1 + .../src/governance_upgrade.rs | 10 +- rs/nns/test_utils/BUILD.bazel | 1 + rs/nns/test_utils/Cargo.toml | 1 + rs/nns/test_utils/src/common.rs | 6 +- rs/nns/test_utils/src/neuron_helpers.rs | 9 +- rs/sns/init/src/lib.rs | 3 +- rs/tests/src/nns_tests/sns_deployment.rs | 134 +++++++++--------- 17 files changed, 253 insertions(+), 97 deletions(-) create mode 100644 rs/nns/governance/init/BUILD.bazel create mode 100644 rs/nns/governance/init/Cargo.toml rename rs/nns/governance/{src/init.rs => init/src/lib.rs} (96%) diff --git a/Cargo.lock b/Cargo.lock index 6614a06b2ad5..37a7d5c3c6bf 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -9694,6 +9694,10 @@ dependencies = [ "strum_macros 0.26.2", ] +[[package]] +name = "ic-nns-governance-init" +version = "0.9.0" + [[package]] name = "ic-nns-governance-protobuf-generator" version = "0.9.0" @@ -9914,6 +9918,7 @@ dependencies = [ "ic-nns-common", "ic-nns-constants", "ic-nns-governance", + "ic-nns-governance-init", "ic-nns-gtc", "ic-nns-handler-root", "ic-nns-test-utils", @@ -9989,6 +9994,7 @@ dependencies = [ "ic-nns-common", "ic-nns-constants", "ic-nns-governance", + "ic-nns-governance-init", "ic-nns-gtc", "ic-nns-gtc-accounts", "ic-nns-handler-lifeline-interface", diff --git a/rs/nns/governance/api/src/pb.rs b/rs/nns/governance/api/src/pb.rs index 3d3105e057ff..d6387ddf9763 100644 --- a/rs/nns/governance/api/src/pb.rs +++ b/rs/nns/governance/api/src/pb.rs @@ -1,9 +1,19 @@ -use crate::pb::v1::{governance_error::ErrorType, GovernanceError}; +use crate::pb::v1::{ + governance_error::ErrorType, GovernanceError, NetworkEconomics, NeuronsFundEconomics, + NeuronsFundMatchedFundingCurveCoefficients, XdrConversionRate, +}; +use ic_nervous_system_proto::pb::v1::{Decimal, Percentage}; +use icp_ledger::{DEFAULT_TRANSFER_FEE, TOKEN_SUBDIVIDABLE_BY}; #[allow(clippy::all)] #[path = "./ic_nns_governance.pb.v1.rs"] pub mod v1; +/// The number of e8s per ICP; +const E8S_PER_ICP: u64 = TOKEN_SUBDIVIDABLE_BY; +// TODO get this from nervous_system/common/consts after we migrate consts out of nervous_system/common +pub const ONE_DAY_SECONDS: u64 = 24 * 60 * 60; + impl GovernanceError { pub fn new(error_type: ErrorType) -> Self { Self { @@ -19,3 +29,69 @@ impl GovernanceError { } } } + +impl NeuronsFundEconomics { + /// The default values for network economics (until we initialize it). + /// Can't implement Default since it conflicts with Prost's. + /// The values here are computed under the assumption that 1 XDR = 0.75 USD. See also: + /// https://dashboard.internetcomputer.org/proposal/124822 + pub fn with_default_values() -> Self { + Self { + max_theoretical_neurons_fund_participation_amount_xdr: Some(Decimal { + human_readable: Some("750_000.0".to_string()), + }), + neurons_fund_matched_funding_curve_coefficients: Some( + NeuronsFundMatchedFundingCurveCoefficients { + contribution_threshold_xdr: Some(Decimal { + human_readable: Some("75_000.0".to_string()), + }), + one_third_participation_milestone_xdr: Some(Decimal { + human_readable: Some("225_000.0".to_string()), + }), + full_participation_milestone_xdr: Some(Decimal { + human_readable: Some("375_000.0".to_string()), + }), + }, + ), + minimum_icp_xdr_rate: Some(Percentage { + basis_points: Some(10_000), // 1:1 + }), + maximum_icp_xdr_rate: Some(Percentage { + basis_points: Some(1_000_000), // 1:100 + }), + } + } +} + +impl NetworkEconomics { + /// The multiplier applied to minimum_icp_xdr_rate to convert the XDR unit to basis_points + pub const ICP_XDR_RATE_TO_BASIS_POINT_MULTIPLIER: u64 = 100; + + // The default values for network economics (until we initialize it). + // Can't implement Default since it conflicts with Prost's. + pub fn with_default_values() -> Self { + Self { + reject_cost_e8s: E8S_PER_ICP, // 1 ICP + neuron_management_fee_per_proposal_e8s: 1_000_000, // 0.01 ICP + neuron_minimum_stake_e8s: E8S_PER_ICP, // 1 ICP + neuron_spawn_dissolve_delay_seconds: ONE_DAY_SECONDS * 7, // 7 days + maximum_node_provider_rewards_e8s: 1_000_000 * 100_000_000, // 1M ICP + minimum_icp_xdr_rate: 100, // 1 XDR + transaction_fee_e8s: DEFAULT_TRANSFER_FEE.get_e8s(), + max_proposals_to_keep_per_topic: 100, + neurons_fund_economics: Some(NeuronsFundEconomics::with_default_values()), + } + } +} + +impl XdrConversionRate { + /// This constructor should be used only at canister creation, and not, e.g., after upgrades. + /// The reason this function exists is because `Default::default` is already defined by prost. + /// However, the Governance canister relies on the fields of this structure being `Some`. + pub fn with_default_values() -> Self { + Self { + timestamp_seconds: Some(0), + xdr_permyriad_per_icp: Some(10_000), + } + } +} diff --git a/rs/nns/governance/init/BUILD.bazel b/rs/nns/governance/init/BUILD.bazel new file mode 100644 index 000000000000..a5a2ac977588 --- /dev/null +++ b/rs/nns/governance/init/BUILD.bazel @@ -0,0 +1,57 @@ +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +# See rs/nervous_system/feature_test.md +BASE_DEPENDENCIES = [ + "//rs/nns/governance/api", + "//rs/rosetta-api/icp_ledger", + "@crate_index//:rand", + "@crate_index//:rand_chacha", + "//rs/types/base_types", + "//rs/nns/common", + "@crate_index//:csv", + "//rs/nervous_system/common/test_keys", + "//rs/nervous_system/common", +] + +# Each target declared in this file may choose either these (release-ready) +# dependencies (`DEPENDENCIES`), or `DEPENDENCIES_WITH_TEST_FEATURES` feature previews. +DEPENDENCIES = BASE_DEPENDENCIES + [ +] + +DEPENDENCIES_WITH_TEST_FEATURES = BASE_DEPENDENCIES + [ +] + +MACRO_DEPENDENCIES = [ + # Keep sorted. +] + +ALIASES = {} + +rust_library( + name = "init", + srcs = glob( + ["src/**/*.rs"], + exclude = ["**/*tests.rs"], + ), + aliases = ALIASES, + crate_name = "ic_nns_governance_init", + proc_macro_deps = MACRO_DEPENDENCIES, + version = "0.9.0", + deps = DEPENDENCIES, +) +# +#rust_library( +# name = "api--test_feature", +# srcs = glob( +# ["src/**/*.rs"], +# exclude = ["**/*tests.rs"], +# ), +# aliases = ALIASES, +# crate_features = ["test"], +# crate_name = "ic_nns_governance_api", +# proc_macro_deps = MACRO_DEPENDENCIES, +# version = "0.9.0", +# deps = DEPENDENCIES_WITH_TEST_FEATURES, +#) diff --git a/rs/nns/governance/init/Cargo.toml b/rs/nns/governance/init/Cargo.toml new file mode 100644 index 000000000000..703f6d6a99fa --- /dev/null +++ b/rs/nns/governance/init/Cargo.toml @@ -0,0 +1,13 @@ +[package] +name = "ic-nns-governance-init" +version.workspace = true +authors.workspace = true +edition.workspace = true +description.workspace = true +documentation.workspace = true + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html +[lib] +path = "src/lib.rs" + +[dependencies] diff --git a/rs/nns/governance/src/init.rs b/rs/nns/governance/init/src/lib.rs similarity index 96% rename from rs/nns/governance/src/init.rs rename to rs/nns/governance/init/src/lib.rs index a4ce4939dd5b..b94f762bfa06 100644 --- a/rs/nns/governance/src/init.rs +++ b/rs/nns/governance/init/src/lib.rs @@ -1,8 +1,8 @@ #[cfg(not(target_arch = "wasm32"))] -use crate::pb::v1::{neuron::DissolveState, neuron::Followees, Topic}; -#[cfg(not(target_arch = "wasm32"))] use ic_nervous_system_common::ledger; #[cfg(not(target_arch = "wasm32"))] +use ic_nns_governance_api::pb::v1::{neuron::DissolveState, neuron::Followees, Topic}; +#[cfg(not(target_arch = "wasm32"))] use icp_ledger::Subaccount; #[cfg(not(target_arch = "wasm32"))] use rand::{RngCore, SeedableRng}; @@ -11,11 +11,11 @@ use rand_chacha::ChaCha20Rng; #[cfg(not(target_arch = "wasm32"))] use std::path::Path; -use crate::pb::v1::{ - Governance, NetworkEconomics, Neuron, XdrConversionRate as XdrConversionRatePb, -}; use ic_base_types::PrincipalId; use ic_nns_common::types::NeuronId; +use ic_nns_governance_api::pb::v1::{ + Governance, NetworkEconomics, Neuron, XdrConversionRate as XdrConversionRatePb, +}; // To update or add more, add print statements to `with_test_neurons` to print // the generated neuron IDs and copy the printed IDs here. @@ -97,6 +97,7 @@ impl GovernanceCanisterInitPayloadBuilder { TEST_NEURON_1_ID, TEST_NEURON_1_OWNER_PRINCIPAL, TEST_NEURON_2_ID, TEST_NEURON_2_OWNER_PRINCIPAL, TEST_NEURON_3_ID, TEST_NEURON_3_OWNER_PRINCIPAL, }; + use ic_nns_governance_api::pb::v1::{neuron::DissolveState, Neuron}; let mut neuron1 = { let neuron_id = NeuronIdProto::from(self.new_neuron_id()); @@ -210,6 +211,13 @@ impl GovernanceCanisterInitPayloadBuilder { use ic_nns_common::pb::v1::NeuronId as NeuronIdProto; use csv::ReaderBuilder; + use ic_base_types::PrincipalId; + use ic_nervous_system_common::ledger; + use ic_nns_common::types::NeuronId; + use ic_nns_governance_api::pb::v1::{ + neuron::{DissolveState, Followees}, + Neuron, Topic, + }; use std::str::FromStr; let mut reader = ReaderBuilder::new() diff --git a/rs/nns/governance/src/governance/tests/neurons_fund.rs b/rs/nns/governance/src/governance/tests/neurons_fund.rs index f6a949d729ee..f7de9a140789 100644 --- a/rs/nns/governance/src/governance/tests/neurons_fund.rs +++ b/rs/nns/governance/src/governance/tests/neurons_fund.rs @@ -1,10 +1,12 @@ use super::*; -use crate::init::GovernanceCanisterInitPayloadBuilder; -use crate::pb::v1::create_service_nervous_system::SwapParameters; -use crate::test_utils::{MockEnvironment, StubCMC, StubIcpLedger}; +use crate::{ + pb::v1::create_service_nervous_system::SwapParameters, + test_utils::{MockEnvironment, StubCMC, StubIcpLedger}, +}; use assert_matches::assert_matches; use ic_nervous_system_common::E8; use ic_nervous_system_proto::pb::v1 as pb; +use ic_nns_governance_init::GovernanceCanisterInitPayloadBuilder; use maplit::btreemap; use test_data::CREATE_SERVICE_NERVOUS_SYSTEM_WITH_MATCHED_FUNDING; diff --git a/rs/nns/governance/src/lib.rs b/rs/nns/governance/src/lib.rs index 34d33fe8e703..8b680b33ff50 100644 --- a/rs/nns/governance/src/lib.rs +++ b/rs/nns/governance/src/lib.rs @@ -155,7 +155,6 @@ mod garbage_collection; pub mod governance; pub mod governance_proto_builder; mod heap_governance_data; -pub mod init; mod known_neuron_index; mod migrations; mod neuron; diff --git a/rs/nns/governance/tests/governance.rs b/rs/nns/governance/tests/governance.rs index 98718d0edd70..71d31d13c896 100644 --- a/rs/nns/governance/tests/governance.rs +++ b/rs/nns/governance/tests/governance.rs @@ -55,7 +55,6 @@ use ic_nns_governance::{ REWARD_DISTRIBUTION_PERIOD_SECONDS, WAIT_FOR_QUIET_DEADLINE_INCREASE_SECONDS, }, governance_proto_builder::GovernanceProtoBuilder, - init::GovernanceCanisterInitPayloadBuilder, pb::v1::{ add_or_remove_node_provider::Change, governance::{GovernanceCachedMetrics, GovernanceCachedMetricsChange, MigrationsDesc}, @@ -94,6 +93,7 @@ use ic_nns_governance::{ }, proposals::create_service_nervous_system::ExecutedCreateServiceNervousSystemProposal, }; +use ic_nns_governance_init::GovernanceCanisterInitPayloadBuilder; use ic_sns_init::pb::v1::SnsInitPayload; use ic_sns_root::{GetSnsCanistersSummaryRequest, GetSnsCanistersSummaryResponse}; use ic_sns_swap::pb::v1::{ diff --git a/rs/nns/integration_tests/BUILD.bazel b/rs/nns/integration_tests/BUILD.bazel index 663a09904ef2..2e91fc6a89de 100644 --- a/rs/nns/integration_tests/BUILD.bazel +++ b/rs/nns/integration_tests/BUILD.bazel @@ -12,6 +12,7 @@ BASE_DEPENDENCIES = [ "//rs/nervous_system/common/test_keys", "//rs/nns/cmc", "//rs/nns/common", + "//rs/nns/governance/init", "//rs/nns/handlers/lifeline/impl:lifeline", "//rs/rosetta-api/icp_ledger", "//rs/rosetta-api/ledger_core", @@ -62,7 +63,6 @@ BASE_DEPENDENCIES = [ "@crate_index//:ic-xrc-types", "@crate_index//:maplit", "@crate_index//:rand", - # "@crate_index//:randomkit", "@crate_index//:rustc-hash", "@crate_index//:serde", "@crate_index//:serde_bytes", diff --git a/rs/nns/integration_tests/Cargo.toml b/rs/nns/integration_tests/Cargo.toml index 0d64edabb5b5..978f61b0be4a 100644 --- a/rs/nns/integration_tests/Cargo.toml +++ b/rs/nns/integration_tests/Cargo.toml @@ -49,6 +49,7 @@ ic-nervous-system-common = { path = "../../nervous_system/common" } ic-nervous-system-runtime = { path = "../../nervous_system/runtime" } ic-nns-common = { path = "../common" } ic-nns-governance = { path = "../governance" } +ic-nns-governance-init = { path = "../governance/init" } ic-sns-root = { path = "../../sns/root" } ic-sns-swap = { path = "../../sns/swap" } ic-stable-structures = { workspace = true } diff --git a/rs/nns/integration_tests/src/governance_upgrade.rs b/rs/nns/integration_tests/src/governance_upgrade.rs index 849d3803f13e..380a924b9d7f 100644 --- a/rs/nns/integration_tests/src/governance_upgrade.rs +++ b/rs/nns/integration_tests/src/governance_upgrade.rs @@ -18,13 +18,11 @@ use ic_nns_common::pb::v1::NeuronId as NeuronIdProto; use ic_nns_constants::{ GOVERNANCE_CANISTER_ID, GOVERNANCE_CANISTER_INDEX_IN_NNS_SUBNET, ROOT_CANISTER_ID, }; -use ic_nns_governance::{ - init::GovernanceCanisterInitPayloadBuilder, - pb::v1::{ - manage_neuron::{configure, Command, Configure, NeuronIdOrSubaccount, RemoveHotKey}, - ManageNeuron, ManageNeuronResponse, - }, +use ic_nns_governance::pb::v1::{ + manage_neuron::{configure, Command, Configure, NeuronIdOrSubaccount, RemoveHotKey}, + ManageNeuron, ManageNeuronResponse, }; +use ic_nns_governance_init::GovernanceCanisterInitPayloadBuilder; use ic_nns_test_utils::{ common::NnsInitPayloadsBuilder, itest_helpers::{install_governance_canister, state_machine_test_on_nns_subnet}, diff --git a/rs/nns/test_utils/BUILD.bazel b/rs/nns/test_utils/BUILD.bazel index ea94314c8105..84b83fd99ac2 100644 --- a/rs/nns/test_utils/BUILD.bazel +++ b/rs/nns/test_utils/BUILD.bazel @@ -20,6 +20,7 @@ BASE_DEPENDENCIES = [ "//rs/nervous_system/root", "//rs/nns/cmc", "//rs/nns/common", + "//rs/nns/governance/init", "//rs/nns/gtc_accounts", "//rs/nns/handlers/lifeline/impl:lifeline", "//rs/nns/handlers/lifeline/interface", diff --git a/rs/nns/test_utils/Cargo.toml b/rs/nns/test_utils/Cargo.toml index 96e8794ee3f5..ef83176094d1 100644 --- a/rs/nns/test_utils/Cargo.toml +++ b/rs/nns/test_utils/Cargo.toml @@ -38,6 +38,7 @@ ic-nervous-system-root = { path = "../../nervous_system/root" } ic-nns-common = { path = "../common" } ic-nns-constants = { path = "../constants" } ic-nns-governance = { path = "../governance" } +ic-nns-governance-init = { path = "../governance/init" } ic-nns-gtc = { path = "../gtc" } ic-nns-gtc-accounts = { path = "../gtc_accounts" } ic-nns-handler-root = { path = "../handlers/root/impl" } diff --git a/rs/nns/test_utils/src/common.rs b/rs/nns/test_utils/src/common.rs index becf7c3e21d8..387025ac82d0 100644 --- a/rs/nns/test_utils/src/common.rs +++ b/rs/nns/test_utils/src/common.rs @@ -10,10 +10,8 @@ use ic_nns_common::init::{LifelineCanisterInitPayload, LifelineCanisterInitPaylo use ic_nns_constants::{ ALL_NNS_CANISTER_IDS, GOVERNANCE_CANISTER_ID, LEDGER_CANISTER_ID, ROOT_CANISTER_ID, }; -use ic_nns_governance::{ - init::GovernanceCanisterInitPayloadBuilder, - pb::v1::{Governance, NetworkEconomics, Neuron}, -}; +use ic_nns_governance::pb::v1::{Governance, NetworkEconomics, Neuron}; +use ic_nns_governance_init::GovernanceCanisterInitPayloadBuilder; use ic_nns_gtc::{init::GenesisTokenCanisterInitPayloadBuilder, pb::v1::Gtc}; use ic_nns_gtc_accounts::{ECT_ACCOUNTS, SEED_ROUND_ACCOUNTS}; use ic_nns_handler_root::init::{RootCanisterInitPayload, RootCanisterInitPayloadBuilder}; diff --git a/rs/nns/test_utils/src/neuron_helpers.rs b/rs/nns/test_utils/src/neuron_helpers.rs index d9df192b5e73..37735fd9ed9f 100644 --- a/rs/nns/test_utils/src/neuron_helpers.rs +++ b/rs/nns/test_utils/src/neuron_helpers.rs @@ -5,12 +5,9 @@ use ic_nervous_system_common_test_keys::{ TEST_NEURON_2_OWNER_PRINCIPAL, TEST_NEURON_3_ID, TEST_NEURON_3_OWNER_PRINCIPAL, }; use ic_nns_common::{pb::v1::NeuronId, types::ProposalId}; -use ic_nns_governance::{ - self, - pb::v1::{ - manage_neuron_response::Command, proposal::Action, ExecuteNnsFunction, Neuron, NnsFunction, - Proposal, - }, +use ic_nns_governance::pb::v1::{ + manage_neuron_response::Command, proposal::Action, ExecuteNnsFunction, Neuron, NnsFunction, + Proposal, }; use ic_state_machine_tests::StateMachine; use std::collections::HashMap; diff --git a/rs/sns/init/src/lib.rs b/rs/sns/init/src/lib.rs index 02ac3ee7438e..633876cca974 100644 --- a/rs/sns/init/src/lib.rs +++ b/rs/sns/init/src/lib.rs @@ -9,8 +9,7 @@ use ic_icrc1_index_ng::{IndexArg, InitArg}; use ic_icrc1_ledger::{InitArgsBuilder as LedgerInitArgsBuilder, LedgerArgument}; use ic_ledger_canister_core::archive::ArchiveOptions; use ic_ledger_core::Tokens; -use ic_nervous_system_common::ledger_validation; -use ic_nervous_system_common::{DEFAULT_TRANSFER_FEE, E8}; +use ic_nervous_system_common::{ledger_validation, DEFAULT_TRANSFER_FEE, E8}; use ic_nervous_system_proto::pb::v1::{Canister, Countries}; use ic_nns_constants::{ CYCLES_MINTING_CANISTER_ID, EXCHANGE_RATE_CANISTER_ID, GENESIS_TOKEN_CANISTER_ID, diff --git a/rs/tests/src/nns_tests/sns_deployment.rs b/rs/tests/src/nns_tests/sns_deployment.rs index 5c4da311fe38..86c13b6c611f 100644 --- a/rs/tests/src/nns_tests/sns_deployment.rs +++ b/rs/tests/src/nns_tests/sns_deployment.rs @@ -1,12 +1,11 @@ -use std::collections::{BTreeSet, HashMap}; -use std::str::FromStr; -use std::time::Duration; -use std::time::Instant; - -use candid::Decode; -use candid::{Nat, Principal}; -use ic_agent::Agent; -use ic_agent::{agent::EnvelopeContent, Identity, Signature}; +use std::{ + collections::{BTreeSet, HashMap}, + str::FromStr, + time::{Duration, Instant}, +}; + +use candid::{Decode, Nat, Principal}; +use ic_agent::{agent::EnvelopeContent, Agent, Identity, Signature}; use ic_base_types::PrincipalId; use ic_canister_client_sender::ed25519_public_key_to_der; use ic_icrc1_test_utils::KeyPairGenerator; @@ -15,61 +14,62 @@ use ic_nervous_system_common::E8; use ic_nervous_system_proto::pb::v1::Canister; use ic_nns_governance::pb::v1::CreateServiceNervousSystem; use ic_rosetta_test_utils::EdKeypair; -use ic_system_test_driver::canister_agent::{CanisterAgent, HasCanisterAgentCapability}; -use ic_system_test_driver::canister_api::{ - CallMode, CanisterHttpRequestProvider, Icrc1RequestProvider, Icrc1TransferRequest, - NnsDappRequestProvider, Request, Response, SnsRequestProvider, -}; -use ic_system_test_driver::canister_requests; -use ic_system_test_driver::driver::farm::HostFeature; -use ic_system_test_driver::driver::prometheus_vm::{HasPrometheus, PrometheusVm}; -use ic_system_test_driver::driver::test_env::TestEnv; -use ic_system_test_driver::driver::test_env_api::IcNodeSnapshot; -use ic_system_test_driver::driver::test_env_api::NnsCanisterWasmStrategy; -use ic_system_test_driver::driver::test_env_api::TEST_USER1_STARTING_TOKENS; -use ic_system_test_driver::driver::test_env_api::{ - GetFirstHealthyNodeSnapshot, HasPublicApiUrl, HasTopologySnapshot, NnsCustomizations, -}; -use ic_system_test_driver::generic_workload_engine::engine::Engine; -use ic_system_test_driver::generic_workload_engine::metrics::{ - LoadTestMetrics, LoadTestOutcome, RequestOutcome, +use ic_system_test_driver::{ + canister_agent::{CanisterAgent, HasCanisterAgentCapability}, + canister_api::{ + CallMode, CanisterHttpRequestProvider, Icrc1RequestProvider, Icrc1TransferRequest, + NnsDappRequestProvider, Request, Response, SnsRequestProvider, + }, + canister_requests, + driver::{ + farm::HostFeature, + prometheus_vm::{HasPrometheus, PrometheusVm}, + test_env::TestEnv, + test_env_api::{ + GetFirstHealthyNodeSnapshot, HasPublicApiUrl, HasTopologySnapshot, IcNodeSnapshot, + NnsCanisterWasmStrategy, NnsCustomizations, TEST_USER1_STARTING_TOKENS, + }, + }, + generic_workload_engine::{ + engine::Engine, + metrics::{LoadTestMetrics, LoadTestOutcome, RequestOutcome}, + }, + sns_client::openchat_create_service_nervous_system_proposal, + types::{CanisterStatusResult, CreateCanisterResult}, + util::UniversalCanister, }; -use ic_system_test_driver::sns_client::openchat_create_service_nervous_system_proposal; -use ic_system_test_driver::types::CanisterStatusResult; -use ic_system_test_driver::types::CreateCanisterResult; -use ic_system_test_driver::util::UniversalCanister; use rosetta_core::models::RosettaSupportedKeyPair; use ic_sns_governance::pb::v1::governance::Mode; -use ic_sns_swap::pb::v1::{new_sale_ticket_response, Lifecycle}; -use ic_sns_swap::swap::principal_to_subaccount; -use ic_types::Cycles; -use ic_types::Height; -use ic_universal_canister::management; -use ic_universal_canister::wasm; +use ic_sns_swap::{ + pb::v1::{new_sale_ticket_response, Lifecycle}, + swap::principal_to_subaccount, +}; +use ic_types::{Cycles, Height}; +use ic_universal_canister::{management, wasm}; use icp_ledger::{AccountIdentifier, Subaccount}; use icrc_ledger_agent::Icrc1Agent; -use icrc_ledger_types::icrc1::account::Account; -use icrc_ledger_types::icrc1::transfer::TransferArg; +use icrc_ledger_types::icrc1::{account::Account, transfer::TransferArg}; use serde::{Deserialize, Serialize}; use slog::info; use tokio::runtime::Builder; use ic_consensus_system_test_utils::rw_message::install_nns_with_customizations_and_check_progress; -use ic_system_test_driver::sns_client::{SnsClient, SNS_SALE_PARAM_MIN_PARTICIPANT_ICP_E8S}; -use ic_system_test_driver::util::{assert_create_agent_with_identity, block_on}; +use ic_system_test_driver::{ + sns_client::{SnsClient, SNS_SALE_PARAM_MIN_PARTICIPANT_ICP_E8S}, + util::{assert_create_agent_with_identity, block_on}, +}; -use ic_system_test_driver::driver::ic::{ - AmountOfMemoryKiB, ImageSizeGiB, InternetComputer, NrOfVCPUs, Subnet, VmResources, +use ic_system_test_driver::driver::{ + ic::{AmountOfMemoryKiB, ImageSizeGiB, InternetComputer, NrOfVCPUs, Subnet, VmResources}, + test_env::TestEnvAttribute, }; -use ic_system_test_driver::driver::test_env::TestEnvAttribute; use ic_nervous_system_common_test_keys::{TEST_USER1_KEYPAIR, TEST_USER1_PRINCIPAL}; use ic_nns_constants::{LEDGER_CANISTER_ID, ROOT_CANISTER_ID}; use ic_registry_subnet_type::SubnetType; -use crate::nns_tests::neurons_fund::NnsNfNeuron; -use crate::nns_tests::sns_aggregator::AggregatorClient; +use crate::nns_tests::{neurons_fund::NnsNfNeuron, sns_aggregator::AggregatorClient}; const WORKLOAD_GENERATION_DURATION: Duration = Duration::from_secs(60); @@ -276,7 +276,7 @@ pub fn workload_static_testnet_sale_bot(env: TestEnv) { /// that the tests are using realistic parameters. /// /// The NNS will be initialized with only the "test" neurons. -/// (See [`ic_nns_governance::init::GovernanceCanisterInitPayloadBuilder::with_test_neurons`].) +/// (See [`ic_nns_governance_init::GovernanceCanisterInitPayloadBuilder::with_test_neurons`].) pub fn setup_with_oc_parameters( env: TestEnv, sale_participants: Vec, @@ -1280,27 +1280,27 @@ async fn create_one_sale_participant( // 4. Call sns.get_buyer_state { - let request = sns_request_provider - .get_buyer_state(Some(participant.principal_id), CallMode::Update); - canister_agent.call_with_retries( - request, - SNS_ENDPOINT_RETRY_TIMEOUT, - SNS_ENDPOINT_RETRY_BACKOFF, - None, - ) + let request = sns_request_provider + .get_buyer_state(Some(participant.principal_id), CallMode::Update); + canister_agent.call_with_retries( + request, + SNS_ENDPOINT_RETRY_TIMEOUT, + SNS_ENDPOINT_RETRY_BACKOFF, + None, + ) } - .await - .check_response(|response| { - let response_amount = response.buyer_state.unwrap().icp.unwrap().amount_e8s; - if response_amount >= contribution { - Ok(()) - } else { - Err(anyhow::anyhow!("get_buyer_state: response ICP amount {response_amount:?} below the minimum amount {contribution:?}")) - } - }) - .with_workflow_position(4) - .push_outcome_display_error(outcome) - .result()?; + .await + .check_response(|response| { + let response_amount = response.buyer_state.unwrap().icp.unwrap().amount_e8s; + if response_amount >= contribution { + Ok(()) + } else { + Err(anyhow::anyhow!("get_buyer_state: response ICP amount {response_amount:?} below the minimum amount {contribution:?}")) + } + }) + .with_workflow_position(4) + .push_outcome_display_error(outcome) + .result()?; // 5. Check that the ticket has been deleted via swap.get_open_ticket { From a60c52021229f786204e6c1beea3e87360ab548e Mon Sep 17 00:00:00 2001 From: Max Summe Date: Fri, 19 Jul 2024 14:25:56 -0700 Subject: [PATCH 02/11] Try to make Cargo like me more --- Cargo.lock | 6 ------ Cargo.toml | 2 ++ rs/nns/governance/Cargo.toml | 4 ---- rs/nns/governance/init/BUILD.bazel | 11 ++++++----- rs/nns/governance/init/Cargo.toml | 11 +++++++++++ 5 files changed, 19 insertions(+), 15 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 37a7d5c3c6bf..6614a06b2ad5 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -9694,10 +9694,6 @@ dependencies = [ "strum_macros 0.26.2", ] -[[package]] -name = "ic-nns-governance-init" -version = "0.9.0" - [[package]] name = "ic-nns-governance-protobuf-generator" version = "0.9.0" @@ -9918,7 +9914,6 @@ dependencies = [ "ic-nns-common", "ic-nns-constants", "ic-nns-governance", - "ic-nns-governance-init", "ic-nns-gtc", "ic-nns-handler-root", "ic-nns-test-utils", @@ -9994,7 +9989,6 @@ dependencies = [ "ic-nns-common", "ic-nns-constants", "ic-nns-governance", - "ic-nns-governance-init", "ic-nns-gtc", "ic-nns-gtc-accounts", "ic-nns-handler-lifeline-interface", diff --git a/Cargo.toml b/Cargo.toml index cce186dedece..4299ec1c0e1e 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -185,6 +185,8 @@ members = [ "rs/nns/common/protobuf_generator", "rs/nns/cmc", "rs/nns/governance", + "rs/nns/governance/api", + "rs/nns/governance/init", "rs/nns/governance/protobuf_generator", "rs/nns/handlers/lifeline/impl", "rs/nns/handlers/lifeline/interface", diff --git a/rs/nns/governance/Cargo.toml b/rs/nns/governance/Cargo.toml index 28bc816a0a0c..fb38549838ec 100644 --- a/rs/nns/governance/Cargo.toml +++ b/rs/nns/governance/Cargo.toml @@ -87,10 +87,6 @@ comparable = { version = "0.5", features = ["derive"] } canbench-rs = { version = "0.1.4", optional = true } ic-cdk = { workspace = true, optional = true } -[target.'cfg(not(target_arch = "wasm32"))'.dependencies] -csv = "1.1" -ic-nervous-system-common-test-keys = { path = "../../nervous_system/common/test_keys" } - [target.'cfg(not(target_arch = "wasm32"))'.dev-dependencies] assert_matches = { workspace = true } diff --git a/rs/nns/governance/init/BUILD.bazel b/rs/nns/governance/init/BUILD.bazel index a5a2ac977588..c2de7ff70d75 100644 --- a/rs/nns/governance/init/BUILD.bazel +++ b/rs/nns/governance/init/BUILD.bazel @@ -4,15 +4,16 @@ package(default_visibility = ["//visibility:public"]) # See rs/nervous_system/feature_test.md BASE_DEPENDENCIES = [ + # Keep sorted. + "//rs/nervous_system/common", + "//rs/nervous_system/common/test_keys", + "//rs/nns/common", "//rs/nns/governance/api", "//rs/rosetta-api/icp_ledger", - "@crate_index//:rand", - "@crate_index//:rand_chacha", "//rs/types/base_types", - "//rs/nns/common", "@crate_index//:csv", - "//rs/nervous_system/common/test_keys", - "//rs/nervous_system/common", + "@crate_index//:rand", + "@crate_index//:rand_chacha", ] # Each target declared in this file may choose either these (release-ready) diff --git a/rs/nns/governance/init/Cargo.toml b/rs/nns/governance/init/Cargo.toml index 703f6d6a99fa..4d37e963693a 100644 --- a/rs/nns/governance/init/Cargo.toml +++ b/rs/nns/governance/init/Cargo.toml @@ -11,3 +11,14 @@ documentation.workspace = true path = "src/lib.rs" [dependencies] +ic-base-types = { path = "../../../types/base_types" } +ic-nervous-system-common = { path = "../../../nervous_system/common" } +ic-nervous-system-common-build-metadata = { path = "../../../nervous_system/common/build_metadata" } +ic-nns-common = { path = "../../common" } +ic-nns-governance-api = { path = "../api" } +icp-ledger = { path = "../../../rosetta-api/icp_ledger" } +rand = { workspace = true } +rand_chacha = { workspace = true } + +[target.'cfg(not(target_arch = "wasm32"))'.dependencies] +csv = "1.1" From 608331b5a24422c35875a9847485bbf65104b0cb Mon Sep 17 00:00:00 2001 From: Max Summe Date: Tue, 23 Jul 2024 12:15:59 -0700 Subject: [PATCH 03/11] Clippy and cargo fix --- Cargo.lock | 21 +++++++++++++++++-- rs/nns/governance/BUILD.bazel | 1 + rs/nns/governance/Cargo.toml | 1 + rs/nns/governance/init/BUILD.bazel | 14 ------------- rs/nns/governance/init/Cargo.toml | 1 + rs/nns/governance/init/src/lib.rs | 4 ---- .../src/governance/tests/neurons_fund.rs | 7 ++++--- 7 files changed, 26 insertions(+), 23 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 6614a06b2ad5..363652444ea1 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -9603,7 +9603,6 @@ dependencies = [ "candid", "comparable", "criterion", - "csv", "cycles-minting-canister", "dfn_candid", "dfn_core", @@ -9622,7 +9621,6 @@ dependencies = [ "ic-nervous-system-clients", "ic-nervous-system-common", "ic-nervous-system-common-build-metadata", - "ic-nervous-system-common-test-keys", "ic-nervous-system-common-test-utils", "ic-nervous-system-governance", "ic-nervous-system-proto", @@ -9632,6 +9630,7 @@ dependencies = [ "ic-nns-common", "ic-nns-constants", "ic-nns-governance-api", + "ic-nns-governance-init", "ic-nns-governance-protobuf-generator", "ic-nns-gtc-accounts", "ic-protobuf", @@ -9694,6 +9693,22 @@ dependencies = [ "strum_macros 0.26.2", ] +[[package]] +name = "ic-nns-governance-init" +version = "0.9.0" +dependencies = [ + "csv", + "ic-base-types", + "ic-nervous-system-common", + "ic-nervous-system-common-build-metadata", + "ic-nervous-system-common-test-keys", + "ic-nns-common", + "ic-nns-governance-api", + "icp-ledger", + "rand 0.8.5", + "rand_chacha 0.3.1", +] + [[package]] name = "ic-nns-governance-protobuf-generator" version = "0.9.0" @@ -9914,6 +9929,7 @@ dependencies = [ "ic-nns-common", "ic-nns-constants", "ic-nns-governance", + "ic-nns-governance-init", "ic-nns-gtc", "ic-nns-handler-root", "ic-nns-test-utils", @@ -9989,6 +10005,7 @@ dependencies = [ "ic-nns-common", "ic-nns-constants", "ic-nns-governance", + "ic-nns-governance-init", "ic-nns-gtc", "ic-nns-gtc-accounts", "ic-nns-handler-lifeline-interface", diff --git a/rs/nns/governance/BUILD.bazel b/rs/nns/governance/BUILD.bazel index 27315d1294b1..1728320fa1f5 100644 --- a/rs/nns/governance/BUILD.bazel +++ b/rs/nns/governance/BUILD.bazel @@ -28,6 +28,7 @@ BASE_DEPENDENCIES = [ "//rs/nervous_system/runtime", "//rs/nns/cmc", "//rs/nns/common", + "//rs/nns/governance/init", "//rs/nns/gtc_accounts", "//rs/protobuf", "//rs/registry/canister", diff --git a/rs/nns/governance/Cargo.toml b/rs/nns/governance/Cargo.toml index fb38549838ec..4601cb771122 100644 --- a/rs/nns/governance/Cargo.toml +++ b/rs/nns/governance/Cargo.toml @@ -55,6 +55,7 @@ ic-nns-common = { path = "../common" } ic-nns-constants = { path = "../constants" } ic-nns-gtc-accounts = { path = "../gtc_accounts" } ic-nns-governance-api = { path = "./api" } +ic-nns-governance-init = { path = "./init" } ic-protobuf = { path = "../../protobuf" } ic-sns-init = { path = "../../sns/init" } # This is just for a couple of PB definitions. ic-sns-root = { path = "../../sns/root" } # This is just for a couple of PB definitions. diff --git a/rs/nns/governance/init/BUILD.bazel b/rs/nns/governance/init/BUILD.bazel index c2de7ff70d75..a0cd746379c3 100644 --- a/rs/nns/governance/init/BUILD.bazel +++ b/rs/nns/governance/init/BUILD.bazel @@ -42,17 +42,3 @@ rust_library( version = "0.9.0", deps = DEPENDENCIES, ) -# -#rust_library( -# name = "api--test_feature", -# srcs = glob( -# ["src/**/*.rs"], -# exclude = ["**/*tests.rs"], -# ), -# aliases = ALIASES, -# crate_features = ["test"], -# crate_name = "ic_nns_governance_api", -# proc_macro_deps = MACRO_DEPENDENCIES, -# version = "0.9.0", -# deps = DEPENDENCIES_WITH_TEST_FEATURES, -#) diff --git a/rs/nns/governance/init/Cargo.toml b/rs/nns/governance/init/Cargo.toml index 4d37e963693a..3fe69e591c7a 100644 --- a/rs/nns/governance/init/Cargo.toml +++ b/rs/nns/governance/init/Cargo.toml @@ -13,6 +13,7 @@ path = "src/lib.rs" [dependencies] ic-base-types = { path = "../../../types/base_types" } ic-nervous-system-common = { path = "../../../nervous_system/common" } +ic-nervous-system-common-test-keys = { path = "../../../nervous_system/common/test_keys" } ic-nervous-system-common-build-metadata = { path = "../../../nervous_system/common/build_metadata" } ic-nns-common = { path = "../../common" } ic-nns-governance-api = { path = "../api" } diff --git a/rs/nns/governance/init/src/lib.rs b/rs/nns/governance/init/src/lib.rs index b94f762bfa06..c61aec170d9b 100644 --- a/rs/nns/governance/init/src/lib.rs +++ b/rs/nns/governance/init/src/lib.rs @@ -1,8 +1,4 @@ #[cfg(not(target_arch = "wasm32"))] -use ic_nervous_system_common::ledger; -#[cfg(not(target_arch = "wasm32"))] -use ic_nns_governance_api::pb::v1::{neuron::DissolveState, neuron::Followees, Topic}; -#[cfg(not(target_arch = "wasm32"))] use icp_ledger::Subaccount; #[cfg(not(target_arch = "wasm32"))] use rand::{RngCore, SeedableRng}; diff --git a/rs/nns/governance/src/governance/tests/neurons_fund.rs b/rs/nns/governance/src/governance/tests/neurons_fund.rs index f7de9a140789..7dd10943ca53 100644 --- a/rs/nns/governance/src/governance/tests/neurons_fund.rs +++ b/rs/nns/governance/src/governance/tests/neurons_fund.rs @@ -6,6 +6,7 @@ use crate::{ use assert_matches::assert_matches; use ic_nervous_system_common::E8; use ic_nervous_system_proto::pb::v1 as pb; +use ic_nns_governance_api::pb::v1::ProposalData as ApiProposalData; use ic_nns_governance_init::GovernanceCanisterInitPayloadBuilder; use maplit::btreemap; use test_data::CREATE_SERVICE_NERVOUS_SYSTEM_WITH_MATCHED_FUNDING; @@ -18,13 +19,13 @@ fn proposal_passes_if_not_too_many_nf_neurons_can_occur() { .with_test_neurons_fund_neurons(500_000 * E8) .build(); governance_proto.proposals = btreemap! { - 123 => ProposalData { + 123 => ApiProposalData { id: Some(proposal_id), - ..ProposalData::default() + ..ApiProposalData::default() } }; let mut governance = Governance::new( - governance_proto, + governance_proto.into(), Box::::default(), Box::new(StubIcpLedger {}), Box::new(StubCMC {}), From 632bcd704c6e09e3ef94d6c197495618c6f5648e Mon Sep 17 00:00:00 2001 From: Max Summe Date: Tue, 23 Jul 2024 16:42:13 -0700 Subject: [PATCH 04/11] Fix some types in tests --- rs/nns/governance/BUILD.bazel | 3 +- rs/nns/governance/Cargo.toml | 4 + rs/nns/governance/init/BUILD.bazel | 16 +++- .../src/governance/tests/neurons_fund.rs | 22 ++--- rs/nns/governance/tests/governance.rs | 84 ++++++++++++------- rs/nns/governance/tests/init.rs | 3 +- 6 files changed, 90 insertions(+), 42 deletions(-) diff --git a/rs/nns/governance/BUILD.bazel b/rs/nns/governance/BUILD.bazel index 1728320fa1f5..2ce926192b43 100644 --- a/rs/nns/governance/BUILD.bazel +++ b/rs/nns/governance/BUILD.bazel @@ -28,7 +28,6 @@ BASE_DEPENDENCIES = [ "//rs/nervous_system/runtime", "//rs/nns/cmc", "//rs/nns/common", - "//rs/nns/governance/init", "//rs/nns/gtc_accounts", "//rs/protobuf", "//rs/registry/canister", @@ -80,6 +79,7 @@ DEPENDENCIES = BASE_DEPENDENCIES + [ "//rs/nns/governance/api", "//rs/nns/sns-wasm", "//rs/sns/init", + "//rs/nns/governance/init", "//rs/sns/swap", ] @@ -89,6 +89,7 @@ DEPENDENCIES_WITH_TEST_FEATURES = BASE_DEPENDENCIES + [ "//rs/nns/sns-wasm:sns-wasm--test_feature", "//rs/sns/init:init--test_feature", "//rs/sns/swap:swap--test_feature", + "//rs/nns/governance/init:init--test_feature", ] MACRO_DEPENDENCIES = [ diff --git a/rs/nns/governance/Cargo.toml b/rs/nns/governance/Cargo.toml index 4601cb771122..d9c120248dd1 100644 --- a/rs/nns/governance/Cargo.toml +++ b/rs/nns/governance/Cargo.toml @@ -88,6 +88,10 @@ comparable = { version = "0.5", features = ["derive"] } canbench-rs = { version = "0.1.4", optional = true } ic-cdk = { workspace = true, optional = true } +[target.'cfg(not(target_arch = "wasm32"))'.dependencies] +csv = "1.1" +ic-nervous-system-common-test-keys = { path = "../../nervous_system/common/test_keys" } + [target.'cfg(not(target_arch = "wasm32"))'.dev-dependencies] assert_matches = { workspace = true } diff --git a/rs/nns/governance/init/BUILD.bazel b/rs/nns/governance/init/BUILD.bazel index a0cd746379c3..c52b7a7f874a 100644 --- a/rs/nns/governance/init/BUILD.bazel +++ b/rs/nns/governance/init/BUILD.bazel @@ -8,7 +8,6 @@ BASE_DEPENDENCIES = [ "//rs/nervous_system/common", "//rs/nervous_system/common/test_keys", "//rs/nns/common", - "//rs/nns/governance/api", "//rs/rosetta-api/icp_ledger", "//rs/types/base_types", "@crate_index//:csv", @@ -19,9 +18,11 @@ BASE_DEPENDENCIES = [ # Each target declared in this file may choose either these (release-ready) # dependencies (`DEPENDENCIES`), or `DEPENDENCIES_WITH_TEST_FEATURES` feature previews. DEPENDENCIES = BASE_DEPENDENCIES + [ + "//rs/nns/governance/api", ] DEPENDENCIES_WITH_TEST_FEATURES = BASE_DEPENDENCIES + [ + "//rs/nns/governance/api:api--test_feature", ] MACRO_DEPENDENCIES = [ @@ -42,3 +43,16 @@ rust_library( version = "0.9.0", deps = DEPENDENCIES, ) + +rust_library( + name = "init--test_feature", + srcs = glob( + ["src/**/*.rs"], + exclude = ["**/*tests.rs"], + ), + aliases = ALIASES, + crate_name = "ic_nns_governance_init", + proc_macro_deps = MACRO_DEPENDENCIES, + version = "0.9.0", + deps = DEPENDENCIES_WITH_TEST_FEATURES, +) diff --git a/rs/nns/governance/src/governance/tests/neurons_fund.rs b/rs/nns/governance/src/governance/tests/neurons_fund.rs index 7dd10943ca53..755ec9ad6580 100644 --- a/rs/nns/governance/src/governance/tests/neurons_fund.rs +++ b/rs/nns/governance/src/governance/tests/neurons_fund.rs @@ -6,7 +6,7 @@ use crate::{ use assert_matches::assert_matches; use ic_nervous_system_common::E8; use ic_nervous_system_proto::pb::v1 as pb; -use ic_nns_governance_api::pb::v1::ProposalData as ApiProposalData; +use ic_nns_governance_api::pb::v1 as pb_api; use ic_nns_governance_init::GovernanceCanisterInitPayloadBuilder; use maplit::btreemap; use test_data::CREATE_SERVICE_NERVOUS_SYSTEM_WITH_MATCHED_FUNDING; @@ -19,10 +19,10 @@ fn proposal_passes_if_not_too_many_nf_neurons_can_occur() { .with_test_neurons_fund_neurons(500_000 * E8) .build(); governance_proto.proposals = btreemap! { - 123 => ApiProposalData { + 123_u64 => ProposalData { id: Some(proposal_id), - ..ApiProposalData::default() - } + ..ProposalData::default() + }.into() }; let mut governance = Governance::new( governance_proto.into(), @@ -75,7 +75,7 @@ fn proposal_fails_if_too_many_nf_neurons_can_occur() { }) .unwrap(); let neurons = (0..num_neurons_fund_neurons) - .map(|id| NeuronProto { + .map(|id| pb_api::Neuron { id: Some(NeuronId { id }), ..proto_neuron.clone() }) @@ -85,13 +85,13 @@ fn proposal_fails_if_too_many_nf_neurons_can_occur() { .build() }; governance_proto.proposals = btreemap! { - 123 => ProposalData { + 123_u64 => ProposalData { id: Some(proposal_id), ..ProposalData::default() - } + }.into() }; let mut governance = Governance::new( - governance_proto, + governance_proto.into(), Box::::default(), Box::new(StubIcpLedger {}), Box::new(StubCMC {}), @@ -126,13 +126,13 @@ fn proposal_fails_if_no_nf_neurons_exist() { let create_service_nervous_system = CREATE_SERVICE_NERVOUS_SYSTEM_WITH_MATCHED_FUNDING.clone(); let mut governance_proto = GovernanceCanisterInitPayloadBuilder::new().build(); governance_proto.proposals = btreemap! { - 123 => ProposalData { + 123_u64 => ProposalData { id: Some(proposal_id), ..ProposalData::default() - } + }.into() }; let mut governance = Governance::new( - governance_proto, + governance_proto.into(), Box::::default(), Box::new(StubIcpLedger {}), Box::new(StubCMC {}), diff --git a/rs/nns/governance/tests/governance.rs b/rs/nns/governance/tests/governance.rs index 71d31d13c896..1132e960cb96 100644 --- a/rs/nns/governance/tests/governance.rs +++ b/rs/nns/governance/tests/governance.rs @@ -2,7 +2,6 @@ //! are defi data_source: (), timestamp_seconds: ()ned as small but //! complex/weird configurations of neurons and proposals against which several //! tests are run. - use crate::fake::{ DAPP_CANISTER_ID, DEVELOPER_PRINCIPAL_ID, NODE_PROVIDER_REWARD, SNS_GOVERNANCE_CANISTER_ID, SNS_LEDGER_ARCHIVE_CANISTER_ID, SNS_LEDGER_CANISTER_ID, SNS_LEDGER_INDEX_CANISTER_ID, @@ -6094,11 +6093,16 @@ async fn test_not_for_profit_neurons() { Topic::NeuronManagement as i32, Followees { followees: vec![normal_neuron.id.unwrap()], - }, + } + .into(), ); - let (_, mut gov) = - governance_with_neurons(&init_neurons.values().cloned().collect::>()); + let (_, mut gov) = governance_with_neurons( + &init_neurons + .values() + .map(|n| n.clone().into()) + .collect::>(), + ); let not_for_profit_neuron = init_neurons[&25].clone(); @@ -6169,8 +6173,12 @@ fn test_hot_keys_cant_change_followees_of_manage_neuron_topic() { .hot_keys .push(*second_neuron.controller.as_ref().unwrap()); - let (_, mut gov) = - governance_with_neurons(&init_neurons.values().cloned().collect::>()); + let (_, mut gov) = governance_with_neurons( + &init_neurons + .values() + .map(|n| n.clone().into()) + .collect::>(), + ); let first_neuron = init_neurons[&25].clone(); @@ -6234,8 +6242,12 @@ fn test_add_and_remove_hot_key() { let mut builder = GovernanceCanisterInitPayloadBuilder::new(); let init_neurons = &mut builder.add_all_neurons_from_csv_file(&p).proto.neurons; - let (_, mut gov) = - governance_with_neurons(&init_neurons.values().cloned().collect::>()); + let (_, mut gov) = governance_with_neurons( + &init_neurons + .values() + .map(|n| n.clone().into()) + .collect::>(), + ); let neuron = init_neurons[&25].clone(); let new_controller = init_neurons[&42].controller.unwrap(); @@ -6313,13 +6325,17 @@ fn test_manage_and_reward_node_providers() { let voter_pid = *init_neurons[&42].controller.as_ref().unwrap(); let voter_neuron = init_neurons[&42].id.unwrap(); - init_neurons.get_mut(&42).unwrap().dissolve_state = Some(DissolveState::DissolveDelaySeconds( - MIN_DISSOLVE_DELAY_FOR_VOTE_ELIGIBILITY_SECONDS, - )); + init_neurons.get_mut(&42).unwrap().dissolve_state = Some( + DissolveState::DissolveDelaySeconds(MIN_DISSOLVE_DELAY_FOR_VOTE_ELIGIBILITY_SECONDS).into(), + ); let np_pid = PrincipalId::new_self_authenticating(&[14]); - let (driver, mut gov) = - governance_with_neurons(&init_neurons.values().cloned().collect::>()); + let (driver, mut gov) = governance_with_neurons( + &init_neurons + .values() + .map(|n| n.clone().into()) + .collect::>(), + ); println!( "Ledger {:?}\n", @@ -6659,15 +6675,19 @@ fn test_manage_and_reward_multiple_node_providers() { let voter_pid = *init_neurons[&42].controller.as_ref().unwrap(); let voter_neuron = init_neurons[&42].id.unwrap(); - init_neurons.get_mut(&42).unwrap().dissolve_state = Some(DissolveState::DissolveDelaySeconds( - MIN_DISSOLVE_DELAY_FOR_VOTE_ELIGIBILITY_SECONDS, - )); + init_neurons.get_mut(&42).unwrap().dissolve_state = Some( + DissolveState::DissolveDelaySeconds(MIN_DISSOLVE_DELAY_FOR_VOTE_ELIGIBILITY_SECONDS).into(), + ); let np_pid_0 = PrincipalId::new_self_authenticating(&[14]); let np_pid_1 = PrincipalId::new_self_authenticating(&[15]); let np_pid_2 = PrincipalId::new_self_authenticating(&[16]); - let (driver, mut gov) = - governance_with_neurons(&init_neurons.values().cloned().collect::>()); + let (driver, mut gov) = governance_with_neurons( + &init_neurons + .values() + .map(|n| n.clone().into()) + .collect::>(), + ); println!( "Ledger {:?}\n", @@ -7029,11 +7049,15 @@ fn test_network_economics_proposal() { let voter_pid = *init_neurons[&42].controller.as_ref().unwrap(); let voter_neuron = init_neurons[&42].id.unwrap(); - init_neurons.get_mut(&42).unwrap().dissolve_state = Some(DissolveState::DissolveDelaySeconds( - MIN_DISSOLVE_DELAY_FOR_VOTE_ELIGIBILITY_SECONDS, - )); - let (_, mut gov) = - governance_with_neurons(&init_neurons.values().cloned().collect::>()); + init_neurons.get_mut(&42).unwrap().dissolve_state = Some( + DissolveState::DissolveDelaySeconds(MIN_DISSOLVE_DELAY_FOR_VOTE_ELIGIBILITY_SECONDS).into(), + ); + let (_, mut gov) = governance_with_neurons( + &init_neurons + .values() + .map(|n| n.clone().into()) + .collect::>(), + ); gov.heap_data.economics.as_mut().unwrap().reject_cost_e8s = 1234; gov.heap_data @@ -7138,11 +7162,15 @@ fn test_default_followees() { let voter_pid = *init_neurons[&42].controller.as_ref().unwrap(); let voter_neuron = init_neurons[&42].id.unwrap(); - init_neurons.get_mut(&42).unwrap().dissolve_state = Some(DissolveState::DissolveDelaySeconds( - MIN_DISSOLVE_DELAY_FOR_VOTE_ELIGIBILITY_SECONDS, - )); - let (mut driver, mut gov) = - governance_with_neurons(&init_neurons.values().cloned().collect::>()); + init_neurons.get_mut(&42).unwrap().dissolve_state = Some( + DissolveState::DissolveDelaySeconds(MIN_DISSOLVE_DELAY_FOR_VOTE_ELIGIBILITY_SECONDS).into(), + ); + let (mut driver, mut gov) = governance_with_neurons( + &init_neurons + .values() + .map(|n| n.clone().into()) + .collect::>(), + ); let default_followees = hashmap![ Topic::Unspecified as i32 => Followees { followees: vec![voter_neuron]}, diff --git a/rs/nns/governance/tests/init.rs b/rs/nns/governance/tests/init.rs index e4e4a0229b34..fcf57d3c7f65 100644 --- a/rs/nns/governance/tests/init.rs +++ b/rs/nns/governance/tests/init.rs @@ -1,4 +1,5 @@ -use ic_nns_governance::{init::GovernanceCanisterInitPayloadBuilder, pb::v1::Topic}; +use ic_nns_governance_api::pb::v1::Topic; +use ic_nns_governance_init::GovernanceCanisterInitPayloadBuilder; use std::path::PathBuf; #[test] From f2c9dc2a4d7933419d73b83fbca9255c401fabcc Mon Sep 17 00:00:00 2001 From: IDX GitHub Automation Date: Tue, 23 Jul 2024 23:49:56 +0000 Subject: [PATCH 05/11] Automatically updated Cargo*.lock --- Cargo.lock | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Cargo.lock b/Cargo.lock index 363652444ea1..4e4be316801b 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -9603,6 +9603,7 @@ dependencies = [ "candid", "comparable", "criterion", + "csv", "cycles-minting-canister", "dfn_candid", "dfn_core", @@ -9621,6 +9622,7 @@ dependencies = [ "ic-nervous-system-clients", "ic-nervous-system-common", "ic-nervous-system-common-build-metadata", + "ic-nervous-system-common-test-keys", "ic-nervous-system-common-test-utils", "ic-nervous-system-governance", "ic-nervous-system-proto", From bbdeb64203a9eb306b31338767dd12fb42b7331a Mon Sep 17 00:00:00 2001 From: Max Summe Date: Tue, 23 Jul 2024 16:53:28 -0700 Subject: [PATCH 06/11] Fix more conversions --- rs/nns/test_utils/src/common.rs | 25 +++++++++++++++++-------- 1 file changed, 17 insertions(+), 8 deletions(-) diff --git a/rs/nns/test_utils/src/common.rs b/rs/nns/test_utils/src/common.rs index 387025ac82d0..d345f239bc95 100644 --- a/rs/nns/test_utils/src/common.rs +++ b/rs/nns/test_utils/src/common.rs @@ -138,7 +138,8 @@ impl NnsInitPayloadsBuilder { } pub fn with_additional_neurons(&mut self, neurons: Vec) -> &mut Self { - self.governance.with_additional_neurons(neurons); + self.governance + .with_additional_neurons(neurons.into_iter().map(|n| n.into()).collect()); self } @@ -151,7 +152,7 @@ impl NnsInitPayloadsBuilder { } pub fn with_governance_proto(&mut self, proto: Governance) -> &mut Self { - self.governance.with_governance_proto(proto); + self.governance.with_governance_proto(proto.into()); self } @@ -180,15 +181,22 @@ impl NnsInitPayloadsBuilder { self.genesis_token.add_sr_neurons(SEED_ROUND_ACCOUNTS); self.genesis_token.add_ect_neurons(ECT_ACCOUNTS); + let default_followees = self + .governance + .proto + .default_followees + .iter() + .map(|(id, followees)| (*id, followees.clone().into())) + .collect(); + let gtc_neurons = self .genesis_token .get_gtc_neurons() .into_iter() .map(|mut neuron| { - neuron - .followees - .clone_from(&self.governance.proto.default_followees); - neuron + neuron.followees.clone_from(&default_followees); + // convert for our init that uses api types + neuron.into() }) .collect(); @@ -229,7 +237,8 @@ impl NnsInitPayloadsBuilder { } pub fn with_network_economics(&mut self, network_economics: NetworkEconomics) -> &mut Self { - self.governance.with_network_economics(network_economics); + self.governance + .with_network_economics(network_economics.into()); self } @@ -263,7 +272,7 @@ impl NnsInitPayloadsBuilder { } NnsInitPayloads { registry: self.registry.build(), - governance: self.governance.build(), + governance: self.governance.build().into(), ledger: self.ledger.clone(), root: self.root.build(), cycles_minting: self.cycles_minting.clone(), From e46a5d2bde5685e1fb3450fa570f6504ade28156 Mon Sep 17 00:00:00 2001 From: Max Summe Date: Tue, 23 Jul 2024 17:43:34 -0700 Subject: [PATCH 07/11] Fix more tests --- rs/nns/integration_tests/src/bad_input.rs | 11 ++++++----- .../src/governance_get_build_metadata_test.rs | 1 + rs/nns/integration_tests/src/governance_neurons.rs | 2 ++ rs/nns/integration_tests/src/governance_time_warp.rs | 3 ++- rs/nns/integration_tests/src/governance_upgrade.rs | 2 +- rs/nns/integration_tests/src/gtc.rs | 11 ++++++++--- rs/nns/integration_tests/src/network_economics.rs | 2 +- rs/nns/integration_tests/src/wait_for_quiet.rs | 3 ++- 8 files changed, 23 insertions(+), 12 deletions(-) diff --git a/rs/nns/integration_tests/src/bad_input.rs b/rs/nns/integration_tests/src/bad_input.rs index 0a52df4e48b7..b06971c0a441 100644 --- a/rs/nns/integration_tests/src/bad_input.rs +++ b/rs/nns/integration_tests/src/bad_input.rs @@ -5,7 +5,8 @@ use assert_matches::assert_matches; use dfn_candid::candid; use ic_base_types::PrincipalId; use ic_nns_common::types::ProposalId; -use ic_nns_governance::{init::GovernanceCanisterInitPayloadBuilder, pb::v1::ProposalInfo}; +use ic_nns_governance::pb::v1::ProposalInfo; +use ic_nns_governance_init::GovernanceCanisterInitPayloadBuilder; use ic_nns_test_utils::itest_helpers::{ set_up_governance_canister, state_machine_test_on_nns_subnet, }; @@ -16,7 +17,7 @@ fn test_skipping_quota() { state_machine_test_on_nns_subnet(|runtime| async move { let canister = set_up_governance_canister( &runtime, - GovernanceCanisterInitPayloadBuilder::new().build(), + GovernanceCanisterInitPayloadBuilder::new().build().into(), ) .await; @@ -50,7 +51,7 @@ fn test_bad_proposal_id_candid_type() { state_machine_test_on_nns_subnet(|runtime| async move { let canister = set_up_governance_canister( &runtime, - GovernanceCanisterInitPayloadBuilder::new().build(), + GovernanceCanisterInitPayloadBuilder::new().build().into(), ) .await; @@ -72,7 +73,7 @@ fn test_bad_proposal_id_candid_encoding() { state_machine_test_on_nns_subnet(|runtime| async move { let canister = set_up_governance_canister( &runtime, - GovernanceCanisterInitPayloadBuilder::new().build(), + GovernanceCanisterInitPayloadBuilder::new().build().into(), ) .await; @@ -94,7 +95,7 @@ fn test_inexistent_proposal_id_is_not_a_bad_input() { state_machine_test_on_nns_subnet(|runtime| async move { let canister = set_up_governance_canister( &runtime, - GovernanceCanisterInitPayloadBuilder::new().build(), + GovernanceCanisterInitPayloadBuilder::new().build().into(), ) .await; diff --git a/rs/nns/integration_tests/src/governance_get_build_metadata_test.rs b/rs/nns/integration_tests/src/governance_get_build_metadata_test.rs index 27765a8bebcf..8899f57aa59f 100644 --- a/rs/nns/integration_tests/src/governance_get_build_metadata_test.rs +++ b/rs/nns/integration_tests/src/governance_get_build_metadata_test.rs @@ -33,6 +33,7 @@ fn get_build_metadata_test() { not_for_profit: true, ..Default::default() } + .into() ), None, "There is more than one neuron with the same id." diff --git a/rs/nns/integration_tests/src/governance_neurons.rs b/rs/nns/integration_tests/src/governance_neurons.rs index 7fdb9d77b314..78ec34898dcd 100644 --- a/rs/nns/integration_tests/src/governance_neurons.rs +++ b/rs/nns/integration_tests/src/governance_neurons.rs @@ -63,6 +63,7 @@ fn test_merge_neurons_and_simulate_merge_neurons() { not_for_profit: true, ..Default::default() } + .into() ), None, "There is more than one neuron with the same id." @@ -178,6 +179,7 @@ fn test_spawn_neuron() { maturity_e8s_equivalent: 1_000_000_000, // Equivalent to 10 ICP ..Default::default() } + .into() ), None, "There is more than one neuron with the same id." diff --git a/rs/nns/integration_tests/src/governance_time_warp.rs b/rs/nns/integration_tests/src/governance_time_warp.rs index 27bce66d7292..3e6ff8ced34e 100644 --- a/rs/nns/integration_tests/src/governance_time_warp.rs +++ b/rs/nns/integration_tests/src/governance_time_warp.rs @@ -55,7 +55,8 @@ fn test_time_warp() { kyc_verified: true, ..Default::default() - }, + } + .into(), ); assert_eq!( pre_existing_neuron, None, diff --git a/rs/nns/integration_tests/src/governance_upgrade.rs b/rs/nns/integration_tests/src/governance_upgrade.rs index 380a924b9d7f..7db3d44d0b4f 100644 --- a/rs/nns/integration_tests/src/governance_upgrade.rs +++ b/rs/nns/integration_tests/src/governance_upgrade.rs @@ -56,7 +56,7 @@ fn test_upgrade_after_state_shrink() { .create_canister_at_id_max_cycles_with_retries(GOVERNANCE_CANISTER_ID.get()) .await .unwrap(); - install_governance_canister(&mut canister, governance_proto).await; + install_governance_canister(&mut canister, governance_proto.into()).await; // First let's do a self-upgrade canister.stop().await.unwrap(); diff --git a/rs/nns/integration_tests/src/gtc.rs b/rs/nns/integration_tests/src/gtc.rs index 0c63aa62f9f3..261c3a60e15f 100644 --- a/rs/nns/integration_tests/src/gtc.rs +++ b/rs/nns/integration_tests/src/gtc.rs @@ -525,9 +525,14 @@ pub fn add_test_gtc_neurons(payload_builder: &mut NnsInitPayloadsBuilder) { payload_builder .genesis_token .add_ect_neurons(TEST_ECT_ACCOUNTS); - payload_builder - .governance - .add_gtc_neurons(payload_builder.genesis_token.get_gtc_neurons()); + payload_builder.governance.add_gtc_neurons( + payload_builder + .genesis_token + .get_gtc_neurons() + .into_iter() + .map(|n| n.into()) + .collect(), + ); payload_builder .genesis_token .add_forward_whitelist(&[TEST_IDENTITY_4.gtc_address]); diff --git a/rs/nns/integration_tests/src/network_economics.rs b/rs/nns/integration_tests/src/network_economics.rs index 9a1c33684b97..5015ab4b0273 100644 --- a/rs/nns/integration_tests/src/network_economics.rs +++ b/rs/nns/integration_tests/src/network_economics.rs @@ -14,7 +14,7 @@ fn test_get_network_economics() { }; let mut nns_builder = NnsInitPayloadsBuilder::new(); - nns_builder.governance.proto.economics = Some(network_economics.clone()); + nns_builder.governance.proto.economics = Some(network_economics.clone().into()); let nns_init_payload = nns_builder.build(); let nns_canisters = NnsCanisters::set_up(&runtime, nns_init_payload).await; diff --git a/rs/nns/integration_tests/src/wait_for_quiet.rs b/rs/nns/integration_tests/src/wait_for_quiet.rs index adfb164096d0..37927ca0f885 100644 --- a/rs/nns/integration_tests/src/wait_for_quiet.rs +++ b/rs/nns/integration_tests/src/wait_for_quiet.rs @@ -49,7 +49,8 @@ fn test_deadline_is_extended_with_wait_for_quiet() { cached_neuron_stake_e8s: 200_000_000, dissolve_state: Some(DissolveState::DissolveDelaySeconds(ONE_DAY_SECONDS * 365)), ..Default::default() - }, + } + .into(), ); let nns_init_payload = nns_init_payload_builder.build(); From 230ca900894e8b13e3881d646948e1af9a1d24f6 Mon Sep 17 00:00:00 2001 From: Max Summe Date: Tue, 23 Jul 2024 21:08:28 -0700 Subject: [PATCH 08/11] Fix another dependency --- rs/nns/init/BUILD.bazel | 2 +- rs/nns/init/Cargo.toml | 2 +- rs/nns/init/src/get_neuron_ids.rs | 2 +- rs/nns/init/src/main.rs | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/rs/nns/init/BUILD.bazel b/rs/nns/init/BUILD.bazel index 62517a41053e..e30b5edad970 100644 --- a/rs/nns/init/BUILD.bazel +++ b/rs/nns/init/BUILD.bazel @@ -8,7 +8,7 @@ DEPENDENCIES = [ "//rs/interfaces/registry", "//rs/nns/common", "//rs/nns/constants", - "//rs/nns/governance", + "//rs/nns/governance/api", "//rs/nns/test_utils", "//rs/registry/local_store", "//rs/registry/proto_data_provider", diff --git a/rs/nns/init/Cargo.toml b/rs/nns/init/Cargo.toml index d481fca81675..0cd6ca479a6b 100644 --- a/rs/nns/init/Cargo.toml +++ b/rs/nns/init/Cargo.toml @@ -19,7 +19,7 @@ ic-registry-transport = { path = "../../registry/transport" } ic-nns-test-utils = { path = "../../nns/test_utils" } ic-nns-common = { path = "../common" } ic-nns-constants = { path = "../constants" } -ic-nns-governance = { path = "../governance" } +ic-nns-governance-api = { path = "../governance/api" } ic-test-identity = { path = "../../test_utilities/identity" } ic-sys = { path = "../../sys" } icp-ledger = { path = "../../rosetta-api/icp_ledger" } diff --git a/rs/nns/init/src/get_neuron_ids.rs b/rs/nns/init/src/get_neuron_ids.rs index 0195bb831cbb..8335aa9157d3 100644 --- a/rs/nns/init/src/get_neuron_ids.rs +++ b/rs/nns/init/src/get_neuron_ids.rs @@ -1,4 +1,4 @@ -use ic_nns_governance::pb::v1::Governance as GovernanceProto; +use ic_nns_governance_api::pb::v1::Governance as GovernanceProto; use prost::Message; use std::fs; diff --git a/rs/nns/init/src/main.rs b/rs/nns/init/src/main.rs index 89fa5603acc0..487867ab00f9 100644 --- a/rs/nns/init/src/main.rs +++ b/rs/nns/init/src/main.rs @@ -4,7 +4,7 @@ use ic_base_types::{PrincipalId, SubnetId}; use ic_canister_client::{Agent, HttpClientConfig, Sender}; use ic_nns_common::pb::v1::NeuronId; use ic_nns_constants::REGISTRY_CANISTER_ID; -use ic_nns_governance::pb::v1::Governance as GovernanceProto; +use ic_nns_governance_api::pb::v1::Governance as GovernanceProto; use ic_nns_init::{make_hsm_sender, set_up_env_vars_for_all_canisters}; use ic_nns_test_utils::{ common::{NnsInitPayloads, NnsInitPayloadsBuilder}, From 7ae14e0c39489cfcd32b4a718e6d27ade4d98fe4 Mon Sep 17 00:00:00 2001 From: IDX GitHub Automation Date: Wed, 24 Jul 2024 04:15:59 +0000 Subject: [PATCH 09/11] Automatically updated Cargo*.lock --- Cargo.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Cargo.lock b/Cargo.lock index 4e4be316801b..9c5f35b25cbf 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -9860,7 +9860,7 @@ dependencies = [ "ic-interfaces-registry", "ic-nns-common", "ic-nns-constants", - "ic-nns-governance", + "ic-nns-governance-api", "ic-nns-test-utils", "ic-registry-local-store", "ic-registry-proto-data-provider", From c289191e421c3eadade25e5f4625689c52ac7799 Mon Sep 17 00:00:00 2001 From: Max Summe Date: Tue, 23 Jul 2024 21:26:17 -0700 Subject: [PATCH 10/11] Fix another test_feature dep --- rs/nns/test_utils/BUILD.bazel | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/rs/nns/test_utils/BUILD.bazel b/rs/nns/test_utils/BUILD.bazel index 84b83fd99ac2..57af9f29853d 100644 --- a/rs/nns/test_utils/BUILD.bazel +++ b/rs/nns/test_utils/BUILD.bazel @@ -20,7 +20,6 @@ BASE_DEPENDENCIES = [ "//rs/nervous_system/root", "//rs/nns/cmc", "//rs/nns/common", - "//rs/nns/governance/init", "//rs/nns/gtc_accounts", "//rs/nns/handlers/lifeline/impl:lifeline", "//rs/nns/handlers/lifeline/interface", @@ -67,6 +66,7 @@ BASE_DEPENDENCIES = [ # dependencies (`DEPENDENCIES`), or `DEPENDENCIES_WITH_TEST_FEATURES` feature previews. DEPENDENCIES = BASE_DEPENDENCIES + [ "//rs/nns/governance", + "//rs/nns/governance/init", "//rs/nns/gtc", "//rs/nns/sns-wasm", "//rs/nns/handlers/root/impl:root", @@ -77,6 +77,7 @@ DEPENDENCIES = BASE_DEPENDENCIES + [ DEPENDENCIES_WITH_TEST_FEATURES = BASE_DEPENDENCIES + [ "//rs/nns/governance:governance--test_feature", + "//rs/nns/governance/init:init--test_feature", "//rs/nns/gtc:gtc--test_feature", "//rs/nns/sns-wasm:sns-wasm--test_feature", "//rs/nns/handlers/root/impl:root--test_feature", From 0b7d7631154bbfa0e50b283fa4ef55ae82a7f4e3 Mon Sep 17 00:00:00 2001 From: Max Summe Date: Tue, 23 Jul 2024 21:32:31 -0700 Subject: [PATCH 11/11] Fix another test_feature dep --- rs/nns/integration_tests/BUILD.bazel | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/rs/nns/integration_tests/BUILD.bazel b/rs/nns/integration_tests/BUILD.bazel index 2e91fc6a89de..84c01a7d96d5 100644 --- a/rs/nns/integration_tests/BUILD.bazel +++ b/rs/nns/integration_tests/BUILD.bazel @@ -12,7 +12,6 @@ BASE_DEPENDENCIES = [ "//rs/nervous_system/common/test_keys", "//rs/nns/cmc", "//rs/nns/common", - "//rs/nns/governance/init", "//rs/nns/handlers/lifeline/impl:lifeline", "//rs/rosetta-api/icp_ledger", "//rs/rosetta-api/ledger_core", @@ -76,6 +75,7 @@ BASE_DEPENDENCIES = [ DEPENDENCIES = BASE_DEPENDENCIES + [ "//rs/sns/init", "//rs/nns/governance", + "//rs/nns/governance/init", "//rs/nns/sns-wasm", "//rs/nns/handlers/root/impl:root", "//rs/sns/swap", @@ -91,6 +91,7 @@ DEPENDENCIES = BASE_DEPENDENCIES + [ DEPENDENCIES_WITH_TEST_FEATURES = BASE_DEPENDENCIES + [ "//rs/sns/init:init--test_feature", "//rs/nns/governance:governance--test_feature", + "//rs/nns/governance/init:init--test_feature", "//rs/nns/sns-wasm:sns-wasm--test_feature", "//rs/nns/handlers/root/impl:root--test_feature", "//rs/sns/swap:swap--test_feature",