From 9f0caf31756822dedec1dc0c90f069464325ebda Mon Sep 17 00:00:00 2001 From: librelois <elois@ifee.fr> Date: Mon, 30 Sep 2019 20:43:13 +0200 Subject: [PATCH] [tests] create bc-db-tests-tools & blocks-tests-tools --- Cargo.lock | 33 ++++++- Cargo.toml | 2 + lib/modules-lib/bc-db-reader/Cargo.toml | 1 + .../bc-db-reader/src/blocks/fork_tree.rs | 7 +- .../blockchain/bc-db-writer/Cargo.toml | 1 + .../blockchain/bc-db-writer/src/blocks.rs | 1 + .../bc-db-writer/src/blocks/fork_tree.rs | 4 +- lib/modules/blockchain/blockchain/Cargo.toml | 1 + .../blockchain/src/fork/fork_algo.rs | 59 +++++------- lib/tests-tools/bc-db-tests-tools/Cargo.toml | 27 ++++++ lib/tests-tools/bc-db-tests-tools/src/lib.rs | 42 ++++++++ .../bc-db-tests-tools/src/mocks.rs | 67 +++++++++++++ lib/tests-tools/blocks-tests-tools/Cargo.toml | 24 +++++ lib/tests-tools/blocks-tests-tools/src/lib.rs | 29 ++++++ .../blocks-tests-tools/src/mocks.rs | 96 +++++++++++++++++++ .../user-docs-tests-tools/Cargo.toml | 1 - .../user-docs-tests-tools/src/mocks/mod.rs | 80 ---------------- 17 files changed, 354 insertions(+), 121 deletions(-) create mode 100644 lib/tests-tools/bc-db-tests-tools/Cargo.toml create mode 100644 lib/tests-tools/bc-db-tests-tools/src/lib.rs create mode 100644 lib/tests-tools/bc-db-tests-tools/src/mocks.rs create mode 100644 lib/tests-tools/blocks-tests-tools/Cargo.toml create mode 100644 lib/tests-tools/blocks-tests-tools/src/lib.rs create mode 100644 lib/tests-tools/blocks-tests-tools/src/mocks.rs diff --git a/Cargo.lock b/Cargo.lock index 3ea57d5a..aac36f52 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -90,6 +90,22 @@ dependencies = [ "byteorder 1.2.7 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "bc-db-tests-tools" +version = "0.1.0" +dependencies = [ + "dubp-block-doc 0.1.0", + "dubp-blocks-tests-tools 0.1.0", + "dubp-common-doc 0.1.0", + "dubp-currency-params 0.2.0", + "dubp-user-docs 0.14.0", + "dup-crypto 0.7.0", + "dup-crypto-tests-tools 0.1.0", + "durs-bc-db-reader 0.3.0-dev", + "durs-bc-db-writer 0.3.0-dev", + "tempfile 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "bincode" version = "1.0.1" @@ -371,6 +387,19 @@ dependencies = [ "unwrap 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "dubp-blocks-tests-tools" +version = "0.1.0" +dependencies = [ + "dubp-block-doc 0.1.0", + "dubp-common-doc 0.1.0", + "dubp-currency-params 0.2.0", + "dubp-user-docs 0.14.0", + "dubp-user-docs-tests-tools 0.1.0", + "dup-crypto 0.7.0", + "dup-crypto-tests-tools 0.1.0", +] + [[package]] name = "dubp-common-doc" version = "0.1.0" @@ -440,7 +469,6 @@ dependencies = [ name = "dubp-user-docs-tests-tools" version = "0.1.0" dependencies = [ - "dubp-block-doc 0.1.0", "dubp-common-doc 0.1.0", "dubp-currency-params 0.2.0", "dubp-user-docs 0.14.0", @@ -494,6 +522,7 @@ name = "durs-bc-db-reader" version = "0.3.0-dev" dependencies = [ "dubp-block-doc 0.1.0", + "dubp-blocks-tests-tools 0.1.0", "dubp-common-doc 0.1.0", "dubp-currency-params 0.2.0", "dubp-indexes 0.1.0", @@ -520,6 +549,7 @@ name = "durs-bc-db-writer" version = "0.3.0-dev" dependencies = [ "dubp-block-doc 0.1.0", + "dubp-blocks-tests-tools 0.1.0", "dubp-common-doc 0.1.0", "dubp-currency-params 0.2.0", "dubp-indexes 0.1.0", @@ -548,6 +578,7 @@ version = "0.3.0-dev" dependencies = [ "dirs 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", "dubp-block-doc 0.1.0", + "dubp-blocks-tests-tools 0.1.0", "dubp-common-doc 0.1.0", "dubp-currency-params 0.2.0", "dubp-user-docs 0.14.0", diff --git a/Cargo.toml b/Cargo.toml index 6298c974..078c9139 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -22,6 +22,8 @@ members = [ "lib/modules/ws2p-v1-legacy", "lib/modules/ws2p/ws2p", "lib/modules/ws2p/ws2p-protocol", + "lib/tests-tools/bc-db-tests-tools", + "lib/tests-tools/blocks-tests-tools", "lib/tests-tools/crypto-tests-tools", "lib/tests-tools/user-docs-tests-tools", "lib/tests-tools/common-tests-tools", diff --git a/lib/modules-lib/bc-db-reader/Cargo.toml b/lib/modules-lib/bc-db-reader/Cargo.toml index 20bbab46..e23d3c15 100644 --- a/lib/modules-lib/bc-db-reader/Cargo.toml +++ b/lib/modules-lib/bc-db-reader/Cargo.toml @@ -30,6 +30,7 @@ unwrap = "1.2.1" [dev-dependencies] dup-crypto-tests-tools = { path = "../../tests-tools/crypto-tests-tools" } dubp-user-docs-tests-tools = { path = "../../tests-tools/user-docs-tests-tools" } +dubp-blocks-tests-tools = { path = "../../tests-tools/blocks-tests-tools" } durs-common-tests-tools = { path = "../../tests-tools/common-tests-tools" } tempfile = "3.1.0" diff --git a/lib/modules-lib/bc-db-reader/src/blocks/fork_tree.rs b/lib/modules-lib/bc-db-reader/src/blocks/fork_tree.rs index 391f228c..87b1cb14 100644 --- a/lib/modules-lib/bc-db-reader/src/blocks/fork_tree.rs +++ b/lib/modules-lib/bc-db-reader/src/blocks/fork_tree.rs @@ -584,8 +584,7 @@ mod tests { fn insert_fork_blocks() { // Fill tree with 10 nodes let mut tree = ForkTree::default(); - let blockstamps: Vec<Blockstamp> = - dubp_user_docs_tests_tools::mocks::generate_blockstamps(10); + let blockstamps: Vec<Blockstamp> = dubp_blocks_tests_tools::mocks::generate_blockstamps(10); tree.insert_new_node(blockstamps[0], None, true); for i in 1..10 { tree.insert_new_node(blockstamps[i], Some(TreeNodeId(i - 1)), true); @@ -672,7 +671,7 @@ mod tests { fn insert_more_fork_window_size_nodes() { let mut tree = ForkTree::default(); let blockstamps: Vec<Blockstamp> = - dubp_user_docs_tests_tools::mocks::generate_blockstamps(*DEFAULT_FORK_WINDOW_SIZE + 2); + dubp_blocks_tests_tools::mocks::generate_blockstamps(*DEFAULT_FORK_WINDOW_SIZE + 2); // Fill tree with MAX_DEPTH nodes tree.insert_new_node(blockstamps[0], None, true); @@ -709,7 +708,7 @@ mod tests { fn test_change_main_branch() { let mut tree = ForkTree::default(); let blockstamps: Vec<Blockstamp> = - dubp_user_docs_tests_tools::mocks::generate_blockstamps(*DEFAULT_FORK_WINDOW_SIZE + 2); + dubp_blocks_tests_tools::mocks::generate_blockstamps(*DEFAULT_FORK_WINDOW_SIZE + 2); // Fill tree with MAX_DEPTH nodes tree.insert_new_node(blockstamps[0], None, true); diff --git a/lib/modules/blockchain/bc-db-writer/Cargo.toml b/lib/modules/blockchain/bc-db-writer/Cargo.toml index 4de7c2e9..7b7ded53 100644 --- a/lib/modules/blockchain/bc-db-writer/Cargo.toml +++ b/lib/modules/blockchain/bc-db-writer/Cargo.toml @@ -30,6 +30,7 @@ unwrap = "1.2.1" [dev-dependencies] dup-crypto-tests-tools = { path = "../../../tests-tools/crypto-tests-tools" } +dubp-blocks-tests-tools = { path = "../../../tests-tools/blocks-tests-tools" } dubp-user-docs-tests-tools = { path = "../../../tests-tools/user-docs-tests-tools" } durs-common-tests-tools = { path = "../../../tests-tools/common-tests-tools" } tempfile = "3.1.0" diff --git a/lib/modules/blockchain/bc-db-writer/src/blocks.rs b/lib/modules/blockchain/bc-db-writer/src/blocks.rs index 38246e68..0cb83ff0 100644 --- a/lib/modules/blockchain/bc-db-writer/src/blocks.rs +++ b/lib/modules/blockchain/bc-db-writer/src/blocks.rs @@ -29,6 +29,7 @@ use durs_bc_db_reader::DbValue; use unwrap::unwrap; /// Insert new head Block in databases +/// Update MAIN_BLOCK and CURRENT_META_DATAS pub fn insert_new_head_block( db: &Db, w: &mut DbWriter, diff --git a/lib/modules/blockchain/bc-db-writer/src/blocks/fork_tree.rs b/lib/modules/blockchain/bc-db-writer/src/blocks/fork_tree.rs index bb058054..019eefa3 100644 --- a/lib/modules/blockchain/bc-db-writer/src/blocks/fork_tree.rs +++ b/lib/modules/blockchain/bc-db-writer/src/blocks/fork_tree.rs @@ -103,7 +103,7 @@ mod test { fn test_insert_new_head_block() -> Result<(), DbError> { // Create mock datas let blockstamps = - dubp_user_docs_tests_tools::mocks::generate_blockstamps(*DEFAULT_FORK_WINDOW_SIZE + 2); + dubp_blocks_tests_tools::mocks::generate_blockstamps(*DEFAULT_FORK_WINDOW_SIZE + 2); let mut fork_tree = ForkTree::default(); // Insert genesis block @@ -154,7 +154,7 @@ mod test { fn test_insert_new_fork_block() -> Result<(), DbError> { // Create mock datas let blockstamps = - dubp_user_docs_tests_tools::mocks::generate_blockstamps(*DEFAULT_FORK_WINDOW_SIZE + 3); + dubp_blocks_tests_tools::mocks::generate_blockstamps(*DEFAULT_FORK_WINDOW_SIZE + 3); let mut fork_tree = ForkTree::default(); // Insert 4 main blocks diff --git a/lib/modules/blockchain/blockchain/Cargo.toml b/lib/modules/blockchain/blockchain/Cargo.toml index 8d494dbb..0e4667d0 100644 --- a/lib/modules/blockchain/blockchain/Cargo.toml +++ b/lib/modules/blockchain/blockchain/Cargo.toml @@ -41,4 +41,5 @@ unwrap = "1.2.1" [dev-dependencies] dup-crypto-tests-tools = { path = "../../../tests-tools/crypto-tests-tools" } dubp-user-docs-tests-tools = { path = "../../../tests-tools/user-docs-tests-tools" } +dubp-blocks-tests-tools = { path = "../../../tests-tools/blocks-tests-tools" } tempfile = "3.1.0" diff --git a/lib/modules/blockchain/blockchain/src/fork/fork_algo.rs b/lib/modules/blockchain/blockchain/src/fork/fork_algo.rs index 645fef8c..d01bc5cf 100644 --- a/lib/modules/blockchain/blockchain/src/fork/fork_algo.rs +++ b/lib/modules/blockchain/blockchain/src/fork/fork_algo.rs @@ -118,10 +118,7 @@ mod tests { // Generate `FORK_WINDOW_SIZE + 2` mock blocks let main_branch: Vec<BlockDocument> = - dubp_user_docs_tests_tools::mocks::gen_empty_timed_blocks_v10( - fork_window_size + 2, - 0u64, - ); + dubp_blocks_tests_tools::mocks::gen_empty_timed_blocks_v10(fork_window_size + 2, 0u64); // Insert mock blocks in forks_dbs db.write(|mut w| { @@ -160,20 +157,18 @@ mod tests { let fork_point = &main_branch[main_branch.len() - 2]; let fork_blocks: Vec<BlockDocument> = (0..3) .map(|i| { - BlockDocument::V10( - dubp_user_docs_tests_tools::mocks::gen_empty_timed_block_v10( - Blockstamp { - id: BlockNumber(fork_point.number().0 + i + 1), - hash: BlockHash(dup_crypto_tests_tools::mocks::hash('A')), - }, - ADVANCE_TIME - 1, - if i == 0 { - fork_point.hash().expect("safe unwrap").0 - } else { - dup_crypto_tests_tools::mocks::hash('A') - }, - ), - ) + BlockDocument::V10(dubp_blocks_tests_tools::mocks::gen_empty_timed_block_v10( + Blockstamp { + id: BlockNumber(fork_point.number().0 + i + 1), + hash: BlockHash(dup_crypto_tests_tools::mocks::hash('A')), + }, + ADVANCE_TIME - 1, + if i == 0 { + fork_point.hash().expect("safe unwrap").0 + } else { + dup_crypto_tests_tools::mocks::hash('A') + }, + )) }) .collect(); @@ -208,7 +203,7 @@ mod tests { &mut fork_tree, DbBlock { block: BlockDocument::V10( - dubp_user_docs_tests_tools::mocks::gen_empty_timed_block_v10( + dubp_blocks_tests_tools::mocks::gen_empty_timed_block_v10( determining_blockstamp, *ADVANCE_TIME, dup_crypto_tests_tools::mocks::hash('A'), @@ -243,20 +238,18 @@ mod tests { // The old main branch catches up and overlaps with the fork let new_main_blocks: Vec<BlockDocument> = (0..7) .map(|i| { - BlockDocument::V10( - dubp_user_docs_tests_tools::mocks::gen_empty_timed_block_v10( - Blockstamp { - id: BlockNumber(fork_point.number().0 + i + 1), - hash: BlockHash(dup_crypto_tests_tools::mocks::hash('B')), - }, - ADVANCE_TIME * 2, - if i == 0 { - fork_point.hash().expect("safe unwrap").0 - } else { - dup_crypto_tests_tools::mocks::hash('B') - }, - ), - ) + BlockDocument::V10(dubp_blocks_tests_tools::mocks::gen_empty_timed_block_v10( + Blockstamp { + id: BlockNumber(fork_point.number().0 + i + 1), + hash: BlockHash(dup_crypto_tests_tools::mocks::hash('B')), + }, + ADVANCE_TIME * 2, + if i == 0 { + fork_point.hash().expect("safe unwrap").0 + } else { + dup_crypto_tests_tools::mocks::hash('B') + }, + )) }) .collect(); insert_fork_blocks(&db, &mut fork_tree, &new_main_blocks)?; diff --git a/lib/tests-tools/bc-db-tests-tools/Cargo.toml b/lib/tests-tools/bc-db-tests-tools/Cargo.toml new file mode 100644 index 00000000..97ad6bd5 --- /dev/null +++ b/lib/tests-tools/bc-db-tests-tools/Cargo.toml @@ -0,0 +1,27 @@ +[package] +name = "bc-db-tests-tools" +version = "0.1.0" +authors = ["elois <elois@duniter.org>"] +description = "Blockchain DB tests tools for Dunitrust." +repository = "https://git.duniter.org/nodes/rust/duniter-rs" +readme = "README.md" +keywords = ["dunitrust", "test", "tools"] +license = "AGPL-3.0" +edition = "2018" + +[lib] +path = "src/lib.rs" + +[dependencies] +dubp-block-doc = { path = "../../dubp/block-doc"} #, version = "0.1.0" } +dubp-common-doc = { path = "../../dubp/common-doc"} #, version = "0.1.0" } +dubp-currency-params = { path = "../../dubp/currency-params" } +dubp-user-docs = { path = "../../dubp/user-docs" } +dup-crypto = { path = "../../crypto" } +durs-bc-db-reader = { path = "../../modules-lib/bc-db-reader" } +durs-bc-db-writer = { path = "../../modules/blockchain/bc-db-writer" } +dup-crypto-tests-tools = { path = "../crypto-tests-tools" } +dubp-blocks-tests-tools = { path = "../blocks-tests-tools" } +tempfile = "3.1.0" + +[dev-dependencies] \ No newline at end of file diff --git a/lib/tests-tools/bc-db-tests-tools/src/lib.rs b/lib/tests-tools/bc-db-tests-tools/src/lib.rs new file mode 100644 index 00000000..d4814444 --- /dev/null +++ b/lib/tests-tools/bc-db-tests-tools/src/lib.rs @@ -0,0 +1,42 @@ +// Copyright (C) 2019 Éloïs SANCHEZ +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU Affero General Public License as +// published by the Free Software Foundation, either version 3 of the +// License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU Affero General Public License for more details. +// +// You should have received a copy of the GNU Affero General Public License +// along with this program. If not, see <https://www.gnu.org/licenses/>. + +//! Crypto tests tools for projects use dup-crypto. + +#![deny( + missing_docs, + missing_debug_implementations, + missing_copy_implementations, + trivial_casts, + trivial_numeric_casts, + unsafe_code, + unstable_features, + unused_import_braces +)] + +pub mod mocks; + +use durs_bc_db_writer::{Db, DbError}; +use tempfile::tempdir; + +#[inline] +/// Open database in an arbitrary temporary directory given by OS +/// and automatically cleaned when `Db` is dropped +pub fn open_tmp_db() -> Result<Db, DbError> { + Db::open_db( + tempdir().map_err(DbError::FileSystemError)?.path(), + &durs_bc_db_reader::bc_db_schema(), + ) +} diff --git a/lib/tests-tools/bc-db-tests-tools/src/mocks.rs b/lib/tests-tools/bc-db-tests-tools/src/mocks.rs new file mode 100644 index 00000000..1f28ca62 --- /dev/null +++ b/lib/tests-tools/bc-db-tests-tools/src/mocks.rs @@ -0,0 +1,67 @@ +// Copyright (C) 2019 Éloïs SANCHEZ +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU Affero General Public License as +// published by the Free Software Foundation, either version 3 of the +// License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU Affero General Public License for more details. +// +// You should have received a copy of the GNU Affero General Public License +// along with this program. If not, see <https://www.gnu.org/licenses/>. + +//! Mocks for Dunitrust Blockchain DB + +use dubp_block_doc::BlockDocument; +use durs_bc_db_reader::blocks::fork_tree::ForkTree; +use durs_bc_db_reader::blocks::DbBlock; +use durs_bc_db_writer::blocks::{insert_new_fork_block, insert_new_head_block}; +use durs_bc_db_writer::{Db, DbError}; + +/// Warning : This function does not update the indexes and considers +/// that your block is valid (so chainable on the main chain). +/// To be used only for tests that do not use indexes. +/// To insert a fork block, use `insert_fork_block` instead. +pub fn insert_main_block( + db_tmp: &Db, + block: BlockDocument, + fork_tree: Option<&mut ForkTree>, +) -> Result<(), DbError> { + db_tmp.write(|mut w| { + insert_new_head_block( + &db_tmp, + &mut w, + fork_tree, + DbBlock { + block, + expire_certs: None, + }, + )?; + Ok(w) + }) +} + +/// Insert fork block +pub fn insert_fork_block( + db_tmp: &Db, + fork_tree: &mut ForkTree, + block: BlockDocument, +) -> Result<bool, DbError> { + let mut orphan = false; + db_tmp.write(|mut w| { + orphan = !insert_new_fork_block( + db_tmp, + &mut w, + fork_tree, + DbBlock { + block, + expire_certs: None, + }, + )?; + Ok(w) + })?; + Ok(orphan) +} diff --git a/lib/tests-tools/blocks-tests-tools/Cargo.toml b/lib/tests-tools/blocks-tests-tools/Cargo.toml new file mode 100644 index 00000000..67547dd7 --- /dev/null +++ b/lib/tests-tools/blocks-tests-tools/Cargo.toml @@ -0,0 +1,24 @@ +[package] +name = "dubp-blocks-tests-tools" +version = "0.1.0" +authors = ["elois <elois@duniter.org>"] +description = "Tests tools for projects use dubp-block-doc." +repository = "https://git.duniter.org/nodes/rust/duniter-rs" +readme = "README.md" +keywords = ["rust", "test", "tools"] +license = "AGPL-3.0" +edition = "2018" + +[lib] +path = "src/lib.rs" + +[dependencies] +dubp-block-doc = { path = "../../dubp/block-doc"} #, version = "0.1.0" } +dubp-common-doc = { path = "../../dubp/common-doc"} #, version = "0.1.0" } +dubp-currency-params = { path = "../../dubp/currency-params" } +dubp-user-docs = { path = "../../dubp/user-docs" } +dup-crypto = { path = "../../crypto" } +dup-crypto-tests-tools = { path = "../crypto-tests-tools" } +dubp-user-docs-tests-tools = { path = "../user-docs-tests-tools" } + +[dev-dependencies] diff --git a/lib/tests-tools/blocks-tests-tools/src/lib.rs b/lib/tests-tools/blocks-tests-tools/src/lib.rs new file mode 100644 index 00000000..d2daaa74 --- /dev/null +++ b/lib/tests-tools/blocks-tests-tools/src/lib.rs @@ -0,0 +1,29 @@ +// Copyright (C) 2019 Éloïs SANCHEZ +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU Affero General Public License as +// published by the Free Software Foundation, either version 3 of the +// License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU Affero General Public License for more details. +// +// You should have received a copy of the GNU Affero General Public License +// along with this program. If not, see <https://www.gnu.org/licenses/>. + +//! Tests tools for projects use dubp-block-doc. + +#![deny( + missing_docs, + missing_debug_implementations, + missing_copy_implementations, + trivial_casts, + trivial_numeric_casts, + unsafe_code, + unstable_features, + unused_import_braces +)] + +pub mod mocks; diff --git a/lib/tests-tools/blocks-tests-tools/src/mocks.rs b/lib/tests-tools/blocks-tests-tools/src/mocks.rs new file mode 100644 index 00000000..12a82525 --- /dev/null +++ b/lib/tests-tools/blocks-tests-tools/src/mocks.rs @@ -0,0 +1,96 @@ +// Copyright (C) 2019 Éloïs SANCHEZ +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU Affero General Public License as +// published by the Free Software Foundation, either version 3 of the +// License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU Affero General Public License for more details. +// +// You should have received a copy of the GNU Affero General Public License +// along with this program. If not, see <https://www.gnu.org/licenses/>. + +//! Mocks for projects use dubp-block-doc + +use dubp_block_doc::{BlockDocument, BlockDocumentV10}; +use dubp_common_doc::blockstamp::Blockstamp; +use dubp_common_doc::{BlockHash, BlockNumber}; +use dubp_currency_params::CurrencyName; +use dup_crypto::hashs::Hash; + +/// Generate n mock blockstamps +pub fn generate_blockstamps(n: usize) -> Vec<Blockstamp> { + (0..n) + .map(|i| Blockstamp { + id: BlockNumber(i as u32), + hash: BlockHash(dup_crypto_tests_tools::mocks::hash_from_byte( + (i % 255) as u8, + )), + }) + .collect() +} + +/// Generate n empty timed block document +pub fn gen_empty_timed_blocks_v10(n: usize, time_step: u64) -> Vec<BlockDocument> { + (0..n) + .map(|i| { + BlockDocument::V10(gen_empty_timed_block_v10( + Blockstamp { + id: BlockNumber(i as u32), + hash: BlockHash(dup_crypto_tests_tools::mocks::hash_from_byte( + (i % 255) as u8, + )), + }, + time_step * n as u64, + if i == 0 { + Hash::default() + } else { + dup_crypto_tests_tools::mocks::hash_from_byte(((i - 1) % 255) as u8) + }, + )) + }) + .collect() +} + +/// Generate empty timed block document +/// (usefull for tests that only need blockstamp and median_time fields) +pub fn gen_empty_timed_block_v10( + blockstamp: Blockstamp, + time: u64, + previous_hash: Hash, +) -> BlockDocumentV10 { + BlockDocumentV10 { + version: 10, + nonce: 0, + number: blockstamp.id, + pow_min: 0, + time: 0, + median_time: time, + members_count: 0, + monetary_mass: 0, + unit_base: 0, + issuers_count: 0, + issuers_frame: 0, + issuers_frame_var: 0, + currency: CurrencyName("test_currency".to_owned()), + issuers: vec![], + signatures: vec![], + hash: Some(blockstamp.hash), + parameters: None, + previous_hash: Some(previous_hash), + previous_issuer: None, + dividend: None, + identities: vec![], + joiners: vec![], + actives: vec![], + leavers: vec![], + revoked: vec![], + excluded: vec![], + certifications: vec![], + transactions: vec![], + inner_hash: None, + } +} diff --git a/lib/tests-tools/user-docs-tests-tools/Cargo.toml b/lib/tests-tools/user-docs-tests-tools/Cargo.toml index 5906780f..a558a3ed 100644 --- a/lib/tests-tools/user-docs-tests-tools/Cargo.toml +++ b/lib/tests-tools/user-docs-tests-tools/Cargo.toml @@ -13,7 +13,6 @@ edition = "2018" path = "src/lib.rs" [dependencies] -dubp-block-doc = { path = "../../dubp/block-doc"} #, version = "0.1.0" } dubp-common-doc = { path = "../../dubp/common-doc"} #, version = "0.1.0" } dubp-currency-params = { path = "../../dubp/currency-params" } dubp-user-docs = { path = "../../dubp/user-docs" } diff --git a/lib/tests-tools/user-docs-tests-tools/src/mocks/mod.rs b/lib/tests-tools/user-docs-tests-tools/src/mocks/mod.rs index 160cb738..0a0822e9 100644 --- a/lib/tests-tools/user-docs-tests-tools/src/mocks/mod.rs +++ b/lib/tests-tools/user-docs-tests-tools/src/mocks/mod.rs @@ -17,83 +17,3 @@ pub mod identity; pub mod tx; - -use dubp_block_doc::{BlockDocument, BlockDocumentV10}; -use dubp_common_doc::blockstamp::Blockstamp; -use dubp_common_doc::{BlockHash, BlockNumber}; -use dubp_currency_params::CurrencyName; -use dup_crypto::hashs::Hash; - -/// Generate n mock blockstamps -pub fn generate_blockstamps(n: usize) -> Vec<Blockstamp> { - (0..n) - .map(|i| Blockstamp { - id: BlockNumber(i as u32), - hash: BlockHash(dup_crypto_tests_tools::mocks::hash_from_byte( - (i % 255) as u8, - )), - }) - .collect() -} - -/// Generate n empty timed block document -pub fn gen_empty_timed_blocks_v10(n: usize, time_step: u64) -> Vec<BlockDocument> { - (0..n) - .map(|i| { - BlockDocument::V10(gen_empty_timed_block_v10( - Blockstamp { - id: BlockNumber(i as u32), - hash: BlockHash(dup_crypto_tests_tools::mocks::hash_from_byte( - (i % 255) as u8, - )), - }, - time_step * n as u64, - if i == 0 { - Hash::default() - } else { - dup_crypto_tests_tools::mocks::hash_from_byte(((i - 1) % 255) as u8) - }, - )) - }) - .collect() -} - -/// Generate empty timed block document -/// (usefull for tests that only need blockstamp and median_time fields) -pub fn gen_empty_timed_block_v10( - blockstamp: Blockstamp, - time: u64, - previous_hash: Hash, -) -> BlockDocumentV10 { - BlockDocumentV10 { - version: 10, - nonce: 0, - number: blockstamp.id, - pow_min: 0, - time: 0, - median_time: time, - members_count: 0, - monetary_mass: 0, - unit_base: 0, - issuers_count: 0, - issuers_frame: 0, - issuers_frame_var: 0, - currency: CurrencyName("test_currency".to_owned()), - issuers: vec![], - signatures: vec![], - hash: Some(blockstamp.hash), - parameters: None, - previous_hash: Some(previous_hash), - previous_issuer: None, - dividend: None, - identities: vec![], - joiners: vec![], - actives: vec![], - leavers: vec![], - revoked: vec![], - excluded: vec![], - certifications: vec![], - transactions: vec![], - inner_hash: None, - } -} -- GitLab