more tests
This commit is contained in:
committed by
Greg Fitzgerald
parent
9679e3e356
commit
50458d9524
39
src/crdt.rs
39
src/crdt.rs
@ -581,6 +581,8 @@ impl Crdt {
|
|||||||
None
|
None
|
||||||
}
|
}
|
||||||
Ok(Protocol::RequestWindowIndex(from, ix)) => {
|
Ok(Protocol::RequestWindowIndex(from, ix)) => {
|
||||||
|
//TODO this doesn't depend on CRDT module, can be moved
|
||||||
|
//but we are using the listen thread to service these request
|
||||||
//TODO verify from is signed
|
//TODO verify from is signed
|
||||||
obj.write().unwrap().insert(&from);
|
obj.write().unwrap().insert(&from);
|
||||||
let me = obj.read().unwrap().my_data().clone();
|
let me = obj.read().unwrap().my_data().clone();
|
||||||
@ -716,6 +718,7 @@ mod tests {
|
|||||||
use std::sync::mpsc::channel;
|
use std::sync::mpsc::channel;
|
||||||
use std::sync::{Arc, RwLock};
|
use std::sync::{Arc, RwLock};
|
||||||
use std::time::Duration;
|
use std::time::Duration;
|
||||||
|
use streamer::default_window;
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn test_parse_port_or_addr() {
|
fn test_parse_port_or_addr() {
|
||||||
@ -726,8 +729,6 @@ mod tests {
|
|||||||
let p3 = parse_port_or_addr(None);
|
let p3 = parse_port_or_addr(None);
|
||||||
assert_eq!(p3.port(), 8000);
|
assert_eq!(p3.port(), 8000);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Test that insert drops messages that are older
|
|
||||||
#[test]
|
#[test]
|
||||||
fn insert_test() {
|
fn insert_test() {
|
||||||
let mut d = ReplicatedData::new(
|
let mut d = ReplicatedData::new(
|
||||||
@ -814,7 +815,6 @@ mod tests {
|
|||||||
sorted(&crdt.table.values().map(|x| x.clone()).collect())
|
sorted(&crdt.table.values().map(|x| x.clone()).collect())
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
/// Test that insert drops messages that are older
|
|
||||||
#[test]
|
#[test]
|
||||||
fn window_index_request() {
|
fn window_index_request() {
|
||||||
let me = ReplicatedData::new(
|
let me = ReplicatedData::new(
|
||||||
@ -875,7 +875,6 @@ mod tests {
|
|||||||
}
|
}
|
||||||
assert!(one && two);
|
assert!(one && two);
|
||||||
}
|
}
|
||||||
/// Test that insert drops messages that are older
|
|
||||||
#[test]
|
#[test]
|
||||||
fn gossip_request() {
|
fn gossip_request() {
|
||||||
let me = ReplicatedData::new(
|
let me = ReplicatedData::new(
|
||||||
@ -921,7 +920,10 @@ mod tests {
|
|||||||
let mut one = false;
|
let mut one = false;
|
||||||
let mut two = false;
|
let mut two = false;
|
||||||
for _ in 0..5 {
|
for _ in 0..5 {
|
||||||
let rv = reader.recv_timeout(Duration::new(1, 0)).unwrap();
|
let mut rv = reader.recv_timeout(Duration::new(1, 0)).unwrap();
|
||||||
|
while let Ok(mut more) = reader.try_recv() {
|
||||||
|
rv.append(&mut more);
|
||||||
|
}
|
||||||
assert!(rv.len() > 0);
|
assert!(rv.len() > 0);
|
||||||
for i in rv.iter() {
|
for i in rv.iter() {
|
||||||
if i.read().unwrap().meta.addr() == nxt1.gossip_addr {
|
if i.read().unwrap().meta.addr() == nxt1.gossip_addr {
|
||||||
@ -942,4 +944,31 @@ mod tests {
|
|||||||
//created requests to both
|
//created requests to both
|
||||||
assert!(one && two);
|
assert!(one && two);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn run_window_request() {
|
||||||
|
let window = default_window();
|
||||||
|
let me = ReplicatedData::new(
|
||||||
|
KeyPair::new().pubkey(),
|
||||||
|
"127.0.0.1:1234".parse().unwrap(),
|
||||||
|
"127.0.0.1:1235".parse().unwrap(),
|
||||||
|
"127.0.0.1:1236".parse().unwrap(),
|
||||||
|
"127.0.0.1:1237".parse().unwrap(),
|
||||||
|
"127.0.0.1:1238".parse().unwrap(),
|
||||||
|
);
|
||||||
|
let recycler = BlobRecycler::default();
|
||||||
|
let rv = Crdt::run_window_request(&window, &me, 0, &recycler);
|
||||||
|
assert!(rv.is_none());
|
||||||
|
let out = recycler.allocate();
|
||||||
|
out.write().unwrap().meta.size = 200;
|
||||||
|
window.write().unwrap()[0] = Some(out);
|
||||||
|
let rv = Crdt::run_window_request(&window, &me, 0, &recycler);
|
||||||
|
assert!(rv.is_some());
|
||||||
|
let v = rv.unwrap();
|
||||||
|
//test we copied the blob
|
||||||
|
assert_eq!(v.read().unwrap().meta.size, 200);
|
||||||
|
let len = window.read().unwrap().len() as u64;
|
||||||
|
let rv = Crdt::run_window_request(&window, &me, len, &recycler);
|
||||||
|
assert!(rv.is_none());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user