Skip to content

Commit f17c2fb

Browse files
committed
GH-552: max_block_count defaults to 100_000
1 parent 75f6657 commit f17c2fb

File tree

6 files changed

+90
-13
lines changed

6 files changed

+90
-13
lines changed

masq_lib/src/constants.rs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ use crate::data_version::DataVersion;
55
use const_format::concatcp;
66

77
pub const DEFAULT_CHAIN: Chain = Chain::PolyMainnet;
8-
pub const CURRENT_SCHEMA_VERSION: usize = 9;
8+
pub const CURRENT_SCHEMA_VERSION: usize = 10;
99

1010
pub const HIGHEST_RANDOM_CLANDESTINE_PORT: u16 = 9999;
1111
pub const HTTP_PORT: u16 = 80;
@@ -215,3 +215,5 @@ mod tests {
215215
})
216216
}
217217
}
218+
219+
pub const DEFAULT_MAX_BLOCK_COUNT: u64 = 100_000u64;

node/src/blockchain/blockchain_bridge.rs

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ use actix::Message;
3333
use actix::{Addr, Recipient};
3434
use itertools::Itertools;
3535
use masq_lib::blockchains::chains::Chain;
36+
use masq_lib::constants::DEFAULT_MAX_BLOCK_COUNT;
3637
use masq_lib::logger::Logger;
3738
use masq_lib::messages::ScanType;
3839
use masq_lib::ui_gateway::NodeFromUiMessage;
@@ -287,7 +288,7 @@ impl BlockchainBridge {
287288
};
288289
let max_block_count = match self.persistent_config.max_block_count() {
289290
Ok(Some(mbc)) => mbc,
290-
_ => u64::MAX,
291+
_ => DEFAULT_MAX_BLOCK_COUNT,
291292
};
292293
let use_unlimited_block_count_range = u64::MAX == max_block_count;
293294
let use_latest_block = u64::MAX == start_block_nbr;
@@ -1019,7 +1020,7 @@ mod tests {
10191020
)))
10201021
.lower_interface_results(Box::new(lower_interface));
10211022
let persistent_config = PersistentConfigurationMock::new()
1022-
.max_block_count_result(Ok(Some(100_000)))
1023+
.max_block_count_result(Ok(Some(DEFAULT_MAX_BLOCK_COUNT)))
10231024
.start_block_result(Ok(Some(5))); // no set_start_block_result: set_start_block() must not be called
10241025
let mut subject = BlockchainBridge::new(
10251026
Box::new(blockchain_interface),
@@ -1277,11 +1278,11 @@ mod tests {
12771278
}
12781279

12791280
#[test]
1280-
fn handle_retrieve_transactions_uses_latest_block_number_upon_get_block_number_error() {
1281+
fn handle_retrieve_transactions_uses_default_max_block_count_for_ending_block_number_upon_get_block_number_error() {
12811282
init_test_logging();
12821283
let retrieve_transactions_params_arc = Arc::new(Mutex::new(vec![]));
12831284
let system = System::new(
1284-
"handle_retrieve_transactions_uses_latest_block_number_upon_get_block_number_error",
1285+
"handle_retrieve_transactions_uses_default_max_block_count_for_ending_block_number_upon_get_block_number_error",
12851286
);
12861287
let (accountant, _, accountant_recording_arc) = make_recorder();
12871288
let earning_wallet = make_wallet("somewallet");
@@ -1311,7 +1312,7 @@ mod tests {
13111312
.retrieve_transactions_result(Ok(expected_transactions.clone()))
13121313
.lower_interface_results(Box::new(lower_interface));
13131314
let persistent_config = PersistentConfigurationMock::new()
1314-
.max_block_count_result(Ok(None))
1315+
.max_block_count_result(Ok(Some(DEFAULT_MAX_BLOCK_COUNT)))
13151316
.start_block_result(Ok(Some(6)));
13161317
let subject = BlockchainBridge::new(
13171318
Box::new(blockchain_interface_mock),
@@ -1341,7 +1342,7 @@ mod tests {
13411342
*retrieve_transactions_params,
13421343
vec![(
13431344
BlockNumber::Number(6u64.into()),
1344-
BlockNumber::Latest,
1345+
BlockNumber::Number((DEFAULT_MAX_BLOCK_COUNT + 6u64).into()),
13451346
earning_wallet
13461347
)]
13471348
);
@@ -1361,7 +1362,7 @@ mod tests {
13611362
}),
13621363
}
13631364
);
1364-
TestLogHandler::new().exists_log_containing("DEBUG: BlockchainBridge: Using 'latest' block number instead of a literal number. QueryFailed(\"Failed to read the latest block number\")");
1365+
TestLogHandler::new().exists_log_containing("DEBUG: BlockchainBridge: Using '100006' ending block number. QueryFailed(\"Failed to read the latest block number\")");
13651366
}
13661367

13671368
#[test]
@@ -1400,7 +1401,7 @@ mod tests {
14001401
.retrieve_transactions_result(Ok(expected_transactions.clone()))
14011402
.lower_interface_results(Box::new(lower_interface));
14021403
let persistent_config = PersistentConfigurationMock::new()
1403-
.max_block_count_result(Ok(None))
1404+
.max_block_count_result(Ok(Some(DEFAULT_MAX_BLOCK_COUNT)))
14041405
.start_block_result(Ok(None));
14051406
let subject = BlockchainBridge::new(
14061407
Box::new(blockchain_interface_mock),
@@ -1449,7 +1450,7 @@ mod tests {
14491450
}
14501451

14511452
#[test]
1452-
fn handle_retrieve_transactions_with_latest_for_start_and_end_block_is_supported() {
1453+
fn handle_retrieve_transactions_when_get_block_number_fails_uses_latest_for_start_and_end_block() {
14531454
let retrieve_transactions_params_arc = Arc::new(Mutex::new(vec![]));
14541455
let earning_wallet = make_wallet("somewallet");
14551456
let amount = 42;
@@ -1471,11 +1472,11 @@ mod tests {
14711472
};
14721473

14731474
let system = System::new(
1474-
"handle_retrieve_transactions_with_latest_for_start_and_end_block_is_supported",
1475+
"handle_retrieve_transactions_when_get_block_number_fails_uses_latest_for_start_and_end_block",
14751476
);
14761477
let (accountant, _, accountant_recording_arc) = make_recorder();
14771478
let persistent_config = PersistentConfigurationMock::new()
1478-
.max_block_count_result(Ok(None))
1479+
.max_block_count_result(Ok(Some(DEFAULT_MAX_BLOCK_COUNT)))
14791480
.start_block_result(Ok(None));
14801481
let latest_block_number = LatestBlockNumber::Err(BlockchainError::QueryFailed(
14811482
"Failed to read from block chain service".to_string(),

node/src/database/db_initializer.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -652,7 +652,7 @@ mod tests {
652652
#[test]
653653
fn constants_have_correct_values() {
654654
assert_eq!(DATABASE_FILE, "node-data.db");
655-
assert_eq!(CURRENT_SCHEMA_VERSION, 9);
655+
assert_eq!(CURRENT_SCHEMA_VERSION, 10);
656656
}
657657

658658
#[test]

node/src/database/db_migrations/db_migrator.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ use crate::database::db_migrations::migrations::migration_5_to_6::Migrate_5_to_6
1010
use crate::database::db_migrations::migrations::migration_6_to_7::Migrate_6_to_7;
1111
use crate::database::db_migrations::migrations::migration_7_to_8::Migrate_7_to_8;
1212
use crate::database::db_migrations::migrations::migration_8_to_9::Migrate_8_to_9;
13+
use crate::database::db_migrations::migrations::migration_9_to_10::Migrate_9_to_10;
1314
use crate::database::db_migrations::migrator_utils::{
1415
DBMigDeclarator, DBMigrationUtilities, DBMigrationUtilitiesReal, DBMigratorInnerConfiguration,
1516
};
@@ -78,6 +79,7 @@ impl DbMigratorReal {
7879
&Migrate_6_to_7,
7980
&Migrate_7_to_8,
8081
&Migrate_8_to_9,
82+
&Migrate_9_to_10,
8183
]
8284
}
8385

Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
1+
use crate::database::db_migrations::db_migrator::DatabaseMigration;
2+
use crate::database::db_migrations::migrator_utils::DBMigDeclarator;
3+
4+
#[allow(non_camel_case_types)]
5+
pub struct Migrate_9_to_10;
6+
7+
impl DatabaseMigration for Migrate_9_to_10 {
8+
fn migrate<'a>(
9+
&self,
10+
declaration_utils: Box<dyn DBMigDeclarator + 'a>,
11+
) -> rusqlite::Result<()> {
12+
declaration_utils.execute_upon_transaction(&[
13+
&"INSERT INTO config (name, value, encrypted) VALUES ('max_block_count', 100000, 0) ON CONFLICT(name) DO UPDATE SET value = 100000 WHERE name = 'max_block_count'"
14+
])
15+
}
16+
17+
fn old_version(&self) -> usize {
18+
9
19+
}
20+
}
21+
22+
#[cfg(test)]
23+
mod tests {
24+
use crate::database::db_initializer::{
25+
DbInitializationConfig, DbInitializer, DbInitializerReal, DATABASE_FILE,
26+
};
27+
use crate::test_utils::database_utils::{
28+
bring_db_0_back_to_life_and_return_connection, make_external_data, retrieve_config_row,
29+
};
30+
use masq_lib::test_utils::logging::{init_test_logging, TestLogHandler};
31+
use masq_lib::test_utils::utils::ensure_node_home_directory_exists;
32+
use std::fs::create_dir_all;
33+
34+
#[test]
35+
fn migration_from_9_to_10_is_properly_set() {
36+
init_test_logging();
37+
let dir_path = ensure_node_home_directory_exists(
38+
"db_migrations",
39+
"migration_from_9_to_10_is_properly_set",
40+
);
41+
create_dir_all(&dir_path).unwrap();
42+
let db_path = dir_path.join(DATABASE_FILE);
43+
let _ = bring_db_0_back_to_life_and_return_connection(&db_path);
44+
let subject = DbInitializerReal::default();
45+
46+
let result = subject.initialize_to_version(
47+
&dir_path,
48+
10,
49+
DbInitializationConfig::create_or_migrate(make_external_data()),
50+
);
51+
let connection = result.unwrap();
52+
let (mp_value, mp_encrypted) = retrieve_config_row(connection.as_ref(), "max_block_count");
53+
let (cs_value, cs_encrypted) = retrieve_config_row(connection.as_ref(), "schema_version");
54+
assert_eq!(mp_value, Some(100_000u64.to_string()));
55+
assert_eq!(mp_encrypted, false);
56+
assert_eq!(cs_value, Some(10.to_string()));
57+
assert_eq!(cs_encrypted, false);
58+
TestLogHandler::new().assert_logs_contain_in_order(vec![
59+
"DbMigrator: Database successfully migrated from version 0 to 1",
60+
"DbMigrator: Database successfully migrated from version 1 to 2",
61+
"DbMigrator: Database successfully migrated from version 2 to 3",
62+
"DbMigrator: Database successfully migrated from version 3 to 4",
63+
"DbMigrator: Database successfully migrated from version 4 to 5",
64+
"DbMigrator: Database successfully migrated from version 5 to 6",
65+
"DbMigrator: Database successfully migrated from version 6 to 7",
66+
"DbMigrator: Database successfully migrated from version 7 to 8",
67+
"DbMigrator: Database successfully migrated from version 8 to 9",
68+
"DbMigrator: Database successfully migrated from version 9 to 10",
69+
]);
70+
}
71+
}

node/src/database/db_migrations/migrations/mod.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,3 +9,4 @@ pub mod migration_5_to_6;
99
pub mod migration_6_to_7;
1010
pub mod migration_7_to_8;
1111
pub mod migration_8_to_9;
12+
pub mod migration_9_to_10;

0 commit comments

Comments
 (0)