Skip to content

Commit 010a386

Browse files
fix fmt
1 parent 3192e1a commit 010a386

4 files changed

Lines changed: 243 additions & 11 deletions

File tree

_test/Cargo.toml

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
[package]
2+
name = "_test"
3+
version = "0.0.1"
4+
edition = "2021"
5+
resolver = "2"
6+
7+
[dependencies]
8+
stacks_common = { package = "stacks-common", path = "../stacks-common", default-features = false }
9+
stacks_lib = { package = "stackslib", path = "../stackslib", features = ["testing"] }
10+

_test/src/main.rs

Lines changed: 213 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,213 @@
1+
fn main() {
2+
println!("Hello, world!");
3+
}
4+
5+
#[cfg(test)]
6+
mod tests {
7+
use std::io::{Cursor, Seek, Write};
8+
9+
use stacks_lib::chainstate::stacks::index::node::*;
10+
use stacks_lib::codec::*;
11+
12+
#[test]
13+
fn test_trienode_patch_try_from_nodetype_returns_none_when_no_diffs() {
14+
let node = TrieNodeType::Node4(TrieNode4::new(&[1]));
15+
16+
let old_node_ptr = TriePtr::default();
17+
let old_node = &node;
18+
let new_node = &node;
19+
let result = TrieNodePatch::try_from_nodetype(old_node_ptr, old_node, new_node);
20+
21+
assert!(
22+
result.is_none(),
23+
"None because the computed patch has no diffs"
24+
);
25+
}
26+
27+
#[test]
28+
fn test_trienode_patch_try_from_patch_returns_none_when_no_diffs() {
29+
let old_patch_ptr = TriePtr::new(TrieNodeID::Node4 as u8, 0, 0);
30+
let old_patch = TrieNodePatch {
31+
ptr: old_patch_ptr.clone(),
32+
ptr_diff: vec![],
33+
};
34+
let new_node = TrieNodeType::Node4(TrieNode4::new(&[1]));
35+
let result = TrieNodePatch::try_from_patch(old_patch_ptr, &old_patch, &new_node);
36+
37+
assert!(
38+
result.is_none(),
39+
"None because the computed patch has no diffs"
40+
);
41+
}
42+
43+
/*
44+
#[test]
45+
fn test_trienode_patch_serialize_with_ptr_diffs_length_0_ok() {
46+
let a_ptr = TriePtr::new(0,0, 0);
47+
let patch_err = TrieNodePatch {
48+
ptr: a_ptr,
49+
ptr_diff: vec![],
50+
};
51+
52+
let mut buffer = Cursor::new(Vec::new());
53+
let result = patch_err.consensus_serialize(&mut buffer);
54+
assert!(result.is_ok(), "Got Error: {}", result.unwrap_err().to_string());
55+
}
56+
57+
#[test]
58+
fn test_trienode_patch_serialize_with_ptr_diffs_length_255_ok() {
59+
let a_ptr = TriePtr::new(0,0, 0);
60+
let patch_err = TrieNodePatch {
61+
ptr: a_ptr,
62+
ptr_diff: vec![a_ptr.clone(); 255],
63+
};
64+
65+
let mut buffer = Cursor::new(Vec::new());
66+
let result = patch_err.consensus_serialize(&mut buffer);
67+
assert!(result.is_ok(), "Got Error: {}", result.unwrap_err().to_string());
68+
}
69+
70+
71+
#[test]
72+
fn test_trienode_patch_serialize_with_ptr_diffs_length_256_fails() {
73+
let a_ptr = TriePtr::new(0,0, 0);
74+
let patch_err = TrieNodePatch {
75+
ptr: a_ptr,
76+
ptr_diff: vec![a_ptr.clone(); 256],
77+
};
78+
79+
let mut buffer = Cursor::new(Vec::new());
80+
let result = patch_err.consensus_serialize(&mut buffer);
81+
82+
let error = result.unwrap_err();
83+
assert!(matches!(error, Error::SerializeError(_)));
84+
assert!(error.to_string().contains("256"));
85+
}
86+
*/
87+
88+
#[test]
89+
fn test_trienode_patch_serialize_ok() {
90+
let patch_node = TrieNodePatch {
91+
ptr: TriePtr::new(1, 10, 0),
92+
ptr_diff: vec![TriePtr::new(1, 20, 0).clone(); 1],
93+
};
94+
95+
let mut buffer = Cursor::new(Vec::new());
96+
patch_node
97+
.consensus_serialize(&mut buffer)
98+
.expect("serialization should be ok");
99+
100+
// To fit in 1 byte, diff count is serialized 0-based (where 0 => 1 and 255 => 256)
101+
let diff_count = 0u8;
102+
assert_eq!(
103+
vec![6, 65, 10, 0, 0, 0, 0, diff_count, 65, 20, 0, 0, 0, 0],
104+
buffer.into_inner(),
105+
);
106+
}
107+
108+
#[test]
109+
fn test_trienode_patch_serialize_fails_with_ptr_diffs_len_0() {
110+
let patch_node = TrieNodePatch {
111+
ptr: TriePtr::default(),
112+
ptr_diff: vec![],
113+
};
114+
115+
let mut buffer = Cursor::new(Vec::new());
116+
let error = patch_node
117+
.consensus_serialize(&mut buffer)
118+
.expect_err("serialization should fail");
119+
120+
assert!(
121+
matches!(&error, Error::SerializeError(msg) if msg.contains("len 0")),
122+
"instead got: {error}"
123+
);
124+
}
125+
126+
#[test]
127+
fn test_trienode_patch_serialize_ok_with_ptr_diffs_len_256() {
128+
let patch_node = TrieNodePatch {
129+
ptr: TriePtr::default(),
130+
ptr_diff: vec![TriePtr::default(); 256],
131+
};
132+
133+
let mut buffer = Cursor::new(Vec::new());
134+
let result = patch_node.consensus_serialize(&mut buffer);
135+
assert!(
136+
result.is_ok(),
137+
"Got Error: {}",
138+
result.unwrap_err().to_string()
139+
);
140+
}
141+
142+
#[test]
143+
fn test_trienode_patch_serialize_fails_with_ptr_diffs_len_257() {
144+
let patch_node = TrieNodePatch {
145+
ptr: TriePtr::default(),
146+
ptr_diff: vec![TriePtr::default(); 257],
147+
};
148+
149+
let mut buffer = Cursor::new(Vec::new());
150+
let error = patch_node
151+
.consensus_serialize(&mut buffer)
152+
.expect_err("serialization should fail");
153+
154+
assert!(
155+
matches!(&error, Error::SerializeError(msg) if msg.contains("len 257")),
156+
"instead got: {error}"
157+
);
158+
}
159+
160+
#[test]
161+
fn test_trienode_patch_deserialize_ok_with_ptr_diffs_len_1() {
162+
let mut buffer = Cursor::new(Vec::new());
163+
// To fit in 1 byte, diff count is serialized 0-based (where 0 => 1 and 255 => 256)
164+
let diff_count = 0u8;
165+
buffer
166+
.write_all(&[6, 65, 10, 0, 0, 0, 0, diff_count, 65, 20, 0, 0, 0, 0])
167+
.unwrap();
168+
buffer.rewind().unwrap();
169+
170+
let patch_node = TrieNodePatch::consensus_deserialize(&mut buffer)
171+
.expect("deserialization should be ok");
172+
173+
let expected = TrieNodePatch {
174+
ptr: TriePtr::new(1, 10, 0),
175+
ptr_diff: vec![TriePtr::new(1, 20, 0); 1],
176+
};
177+
assert_eq!(expected, patch_node);
178+
}
179+
180+
#[test]
181+
fn test_trienode_patch_prova() {
182+
let patch_node = TrieNodePatch {
183+
ptr: TriePtr::new(1, 10, 0),
184+
ptr_diff: vec![TriePtr::new(1, 20, 0).clone(); 1],
185+
};
186+
187+
let mut buffer = Cursor::new(Vec::new());
188+
patch_node
189+
.consensus_serialize(&mut buffer)
190+
.expect("serialization should be ok");
191+
192+
println!("Simple: {:?}", buffer.into_inner());
193+
194+
195+
let back_id = set_backptr(1);
196+
let mut ptr = TriePtr::new(back_id, 10, 0);
197+
ptr.back_block = 99;
198+
199+
let patch_node = TrieNodePatch {
200+
ptr: ptr,
201+
ptr_diff: vec![TriePtr::new(1, 20, 0).clone(); 1],
202+
};
203+
204+
let mut buffer = Cursor::new(Vec::new());
205+
patch_node
206+
.consensus_serialize(&mut buffer)
207+
.expect("serialization should be ok");
208+
209+
println!("Bimple: {:?}", buffer.into_inner());
210+
211+
212+
}
213+
}

