tests pass

This commit is contained in:
Anatoly Yakovenko
2018-06-14 12:37:33 -07:00
committed by Greg Fitzgerald
parent a7460ffbd1
commit e85bf2f2d5

View File

@ -270,8 +270,10 @@ impl Crdt {
.iter() .iter()
.filter_map(|(k, v)| { .filter_map(|(k, v)| {
if *k != self.me && (now - v) > limit { if *k != self.me && (now - v) > limit {
trace!("purging {:?} {}", &k[..4], v);
Some((*k).clone()) Some((*k).clone())
} else { } else {
trace!("purge skipped {:?} {}", &k[..4], v);
None None
} }
}) })
@ -1034,22 +1036,24 @@ mod tests {
#[test] #[test]
fn purge_test() { fn purge_test() {
let me = ReplicatedData::new_entry_point("127.0.0.1:1234".parse().unwrap()); let me = ReplicatedData::new_leader(&"127.0.0.1:1234".parse().unwrap());
let mut crdt = Crdt::new(me.clone()); let mut crdt = Crdt::new(me.clone());
let nxt = ReplicatedData::new_entry_point("127.0.0.2:1234".parse().unwrap()); let nxt = ReplicatedData::new_leader(&"127.0.0.2:1234".parse().unwrap());
assert_ne!(me.id, nxt.id);
crdt.insert(&nxt); crdt.insert(&nxt);
let rv = crdt.gossip_request().unwrap(); let rv = crdt.gossip_request().unwrap();
assert_eq!(rv.0, nxt.gossip_addr); assert_eq!(rv.0, nxt.gossip_addr);
let now = crdt.alive[&nxt.id]; let now = crdt.alive[&nxt.id];
let len = crdt.table.len() as u64;
crdt.purge(now); crdt.purge(now);
let rv = crdt.gossip_request().unwrap(); let rv = crdt.gossip_request().unwrap();
assert_eq!(rv.0, nxt.gossip_addr); assert_eq!(rv.0, nxt.gossip_addr);
crdt.purge(now + GOSSIP_SLEEP_MILLIS * 4); crdt.purge(now + len * GOSSIP_SLEEP_MILLIS * 4);
let rv = crdt.gossip_request().unwrap(); let rv = crdt.gossip_request().unwrap();
assert_eq!(rv.0, nxt.gossip_addr); assert_eq!(rv.0, nxt.gossip_addr);
crdt.purge(now + GOSSIP_SLEEP_MILLIS * 4 + 1); crdt.purge(now + len * GOSSIP_SLEEP_MILLIS * 4 + 1);
let rv = crdt.gossip_request(); let rv = crdt.gossip_request();
assert_matches!(rv, Err(Error::CrdtTooSmall)); assert_matches!(rv, Err(Error::CrdtTooSmall));
} }