Skip to content

Commit 908dddb

Browse files
bertllllBert
andauthored
Little debt tech repairs (#227)
Co-authored-by: Bert <[email protected]>
1 parent e3810c1 commit 908dddb

File tree

10 files changed

+90
-79
lines changed

10 files changed

+90
-79
lines changed

masq_lib/src/multi_config.rs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ use toml::Value;
1717
#[macro_export]
1818
macro_rules! value_m {
1919
($m:ident, $v:expr, $t:ty) => {{
20-
let matches = make_arg_matches_accesible(&$m);
20+
let matches = $m.arg_matches_ref();
2121
match value_t!(matches, $v, $t) {
2222
Ok(v) => Some(v),
2323
Err(_) => None,
@@ -29,7 +29,7 @@ macro_rules! value_m {
2929
macro_rules! value_user_specified_m {
3030
($m:ident, $v:expr, $t:ty) => {{
3131
let user_specified = $m.occurrences_of($v) > 0;
32-
let matches = make_arg_matches_accesible(&$m);
32+
let matches = $m.arg_matches_ref();
3333
match value_t!(matches, $v, $t) {
3434
Ok(v) => (Some(v), user_specified),
3535
Err(_) => (None, user_specified),
@@ -40,7 +40,7 @@ macro_rules! value_user_specified_m {
4040
#[macro_export]
4141
macro_rules! values_m {
4242
($m:ident, $v:expr, $t:ty) => {{
43-
let matches = make_arg_matches_accesible(&$m);
43+
let matches = $m.arg_matches_ref();
4444
match values_t!(matches, $v, $t) {
4545
Ok(vs) => vs,
4646
Err(_) => vec![],
@@ -116,10 +116,10 @@ impl<'a> MultiConfig<'a> {
116116
pub fn occurrences_of(&self, parameter: &str) -> u64 {
117117
self.arg_matches.occurrences_of(parameter)
118118
}
119-
}
120119

121-
pub fn make_arg_matches_accesible<'a>(multi_confuig: &'a MultiConfig) -> &'a ArgMatches<'a> {
122-
&multi_confuig.arg_matches
120+
pub fn arg_matches_ref(&self) -> &ArgMatches {
121+
&self.arg_matches
122+
}
123123
}
124124

125125
pub trait VclArg: Debug {

node/src/actor_system_factory.rs

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ pub trait ActorSystemFactory {
6060
}
6161

6262
pub struct ActorSystemFactoryReal {
63-
t: Box<dyn ActorSystemFactoryTools>,
63+
tools: Box<dyn ActorSystemFactoryTools>,
6464
}
6565

6666
impl ActorSystemFactory for ActorSystemFactoryReal {
@@ -70,18 +70,22 @@ impl ActorSystemFactory for ActorSystemFactoryReal {
7070
actor_factory: Box<dyn ActorFactory>,
7171
persist_config: Box<dyn PersistentConfiguration>,
7272
) -> StreamHandlerPoolSubs {
73-
self.t.validate_database_chain(
73+
self.tools.validate_database_chain(
7474
persist_config.as_ref(),
7575
config.blockchain_bridge_config.chain,
7676
);
77-
self.t
78-
.prepare_initial_messages(self.t.cryptdes(), config, persist_config, actor_factory)
77+
self.tools.prepare_initial_messages(
78+
self.tools.cryptdes(),
79+
config,
80+
persist_config,
81+
actor_factory,
82+
)
7983
}
8084
}
8185

8286
impl ActorSystemFactoryReal {
8387
pub fn new(tools: Box<dyn ActorSystemFactoryTools>) -> Self {
84-
Self { t: tools }
88+
Self { tools }
8589
}
8690
}
8791

node/src/daemon/setup_reporter.rs

Lines changed: 43 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,6 @@ use masq_lib::constants::DEFAULT_CHAIN;
3232
use masq_lib::logger::Logger;
3333
use masq_lib::messages::UiSetupResponseValueStatus::{Blank, Configured, Default, Required, Set};
3434
use masq_lib::messages::{UiSetupRequestValue, UiSetupResponseValue, UiSetupResponseValueStatus};
35-
use masq_lib::multi_config::make_arg_matches_accesible;
3635
use masq_lib::multi_config::{
3736
CommandLineVcl, ConfigFileVcl, EnvironmentVcl, MultiConfig, VirtualCommandLine,
3837
};
@@ -46,6 +45,8 @@ use std::str::FromStr;
4645

4746
const CONSOLE_DIAGNOSTICS: bool = false;
4847

48+
const ERR_SENSITIVE_BLANKED_OUT_VALUE_PAIRS: &[(&str, &str)] = &[("chain", "data-directory")];
49+
4950
pub type SetupCluster = HashMap<String, UiSetupResponseValue>;
5051

5152
#[cfg(test)]
@@ -85,9 +86,8 @@ impl SetupReporter for SetupReporterReal {
8586
blanked_out_former_values.insert(v.name.clone(), former_value);
8687
};
8788
});
88-
//TODO investigate this, not sure if the right way to solve the issue
89-
//answers an attempt to blank out 'chain' behind an error resulting in chain different from data_dir
90-
let _ = blanked_out_former_values.remove("chain");
89+
let err_conflicts_for_blanked_out =
90+
Self::get_err_conflicts_for_blanked_out(&blanked_out_former_values, &existing_setup);
9191
let mut incoming_setup = incoming_setup
9292
.into_iter()
9393
.filter(|v| v.value.is_some())
@@ -153,7 +153,7 @@ impl SetupReporter for SetupReporterReal {
153153
)
154154
};
155155
match combined_setup.get(retriever.value_name()) {
156-
Some(uisrv) if vec![Blank, Required].contains(&uisrv.status) => {
156+
Some(uisrv) if [Blank, Required].contains(&uisrv.status) => {
157157
make_blank_or_required()
158158
}
159159
Some(uisrv) => (retriever.value_name().to_string(), uisrv.clone()),
@@ -165,10 +165,12 @@ impl SetupReporter for SetupReporterReal {
165165
if error_so_far.param_errors.is_empty() {
166166
Ok(final_setup)
167167
} else {
168-
Err((
169-
Self::combine_clusters(vec![&final_setup, &blanked_out_former_values]),
170-
error_so_far,
171-
))
168+
let setup = Self::combine_clusters(vec![
169+
&final_setup,
170+
&blanked_out_former_values,
171+
&err_conflicts_for_blanked_out,
172+
]);
173+
Err((setup, error_so_far))
172174
}
173175
}
174176
}
@@ -224,6 +226,25 @@ impl SetupReporterReal {
224226
}
225227
}
226228

229+
fn get_err_conflicts_for_blanked_out(
230+
blanked_out_former_values: &SetupCluster,
231+
existing_setup: &SetupCluster,
232+
) -> SetupCluster {
233+
ERR_SENSITIVE_BLANKED_OUT_VALUE_PAIRS.iter().fold(
234+
HashMap::new(),
235+
|mut acc, (blanked_out_arg, err_persistent_linked_arg)| {
236+
if blanked_out_former_values.contains_key(&blanked_out_arg.to_string()) {
237+
if let Some(former_value) =
238+
existing_setup.get(&err_persistent_linked_arg.to_string())
239+
{
240+
acc.insert(err_persistent_linked_arg.to_string(), former_value.clone());
241+
}
242+
};
243+
acc
244+
},
245+
)
246+
}
247+
227248
fn calculate_fundamentals(
228249
dirs_wrapper: &dyn DirsWrapper,
229250
combined_setup: &SetupCluster,
@@ -1060,6 +1081,7 @@ mod tests {
10601081
};
10611082
use crate::test_utils::{assert_string_contains, rate_pack};
10621083
use masq_lib::blockchains::chains::Chain as Blockchain;
1084+
use masq_lib::blockchains::chains::Chain::PolyMumbai;
10631085
use masq_lib::constants::{DEFAULT_CHAIN, DEFAULT_GAS_PRICE};
10641086
use masq_lib::messages::UiSetupResponseValueStatus::{Blank, Configured, Required, Set};
10651087
use masq_lib::test_utils::environment_guard::{ClapGuard, EnvironmentGuard};
@@ -1920,13 +1942,14 @@ mod tests {
19201942
}
19211943

19221944
#[test]
1923-
fn get_modified_setup_data_directory_trying_to_blank_chain_out_on_error() {
1945+
fn get_modified_setup_blanking_chain_out_on_error_checking_chain_and_data_dir() {
19241946
let _guard = EnvironmentGuard::new();
19251947
let base_dir = ensure_node_home_directory_exists(
19261948
"setup_reporter",
1927-
"get_modified_setup_data_directory_trying_to_blank_chain_out_on_error",
1949+
"get_modified_setup_blanking_chain_out_on_error_checking_chain_and_data_dir",
19281950
);
19291951
let current_data_dir = base_dir
1952+
.join("data_dir")
19301953
.join("MASQ")
19311954
.join(BlockChain::PolyMumbai.rec().literal_identifier); //not a default
19321955
let existing_setup = setup_cluster_from(vec![
@@ -1955,6 +1978,7 @@ mod tests {
19551978
("ip", "1.2.3.4", Set),
19561979
("log-level", "warn", Default),
19571980
("neighborhood-mode", "originate-only", Set),
1981+
//this causes the error: cannot run in this mode without any supplied descriptors
19581982
("neighbors", "", Blank),
19591983
(
19601984
"real-user",
@@ -1965,29 +1989,26 @@ mod tests {
19651989
),
19661990
("scans", "on", Default),
19671991
]);
1992+
//blanking out the chain parameter
19681993
let incoming_setup = vec![UiSetupRequestValue::clear("chain")];
19691994
let base_data_dir = base_dir.join("data_dir");
1970-
let expected_chain = DEFAULT_CHAIN.rec().literal_identifier;
1971-
let expected_data_directory = base_data_dir
1972-
.join("MASQ")
1973-
.join(DEFAULT_CHAIN.rec().literal_identifier);
19741995
let dirs_wrapper = Box::new(
19751996
DirsWrapperMock::new()
19761997
.data_dir_result(Some(base_data_dir))
19771998
.home_dir_result(Some(base_dir)),
19781999
);
19792000
let subject = SetupReporterReal::new(dirs_wrapper);
19802001

1981-
let result = subject
2002+
let (resulting_setup_cluster, _) = subject
19822003
.get_modified_setup(existing_setup, incoming_setup)
1983-
.err()
1984-
.unwrap()
1985-
.0;
2004+
.unwrap_err();
19862005

1987-
let actual_chain = &result.get("chain").unwrap().value;
2006+
let expected_chain = PolyMumbai.rec().literal_identifier;
2007+
let actual_chain = &resulting_setup_cluster.get("chain").unwrap().value;
19882008
assert_eq!(actual_chain, expected_chain);
1989-
let actual_data_directory = PathBuf::from(&result.get("data-directory").unwrap().value);
1990-
assert_eq!(actual_data_directory, expected_data_directory);
2009+
let actual_data_directory =
2010+
PathBuf::from(&resulting_setup_cluster.get("data-directory").unwrap().value);
2011+
assert_eq!(actual_data_directory, current_data_dir);
19912012
}
19922013

19932014
#[test]

node/src/database/config_dumper.rs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@ use clap::value_t;
2323
use heck::MixedCase;
2424
use masq_lib::blockchains::chains::Chain;
2525
use masq_lib::command::StdStreams;
26-
use masq_lib::multi_config::make_arg_matches_accesible;
2726
use masq_lib::multi_config::{CommandLineVcl, EnvironmentVcl, VirtualCommandLine};
2827
use masq_lib::shared_schema::ConfiguratorError;
2928
use rustc_hex::ToHex;

node/src/node_configurator/mod.rs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@ use clap::{value_t, App};
1616
use dirs::{data_local_dir, home_dir};
1717
use masq_lib::blockchains::chains::Chain;
1818
use masq_lib::constants::DEFAULT_CHAIN;
19-
use masq_lib::multi_config::make_arg_matches_accesible;
2019
use masq_lib::multi_config::{merge, CommandLineVcl, EnvironmentVcl, MultiConfig, VclArg};
2120
use masq_lib::shared_schema::{
2221
chain_arg, config_file_arg, data_directory_arg, real_user_arg, ConfiguratorError,

node/src/node_configurator/node_configurator_initialization.rs

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,6 @@ mod initialization {
3939
use super::*;
4040
use clap::value_t;
4141
use masq_lib::constants::DEFAULT_UI_PORT;
42-
use masq_lib::multi_config::make_arg_matches_accesible;
4342
use masq_lib::multi_config::MultiConfig;
4443

4544
pub fn parse_args(multi_config: &MultiConfig, config: &mut InitializationConfig) {
@@ -50,7 +49,6 @@ mod initialization {
5049
#[cfg(test)]
5150
mod tests {
5251
use super::*;
53-
use crate::sub_lib::utils::make_new_test_multi_config;
5452
use crate::test_utils::ArgsBuilder;
5553
use masq_lib::constants::DEFAULT_UI_PORT;
5654
use masq_lib::multi_config::{CommandLineVcl, VirtualCommandLine};
@@ -61,7 +59,7 @@ mod tests {
6159
let mut config = InitializationConfig::default();
6260
let vcls: Vec<Box<dyn VirtualCommandLine>> =
6361
vec![Box::new(CommandLineVcl::new(args.into()))];
64-
let multi_config = make_new_test_multi_config(&app_daemon(), vcls).unwrap();
62+
let multi_config = make_new_multi_config(&app_daemon(), vcls).unwrap();
6563

6664
initialization::parse_args(&multi_config, &mut config);
6765

@@ -76,7 +74,7 @@ mod tests {
7674
let mut config = InitializationConfig::default();
7775
let vcls: Vec<Box<dyn VirtualCommandLine>> =
7876
vec![Box::new(CommandLineVcl::new(args.into()))];
79-
let multi_config = make_new_test_multi_config(&app_daemon(), vcls).unwrap();
77+
let multi_config = make_new_multi_config(&app_daemon(), vcls).unwrap();
8078

8179
initialization::parse_args(&multi_config, &mut config);
8280

node/src/node_configurator/node_configurator_standard.rs

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,6 @@ use crate::sub_lib::cryptde_null::CryptDENull;
3232
use crate::sub_lib::utils::make_new_multi_config;
3333
use crate::tls_discriminator_factory::TlsDiscriminatorFactory;
3434
use masq_lib::constants::{DEFAULT_UI_PORT, HTTP_PORT, TLS_PORT};
35-
use masq_lib::multi_config::make_arg_matches_accesible;
3635
use masq_lib::multi_config::{CommandLineVcl, ConfigFileVcl, EnvironmentVcl};
3736
use masq_lib::utils::WrapResult;
3837
use std::str::FromStr;
@@ -287,7 +286,6 @@ mod tests {
287286
use crate::sub_lib::cryptde::CryptDE;
288287
use crate::sub_lib::neighborhood::NeighborhoodMode::ZeroHop;
289288
use crate::sub_lib::neighborhood::{NeighborhoodConfig, NeighborhoodMode, NodeDescriptor};
290-
use crate::sub_lib::utils::make_new_test_multi_config;
291289
use crate::sub_lib::wallet::Wallet;
292290
use crate::test_utils::persistent_configuration_mock::PersistentConfigurationMock;
293291
use crate::test_utils::unshared_test_utils::{
@@ -484,7 +482,7 @@ mod tests {
484482
.param("--data-directory", home_dir.to_str().unwrap())
485483
.param("--ip", "1.2.3.4");
486484
let mut bootstrapper_config = BootstrapperConfig::new();
487-
let multi_config = make_new_test_multi_config(
485+
let multi_config = make_new_multi_config(
488486
&app_node(),
489487
vec![
490488
Box::new(CommandLineVcl::new(args.into())),
@@ -558,7 +556,7 @@ mod tests {
558556
let mut config = BootstrapperConfig::new();
559557
let vcls: Vec<Box<dyn VirtualCommandLine>> =
560558
vec![Box::new(CommandLineVcl::new(args.into()))];
561-
let multi_config = make_new_test_multi_config(&app_node(), vcls).unwrap();
559+
let multi_config = make_new_multi_config(&app_node(), vcls).unwrap();
562560

563561
privileged_parse_args(&DirsWrapperReal {}, &multi_config, &mut config).unwrap();
564562

@@ -602,7 +600,7 @@ mod tests {
602600
let mut config = BootstrapperConfig::new();
603601
let vcls: Vec<Box<dyn VirtualCommandLine>> =
604602
vec![Box::new(CommandLineVcl::new(args.into()))];
605-
let multi_config = make_new_test_multi_config(&app_node(), vcls).unwrap();
603+
let multi_config = make_new_multi_config(&app_node(), vcls).unwrap();
606604

607605
privileged_parse_args(&DirsWrapperReal {}, &multi_config, &mut config).unwrap();
608606

@@ -633,7 +631,7 @@ mod tests {
633631
let mut config = BootstrapperConfig::new();
634632
let vcls: Vec<Box<dyn VirtualCommandLine>> =
635633
vec![Box::new(CommandLineVcl::new(args.into()))];
636-
let multi_config = make_new_test_multi_config(&app_node(), vcls).unwrap();
634+
let multi_config = make_new_multi_config(&app_node(), vcls).unwrap();
637635

638636
privileged_parse_args(&DirsWrapperReal {}, &multi_config, &mut config).unwrap();
639637

@@ -659,7 +657,7 @@ mod tests {
659657
let mut config = BootstrapperConfig::new();
660658
let vcls: Vec<Box<dyn VirtualCommandLine>> =
661659
vec![Box::new(CommandLineVcl::new(args.into()))];
662-
let multi_config = make_new_test_multi_config(&app_node(), vcls).unwrap();
660+
let multi_config = make_new_multi_config(&app_node(), vcls).unwrap();
663661

664662
privileged_parse_args(&DirsWrapperReal {}, &multi_config, &mut config).unwrap();
665663

@@ -686,7 +684,7 @@ mod tests {
686684
let args = make_default_cli_params();
687685
let mut config = BootstrapperConfig::new();
688686
let vcl = Box::new(CommandLineVcl::new(args.into()));
689-
let multi_config = make_new_test_multi_config(&app_node(), vec![vcl]).unwrap();
687+
let multi_config = make_new_multi_config(&app_node(), vec![vcl]).unwrap();
690688

691689
privileged_parse_args(&DirsWrapperReal {}, &multi_config, &mut config).unwrap();
692690

@@ -699,7 +697,7 @@ mod tests {
699697
let args = make_default_cli_params().param("--crash-point", "panic");
700698
let mut config = BootstrapperConfig::new();
701699
let vcl = Box::new(CommandLineVcl::new(args.into()));
702-
let multi_config = make_new_test_multi_config(&app_node(), vec![vcl]).unwrap();
700+
let multi_config = make_new_multi_config(&app_node(), vec![vcl]).unwrap();
703701

704702
privileged_parse_args(&DirsWrapperReal {}, &multi_config, &mut config).unwrap();
705703

0 commit comments

Comments
 (0)