stacks-node/src/tests/marf/marf_mixed.rs

Lines changed: 18 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -14,16 +14,25 @@
1414
// along with this program. If not, see <http://www.gnu.org/licenses/>.
1515

1616
pub mod utils {
17+
use std::env;
18+
use std::time::Instant;
19+
1720
use clarity::vm::types::PrincipalData;
1821
use rusqlite::Connection;
19-
use stacks::{chainstate::burn::db::sortdb::SortitionDB, clarity_vm::database::marf::fault_injection_marf_compression, core::{mempool::MemPoolWalkStrategy, test_util::{insert_tx_in_mempool, make_stacks_transfer_serialized}}, types::chainstate::{StacksAddress, StacksPrivateKey}};
22+
use stacks::chainstate::burn::db::sortdb::SortitionDB;
23+
use stacks::clarity_vm::database::marf::fault_injection_marf_compression;
24+
use stacks::core::mempool::MemPoolWalkStrategy;
25+
use stacks::core::test_util::{insert_tx_in_mempool, make_stacks_transfer_serialized};
26+
use stacks::types::chainstate::{StacksAddress, StacksPrivateKey};
2027
use stacks_signer::v0::SpawnedSigner;
2128

22-
use crate::{nakamoto_node::miner::{fault_injection_stall_miner, fault_injection_unstall_miner}, tests::{self, nakamoto_integrations::wait_for, neon_integrations::{get_account, test_observer}, signer::SignerTest}};
23-
use std::time::Instant;
24-
use std::env;
29+
use crate::nakamoto_node::miner::{fault_injection_stall_miner, fault_injection_unstall_miner};
30+
use crate::tests::nakamoto_integrations::wait_for;
31+
use crate::tests::neon_integrations::{get_account, test_observer};
32+
use crate::tests::signer::SignerTest;
33+
use crate::tests::{self};
2534

26-
pub fn large_mempool_base(marf_compress_step1: bool, marf_compress_step2: bool,) {
35+
pub fn large_mempool_base(marf_compress_step1: bool, marf_compress_step2: bool) {
2736
// This function intends to check the timing of the mempool iteration when
2837
// there are a large number of transactions in the mempool. It will boot to
2938
// epoch 3, fan out some STX transfers to a large number of accounts, wait for
@@ -41,7 +50,7 @@ pub mod utils {
4150
}
4251

4352
let strategy = MemPoolWalkStrategy::GlobalFeeRate;
44-
let set_fee = || { 180 };
53+
let set_fee = || 180;
4554

4655
// Set marf compression at the beginning
4756
fault_injection_marf_compression(marf_compress_step1);
@@ -167,7 +176,6 @@ pub mod utils {
167176
// Add the new senders to the list of senders
168177
senders.extend(new_senders.iter().map(|sk| (sk, 0)));
169178

170-
171179
info!("Sending the second round of funding");
172180
// Set marf compression before starting second round
173181
fault_injection_marf_compression(marf_compress_step2);
@@ -241,8 +249,9 @@ pub mod utils {
241249
let sender_addr = tests::to_addr(sender_sk);
242250
let fee = set_fee();
243251
assert!(fee >= 180 && fee <= 2000);
244-
let transfer_tx =
245-
make_stacks_transfer_serialized(sender_sk, *nonce, fee, chain_id, &recipient, 1);
252+
let transfer_tx = make_stacks_transfer_serialized(
253+
sender_sk, *nonce, fee, chain_id, &recipient, 1,
254+
);
246255
insert_tx_in_mempool(
247256
&db_tx,
248257
transfer_tx,

stacks-node/src/tests/marf/mod.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,9 @@
1717
//!
1818
//! Entry point for MARF integration tests that validate
1919
//! behavior and interactions involving compression feature.
20-
//!
20+
//!
2121
//! Possibly these kind of tests can be deleted once will have chainstate snapshots
2222
//! with full MARF compression.
23+
mod marf_compress;
2324
mod marf_mixed;
2425
mod marf_no_compress;
25-
mod marf_compress;

0 commit comments

Comments
 (0)