Enable slasher broadcast by default (#4368)

## Issue Addressed

This PR addresses issue https://github.com/sigp/lighthouse/issues/4350

## Proposed Changes

This change will enable slasher broadcast in the following cases:
No flag is passed,
`--slasher-broadcast` is passed and,
`--slasher-broadcast=true` is passed.

Only when an explicit false value is passed the slasher does not broadcast.(`--slasher-broadcast=false`).

## Additional Info

TODO

- [x] Modify CLI parsing logic
- [x] Write test

Refer to #4353 


Co-authored-by: Rahul Dogra <rahulcooldogra@gmail.com>
Co-authored-by: Gua00va <105484243+Gua00va@users.noreply.github.com>
This commit is contained in:
Gua00va 2023-06-08 13:47:56 +00:00
parent f167951835
commit 62a2413ade
3 changed files with 43 additions and 9 deletions

View File

@ -792,8 +792,9 @@ pub fn cli_app<'a, 'b>() -> App<'a, 'b> {
Arg::with_name("slasher-broadcast") Arg::with_name("slasher-broadcast")
.long("slasher-broadcast") .long("slasher-broadcast")
.help("Broadcast slashings found by the slasher to the rest of the network \ .help("Broadcast slashings found by the slasher to the rest of the network \
[disabled by default].") [Enabled by default].")
.requires("slasher") .takes_value(true)
.default_value("true")
) )
.arg( .arg(
Arg::with_name("slasher-backend") Arg::with_name("slasher-backend")

View File

@ -633,7 +633,9 @@ pub fn get_config<E: EthSpec>(
slasher_config.validator_chunk_size = validator_chunk_size; slasher_config.validator_chunk_size = validator_chunk_size;
} }
slasher_config.broadcast = cli_args.is_present("slasher-broadcast"); if let Some(broadcast) = clap_utils::parse_optional(cli_args, "slasher-broadcast")? {
slasher_config.broadcast = broadcast;
}
if let Some(backend) = clap_utils::parse_optional(cli_args, "slasher-backend")? { if let Some(backend) = clap_utils::parse_optional(cli_args, "slasher-backend")? {
slasher_config.backend = backend; slasher_config.backend = backend;

View File

@ -1912,7 +1912,7 @@ fn slasher_validator_chunk_size_flag() {
}); });
} }
#[test] #[test]
fn slasher_broadcast_flag() { fn slasher_broadcast_flag_no_args() {
CommandLineTest::new() CommandLineTest::new()
.flag("slasher", None) .flag("slasher", None)
.flag("slasher-max-db-size", Some("1")) .flag("slasher-max-db-size", Some("1"))
@ -1926,19 +1926,50 @@ fn slasher_broadcast_flag() {
assert!(slasher_config.broadcast); assert!(slasher_config.broadcast);
}); });
} }
#[test] #[test]
fn slasher_backend_default() { fn slasher_broadcast_flag_no_default() {
CommandLineTest::new() CommandLineTest::new()
.flag("slasher", None) .flag("slasher", None)
.flag("slasher-max-db-size", Some("1")) .flag("slasher-max-db-size", Some("1"))
.run_with_zero_port() .run_with_zero_port()
.with_config(|config| { .with_config(|config| {
let slasher_config = config.slasher.as_ref().unwrap(); let slasher_config = config
assert_eq!(slasher_config.backend, slasher::DatabaseBackend::Lmdb); .slasher
.as_ref()
.expect("Unable to parse Slasher config");
assert!(slasher_config.broadcast);
});
}
#[test]
fn slasher_broadcast_flag_true() {
CommandLineTest::new()
.flag("slasher", None)
.flag("slasher-max-db-size", Some("1"))
.flag("slasher-broadcast", Some("true"))
.run_with_zero_port()
.with_config(|config| {
let slasher_config = config
.slasher
.as_ref()
.expect("Unable to parse Slasher config");
assert!(slasher_config.broadcast);
});
}
#[test]
fn slasher_broadcast_flag_false() {
CommandLineTest::new()
.flag("slasher", None)
.flag("slasher-max-db-size", Some("1"))
.flag("slasher-broadcast", Some("false"))
.run_with_zero_port()
.with_config(|config| {
let slasher_config = config
.slasher
.as_ref()
.expect("Unable to parse Slasher config");
assert!(!slasher_config.broadcast);
}); });
} }
#[test] #[test]
fn slasher_backend_override_to_default() { fn slasher_backend_override_to_default() {
// Hard to test this flag because all but one backend is disabled by default and the backend // Hard to test this flag because all but one backend is disabled by default and the backend