Use RPC endpoint of the provided network entrypoint rather than searching for the leader
This commit is contained in:
parent
45c247fa5b
commit
4d9489aeb1
|
@ -52,6 +52,7 @@ pub fn parse_args(matches: &ArgMatches<'_>) -> Result<WalletConfig, Box<dyn erro
|
||||||
proxy,
|
proxy,
|
||||||
drone_port: None,
|
drone_port: None,
|
||||||
rpc_client: None,
|
rpc_client: None,
|
||||||
|
rpc_port: None,
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -4,14 +4,13 @@ use chrono::prelude::*;
|
||||||
use clap::ArgMatches;
|
use clap::ArgMatches;
|
||||||
use serde_json;
|
use serde_json;
|
||||||
use serde_json::json;
|
use serde_json::json;
|
||||||
use solana::rpc::RpcSignatureStatus;
|
use solana::rpc::{RpcSignatureStatus, RPC_PORT};
|
||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
use solana::rpc_mock::{request_airdrop_transaction, MockRpcClient as RpcClient};
|
use solana::rpc_mock::{request_airdrop_transaction, MockRpcClient as RpcClient};
|
||||||
#[cfg(not(test))]
|
#[cfg(not(test))]
|
||||||
use solana::rpc_request::RpcClient;
|
use solana::rpc_request::RpcClient;
|
||||||
use solana::rpc_request::{get_rpc_request_str, RpcRequest, RpcRequestHandler};
|
use solana::rpc_request::{get_rpc_request_str, RpcRequest, RpcRequestHandler};
|
||||||
use solana::socketaddr;
|
use solana::socketaddr;
|
||||||
use solana::thin_client::poll_gossip_for_leader;
|
|
||||||
#[cfg(not(test))]
|
#[cfg(not(test))]
|
||||||
use solana_drone::drone::request_airdrop_transaction;
|
use solana_drone::drone::request_airdrop_transaction;
|
||||||
use solana_drone::drone::DRONE_PORT;
|
use solana_drone::drone::DRONE_PORT;
|
||||||
|
@ -91,6 +90,7 @@ pub struct WalletConfig {
|
||||||
pub proxy: Option<String>,
|
pub proxy: Option<String>,
|
||||||
pub drone_port: Option<u16>,
|
pub drone_port: Option<u16>,
|
||||||
pub rpc_client: Option<RpcClient>,
|
pub rpc_client: Option<RpcClient>,
|
||||||
|
pub rpc_port: Option<u16>,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Default for WalletConfig {
|
impl Default for WalletConfig {
|
||||||
|
@ -104,6 +104,7 @@ impl Default for WalletConfig {
|
||||||
proxy: None,
|
proxy: None,
|
||||||
drone_port: None,
|
drone_port: None,
|
||||||
rpc_client: None,
|
rpc_client: None,
|
||||||
|
rpc_port: None,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -116,7 +117,9 @@ impl WalletConfig {
|
||||||
drone_addr
|
drone_addr
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn rpc_addr(&self, rpc_addr: SocketAddr) -> String {
|
pub fn rpc_addr(&self) -> String {
|
||||||
|
let mut rpc_addr = self.network;
|
||||||
|
rpc_addr.set_port(self.rpc_port.unwrap_or(RPC_PORT));
|
||||||
let rpc_addr_str = get_rpc_request_str(rpc_addr);
|
let rpc_addr_str = get_rpc_request_str(rpc_addr);
|
||||||
self.proxy.clone().unwrap_or(rpc_addr_str)
|
self.proxy.clone().unwrap_or(rpc_addr_str)
|
||||||
}
|
}
|
||||||
|
@ -321,8 +324,7 @@ pub fn process_command(config: &WalletConfig) -> Result<String, Box<dyn error::E
|
||||||
|
|
||||||
let drone_addr = config.drone_addr();
|
let drone_addr = config.drone_addr();
|
||||||
let rpc_client = if config.rpc_client.is_none() {
|
let rpc_client = if config.rpc_client.is_none() {
|
||||||
let leader = poll_gossip_for_leader(config.network, config.timeout)?;
|
let rpc_addr = config.rpc_addr();
|
||||||
let rpc_addr = config.rpc_addr(leader.rpc);
|
|
||||||
RpcClient::new(rpc_addr)
|
RpcClient::new(rpc_addr)
|
||||||
} else {
|
} else {
|
||||||
// Primarily for testing
|
// Primarily for testing
|
||||||
|
@ -839,8 +841,10 @@ mod tests {
|
||||||
config.drone_port = Some(1234);
|
config.drone_port = Some(1234);
|
||||||
assert_eq!(config.drone_addr(), socketaddr!(0, 1234));
|
assert_eq!(config.drone_addr(), socketaddr!(0, 1234));
|
||||||
|
|
||||||
let rpc_addr = config.rpc_addr(socketaddr!(0, 9876));
|
assert_eq!(config.rpc_addr(), "http://0.0.0.0:8899");
|
||||||
assert_eq!(rpc_addr, "http://0.0.0.0:9876");
|
|
||||||
|
config.rpc_port = Some(1234);
|
||||||
|
assert_eq!(config.rpc_addr(), "http://0.0.0.0:1234");
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
|
|
|
@ -74,10 +74,12 @@ fn test_wallet_timestamp_tx() {
|
||||||
let mut config_payer = WalletConfig::default();
|
let mut config_payer = WalletConfig::default();
|
||||||
config_payer.network = leader_data.gossip;
|
config_payer.network = leader_data.gossip;
|
||||||
config_payer.drone_port = Some(drone_addr.port());
|
config_payer.drone_port = Some(drone_addr.port());
|
||||||
|
config_payer.rpc_port = Some(leader_data.rpc.port());
|
||||||
|
|
||||||
let mut config_witness = WalletConfig::default();
|
let mut config_witness = WalletConfig::default();
|
||||||
config_witness.network = leader_data.gossip;
|
config_witness.network = leader_data.gossip;
|
||||||
config_witness.drone_port = Some(drone_addr.port());
|
config_witness.drone_port = Some(drone_addr.port());
|
||||||
|
config_witness.rpc_port = Some(leader_data.rpc.port());
|
||||||
|
|
||||||
assert_ne!(config_payer.id.pubkey(), config_witness.id.pubkey());
|
assert_ne!(config_payer.id.pubkey(), config_witness.id.pubkey());
|
||||||
|
|
||||||
|
@ -173,10 +175,12 @@ fn test_wallet_witness_tx() {
|
||||||
let mut config_payer = WalletConfig::default();
|
let mut config_payer = WalletConfig::default();
|
||||||
config_payer.network = leader_data.gossip;
|
config_payer.network = leader_data.gossip;
|
||||||
config_payer.drone_port = Some(drone_addr.port());
|
config_payer.drone_port = Some(drone_addr.port());
|
||||||
|
config_payer.rpc_port = Some(leader_data.rpc.port());
|
||||||
|
|
||||||
let mut config_witness = WalletConfig::default();
|
let mut config_witness = WalletConfig::default();
|
||||||
config_witness.network = leader_data.gossip;
|
config_witness.network = leader_data.gossip;
|
||||||
config_witness.drone_port = Some(drone_addr.port());
|
config_witness.drone_port = Some(drone_addr.port());
|
||||||
|
config_witness.rpc_port = Some(leader_data.rpc.port());
|
||||||
|
|
||||||
assert_ne!(config_payer.id.pubkey(), config_witness.id.pubkey());
|
assert_ne!(config_payer.id.pubkey(), config_witness.id.pubkey());
|
||||||
|
|
||||||
|
@ -268,6 +272,7 @@ fn test_wallet_cancel_tx() {
|
||||||
let mut config_payer = WalletConfig::default();
|
let mut config_payer = WalletConfig::default();
|
||||||
config_payer.network = leader_data.gossip;
|
config_payer.network = leader_data.gossip;
|
||||||
config_payer.drone_port = Some(drone_addr.port());
|
config_payer.drone_port = Some(drone_addr.port());
|
||||||
|
config_payer.rpc_port = Some(leader_data.rpc.port());
|
||||||
|
|
||||||
let mut config_witness = WalletConfig::default();
|
let mut config_witness = WalletConfig::default();
|
||||||
config_witness.network = leader_data.gossip;
|
config_witness.network = leader_data.gossip;
|
||||||
|
|
|
@ -58,6 +58,7 @@ fn test_wallet_request_airdrop() {
|
||||||
let mut bob_config = WalletConfig::default();
|
let mut bob_config = WalletConfig::default();
|
||||||
bob_config.network = leader_data.gossip;
|
bob_config.network = leader_data.gossip;
|
||||||
bob_config.drone_port = Some(drone_addr.port());
|
bob_config.drone_port = Some(drone_addr.port());
|
||||||
|
bob_config.rpc_port = Some(leader_data.rpc.port());
|
||||||
bob_config.command = WalletCommand::Airdrop(50);
|
bob_config.command = WalletCommand::Airdrop(50);
|
||||||
|
|
||||||
let sig_response = process_command(&bob_config);
|
let sig_response = process_command(&bob_config);
|
||||||
|
|
Loading…
Reference in New Issue