diff --git a/cli/src/cli.rs b/cli/src/cli.rs index c8b4754d8c..4fe3b58162 100644 --- a/cli/src/cli.rs +++ b/cli/src/cli.rs @@ -15,6 +15,7 @@ use solana_drone::drone::request_airdrop_transaction; use solana_drone::drone_mock::request_airdrop_transaction; use solana_sdk::{ bpf_loader, + commitment_config::CommitmentConfig, fee_calculator::FeeCalculator, hash::Hash, instruction::InstructionError, @@ -56,6 +57,7 @@ pub enum CliCommand { interval: Duration, count: Option, timeout: Duration, + commitment_config: CommitmentConfig, }, ShowValidators { use_lamports_unit: bool, @@ -824,7 +826,15 @@ pub fn process_command(config: &CliConfig) -> ProcessResult { interval, count, timeout, - } => process_ping(&rpc_client, config, interval, count, timeout), + commitment_config, + } => process_ping( + &rpc_client, + config, + interval, + count, + timeout, + commitment_config, + ), CliCommand::ShowValidators { use_lamports_unit } => { process_show_validators(&rpc_client, *use_lamports_unit) } diff --git a/cli/src/cluster_query.rs b/cli/src/cluster_query.rs index 83194fa7ec..4626dbceac 100644 --- a/cli/src/cluster_query.rs +++ b/cli/src/cluster_query.rs @@ -75,6 +75,14 @@ impl ClusterQuerySubCommands for App<'_, '_> { .takes_value(true) .default_value("15") .help("Wait up to timeout seconds for transaction confirmation"), + ) + .arg( + Arg::with_name("confirmed") + .long("confirmed") + .takes_value(false) + .help( + "Wait until the transaction is confirmed at maximum-lockout commitment level", + ), ), ) .subcommand( @@ -98,11 +106,17 @@ pub fn parse_cluster_ping(matches: &ArgMatches<'_>) -> Result, timeout: &Duration, + commitment_config: &CommitmentConfig, ) -> ProcessResult { let to = Keypair::new().pubkey(); @@ -224,7 +239,7 @@ pub fn process_ping( loop { let signature_status = rpc_client.get_signature_status_with_commitment( &signature, - CommitmentConfig::recent(), + commitment_config.clone(), )?; let elapsed_time = Instant::now().duration_since(transaction_sent); if let Some(transaction_status) = signature_status { @@ -481,9 +496,17 @@ mod tests { } ); - let test_ping = test_commands - .clone() - .get_matches_from(vec!["test", "ping", "-i", "1", "-c", "2", "-t", "3"]); + let test_ping = test_commands.clone().get_matches_from(vec![ + "test", + "ping", + "-i", + "1", + "-c", + "2", + "-t", + "3", + "--confirmed", + ]); assert_eq!( parse_command(&test_ping).unwrap(), CliCommandInfo { @@ -491,6 +514,7 @@ mod tests { interval: Duration::from_secs(1), count: Some(2), timeout: Duration::from_secs(3), + commitment_config: CommitmentConfig::default(), }, require_keypair: true }