Skip to content

Commit

Permalink
Initial test framework
Browse files Browse the repository at this point in the history
  • Loading branch information
Rigidity committed Nov 12, 2024
1 parent cea0665 commit 478bb9c
Show file tree
Hide file tree
Showing 10 changed files with 263 additions and 45 deletions.
2 changes: 1 addition & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,6 @@ dist-ssr
*.sw?

# Rust
/target
target
/.env
/test.sqlite*
66 changes: 45 additions & 21 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

5 changes: 3 additions & 2 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,7 @@ tauri-specta = "2.0.0-rc.20"
# Chia
chia = "0.15.0"
clvmr = "0.9.0"
chia-wallet-sdk = { version = "0.18.0", features = ["rustls"] }
chia-wallet-sdk = { version = "0.19.0", features = ["rustls"] }
bip39 = "2.0.0"
bech32 = "0.9.1"

Expand Down Expand Up @@ -105,6 +105,7 @@ tracing = "0.1.40"
tracing-subscriber = "0.3.18"
tracing-appender = "0.2.3"
log = "0.4.22"
test-log = { version = "0.2.16", default-features = false }

[patch.crates-io]
chia-wallet-sdk = { git = "https://github.com/xch-dev/chia-wallet-sdk", rev = "543743574fc15662395dc5d15b1cbf250783f802" }
chia-wallet-sdk = { git = "https://github.com/xch-dev/chia-wallet-sdk", rev = "c9f0c19f9ca7cd8ceb8b787e9ad15d8a1247da6b" }
7 changes: 6 additions & 1 deletion crates/sage-wallet/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,12 @@ itertools = { workspace = true }
futures-util = { workspace = true }
futures-lite = { workspace = true }
rayon = { workspace = true }
reqwest = { workspace = true, default-features = false, features = ["http2", "rustls-tls-webpki-roots"] }
reqwest = { workspace = true, default-features = false, features = ["http2", "rustls-tls-webpki-roots", "json"] }
serde = { workspace = true, features = ["derive"] }
serde_json = { workspace = true }
indexmap = { workspace = true }

[dev-dependencies]
anyhow = { workspace = true }
sqlx = { workspace = true, features = ["runtime-tokio"] }
test-log = { workspace = true, features = ["trace"] }
6 changes: 6 additions & 0 deletions crates/sage-wallet/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -19,3 +19,9 @@ pub use transaction::*;
pub use utils::*;
pub use wallet::*;
pub use wallet_peer::*;

#[cfg(test)]
mod test;

#[cfg(test)]
pub use test::*;
35 changes: 17 additions & 18 deletions crates/sage-wallet/src/queues/puzzle_queue.rs
Original file line number Diff line number Diff line change
Expand Up @@ -43,37 +43,24 @@ impl PuzzleQueue {

pub async fn start(mut self) -> Result<(), WalletError> {
loop {
let subscriptions = self.process_batch().await?;

self.command_sender
.send(SyncCommand::SubscribeCoins {
coin_ids: subscriptions,
})
.await
.ok();

self.sync_sender
.send(SyncEvent::PuzzleBatchSynced)
.await
.ok();

self.process_batch().await?;
sleep(Duration::from_millis(150)).await;
}
}

async fn process_batch(&mut self) -> Result<Vec<Bytes32>, WalletError> {
async fn process_batch(&mut self) -> Result<(), WalletError> {
let peers = self.state.lock().await.peers();

if peers.is_empty() {
sleep(Duration::from_secs(3)).await;
return Ok(Vec::new());
return Ok(());
}

let coin_states = self.db.unsynced_coin_states(peers.len()).await?;

if coin_states.is_empty() {
sleep(Duration::from_secs(3)).await;
return Ok(Vec::new());
return Ok(());
}

debug!(
Expand Down Expand Up @@ -120,7 +107,19 @@ impl PuzzleQueue {
}
}

Ok(subscriptions)
self.command_sender
.send(SyncCommand::SubscribeCoins {
coin_ids: subscriptions,
})
.await
.ok();

self.sync_sender
.send(SyncEvent::PuzzleBatchSynced)
.await
.ok();

Ok(())
}
}

Expand Down
6 changes: 5 additions & 1 deletion crates/sage-wallet/src/sync_manager/peer_discovery.rs
Original file line number Diff line number Diff line change
Expand Up @@ -203,7 +203,11 @@ impl SyncManager {
self.state.lock().await.peer_count() >= self.options.target_peers
}

async fn try_add_peer(&mut self, peer: Peer, mut receiver: mpsc::Receiver<Message>) -> bool {
pub(crate) async fn try_add_peer(
&mut self,
peer: Peer,
mut receiver: mpsc::Receiver<Message>,
) -> bool {
let Ok(Some(message)) = timeout(self.options.timeouts.initial_peak, receiver.recv()).await
else {
debug!(
Expand Down
Loading

0 comments on commit 478bb9c

Please sign in to comment.