From 41c4310446c7dfb2c0ab0565a2071ebc50e1b2f6 Mon Sep 17 00:00:00 2001 From: Severin Siffert Date: Fri, 16 Sep 2022 11:26:39 +0200 Subject: [PATCH 01/10] chore: reduce noisiness of dfx start --- CHANGELOG.md | 5 ++ src/dfx/src/actors/icx_proxy.rs | 8 ++++ src/dfx/src/commands/bootstrap.rs | 3 +- src/dfx/src/commands/replica.rs | 2 +- src/dfx/src/commands/start.rs | 3 +- src/dfx/src/lib/environment.rs | 23 ++++++--- .../lib/network/local_server_descriptor.rs | 48 ++++++++++--------- src/dfx/src/main.rs | 10 ++-- 8 files changed, 65 insertions(+), 37 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 859f92e5b5..99eceba57a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -68,6 +68,11 @@ It is now possible to set the http adapter's log level in dfx.json or in network By default, a log level of "error" is used, in order to keep the output of a first-time `dfx start` minimal. Change it to "debug" for more verbose logging. +### chore: reduce verbosity of dfx start + +`dfx start` produces a lot of log output that is at best irrelevant for most users. +Most output is no longer visible unless either `--verbose` is used with dfx or the relevant part's (e.g. http adapter, btc adapter, or replica) log level is changed in dfx.json or networks.json. + ### feat: generate secp256k1 keys by default When creating a new identity with `dfx identity new`, whereas previously it would have generated an Ed25519 key, it now generates a secp256k1 key. This is to enable users to write down a BIP39-style seed phrase, to recover their key in case of emergency, which will be printed when the key is generated and can be used with a new `--seed-phrase` flag in `dfx identity import`. `dfx identity import` is however still capable of importing an Ed25519 key. diff --git a/src/dfx/src/actors/icx_proxy.rs b/src/dfx/src/actors/icx_proxy.rs index 9e962d3ecf..242fab79dd 100644 --- a/src/dfx/src/actors/icx_proxy.rs +++ b/src/dfx/src/actors/icx_proxy.rs @@ -41,6 +41,9 @@ pub struct IcxProxyConfig { /// does the icx-proxy need to fetch the root key pub fetch_root_key: bool, + + /// run icx-proxy in non-quiet mode + pub verbose: bool, } /// The configuration for the icx_proxy actor. @@ -94,6 +97,7 @@ impl IcxProxy { icx_proxy_pid_path.clone(), receiver, fetch_root_key, + config.verbose, ), "Failed to start ICX proxy thread.", )?; @@ -186,6 +190,7 @@ fn icx_proxy_start_thread( icx_proxy_pid_path: PathBuf, receiver: Receiver<()>, fetch_root_key: bool, + verbose: bool, ) -> DfxResult> { let thread_handler = move || { // Use a Waiter for waiting for the file to be created. @@ -209,6 +214,9 @@ fn icx_proxy_start_thread( let s = format!("{}", url); cmd.args(&["--replica", &s]); } + if !verbose { + cmd.arg("-q"); + } cmd.stdout(std::process::Stdio::inherit()); cmd.stderr(std::process::Stdio::inherit()); diff --git a/src/dfx/src/commands/bootstrap.rs b/src/dfx/src/commands/bootstrap.rs index 995c238cdf..59f8ae7138 100644 --- a/src/dfx/src/commands/bootstrap.rs +++ b/src/dfx/src/commands/bootstrap.rs @@ -54,7 +54,7 @@ pub fn exec( let network_descriptor = apply_arguments(network_descriptor, ip, port.as_deref(), timeout.as_deref())?; let local_server_descriptor = network_descriptor.local_server_descriptor()?; - local_server_descriptor.describe_bootstrap(); + local_server_descriptor.describe_bootstrap(env.get_logger()); let config_bootstrap = &local_server_descriptor.bootstrap; create_dir_all(&local_server_descriptor.data_directory).with_context(|| { @@ -99,6 +99,7 @@ pub fn exec( bind: socket_addr, replica_urls, fetch_root_key: !network_descriptor.is_ic, + verbose: env.get_verbose_level() > 0, }; let port_ready_subscribe = None; diff --git a/src/dfx/src/commands/replica.rs b/src/dfx/src/commands/replica.rs index 0f0b0189dd..81c60811f8 100644 --- a/src/dfx/src/commands/replica.rs +++ b/src/dfx/src/commands/replica.rs @@ -106,7 +106,7 @@ pub fn exec( )?; let local_server_descriptor = network_descriptor.local_server_descriptor()?; - local_server_descriptor.describe(true, true); + local_server_descriptor.describe(env.get_logger(), true, true); let temp_dir = &local_server_descriptor.data_directory; create_dir_all(&temp_dir).with_context(|| { diff --git a/src/dfx/src/commands/start.rs b/src/dfx/src/commands/start.rs index 9c63f8a22f..408f35d62c 100644 --- a/src/dfx/src/commands/start.rs +++ b/src/dfx/src/commands/start.rs @@ -213,7 +213,7 @@ pub fn exec( send_background()?; return fg_ping_and_wait(webserver_port_path, frontend_url); } - local_server_descriptor.describe(true, false); + local_server_descriptor.describe(env.get_logger(), true, false); write_pid(&pid_file_path); std::fs::write(&webserver_port_path, address_and_port.port().to_string()).with_context( @@ -321,6 +321,7 @@ pub fn exec( bind: address_and_port, replica_urls: vec![], // will be determined after replica starts fetch_root_key: !network_descriptor.is_ic, + verbose: env.get_verbose_level() > 0, }; let proxy = start_icx_proxy_actor( diff --git a/src/dfx/src/lib/environment.rs b/src/dfx/src/lib/environment.rs index 4af5fce0fe..5d3fc7b623 100644 --- a/src/dfx/src/lib/environment.rs +++ b/src/dfx/src/lib/environment.rs @@ -44,6 +44,7 @@ pub trait Environment { fn get_network_descriptor<'a>(&'a self) -> &'a NetworkDescriptor; fn get_logger(&self) -> &slog::Logger; + fn get_verbose_level(&self) -> i64; fn new_spinner(&self, message: Cow<'static, str>) -> ProgressBar; fn new_progress(&self, message: &str) -> ProgressBar; @@ -67,7 +68,7 @@ pub struct EnvironmentImpl { version: Version, logger: Option, - progress: bool, + verbose_level: i64, identity_override: Option, } @@ -116,7 +117,7 @@ impl EnvironmentImpl { shared_networks_config: Arc::new(shared_networks_config), version: version.clone(), logger: None, - progress: true, + verbose_level: 0, identity_override: None, }) } @@ -126,13 +127,13 @@ impl EnvironmentImpl { self } - pub fn with_progress_bar(mut self, progress: bool) -> Self { - self.progress = progress; + pub fn with_identity_override(mut self, identity: Option) -> Self { + self.identity_override = identity; self } - pub fn with_identity_override(mut self, identity: Option) -> Self { - self.identity_override = identity; + pub fn with_verbose_level(mut self, verbose_level: i64) -> Self { + self.verbose_level = verbose_level; self } } @@ -190,8 +191,12 @@ impl Environment for EnvironmentImpl { .expect("Log was not setup, but is being used.") } + fn get_verbose_level(&self) -> i64 { + self.verbose_level + } + fn new_spinner(&self, message: Cow<'static, str>) -> ProgressBar { - if self.progress { + if self.verbose_level >= 0 { ProgressBar::new_spinner(message) } else { ProgressBar::discard() @@ -286,6 +291,10 @@ impl<'a> Environment for AgentEnvironment<'a> { self.backend.get_logger() } + fn get_verbose_level(&self) -> i64 { + self.backend.get_verbose_level() + } + fn new_spinner(&self, message: Cow<'static, str>) -> ProgressBar { self.backend.new_spinner(message) } diff --git a/src/dfx/src/lib/network/local_server_descriptor.rs b/src/dfx/src/lib/network/local_server_descriptor.rs index 191820ccec..55a44a3967 100644 --- a/src/dfx/src/lib/network/local_server_descriptor.rs +++ b/src/dfx/src/lib/network/local_server_descriptor.rs @@ -11,6 +11,7 @@ use crate::lib::error::DfxResult; use anyhow::Context; use fn_error_context::context; +use slog::{debug, Logger}; use std::net::{IpAddr, SocketAddr}; use std::path::{Path, PathBuf}; @@ -228,8 +229,8 @@ impl LocalServerDescriptor { } impl LocalServerDescriptor { - pub fn describe(&self, include_replica: bool, include_replica_port: bool) { - println!("Local server configuration:"); + pub fn describe(&self, log: &Logger, include_replica: bool, include_replica_port: bool) { + debug!(log, "Local server configuration:"); let default_bind: SocketAddr = match self.scope { LocalNetworkScopeDescriptor::Project => DEFAULT_PROJECT_LOCAL_BIND, LocalNetworkScopeDescriptor::Shared { .. } => DEFAULT_SHARED_LOCAL_BIND, @@ -242,10 +243,10 @@ impl LocalServerDescriptor { } else { "".to_string() }; - println!(" bind address: {:?}{}", self.bind_address, diffs); + debug!(log, " ∟bind address: {:?}{}", self.bind_address, diffs); if self.bitcoin.enabled { let default_nodes = crate::lib::bitcoin::adapter::config::default_nodes(); - println!(" bitcoin: enabled (default: disabled)"); + debug!(log, " ∟bitcoin: enabled (default: disabled)"); let nodes: Vec = if let Some(ref nodes) = self.bitcoin.nodes { nodes.clone() } else { @@ -256,27 +257,30 @@ impl LocalServerDescriptor { } else { "".to_string() }; - println!(" nodes: {:?}{}", nodes, diffs); + debug!(log, " | ∟nodes: {:?}{}", nodes, diffs); } else { - println!(" bitcoin: disabled"); + debug!(log, " ∟bitcoin: disabled"); } if self.canister_http.enabled { - println!(" canister http: enabled"); + debug!(log, " ∟canister http: enabled"); let diffs: String = if self.canister_http.log_level != HttpAdapterLogLevel::default() { format!(" (default: {:?})", HttpAdapterLogLevel::default()) } else { "".to_string() }; - println!(" log level: {:?}{}", self.canister_http.log_level, diffs); + debug!( + log, + " | ∟log level: {:?}{}", self.canister_http.log_level, diffs + ); } else { - println!(" canister http: disabled (default: enabled)"); + debug!(log, " ∟canister http: disabled (default: enabled)"); } if include_replica { - println!(" replica:"); + debug!(log, " ∟replica:"); if include_replica_port { - println!(" port: "); + debug!(log, " ∟port: "); } let subnet_type = self .replica @@ -287,7 +291,7 @@ impl LocalServerDescriptor { } else { "".to_string() }; - println!(" subnet type: {:?}{}", subnet_type, diffs); + debug!(log, " | ∟subnet type: {:?}{}", subnet_type, diffs); let log_level = self.replica.log_level.unwrap_or_default(); let diffs: String = if log_level != ReplicaLogLevel::default() { @@ -295,40 +299,40 @@ impl LocalServerDescriptor { } else { "".to_string() }; - println!(" log level: {:?}{}", log_level, diffs); + debug!(log, " | ∟log level: {:?}{}", log_level, diffs); } - println!(" data directory: {}", self.data_directory.display()); + debug!(log, " ∟data directory: {}", self.data_directory.display()); let scope = match self.scope { LocalNetworkScopeDescriptor::Project => "project", LocalNetworkScopeDescriptor::Shared { .. } => "shared", }; - println!(" scope: {}", scope); - println!(); + debug!(log, " ∟scope: {}", scope); + debug!(log, ""); } - pub fn describe_bootstrap(&self) { - println!("Bootstrap configuration:"); + pub fn describe_bootstrap(&self, log: &Logger) { + debug!(log, "Bootstrap configuration:"); let default: ConfigDefaultsBootstrap = Default::default(); let diffs = if self.bootstrap.ip != default.ip { format!(" (default: {:?})", default.ip) } else { "".to_string() }; - println!(" ip: {:?}{}", self.bootstrap.ip, diffs); + debug!(log, " ∟ip: {:?}{}", self.bootstrap.ip, diffs); let diffs = if self.bootstrap.port != default.port { format!(" (default: {})", default.port) } else { "".to_string() }; - println!(" port: {}{}", self.bootstrap.port, diffs); + debug!(log, " ∟port: {}{}", self.bootstrap.port, diffs); let diffs = if self.bootstrap.timeout != default.timeout { format!(" (default: {})", default.timeout) } else { "".to_string() }; - println!(" timeout: {}{}", self.bootstrap.timeout, diffs); - println!(); + debug!(log, " ∟timeout: {}{}", self.bootstrap.timeout, diffs); + debug!(log, ""); } } diff --git a/src/dfx/src/main.rs b/src/dfx/src/main.rs index 26c503d0b8..3534055e38 100644 --- a/src/dfx/src/main.rs +++ b/src/dfx/src/main.rs @@ -102,9 +102,9 @@ fn maybe_redirect_dfx(version: &Version) -> Option<()> { /// Setup a logger with the proper configuration, based on arguments. /// Returns a topple of whether or not to have a progress bar, and a logger. -fn setup_logging(opts: &CliOpts) -> (bool, slog::Logger) { +fn setup_logging(opts: &CliOpts) -> (i64, slog::Logger) { // Create a logger with our argument matches. - let level = opts.verbose as i64 - opts.quiet as i64; + let verbose_level = opts.verbose as i64 - opts.quiet as i64; let mode = match opts.logmode.as_str() { "tee" => LoggingMode::Tee(PathBuf::from(opts.logfile.as_deref().unwrap_or("log.txt"))), @@ -113,7 +113,7 @@ fn setup_logging(opts: &CliOpts) -> (bool, slog::Logger) { }; // Only show the progress bar if the level is INFO or more. - (level >= 0, create_root_logger(level, mode)) + (verbose_level, create_root_logger(verbose_level, mode)) } fn print_error_and_diagnosis(err: Error, error_diagnosis: Diagnosis) { @@ -174,7 +174,7 @@ fn print_error_and_diagnosis(err: Error, error_diagnosis: Diagnosis) { fn main() { let cli_opts = CliOpts::parse(); - let (progress_bar, log) = setup_logging(&cli_opts); + let (verbose_level, log) = setup_logging(&cli_opts); let identity = cli_opts.identity; let command = cli_opts.command; let mut error_diagnosis: Diagnosis = NULL_DIAGNOSIS; @@ -183,8 +183,8 @@ fn main() { maybe_redirect_dfx(env.get_version()).map_or((), |_| unreachable!()); match EnvironmentImpl::new().map(|env| { env.with_logger(log) - .with_progress_bar(progress_bar) .with_identity_override(identity) + .with_verbose_level(verbose_level) }) { Ok(env) => { slog::trace!( From 76ec7e45dce01fbd6c152c076212facd8483b09c Mon Sep 17 00:00:00 2001 From: Severin Siffert Date: Fri, 16 Sep 2022 11:46:07 +0200 Subject: [PATCH 02/10] dedupe log output, print version on dfx start --- src/dfx/src/actors/replica.rs | 1 - src/dfx/src/commands/start.rs | 10 +++++++++- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/src/dfx/src/actors/replica.rs b/src/dfx/src/actors/replica.rs index 408a236e73..8ae7d29753 100644 --- a/src/dfx/src/actors/replica.rs +++ b/src/dfx/src/actors/replica.rs @@ -125,7 +125,6 @@ impl Replica { fn start_replica(&mut self, addr: Addr) -> DfxResult { let logger = self.logger.clone(); - debug!(logger, "starting replica"); // Create a replica config. let config = &self.config.replica_config; diff --git a/src/dfx/src/commands/start.rs b/src/dfx/src/commands/start.rs index 408f35d62c..28798e8bfc 100644 --- a/src/dfx/src/commands/start.rs +++ b/src/dfx/src/commands/start.rs @@ -4,6 +4,7 @@ use crate::actors::{ start_btc_adapter_actor, start_canister_http_adapter_actor, start_emulator_actor, start_icx_proxy_actor, start_replica_actor, start_shutdown_controller, }; +use crate::config::dfx_version_str; use crate::error_invalid_argument; use crate::lib::environment::Environment; use crate::lib::error::{DfxError, DfxResult}; @@ -20,7 +21,7 @@ use anyhow::{anyhow, bail, Context, Error}; use clap::Parser; use fn_error_context::context; use garcon::{Delay, Waiter}; -use slog::{warn, Logger}; +use slog::{info, warn, Logger}; use std::fs; use std::fs::create_dir_all; use std::io::Read; @@ -127,6 +128,13 @@ pub fn exec( enable_canister_http, }: StartOpts, ) -> DfxResult { + if !background { + info!( + env.get_logger(), + "Running dfx start for version {}", + dfx_version_str() + ); + } let project_config = env.get_config(); let network_descriptor_logger = if background { From 7048b6662be7a37e686c0d47dfd700f4f060ed2b Mon Sep 17 00:00:00 2001 From: Severin Siffert Date: Fri, 16 Sep 2022 12:53:15 +0200 Subject: [PATCH 03/10] fix tests --- e2e/tests-dfx/describe_local_network.bash | 14 +++++++------- e2e/tests-dfx/nns.bash | 2 +- e2e/tests-dfx/start.bash | 12 ++++++------ 3 files changed, 14 insertions(+), 14 deletions(-) diff --git a/e2e/tests-dfx/describe_local_network.bash b/e2e/tests-dfx/describe_local_network.bash index 246baf21a9..cf23cfeebc 100644 --- a/e2e/tests-dfx/describe_local_network.bash +++ b/e2e/tests-dfx/describe_local_network.bash @@ -15,7 +15,7 @@ teardown() { @test "dfx start with disabled canister http" { create_networks_json echo "{}" | jq '.local.canister_http.enabled=false' >"$E2E_NETWORKS_JSON" - assert_command dfx start --host 127.0.0.1:0 --background + assert_command dfx start --host 127.0.0.1:0 --background --verbose assert_match "canister http: disabled \(default: enabled\)" } @@ -24,20 +24,20 @@ teardown() { create_networks_json echo "{}" | jq '.local.replica.subnet_type="verifiedapplication"' >"$E2E_NETWORKS_JSON" - assert_command dfx start --host 127.0.0.1:0 --background + assert_command dfx start --host 127.0.0.1:0 --background --verbose assert_match "subnet type: VerifiedApplication \(default: Application\)" } @test "dfx start with nonstandard bitcoin node" { - assert_command dfx start --host 127.0.0.1:0 --background --bitcoin-node 192.168.0.1:18000 + assert_command dfx start --host 127.0.0.1:0 --background --bitcoin-node 192.168.0.1:18000 --verbose assert_match "bitcoin: enabled \(default: disabled\)" assert_match "nodes: \[192.168.0.1:18000\] \(default: \[127.0.0.1:18444\]\)" } @test "dfx start enabling bitcoin" { - assert_command dfx start --host 127.0.0.1:0 --background --enable-bitcoin + assert_command dfx start --host 127.0.0.1:0 --background --enable-bitcoin --verbose assert_match "bitcoin: enabled \(default: disabled\)" } @@ -48,7 +48,7 @@ teardown() { echo "{}" >dfx.json # we have to pass 0 for port to avoid conflicts - assert_command dfx start --host 127.0.0.1:0 --background + assert_command dfx start --host 127.0.0.1:0 --background --verbose assert_match "There is no project-specific network 'local' defined in .*/some-project/dfx.json." assert_match "Using the default definition for the 'local' shared network because $DFX_CONFIG_ROOT/.config/dfx/networks.json does not exist." @@ -92,7 +92,7 @@ teardown() { # almost default: use a dynamic port echo "{}" | jq '.networks.local.bind="127.0.0.1:0"' > dfx.json - assert_command dfx start --background + assert_command dfx start --background --verbose assert_match "Local server configuration:" assert_match "bind address: 127.0.0.1:0 \(default: 127.0.0.1:8000\)" @@ -108,7 +108,7 @@ teardown() { create_networks_json echo "{}" | jq '.local.bind="127.0.0.1:0"' >"$E2E_NETWORKS_JSON" - assert_command dfx start --background + assert_command dfx start --background --verbose assert_match "Local server configuration:" assert_match "bind address: 127.0.0.1:0 \(default: 127.0.0.1:4943\)" diff --git a/e2e/tests-dfx/nns.bash b/e2e/tests-dfx/nns.bash index 844192c976..58166a8846 100755 --- a/e2e/tests-dfx/nns.bash +++ b/e2e/tests-dfx/nns.bash @@ -59,7 +59,7 @@ teardown() { dfx_start_for_nns_install() { # TODO: When nns-dapp supports dynamic ports, this wait can be removed. assert_command timeout 300 sh -c \ - "until dfx start --clean --background --host 127.0.0.1:8080; do echo waiting for port 8080 to become free; sleep 3; done" \ + "until dfx start --clean --background --host 127.0.0.1:8080 --verbose; do echo waiting for port 8080 to become free; sleep 3; done" \ || (echo "could not connect to replica on port 8080" && exit 1) assert_match "subnet_type: System" assert_match "127.0.0.1:8080" diff --git a/e2e/tests-dfx/start.bash b/e2e/tests-dfx/start.bash index 2261d9f1ef..2e1d9f27bb 100644 --- a/e2e/tests-dfx/start.bash +++ b/e2e/tests-dfx/start.bash @@ -213,12 +213,12 @@ teardown() { jq '.defaults.replica.log_level="warning"' dfx.json | sponge dfx.json define_project_network - assert_command dfx start --background + assert_command dfx start --background --verbose assert_match "log level: Warning" assert_command dfx stop jq '.defaults.replica.log_level="critical"' dfx.json | sponge dfx.json - assert_command dfx start --background + assert_command dfx start --background --verbose assert_match "log level: Critical" } @@ -227,12 +227,12 @@ teardown() { jq '.networks.local.replica.log_level="warning"' dfx.json | sponge dfx.json define_project_network - assert_command dfx start --background + assert_command dfx start --background --verbose assert_match "log level: Warning" assert_command dfx stop jq '.networks.local.replica.log_level="critical"' dfx.json | sponge dfx.json - assert_command dfx start --background + assert_command dfx start --background --verbose assert_match "log level: Critical" } @@ -241,12 +241,12 @@ teardown() { create_networks_json jq '.local.replica.log_level="warning"' "$E2E_NETWORKS_JSON" | sponge "$E2E_NETWORKS_JSON" - assert_command dfx start --background + assert_command dfx start --background --verbose assert_match "log level: Warning" assert_command dfx stop jq '.local.replica.log_level="critical"' "$E2E_NETWORKS_JSON" | sponge "$E2E_NETWORKS_JSON" - assert_command dfx start --background + assert_command dfx start --background --verbose assert_match "log level: Critical" } From 4f602faad88577e9285d6e3507fad717d93cf507 Mon Sep 17 00:00:00 2001 From: Severin Siffert Date: Fri, 16 Sep 2022 13:25:41 +0200 Subject: [PATCH 04/10] fix canister_http tests --- e2e/tests-dfx/canister_http.bash | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/e2e/tests-dfx/canister_http.bash b/e2e/tests-dfx/canister_http.bash index 881e3f110e..121e2188e0 100644 --- a/e2e/tests-dfx/canister_http.bash +++ b/e2e/tests-dfx/canister_http.bash @@ -284,12 +284,12 @@ set_shared_local_network_canister_http_empty() { jq '.defaults.canister_http.log_level="warning"' dfx.json | sponge dfx.json define_project_network - assert_command dfx start --background + assert_command dfx start --background --verbose assert_match "log level: Warning" assert_command dfx stop jq '.defaults.canister_http.log_level="critical"' dfx.json | sponge dfx.json - assert_command dfx start --background + assert_command dfx start --background --verbose assert_match "log level: Critical" } @@ -298,12 +298,12 @@ set_shared_local_network_canister_http_empty() { jq '.networks.local.canister_http.log_level="warning"' dfx.json | sponge dfx.json define_project_network - assert_command dfx start --background + assert_command dfx start --background --verbose assert_match "log level: Warning" assert_command dfx stop jq '.networks.local.canister_http.log_level="critical"' dfx.json | sponge dfx.json - assert_command dfx start --background + assert_command dfx start --background --verbose assert_match "log level: Critical" } @@ -312,11 +312,11 @@ set_shared_local_network_canister_http_empty() { create_networks_json jq '.local.canister_http.log_level="warning"' "$E2E_NETWORKS_JSON" | sponge "$E2E_NETWORKS_JSON" - assert_command dfx start --background + assert_command dfx start --background --verbose assert_match "log level: Warning" assert_command dfx stop jq '.local.canister_http.log_level="critical"' "$E2E_NETWORKS_JSON" | sponge "$E2E_NETWORKS_JSON" - assert_command dfx start --background + assert_command dfx start --background --verbose assert_match "log level: Critical" } From 04918326e9739ace44122d1f1a85992d82a7818c Mon Sep 17 00:00:00 2001 From: Severin Siffert Date: Fri, 16 Sep 2022 14:04:32 +0200 Subject: [PATCH 05/10] update icx-proxy to update log output --- nix/sources.json | 16 ++++++++-------- scripts/dfx-asset-sources.sh | 8 ++++---- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/nix/sources.json b/nix/sources.json index a1db51d021..e4c7c182bb 100644 --- a/nix/sources.json +++ b/nix/sources.json @@ -134,20 +134,20 @@ }, "icx-proxy-x86_64-darwin": { "builtin": false, - "rev": "594b6c81cde6da4e08faee8aa8e5a2e6ae815602", - "sha256": "09rxh6kjwy7qfsvvsy6xjzyn4r4zlb78k1qipi4k3x0w0ajvp0sp", - "tag": "rev-c312760", + "rev": "7624053a50e1683c48757ee5dacbb454921e39ef", + "sha256": "0756kkb17pnx89n023k9sxaz69qrd5svh0jxkm4q1r4dxk7067aw", + "tag": "rev-7624053", "type": "file", - "url": "https://github.com/dfinity/icx-proxy/releases/download/rev-c312760/binaries-macos.tar.gz", + "url": "https://github.com/dfinity/icx-proxy/releases/download/rev-7624053/binaries-macos.tar.gz", "url_template": "https://github.com/dfinity/icx-proxy/releases/download//binaries-macos.tar.gz" }, "icx-proxy-x86_64-linux": { "builtin": false, - "rev": "594b6c81cde6da4e08faee8aa8e5a2e6ae815602", - "sha256": "18czg11v5hiczqrahr962wmjig3gcafplqiprlnx44kmzfhi4mks", - "tag": "rev-c312760", + "rev": "7624053a50e1683c48757ee5dacbb454921e39ef", + "sha256": "1vr3a49qb0r1gvijq7zr8nk9f51j4am5l74ypb22avs9d0rj72yw", + "tag": "rev-7624053", "type": "file", - "url": "https://github.com/dfinity/icx-proxy/releases/download/rev-c312760/binaries-linux.tar.gz", + "url": "https://github.com/dfinity/icx-proxy/releases/download/rev-7624053/binaries-linux.tar.gz", "url_template": "https://github.com/dfinity/icx-proxy/releases/download//binaries-linux.tar.gz" }, "motoko-base": { diff --git a/scripts/dfx-asset-sources.sh b/scripts/dfx-asset-sources.sh index 9a16b7d8d9..55e8f39591 100644 --- a/scripts/dfx-asset-sources.sh +++ b/scripts/dfx-asset-sources.sh @@ -3,10 +3,10 @@ IC_REF_X86_64_DARWIN_SHA256=07fb2cf2a570d6d90259ce165e6d5b9bbc408508743291be7890 IC_REF_X86_64_DARWIN_URL=https://download.dfinity.systems/ic-ref/ic-ref-0.0.1-1fba03ee-x86_64-darwin.tar.gz IC_REF_X86_64_LINUX_SHA256=d6f66f45b3fc904bea7810d3795b7761115b4635c3846991c4516ecaa42e2d36 IC_REF_X86_64_LINUX_URL=https://download.dfinity.systems/ic-ref/ic-ref-0.0.1-1fba03ee-x86_64-linux.tar.gz -ICX_PROXY_X86_64_DARWIN_SHA256=5783bba5021cf43149bc118789cea29f6462fd97dd78bdb776f8782ea7813d27 -ICX_PROXY_X86_64_DARWIN_URL=https://github.com/dfinity/icx-proxy/releases/download/rev-c312760/binaries-macos.tar.gz -ICX_PROXY_X86_64_LINUX_SHA256=7a5612a1fb7512d22dcd37627a9d626fbc282b172665a832fe2cc2b243789fa1 -ICX_PROXY_X86_64_LINUX_URL=https://github.com/dfinity/icx-proxy/releases/download/rev-c312760/binaries-linux.tar.gz +ICX_PROXY_X86_64_DARWIN_SHA256=5c1d03ceec8de480499d5d02b875691927f355d7690e016c42ddde13d69ca61c +ICX_PROXY_X86_64_DARWIN_URL=https://github.com/dfinity/icx-proxy/releases/download/rev-7624053/binaries-macos.tar.gz +ICX_PROXY_X86_64_LINUX_SHA256=dc8b233368496f25c4ba9e1c5aaa22321497a645f91f2ce37e218385135123ef +ICX_PROXY_X86_64_LINUX_URL=https://github.com/dfinity/icx-proxy/releases/download/rev-7624053/binaries-linux.tar.gz IC_ADMIN_X86_64_DARWIN_SHA256=0b41b89c4f6871acff6ecf0a5044e44d89972d6ef0aad80d7778d3b1f7d4c0c9 IC_ADMIN_X86_64_DARWIN_URL=https://download.dfinity.systems/ic/999f7cc6bbe17abdb7b7a1eab73840a94597e363/nix-release/x86_64-darwin/ic-admin.gz IC_ADMIN_X86_64_LINUX_SHA256=abde81ebe890bd5a344265651cb1c3ce0682d2d94964ca4ab0b7b630edc8dc00 From 9e20fe901bb3a7b423556d41c3ca2b109b7cd682 Mon Sep 17 00:00:00 2001 From: Severin Siffert Date: Mon, 19 Sep 2022 08:58:29 +0200 Subject: [PATCH 06/10] Revert "update icx-proxy to update log output" This reverts commit 04918326e9739ace44122d1f1a85992d82a7818c. updating icx-proxy breaks too many things to fix right now --- nix/sources.json | 16 ++++++++-------- scripts/dfx-asset-sources.sh | 8 ++++---- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/nix/sources.json b/nix/sources.json index e4c7c182bb..a1db51d021 100644 --- a/nix/sources.json +++ b/nix/sources.json @@ -134,20 +134,20 @@ }, "icx-proxy-x86_64-darwin": { "builtin": false, - "rev": "7624053a50e1683c48757ee5dacbb454921e39ef", - "sha256": "0756kkb17pnx89n023k9sxaz69qrd5svh0jxkm4q1r4dxk7067aw", - "tag": "rev-7624053", + "rev": "594b6c81cde6da4e08faee8aa8e5a2e6ae815602", + "sha256": "09rxh6kjwy7qfsvvsy6xjzyn4r4zlb78k1qipi4k3x0w0ajvp0sp", + "tag": "rev-c312760", "type": "file", - "url": "https://github.com/dfinity/icx-proxy/releases/download/rev-7624053/binaries-macos.tar.gz", + "url": "https://github.com/dfinity/icx-proxy/releases/download/rev-c312760/binaries-macos.tar.gz", "url_template": "https://github.com/dfinity/icx-proxy/releases/download//binaries-macos.tar.gz" }, "icx-proxy-x86_64-linux": { "builtin": false, - "rev": "7624053a50e1683c48757ee5dacbb454921e39ef", - "sha256": "1vr3a49qb0r1gvijq7zr8nk9f51j4am5l74ypb22avs9d0rj72yw", - "tag": "rev-7624053", + "rev": "594b6c81cde6da4e08faee8aa8e5a2e6ae815602", + "sha256": "18czg11v5hiczqrahr962wmjig3gcafplqiprlnx44kmzfhi4mks", + "tag": "rev-c312760", "type": "file", - "url": "https://github.com/dfinity/icx-proxy/releases/download/rev-7624053/binaries-linux.tar.gz", + "url": "https://github.com/dfinity/icx-proxy/releases/download/rev-c312760/binaries-linux.tar.gz", "url_template": "https://github.com/dfinity/icx-proxy/releases/download//binaries-linux.tar.gz" }, "motoko-base": { diff --git a/scripts/dfx-asset-sources.sh b/scripts/dfx-asset-sources.sh index 55e8f39591..9a16b7d8d9 100644 --- a/scripts/dfx-asset-sources.sh +++ b/scripts/dfx-asset-sources.sh @@ -3,10 +3,10 @@ IC_REF_X86_64_DARWIN_SHA256=07fb2cf2a570d6d90259ce165e6d5b9bbc408508743291be7890 IC_REF_X86_64_DARWIN_URL=https://download.dfinity.systems/ic-ref/ic-ref-0.0.1-1fba03ee-x86_64-darwin.tar.gz IC_REF_X86_64_LINUX_SHA256=d6f66f45b3fc904bea7810d3795b7761115b4635c3846991c4516ecaa42e2d36 IC_REF_X86_64_LINUX_URL=https://download.dfinity.systems/ic-ref/ic-ref-0.0.1-1fba03ee-x86_64-linux.tar.gz -ICX_PROXY_X86_64_DARWIN_SHA256=5c1d03ceec8de480499d5d02b875691927f355d7690e016c42ddde13d69ca61c -ICX_PROXY_X86_64_DARWIN_URL=https://github.com/dfinity/icx-proxy/releases/download/rev-7624053/binaries-macos.tar.gz -ICX_PROXY_X86_64_LINUX_SHA256=dc8b233368496f25c4ba9e1c5aaa22321497a645f91f2ce37e218385135123ef -ICX_PROXY_X86_64_LINUX_URL=https://github.com/dfinity/icx-proxy/releases/download/rev-7624053/binaries-linux.tar.gz +ICX_PROXY_X86_64_DARWIN_SHA256=5783bba5021cf43149bc118789cea29f6462fd97dd78bdb776f8782ea7813d27 +ICX_PROXY_X86_64_DARWIN_URL=https://github.com/dfinity/icx-proxy/releases/download/rev-c312760/binaries-macos.tar.gz +ICX_PROXY_X86_64_LINUX_SHA256=7a5612a1fb7512d22dcd37627a9d626fbc282b172665a832fe2cc2b243789fa1 +ICX_PROXY_X86_64_LINUX_URL=https://github.com/dfinity/icx-proxy/releases/download/rev-c312760/binaries-linux.tar.gz IC_ADMIN_X86_64_DARWIN_SHA256=0b41b89c4f6871acff6ecf0a5044e44d89972d6ef0aad80d7778d3b1f7d4c0c9 IC_ADMIN_X86_64_DARWIN_URL=https://download.dfinity.systems/ic/999f7cc6bbe17abdb7b7a1eab73840a94597e363/nix-release/x86_64-darwin/ic-admin.gz IC_ADMIN_X86_64_LINUX_SHA256=abde81ebe890bd5a344265651cb1c3ce0682d2d94964ca4ab0b7b630edc8dc00 From 8de14bf2e084f4490750a249ee56571ed2c123f7 Mon Sep 17 00:00:00 2001 From: Severin Siffert Date: Tue, 20 Sep 2022 10:07:37 +0200 Subject: [PATCH 07/10] change log level of network definition search --- e2e/tests-dfx/describe_local_network.bash | 6 +++--- src/dfx/src/lib/provider.rs | 16 ++++++++-------- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/e2e/tests-dfx/describe_local_network.bash b/e2e/tests-dfx/describe_local_network.bash index cf23cfeebc..44c16d577f 100644 --- a/e2e/tests-dfx/describe_local_network.bash +++ b/e2e/tests-dfx/describe_local_network.bash @@ -62,7 +62,7 @@ teardown() { } @test "dfx start outside of a project with default configuration" { - assert_command dfx start --host 127.0.0.1:0 --background + assert_command dfx start --host 127.0.0.1:0 --background --verbose assert_match "There is no project-specific network 'local' because there is no project \(no dfx.json\)." assert_match "Using the default definition for the 'local' shared network because $DFX_CONFIG_ROOT/.config/dfx/networks.json does not exist." @@ -71,7 +71,7 @@ teardown() { @test "dfx start outside of a project with a shared configuration file" { create_networks_json - assert_command dfx start --background + assert_command dfx start --background --verbose assert_match "There is no project-specific network 'local' because there is no project \(no dfx.json\)." assert_match "Using the default definition for the 'local' shared network because $DFX_CONFIG_ROOT/.config/dfx/networks.json does not define it." @@ -82,7 +82,7 @@ teardown() { create_networks_json echo "{}" | jq '.local.bind="127.0.0.1:0"' >"$E2E_NETWORKS_JSON" - assert_command dfx start --background + assert_command dfx start --background --verbose assert_match "There is no project-specific network 'local' because there is no project \(no dfx.json\)." assert_match "Found shared network 'local' in $DFX_CONFIG_ROOT/.config/dfx/networks.json" diff --git a/src/dfx/src/lib/provider.rs b/src/dfx/src/lib/provider.rs index dd4297ad55..c4844d53cc 100644 --- a/src/dfx/src/lib/provider.rs +++ b/src/dfx/src/lib/provider.rs @@ -17,7 +17,7 @@ use garcon::{Delay, Waiter}; use ic_agent::agent::http_transport::ReqwestHttpReplicaV2Transport; use ic_agent::Agent; use lazy_static::lazy_static; -use slog::{info, warn, Logger}; +use slog::{debug, info, warn, Logger}; use std::path::{Path, PathBuf}; use std::sync::{Arc, RwLock}; use std::time::Duration; @@ -240,14 +240,14 @@ fn create_shared_network_descriptor( } (network_name, None) => { if shared_config_file_exists { - info!( + debug!( logger, "There is no shared network '{}' defined in {}", &shared_config_display_path, network_name ); } else { - info!( + debug!( logger, "There is no shared network '{}' because {} does not exist.", network_name, @@ -259,7 +259,7 @@ fn create_shared_network_descriptor( (network_name, Some(network)) => { info!( logger, - "Found shared network '{}' in {}", + "Using shared network '{}' defined in {}", network_name, shared_config.get_path().display() ); @@ -297,7 +297,7 @@ fn create_project_network_descriptor( if let Some(config_network) = config.get_config().get_network(network_name) { info!( logger, - "Found project-specific network '{}' in {}", + "Using project-specific network '{}' defined in {}", network_name, config.get_path().display(), ); @@ -324,16 +324,16 @@ fn create_project_network_descriptor( legacy_pid_path, )) } else { - info!( + debug!( logger, - "There is no project-specific network '{}' defined in {}.", + "There is no project-specific network '{}' defined in {}", network_name, config.get_path().display() ); None } } else { - info!( + debug!( logger, "There is no project-specific network '{}' because there is no project (no dfx.json).", network_name From cff034853cb9b8621b14f55852eae8dc07e16655 Mon Sep 17 00:00:00 2001 From: Severin Siffert Date: Wed, 21 Sep 2022 10:23:50 +0200 Subject: [PATCH 08/10] move outdated comment to correct location --- src/dfx/src/lib/environment.rs | 1 + src/dfx/src/main.rs | 1 - 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/src/dfx/src/lib/environment.rs b/src/dfx/src/lib/environment.rs index 5d3fc7b623..ee45175316 100644 --- a/src/dfx/src/lib/environment.rs +++ b/src/dfx/src/lib/environment.rs @@ -196,6 +196,7 @@ impl Environment for EnvironmentImpl { } fn new_spinner(&self, message: Cow<'static, str>) -> ProgressBar { + // Only show the progress bar if the level is INFO or more. if self.verbose_level >= 0 { ProgressBar::new_spinner(message) } else { diff --git a/src/dfx/src/main.rs b/src/dfx/src/main.rs index 3534055e38..fc0767411a 100644 --- a/src/dfx/src/main.rs +++ b/src/dfx/src/main.rs @@ -112,7 +112,6 @@ fn setup_logging(opts: &CliOpts) -> (i64, slog::Logger) { _ => LoggingMode::Stderr, }; - // Only show the progress bar if the level is INFO or more. (verbose_level, create_root_logger(verbose_level, mode)) } From 43d4b16a581417c4861b97634fb20ca643e7974f Mon Sep 17 00:00:00 2001 From: Severin Siffert Date: Wed, 21 Sep 2022 10:40:53 +0200 Subject: [PATCH 09/10] revert hideous replica display --- .../lib/network/local_server_descriptor.rs | 32 +++++++++---------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/src/dfx/src/lib/network/local_server_descriptor.rs b/src/dfx/src/lib/network/local_server_descriptor.rs index 55a44a3967..c2e0c011c3 100644 --- a/src/dfx/src/lib/network/local_server_descriptor.rs +++ b/src/dfx/src/lib/network/local_server_descriptor.rs @@ -243,10 +243,10 @@ impl LocalServerDescriptor { } else { "".to_string() }; - debug!(log, " ∟bind address: {:?}{}", self.bind_address, diffs); + debug!(log, " bind address: {:?}{}", self.bind_address, diffs); if self.bitcoin.enabled { let default_nodes = crate::lib::bitcoin::adapter::config::default_nodes(); - debug!(log, " ∟bitcoin: enabled (default: disabled)"); + debug!(log, " bitcoin: enabled (default: disabled)"); let nodes: Vec = if let Some(ref nodes) = self.bitcoin.nodes { nodes.clone() } else { @@ -257,13 +257,13 @@ impl LocalServerDescriptor { } else { "".to_string() }; - debug!(log, " | ∟nodes: {:?}{}", nodes, diffs); + debug!(log, " nodes: {:?}{}", nodes, diffs); } else { - debug!(log, " ∟bitcoin: disabled"); + debug!(log, " bitcoin: disabled"); } if self.canister_http.enabled { - debug!(log, " ∟canister http: enabled"); + debug!(log, " canister http: enabled"); let diffs: String = if self.canister_http.log_level != HttpAdapterLogLevel::default() { format!(" (default: {:?})", HttpAdapterLogLevel::default()) } else { @@ -271,16 +271,16 @@ impl LocalServerDescriptor { }; debug!( log, - " | ∟log level: {:?}{}", self.canister_http.log_level, diffs + " log level: {:?}{}", self.canister_http.log_level, diffs ); } else { - debug!(log, " ∟canister http: disabled (default: enabled)"); + debug!(log, " canister http: disabled (default: enabled)"); } if include_replica { - debug!(log, " ∟replica:"); + debug!(log, " replica:"); if include_replica_port { - debug!(log, " ∟port: "); + debug!(log, " port: "); } let subnet_type = self .replica @@ -291,7 +291,7 @@ impl LocalServerDescriptor { } else { "".to_string() }; - debug!(log, " | ∟subnet type: {:?}{}", subnet_type, diffs); + debug!(log, " subnet type: {:?}{}", subnet_type, diffs); let log_level = self.replica.log_level.unwrap_or_default(); let diffs: String = if log_level != ReplicaLogLevel::default() { @@ -299,14 +299,14 @@ impl LocalServerDescriptor { } else { "".to_string() }; - debug!(log, " | ∟log level: {:?}{}", log_level, diffs); + debug!(log, " log level: {:?}{}", log_level, diffs); } - debug!(log, " ∟data directory: {}", self.data_directory.display()); + debug!(log, " data directory: {}", self.data_directory.display()); let scope = match self.scope { LocalNetworkScopeDescriptor::Project => "project", LocalNetworkScopeDescriptor::Shared { .. } => "shared", }; - debug!(log, " ∟scope: {}", scope); + debug!(log, " scope: {}", scope); debug!(log, ""); } @@ -318,21 +318,21 @@ impl LocalServerDescriptor { } else { "".to_string() }; - debug!(log, " ∟ip: {:?}{}", self.bootstrap.ip, diffs); + debug!(log, " ip: {:?}{}", self.bootstrap.ip, diffs); let diffs = if self.bootstrap.port != default.port { format!(" (default: {})", default.port) } else { "".to_string() }; - debug!(log, " ∟port: {}{}", self.bootstrap.port, diffs); + debug!(log, " port: {}{}", self.bootstrap.port, diffs); let diffs = if self.bootstrap.timeout != default.timeout { format!(" (default: {})", default.timeout) } else { "".to_string() }; - debug!(log, " ∟timeout: {}{}", self.bootstrap.timeout, diffs); + debug!(log, " timeout: {}{}", self.bootstrap.timeout, diffs); debug!(log, ""); } } From 7c19fdea53ae4c4d2a3a7679c1631128b30fb19b Mon Sep 17 00:00:00 2001 From: Severin Siffert Date: Wed, 21 Sep 2022 11:16:36 +0200 Subject: [PATCH 10/10] fix e2e --- e2e/tests-dfx/describe_local_network.bash | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/e2e/tests-dfx/describe_local_network.bash b/e2e/tests-dfx/describe_local_network.bash index 44c16d577f..587991dc1a 100644 --- a/e2e/tests-dfx/describe_local_network.bash +++ b/e2e/tests-dfx/describe_local_network.bash @@ -85,7 +85,7 @@ teardown() { assert_command dfx start --background --verbose assert_match "There is no project-specific network 'local' because there is no project \(no dfx.json\)." - assert_match "Found shared network 'local' in $DFX_CONFIG_ROOT/.config/dfx/networks.json" + assert_match "Using shared network 'local' defined in $DFX_CONFIG_ROOT/.config/dfx/networks.json" } @test "dfx start describes default project-specific network" {