Skip to content

Commit f20b260

Browse files
committed
Write a test for {import,write}_verifiable_stream
1 parent 51f5707 commit f20b260

File tree

1 file changed

+34
-2
lines changed

1 file changed

+34
-2
lines changed

src/store/fs/tests.rs

Lines changed: 34 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,17 @@
11
use std::io::Cursor;
22

33
use bao_tree::ChunkRanges;
4+
use bytes::BytesMut;
45
use iroh_io::AsyncSliceReaderExt;
56

67
use crate::{
78
store::{
89
bao_file::test_support::{
910
decode_response_into_batch, make_wire_data, random_test_data, simulate_remote, validate,
1011
},
11-
Map as _, MapEntryMut, MapMut, ReadableStore, Store as _,
12+
Map as _, MapEntry, MapEntryMut, MapMut, ReadableStore, Store as _, ValidateProgress,
1213
},
13-
util::raw_outboard,
14+
util::{progress::AsyncChannelProgressSender, raw_outboard},
1415
IROH_BLOCK_SIZE,
1516
};
1617

@@ -809,3 +810,34 @@ async fn actor_store_smoke() {
809810
db.sync().await.unwrap();
810811
db.dump().await.unwrap();
811812
}
813+
814+
#[tokio::test]
815+
async fn verifiable_stream_smoke() -> testresult::TestResult {
816+
let db1 = crate::store::mem::Store::new();
817+
let db2 = crate::store::mem::Store::new();
818+
819+
const SIZE: usize = 16 * 1024 * 1024;
820+
let data = random_test_data(SIZE);
821+
let tag = db1.import_bytes(Bytes::from(data), BlobFormat::Raw).await?;
822+
let mut buffer = BytesMut::with_capacity(SIZE + 1024 * 1024);
823+
let entry = db1.get(tag.hash()).await?.expect("We just wrote this hash");
824+
825+
entry.write_verifiable_stream(0, &mut buffer).await?;
826+
827+
db2.import_verifiable_stream(*tag.hash(), SIZE as u64, 0, buffer.freeze())
828+
.await?;
829+
830+
let (tx, rx) = async_channel::bounded(128);
831+
let handle = tokio::spawn(async move {
832+
while let Ok(progress) = rx.recv().await {
833+
if let ValidateProgress::Abort(err) = progress {
834+
panic!("Got an error: {err}");
835+
}
836+
}
837+
});
838+
db2.validate(false, AsyncChannelProgressSender::new(tx).boxed())
839+
.await?;
840+
handle.await?;
841+
842+
Ok(())
843+
}

0 commit comments

Comments
 (0)