Skip to content

Commit 2d7c20e

Browse files
authored
GH-605: Teach the PayableScanner on tx retries (#663)
1 parent 647d61a commit 2d7c20e

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

55 files changed

+6905
-4509
lines changed

masq_lib/src/utils.rs

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -520,10 +520,30 @@ macro_rules! hashset {
520520
};
521521
}
522522

523+
#[macro_export(local_inner_macros)]
524+
macro_rules! btreeset {
525+
() => {
526+
::std::collections::BTreeSet::new()
527+
};
528+
($($val:expr,)+) => {
529+
btreeset!($($val),+)
530+
};
531+
($($value:expr),+) => {
532+
{
533+
let mut _bts = ::std::collections::BTreeSet::new();
534+
$(
535+
let _ = _bts.insert($value);
536+
)*
537+
_bts
538+
}
539+
};
540+
}
541+
523542
#[cfg(test)]
524543
mod tests {
525544
use super::*;
526545
use itertools::Itertools;
546+
use std::collections::BTreeSet;
527547
use std::collections::{BTreeMap, HashMap, HashSet};
528548
use std::env::current_dir;
529549
use std::fmt::Write;
@@ -956,4 +976,45 @@ mod tests {
956976
assert_eq!(hashset_of_string, expected_hashset_of_string);
957977
assert_eq!(hashset_with_duplicate, expected_hashset_with_duplicate);
958978
}
979+
980+
#[test]
981+
fn btreeset_macro_works() {
982+
let empty_btreeset: BTreeSet<i32> = btreeset!();
983+
let btreeset_with_one_element = btreeset!(2);
984+
let btreeset_with_multiple_elements = btreeset!(2, 20, 42);
985+
let btreeset_with_trailing_comma = btreeset!(2, 20,);
986+
let btreeset_of_string = btreeset!("val_a", "val_b");
987+
let btreeset_with_duplicate = btreeset!(2, 2);
988+
989+
let expected_empty_btreeset: BTreeSet<i32> = BTreeSet::new();
990+
let mut expected_btreeset_with_one_element = BTreeSet::new();
991+
expected_btreeset_with_one_element.insert(2);
992+
let mut expected_btreeset_with_multiple_elements = BTreeSet::new();
993+
expected_btreeset_with_multiple_elements.insert(2);
994+
expected_btreeset_with_multiple_elements.insert(20);
995+
expected_btreeset_with_multiple_elements.insert(42);
996+
let mut expected_btreeset_with_trailing_comma = BTreeSet::new();
997+
expected_btreeset_with_trailing_comma.insert(2);
998+
expected_btreeset_with_trailing_comma.insert(20);
999+
let mut expected_btreeset_of_string = BTreeSet::new();
1000+
expected_btreeset_of_string.insert("val_a");
1001+
expected_btreeset_of_string.insert("val_b");
1002+
let mut expected_btreeset_with_duplicate = BTreeSet::new();
1003+
expected_btreeset_with_duplicate.insert(2);
1004+
assert_eq!(empty_btreeset, expected_empty_btreeset);
1005+
assert_eq!(
1006+
btreeset_with_one_element,
1007+
expected_btreeset_with_one_element
1008+
);
1009+
assert_eq!(
1010+
btreeset_with_multiple_elements,
1011+
expected_btreeset_with_multiple_elements
1012+
);
1013+
assert_eq!(
1014+
btreeset_with_trailing_comma,
1015+
expected_btreeset_with_trailing_comma
1016+
);
1017+
assert_eq!(btreeset_of_string, expected_btreeset_of_string);
1018+
assert_eq!(btreeset_with_duplicate, expected_btreeset_with_duplicate);
1019+
}
9591020
}

multinode_integration_tests/tests/bookkeeping_test.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ fn provided_and_consumed_services_are_recorded_in_databases() {
4040
);
4141

4242
// get all payables from originating node
43-
let payables = non_pending_payables(&originating_node);
43+
let payables = retrieve_payables(&originating_node);
4444

4545
// Waiting until the serving nodes have finished accruing their receivables
4646
thread::sleep(Duration::from_secs(10));
@@ -79,9 +79,9 @@ fn provided_and_consumed_services_are_recorded_in_databases() {
7979
});
8080
}
8181

82-
fn non_pending_payables(node: &MASQRealNode) -> Vec<PayableAccount> {
82+
fn retrieve_payables(node: &MASQRealNode) -> Vec<PayableAccount> {
8383
let payable_dao = payable_dao(node.name());
84-
payable_dao.non_pending_payables()
84+
payable_dao.retrieve_payables(None)
8585
}
8686

8787
fn receivables(node: &MASQRealNode) -> Vec<ReceivableAccount> {

multinode_integration_tests/tests/verify_bill_payment.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -225,7 +225,7 @@ fn verify_bill_payment() {
225225
}
226226

227227
let now = Instant::now();
228-
while !consuming_payable_dao.non_pending_payables().is_empty()
228+
while !consuming_payable_dao.retrieve_payables(None).is_empty()
229229
&& now.elapsed() < Duration::from_secs(10)
230230
{
231231
thread::sleep(Duration::from_millis(400));
@@ -400,7 +400,7 @@ fn verify_pending_payables() {
400400
);
401401

402402
let now = Instant::now();
403-
while !consuming_payable_dao.non_pending_payables().is_empty()
403+
while !consuming_payable_dao.retrieve_payables(None).is_empty()
404404
&& now.elapsed() < Duration::from_secs(10)
405405
{
406406
thread::sleep(Duration::from_millis(400));
@@ -437,7 +437,7 @@ fn verify_pending_payables() {
437437
.tmb(0),
438438
);
439439

440-
assert!(consuming_payable_dao.non_pending_payables().is_empty());
440+
assert!(consuming_payable_dao.retrieve_payables(None).is_empty());
441441
MASQNodeUtils::assert_node_wrote_log_containing(
442442
real_consuming_node.name(),
443443
"Found 3 pending payables to process",

0 commit comments

Comments
 (0)