From 638108e9d57c906339e20ea67c63eb040b2f3108 Mon Sep 17 00:00:00 2001 From: Tyera Eulberg Date: Wed, 8 Apr 2020 23:46:19 -0600 Subject: [PATCH] Add --no-wait arg to transfer (#9388) automerge --- cli/src/cli.rs | 48 ++++++++++++++++++++++++++++++++++++++++++- cli/tests/nonce.rs | 2 ++ cli/tests/transfer.rs | 9 ++++++++ 3 files changed, 58 insertions(+), 1 deletion(-) diff --git a/cli/src/cli.rs b/cli/src/cli.rs index 915497cdfa..a0e5c9e067 100644 --- a/cli/src/cli.rs +++ b/cli/src/cli.rs @@ -410,6 +410,7 @@ pub enum CliCommand { to: Pubkey, from: SignerIndex, sign_only: bool, + no_wait: bool, blockhash_query: BlockhashQuery, nonce_account: Option, nonce_authority: SignerIndex, @@ -908,6 +909,7 @@ pub fn parse_command( let lamports = lamports_of_sol(matches, "amount").unwrap(); let to = pubkey_of_signer(matches, "to", wallet_manager)?.unwrap(); let sign_only = matches.is_present(SIGN_ONLY_ARG.name); + let no_wait = matches.is_present("no_wait"); let blockhash_query = BlockhashQuery::new_from_matches(matches); let nonce_account = pubkey_of_signer(matches, NONCE_ARG.name, wallet_manager)?; let (nonce_authority, nonce_authority_pubkey) = @@ -933,6 +935,7 @@ pub fn parse_command( lamports, to, sign_only, + no_wait, blockhash_query, nonce_account, nonce_authority: signer_info.index_of(nonce_authority_pubkey).unwrap(), @@ -1494,6 +1497,7 @@ fn process_transfer( to: &Pubkey, from: SignerIndex, sign_only: bool, + no_wait: bool, blockhash_query: &BlockhashQuery, nonce_account: Option<&Pubkey>, nonce_authority: SignerIndex, @@ -1540,7 +1544,11 @@ fn process_transfer( &fee_calculator, &tx.message, )?; - let result = rpc_client.send_and_confirm_transaction_with_spinner(&mut tx, &config.signers); + let result = if no_wait { + rpc_client.send_transaction(&tx) + } else { + rpc_client.send_and_confirm_transaction_with_spinner(&mut tx, &config.signers) + }; log_instruction_custom_error::(result) } } @@ -2097,6 +2105,7 @@ pub fn process_command(config: &CliConfig) -> ProcessResult { to, from, sign_only, + no_wait, ref blockhash_query, ref nonce_account, nonce_authority, @@ -2108,6 +2117,7 @@ pub fn process_command(config: &CliConfig) -> ProcessResult { to, *from, *sign_only, + *no_wait, blockhash_query, nonce_account.as_ref(), *nonce_authority, @@ -2498,6 +2508,12 @@ pub fn app<'ab, 'v>(name: &str, about: &'ab str, version: &'v str) -> App<'ab, ' .value_name("FROM_ADDRESS"), "Source account of funds (if different from client local account). "), ) + .arg( + Arg::with_name("no_wait") + .long("no-wait") + .takes_value(false) + .help("Return signature immediately after submitting the transaction, instead of waiting for confirmations"), + ) .offline_args() .arg(nonce_arg()) .arg(nonce_authority_arg()) @@ -3538,6 +3554,33 @@ mod tests { to: to_pubkey, from: 0, sign_only: false, + no_wait: false, + blockhash_query: BlockhashQuery::All(blockhash_query::Source::Cluster), + nonce_account: None, + nonce_authority: 0, + fee_payer: 0, + }, + signers: vec![read_keypair_file(&default_keypair_file).unwrap().into()], + } + ); + + // Test Transfer no-wait + let test_transfer = test_commands.clone().get_matches_from(vec![ + "test", + "transfer", + "--no-wait", + &to_string, + "42", + ]); + assert_eq!( + parse_command(&test_transfer, &default_keypair_file, None).unwrap(), + CliCommandInfo { + command: CliCommand::Transfer { + lamports: 42_000_000_000, + to: to_pubkey, + from: 0, + sign_only: false, + no_wait: true, blockhash_query: BlockhashQuery::All(blockhash_query::Source::Cluster), nonce_account: None, nonce_authority: 0, @@ -3567,6 +3610,7 @@ mod tests { to: to_pubkey, from: 0, sign_only: true, + no_wait: false, blockhash_query: BlockhashQuery::None(blockhash), nonce_account: None, nonce_authority: 0, @@ -3601,6 +3645,7 @@ mod tests { to: to_pubkey, from: 0, sign_only: false, + no_wait: false, blockhash_query: BlockhashQuery::FeeCalculator( blockhash_query::Source::Cluster, blockhash @@ -3639,6 +3684,7 @@ mod tests { to: to_pubkey, from: 0, sign_only: false, + no_wait: false, blockhash_query: BlockhashQuery::FeeCalculator( blockhash_query::Source::NonceAccount(nonce_address), blockhash diff --git a/cli/tests/nonce.rs b/cli/tests/nonce.rs index 3ba3da82b1..94e569fd10 100644 --- a/cli/tests/nonce.rs +++ b/cli/tests/nonce.rs @@ -338,6 +338,7 @@ fn test_create_account_with_seed() { to: to_address, from: 0, sign_only: true, + no_wait: false, blockhash_query: BlockhashQuery::None(nonce_hash), nonce_account: Some(nonce_address), nonce_authority: 0, @@ -358,6 +359,7 @@ fn test_create_account_with_seed() { to: to_address, from: 0, sign_only: false, + no_wait: false, blockhash_query: BlockhashQuery::FeeCalculator( blockhash_query::Source::NonceAccount(nonce_address), sign_only.blockhash, diff --git a/cli/tests/transfer.rs b/cli/tests/transfer.rs index dadf9ec2dd..4ab944551f 100644 --- a/cli/tests/transfer.rs +++ b/cli/tests/transfer.rs @@ -69,6 +69,7 @@ fn test_transfer() { to: recipient_pubkey, from: 0, sign_only: false, + no_wait: false, blockhash_query: BlockhashQuery::All(blockhash_query::Source::Cluster), nonce_account: None, nonce_authority: 0, @@ -96,6 +97,7 @@ fn test_transfer() { to: recipient_pubkey, from: 0, sign_only: true, + no_wait: false, blockhash_query: BlockhashQuery::None(blockhash), nonce_account: None, nonce_authority: 0, @@ -111,6 +113,7 @@ fn test_transfer() { to: recipient_pubkey, from: 0, sign_only: false, + no_wait: false, blockhash_query: BlockhashQuery::FeeCalculator(blockhash_query::Source::Cluster, blockhash), nonce_account: None, nonce_authority: 0, @@ -148,6 +151,7 @@ fn test_transfer() { to: recipient_pubkey, from: 0, sign_only: false, + no_wait: false, blockhash_query: BlockhashQuery::FeeCalculator( blockhash_query::Source::NonceAccount(nonce_account.pubkey()), nonce_hash, @@ -188,6 +192,7 @@ fn test_transfer() { to: recipient_pubkey, from: 0, sign_only: true, + no_wait: false, blockhash_query: BlockhashQuery::None(nonce_hash), nonce_account: Some(nonce_account.pubkey()), nonce_authority: 0, @@ -203,6 +208,7 @@ fn test_transfer() { to: recipient_pubkey, from: 0, sign_only: false, + no_wait: false, blockhash_query: BlockhashQuery::FeeCalculator( blockhash_query::Source::NonceAccount(nonce_account.pubkey()), sign_only.blockhash, @@ -271,6 +277,7 @@ fn test_transfer_multisession_signing() { to: to_pubkey, from: 1, sign_only: true, + no_wait: false, blockhash_query: BlockhashQuery::None(blockhash), nonce_account: None, nonce_authority: 0, @@ -295,6 +302,7 @@ fn test_transfer_multisession_signing() { to: to_pubkey, from: 1, sign_only: true, + no_wait: false, blockhash_query: BlockhashQuery::None(blockhash), nonce_account: None, nonce_authority: 0, @@ -316,6 +324,7 @@ fn test_transfer_multisession_signing() { to: to_pubkey, from: 1, sign_only: false, + no_wait: false, blockhash_query: BlockhashQuery::FeeCalculator(blockhash_query::Source::Cluster, blockhash), nonce_account: None, nonce_authority: 0,