Skip to content

Commit f05855e

Browse files
committed
test: use test utils to test last_seen persistence
1 parent 15c1070 commit f05855e

File tree

1 file changed

+23
-69
lines changed

1 file changed

+23
-69
lines changed

src/lib.rs

Lines changed: 23 additions & 69 deletions
Original file line numberDiff line numberDiff line change
@@ -891,7 +891,7 @@ mod test {
891891
};
892892

893893
use bdk_testenv::persist_test_utils::{
894-
persist_indexer_changeset, persist_local_chain_changeset, persist_txgraph_changeset,
894+
persist_indexer_changeset, persist_local_chain_changeset, persist_txgraph_changeset, persist_last_seen
895895
};
896896
use std::sync::Arc;
897897
use std::{collections::BTreeMap, path::Path};
@@ -1098,74 +1098,7 @@ mod test {
10981098
}],
10991099
}
11001100
}
1101-
1102-
#[test]
1103-
fn test_persist_last_seen() {
1104-
let tmpfile = NamedTempFile::new().unwrap();
1105-
let db = create_db(tmpfile.path());
1106-
let store = create_test_store(Arc::new(db), "wallet1");
1107-
1108-
let tx1 = Arc::new(create_one_inp_one_out_tx(
1109-
Txid::from_byte_array([0; 32]),
1110-
30_000,
1111-
));
1112-
let tx2 = Arc::new(create_one_inp_one_out_tx(tx1.compute_txid(), 20_000));
1113-
let tx3 = Arc::new(create_one_inp_one_out_tx(tx2.compute_txid(), 19_000));
1114-
1115-
// try persisting and reading last_seen
1116-
let txs: BTreeSet<Arc<Transaction>> = [tx1.clone(), tx2.clone()].into();
1117-
let mut last_seen: BTreeMap<Txid, u64> =
1118-
[(tx1.compute_txid(), 100), (tx2.compute_txid(), 120)].into();
1119-
1120-
let write_tx = store.db.begin_write().unwrap();
1121-
let _ = write_tx.open_table(store.txs_table_defn()).unwrap();
1122-
let _ = write_tx.open_table(store.last_seen_defn()).unwrap();
1123-
write_tx.commit().unwrap();
1124-
1125-
let write_tx = store.db.begin_write().unwrap();
1126-
store.persist_txs(&write_tx, &txs).unwrap();
1127-
write_tx.commit().unwrap();
1128-
1129-
// to hit the branch for the case when tx is persisted but not in changeset
1130-
let txs: BTreeSet<Arc<Transaction>> = BTreeSet::new();
1131-
1132-
let write_tx = store.db.begin_write().unwrap();
1133-
let read_tx = store.db.begin_read().unwrap();
1134-
store
1135-
.persist_last_seen(&write_tx, &read_tx, &last_seen, &txs)
1136-
.unwrap();
1137-
write_tx.commit().unwrap();
1138-
1139-
let read_tx = store.db.begin_read().unwrap();
1140-
let mut last_seen_read: BTreeMap<Txid, u64> = BTreeMap::new();
1141-
store.read_last_seen(&read_tx, &mut last_seen_read).unwrap();
1142-
assert_eq!(last_seen_read, last_seen);
1143-
1144-
// persist another last_seen and see if what is read is same as merged one
1145-
let txs_new: BTreeSet<Arc<Transaction>> = [tx3.clone()].into();
1146-
let last_seen_new: BTreeMap<Txid, u64> = [(tx3.compute_txid(), 200)].into();
1147-
1148-
let write_tx = store.db.begin_write().unwrap();
1149-
let _ = write_tx.open_table(store.txs_table_defn()).unwrap();
1150-
let _ = write_tx.open_table(store.last_seen_defn()).unwrap();
1151-
write_tx.commit().unwrap();
1152-
1153-
let write_tx = store.db.begin_write().unwrap();
1154-
let read_tx = store.db.begin_read().unwrap();
1155-
store
1156-
.persist_last_seen(&write_tx, &read_tx, &last_seen_new, &txs_new)
1157-
.unwrap();
1158-
write_tx.commit().unwrap();
1159-
1160-
let read_tx = store.db.begin_read().unwrap();
1161-
let mut last_seen_read_new: BTreeMap<Txid, u64> = BTreeMap::new();
1162-
store
1163-
.read_last_seen(&read_tx, &mut last_seen_read_new)
1164-
.unwrap();
1165-
last_seen.merge(last_seen_new);
1166-
assert_eq!(last_seen_read_new, last_seen);
1167-
}
1168-
1101+
11691102
#[test]
11701103
fn test_last_seen_missing_txn() {
11711104
// to hit the branch for the panic case in persist_last_seen
@@ -2095,4 +2028,25 @@ mod test {
20952028
Ok(Store::new(Arc::new(db), "wallet".to_string())?)
20962029
});
20972030
}
2031+
2032+
#[test]
2033+
fn last_seen_is_persisted() {
2034+
persist_last_seen(
2035+
"wallet.redb",
2036+
|path| {
2037+
let db = redb::Database::create(path)?;
2038+
Ok(Store::new(Arc::new(db), "wallet".to_string())?)
2039+
},
2040+
|db| {
2041+
db.create_tables::<ConfirmationBlockTime>()?;
2042+
let mut changeset = tx_graph::ChangeSet::<ConfirmationBlockTime>::default();
2043+
db.read_tx_graph(&mut changeset)?;
2044+
Ok(changeset)
2045+
},
2046+
|db, changeset| {
2047+
db.persist_tx_graph(changeset)?;
2048+
Ok(())
2049+
},
2050+
);
2051+
}
20982052
}

0 commit comments

Comments
 (0)