Pārlūkot izejas kodu

remove shred_version 0 from dos. discover shred version from cluster if not passed in (#5819)

remove shred_version 0 from dos. discover from cluster if not passed in
Greg Cusack 7 mēneši atpakaļ
vecāks
revīzija
013f1e2003
2 mainītis faili ar 51 papildinājumiem un 2 dzēšanām
  1. 26 0
      dos/src/cli.rs
  2. 25 2
      dos/src/main.rs

+ 26 - 0
dos/src/cli.rs

@@ -45,6 +45,13 @@ pub struct DosClientParameters {
     #[clap(long, help = "Just use entrypoint address directly")]
     #[clap(long, help = "Just use entrypoint address directly")]
     pub skip_gossip: bool,
     pub skip_gossip: bool,
 
 
+    #[clap(
+        long,
+        conflicts_with("skip-gossip"),
+        help = "The shred version to use for gossip discovery. If not provided, will be discovered from the network"
+    )]
+    pub shred_version: Option<u16>,
+
     #[clap(long, help = "Allow contacting private ip addresses")]
     #[clap(long, help = "Allow contacting private ip addresses")]
     pub allow_private_addr: bool,
     pub allow_private_addr: bool,
 
 
@@ -214,6 +221,8 @@ mod tests {
             "get-account-info",
             "get-account-info",
             "--data-input",
             "--data-input",
             &pubkey_str,
             &pubkey_str,
+            "--shred-version",
+            "42",
         ])
         ])
         .unwrap();
         .unwrap();
         assert_eq!(
         assert_eq!(
@@ -225,6 +234,7 @@ mod tests {
                 data_type: DataType::GetAccountInfo,
                 data_type: DataType::GetAccountInfo,
                 data_input: Some(pubkey),
                 data_input: Some(pubkey),
                 skip_gossip: false,
                 skip_gossip: false,
+                shred_version: Some(42),
                 allow_private_addr: false,
                 allow_private_addr: false,
                 transaction_params: TransactionParams::default(),
                 transaction_params: TransactionParams::default(),
                 tpu_use_quic: false,
                 tpu_use_quic: false,
@@ -250,6 +260,8 @@ mod tests {
             "--tpu-use-quic",
             "--tpu-use-quic",
             "--send-batch-size",
             "--send-batch-size",
             "1",
             "1",
+            "--shred-version",
+            "42",
         ])
         ])
         .unwrap();
         .unwrap();
         assert_eq!(
         assert_eq!(
@@ -261,6 +273,7 @@ mod tests {
                 data_type: DataType::Transaction,
                 data_type: DataType::Transaction,
                 data_input: None,
                 data_input: None,
                 skip_gossip: false,
                 skip_gossip: false,
+                shred_version: Some(42),
                 allow_private_addr: false,
                 allow_private_addr: false,
                 num_gen_threads: 1,
                 num_gen_threads: 1,
                 transaction_params: TransactionParams {
                 transaction_params: TransactionParams {
@@ -294,6 +307,8 @@ mod tests {
             "1",
             "1",
             "--send-batch-size",
             "--send-batch-size",
             "1",
             "1",
+            "--shred-version",
+            "42",
         ])
         ])
         .unwrap();
         .unwrap();
         assert_eq!(
         assert_eq!(
@@ -305,6 +320,7 @@ mod tests {
                 data_type: DataType::Transaction,
                 data_type: DataType::Transaction,
                 data_input: None,
                 data_input: None,
                 skip_gossip: false,
                 skip_gossip: false,
+                shred_version: Some(42),
                 allow_private_addr: false,
                 allow_private_addr: false,
                 num_gen_threads: 1,
                 num_gen_threads: 1,
                 transaction_params: TransactionParams {
                 transaction_params: TransactionParams {
@@ -331,6 +347,8 @@ mod tests {
             "transfer",
             "transfer",
             "--num-instructions",
             "--num-instructions",
             "8",
             "8",
+            "--shred-version",
+            "42",
         ]);
         ]);
         assert!(result.is_err());
         assert!(result.is_err());
         assert_eq!(
         assert_eq!(
@@ -353,6 +371,8 @@ mod tests {
             "8",
             "8",
             "--send-batch-size",
             "--send-batch-size",
             "1",
             "1",
+            "--shred-version",
+            "42",
         ])
         ])
         .unwrap();
         .unwrap();
         assert_eq!(
         assert_eq!(
@@ -364,6 +384,7 @@ mod tests {
                 data_type: DataType::Transaction,
                 data_type: DataType::Transaction,
                 data_input: None,
                 data_input: None,
                 skip_gossip: false,
                 skip_gossip: false,
+                shred_version: Some(42),
                 allow_private_addr: false,
                 allow_private_addr: false,
                 num_gen_threads: 1,
                 num_gen_threads: 1,
                 transaction_params: TransactionParams {
                 transaction_params: TransactionParams {
@@ -395,6 +416,8 @@ mod tests {
             "account-creation",
             "account-creation",
             "--send-batch-size",
             "--send-batch-size",
             "1",
             "1",
+            "--shred-version",
+            "42",
         ])
         ])
         .unwrap();
         .unwrap();
         assert_eq!(
         assert_eq!(
@@ -406,6 +429,7 @@ mod tests {
                 data_type: DataType::Transaction,
                 data_type: DataType::Transaction,
                 data_input: None,
                 data_input: None,
                 skip_gossip: false,
                 skip_gossip: false,
+                shred_version: Some(42),
                 allow_private_addr: false,
                 allow_private_addr: false,
                 num_gen_threads: 1,
                 num_gen_threads: 1,
                 transaction_params: TransactionParams {
                 transaction_params: TransactionParams {
@@ -438,6 +462,8 @@ mod tests {
             "8",
             "8",
             "--num-instructions",
             "--num-instructions",
             "1",
             "1",
+            "--shred-version",
+            "42",
         ]);
         ]);
         assert!(result.is_err());
         assert!(result.is_err());
     }
     }

+ 25 - 2
dos/src/main.rs

@@ -760,7 +760,18 @@ fn run_dos<T: 'static + TpsClient + Send + Sync>(
 
 
 fn main() {
 fn main() {
     solana_logger::setup_with_default_filter();
     solana_logger::setup_with_default_filter();
-    let cmd_params = build_cli_parameters();
+    let mut cmd_params = build_cli_parameters();
+
+    if !cmd_params.skip_gossip && cmd_params.shred_version.is_none() {
+        // Try to get shred version from the entrypoint
+        cmd_params.shred_version = Some(
+            solana_net_utils::get_cluster_shred_version(&cmd_params.entrypoint_addr)
+                .unwrap_or_else(|err| {
+                    eprintln!("Failed to get shred version: {}", err);
+                    exit(1);
+                }),
+        );
+    }
 
 
     let (nodes, client) = if !cmd_params.skip_gossip {
     let (nodes, client) = if !cmd_params.skip_gossip {
         info!("Finding cluster entry: {:?}", cmd_params.entrypoint_addr);
         info!("Finding cluster entry: {:?}", cmd_params.entrypoint_addr);
@@ -773,7 +784,7 @@ fn main() {
             None,                              // find_nodes_by_pubkey
             None,                              // find_nodes_by_pubkey
             Some(&cmd_params.entrypoint_addr), // find_node_by_gossip_addr
             Some(&cmd_params.entrypoint_addr), // find_node_by_gossip_addr
             None,                              // my_gossip_addr
             None,                              // my_gossip_addr
-            0,                                 // my_shred_version
+            cmd_params.shred_version.unwrap(), // my_shred_version
             socket_addr_space,
             socket_addr_space,
         )
         )
         .unwrap_or_else(|err| {
         .unwrap_or_else(|err| {
@@ -859,6 +870,7 @@ pub mod test {
                 data_type: DataType::Random,
                 data_type: DataType::Random,
                 data_input: None,
                 data_input: None,
                 skip_gossip: false,
                 skip_gossip: false,
+                shred_version: Some(42),
                 allow_private_addr: false,
                 allow_private_addr: false,
                 num_gen_threads: 1,
                 num_gen_threads: 1,
                 transaction_params: TransactionParams::default(),
                 transaction_params: TransactionParams::default(),
@@ -880,6 +892,7 @@ pub mod test {
                 data_type: DataType::RepairHighest,
                 data_type: DataType::RepairHighest,
                 data_input: None,
                 data_input: None,
                 skip_gossip: false,
                 skip_gossip: false,
+                shred_version: Some(42),
                 allow_private_addr: false,
                 allow_private_addr: false,
                 num_gen_threads: 1,
                 num_gen_threads: 1,
                 transaction_params: TransactionParams::default(),
                 transaction_params: TransactionParams::default(),
@@ -898,6 +911,7 @@ pub mod test {
                 data_type: DataType::RepairShred,
                 data_type: DataType::RepairShred,
                 data_input: None,
                 data_input: None,
                 skip_gossip: false,
                 skip_gossip: false,
+                shred_version: Some(42),
                 allow_private_addr: false,
                 allow_private_addr: false,
                 num_gen_threads: 1,
                 num_gen_threads: 1,
                 transaction_params: TransactionParams::default(),
                 transaction_params: TransactionParams::default(),
@@ -916,6 +930,7 @@ pub mod test {
                 data_type: DataType::GetAccountInfo,
                 data_type: DataType::GetAccountInfo,
                 data_input: Some(Pubkey::default()),
                 data_input: Some(Pubkey::default()),
                 skip_gossip: false,
                 skip_gossip: false,
+                shred_version: Some(42),
                 allow_private_addr: false,
                 allow_private_addr: false,
                 num_gen_threads: 1,
                 num_gen_threads: 1,
                 transaction_params: TransactionParams::default(),
                 transaction_params: TransactionParams::default(),
@@ -949,6 +964,7 @@ pub mod test {
                 data_type: DataType::Random,
                 data_type: DataType::Random,
                 data_input: None,
                 data_input: None,
                 skip_gossip: false,
                 skip_gossip: false,
+                shred_version: Some(42),
                 allow_private_addr: false,
                 allow_private_addr: false,
                 num_gen_threads: 1,
                 num_gen_threads: 1,
                 transaction_params: TransactionParams::default(),
                 transaction_params: TransactionParams::default(),
@@ -990,6 +1006,7 @@ pub mod test {
                 data_type: DataType::Transaction,
                 data_type: DataType::Transaction,
                 data_input: None,
                 data_input: None,
                 skip_gossip: false,
                 skip_gossip: false,
+                shred_version: Some(42),
                 allow_private_addr: false,
                 allow_private_addr: false,
                 num_gen_threads: 1,
                 num_gen_threads: 1,
                 transaction_params: TransactionParams {
                 transaction_params: TransactionParams {
@@ -1017,6 +1034,7 @@ pub mod test {
                 data_type: DataType::Transaction,
                 data_type: DataType::Transaction,
                 data_input: None,
                 data_input: None,
                 skip_gossip: false,
                 skip_gossip: false,
+                shred_version: Some(42),
                 allow_private_addr: false,
                 allow_private_addr: false,
                 num_gen_threads: 1,
                 num_gen_threads: 1,
                 transaction_params: TransactionParams {
                 transaction_params: TransactionParams {
@@ -1044,6 +1062,7 @@ pub mod test {
                 data_type: DataType::Transaction,
                 data_type: DataType::Transaction,
                 data_input: None,
                 data_input: None,
                 skip_gossip: false,
                 skip_gossip: false,
+                shred_version: Some(42),
                 allow_private_addr: false,
                 allow_private_addr: false,
                 num_gen_threads: 1,
                 num_gen_threads: 1,
                 transaction_params: TransactionParams {
                 transaction_params: TransactionParams {
@@ -1125,6 +1144,7 @@ pub mod test {
                 data_type: DataType::Transaction,
                 data_type: DataType::Transaction,
                 data_input: None,
                 data_input: None,
                 skip_gossip: false,
                 skip_gossip: false,
+                shred_version: Some(42),
                 allow_private_addr: false,
                 allow_private_addr: false,
                 num_gen_threads: 1,
                 num_gen_threads: 1,
                 transaction_params: TransactionParams {
                 transaction_params: TransactionParams {
@@ -1154,6 +1174,7 @@ pub mod test {
                 data_type: DataType::Transaction,
                 data_type: DataType::Transaction,
                 data_input: None,
                 data_input: None,
                 skip_gossip: false,
                 skip_gossip: false,
+                shred_version: Some(42),
                 allow_private_addr: false,
                 allow_private_addr: false,
                 num_gen_threads: 1,
                 num_gen_threads: 1,
                 transaction_params: TransactionParams {
                 transaction_params: TransactionParams {
@@ -1182,6 +1203,7 @@ pub mod test {
                 data_type: DataType::Transaction,
                 data_type: DataType::Transaction,
                 data_input: None,
                 data_input: None,
                 skip_gossip: false,
                 skip_gossip: false,
+                shred_version: Some(42),
                 allow_private_addr: false,
                 allow_private_addr: false,
                 num_gen_threads: 1,
                 num_gen_threads: 1,
                 transaction_params: TransactionParams {
                 transaction_params: TransactionParams {
@@ -1210,6 +1232,7 @@ pub mod test {
                 data_type: DataType::Transaction,
                 data_type: DataType::Transaction,
                 data_input: None,
                 data_input: None,
                 skip_gossip: false,
                 skip_gossip: false,
+                shred_version: Some(42),
                 allow_private_addr: false,
                 allow_private_addr: false,
                 num_gen_threads: 1,
                 num_gen_threads: 1,
                 transaction_params: TransactionParams {
                 transaction_params: TransactionParams {