Skip to content

Commit e846f3b

Browse files
committed
Expose internal functions to create storages, and make tests pass
1 parent 1d8c6da commit e846f3b

File tree

7 files changed

+21
-19
lines changed

7 files changed

+21
-19
lines changed

benches/bench.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ use test::Bencher;
77

88
use hypercore::{Feed, Storage};
99

10-
async fn create_feed(page_size: usize) -> Result<Feed<RandomAccessMemory>, Error> {
10+
async fn create_feed(page_size: usize) -> Result<Feed, Error> {
1111
let storage =
1212
Storage::new(|_| Box::pin(async move { Ok(RandomAccessMemory::new(page_size)) })).await?;
1313
Feed::with_storage(storage).await

src/lib.rs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,9 @@ pub use crate::feed::Feed;
4848
pub use crate::feed_builder::FeedBuilder;
4949
pub use crate::proof::Proof;
5050
pub use crate::replicate::Peer;
51-
pub use crate::storage::{Node, NodeTrait, Storage, Store};
51+
pub use crate::storage::{
52+
storage_disk, storage_memory, BoxStorage, Node, NodeTrait, Storage, Store,
53+
};
5254
pub use ed25519_dalek::{PublicKey, SecretKey};
5355

5456
use std::path::Path;

src/storage/mod.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ pub struct PartialKeypair {
2929
pub secret: Option<SecretKey>,
3030
}
3131

32+
/// Dynamic-dispatch Storage wrapper
3233
pub type BoxStorage = Box<dyn DynStorage>;
3334

3435
/// Create a new instance backed by a `RandomAccessMemory` instance.

tests/common/mod.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ use futures::future::FutureExt;
55
use hypercore::{Feed, Storage, Store};
66
use random_access_memory as ram;
77

8-
pub async fn create_feed(page_size: usize) -> Result<Feed<ram::RandomAccessMemory>, Error> {
8+
pub async fn create_feed(page_size: usize) -> Result<Feed, Error> {
99
let create = |_store: Store| async move { Ok(ram::RandomAccessMemory::new(page_size)) }.boxed();
1010
let storage = Storage::new(create).await?;
1111
Feed::with_storage(storage).await

tests/compat.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ use std::path::{Path, PathBuf};
1111
use data_encoding::HEXLOWER;
1212
use ed25519_dalek::{Keypair, Signature};
1313
use hypercore::Feed;
14-
use hypercore::{Storage, Store};
14+
use hypercore::{Storage, Store, BoxStorage};
1515
use random_access_disk::RandomAccessDisk;
1616
use remove_dir_all::remove_dir_all;
1717

@@ -144,7 +144,7 @@ fn storage_path<P: AsRef<Path>>(dir: P, s: Store) -> PathBuf {
144144
dir.as_ref().join(filename)
145145
}
146146

147-
async fn mk_storage() -> (PathBuf, Storage<RandomAccessDisk>) {
147+
async fn mk_storage() -> (PathBuf, BoxStorage) {
148148
let temp_dir = tempfile::tempdir().unwrap();
149149
let dir = temp_dir.into_path();
150150
let storage = Storage::new(|s| {

tests/feed.rs

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -4,16 +4,15 @@ mod common;
44

55
use common::create_feed;
66
use hypercore::{generate_keypair, Feed, NodeTrait, PublicKey, SecretKey, Storage};
7-
use random_access_storage::RandomAccess;
7+
use hypercore::{storage_disk, storage_memory};
88
use std::env::temp_dir;
9-
use std::fmt::Debug;
109
use std::fs;
1110
use std::io::Write;
1211

1312
#[async_std::test]
1413
async fn create_with_key() {
1514
let keypair = generate_keypair();
16-
let storage = Storage::new_memory().await.unwrap();
15+
let storage = storage_memory().await.unwrap();
1716
let _feed = Feed::builder(keypair.public, storage)
1817
.secret_key(keypair.secret)
1918
.build()
@@ -155,7 +154,7 @@ async fn put_with_data() {
155154

156155
// Create a second feed with the first feed's key.
157156
let (public, secret) = copy_keys(&a);
158-
let storage = Storage::new_memory().await.unwrap();
157+
let storage = storage_memory().await.unwrap();
159158
let mut b = Feed::builder(public, storage)
160159
.secret_key(secret)
161160
.build()
@@ -187,7 +186,7 @@ async fn put_with_data() {
187186

188187
#[async_std::test]
189188
async fn create_with_storage() {
190-
let storage = Storage::new_memory().await.unwrap();
189+
let storage = storage_memory().await.unwrap();
191190
assert!(
192191
Feed::with_storage(storage).await.is_ok(),
193192
"Could not create a feed with a storage."
@@ -196,7 +195,7 @@ async fn create_with_storage() {
196195

197196
#[async_std::test]
198197
async fn create_with_stored_public_key() {
199-
let mut storage = Storage::new_memory().await.unwrap();
198+
let mut storage = storage_memory().await.unwrap();
200199
let keypair = generate_keypair();
201200
storage.write_public_key(&keypair.public).await.unwrap();
202201
assert!(
@@ -207,7 +206,7 @@ async fn create_with_stored_public_key() {
207206

208207
#[async_std::test]
209208
async fn create_with_stored_keys() {
210-
let mut storage = Storage::new_memory().await.unwrap();
209+
let mut storage = storage_memory().await.unwrap();
211210
let keypair = generate_keypair();
212211
storage.write_public_key(&keypair.public).await.unwrap();
213212
storage.write_secret_key(&keypair.secret).await.unwrap();
@@ -218,7 +217,7 @@ async fn create_with_stored_keys() {
218217
}
219218

220219
fn copy_keys(
221-
feed: &Feed<impl RandomAccess<Error = Box<dyn std::error::Error + Send + Sync>> + Debug + Send>,
220+
feed: &Feed,
222221
) -> (PublicKey, SecretKey) {
223222
match &feed.secret_key() {
224223
Some(secret) => {
@@ -254,7 +253,7 @@ async fn audit() {
254253
async fn audit_bad_data() {
255254
let mut dir = temp_dir();
256255
dir.push("audit_bad_data");
257-
let storage = Storage::new_disk(&dir).await.unwrap();
256+
let storage = storage_disk(&dir).await.unwrap();
258257
let mut feed = Feed::with_storage(storage).await.unwrap();
259258
feed.append(b"hello").await.unwrap();
260259
feed.append(b"world").await.unwrap();

tests/storage.rs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
use ed25519_dalek::PublicKey;
2-
use hypercore::{generate_keypair, sign, verify, Signature, Storage};
2+
use hypercore::{generate_keypair, sign, storage_memory, verify, Signature};
33

44
#[async_std::test]
55
async fn should_write_and_read_keypair() {
@@ -8,7 +8,7 @@ async fn should_write_and_read_keypair() {
88
// prepare a signature
99
let sig: Signature = sign(&keypair.public, &keypair.secret, msg);
1010

11-
let mut storage = Storage::new_memory().await.unwrap();
11+
let mut storage = storage_memory().await.unwrap();
1212
assert!(
1313
storage.write_secret_key(&keypair.secret).await.is_ok(),
1414
"Can not store secret key."
@@ -27,7 +27,7 @@ async fn should_write_and_read_keypair() {
2727
#[async_std::test]
2828
async fn should_read_partial_keypair() {
2929
let keypair = generate_keypair();
30-
let mut storage = Storage::new_memory().await.unwrap();
30+
let mut storage = storage_memory().await.unwrap();
3131
assert!(
3232
storage.write_public_key(&keypair.public).await.is_ok(),
3333
"Can not store public key."
@@ -39,13 +39,13 @@ async fn should_read_partial_keypair() {
3939

4040
#[async_std::test]
4141
async fn should_read_no_keypair() {
42-
let mut storage = Storage::new_memory().await.unwrap();
42+
let mut storage = storage_memory().await.unwrap();
4343
let partial = storage.read_partial_keypair().await;
4444
assert!(partial.is_none(), "A key is present");
4545
}
4646

4747
#[async_std::test]
4848
async fn should_read_empty_public_key() {
49-
let mut storage = Storage::new_memory().await.unwrap();
49+
let mut storage = storage_memory().await.unwrap();
5050
assert!(storage.read_public_key().await.is_err());
5151
}

0 commit comments

Comments
 (0)