tests pass
This commit is contained in:
		
				
					committed by
					
						
						Greg Fitzgerald
					
				
			
			
				
	
			
			
			
						parent
						
							a7460ffbd1
						
					
				
				
					commit
					e85bf2f2d5
				
			
							
								
								
									
										12
									
								
								src/crdt.rs
									
									
									
									
									
								
							
							
						
						
									
										12
									
								
								src/crdt.rs
									
									
									
									
									
								
							@@ -270,8 +270,10 @@ impl Crdt {
 | 
			
		||||
            .iter()
 | 
			
		||||
            .filter_map(|(k, v)| {
 | 
			
		||||
                if *k != self.me && (now - v) > limit {
 | 
			
		||||
                    trace!("purging {:?} {}", &k[..4], v);
 | 
			
		||||
                    Some((*k).clone())
 | 
			
		||||
                } else {
 | 
			
		||||
                    trace!("purge skipped {:?} {}", &k[..4], v);
 | 
			
		||||
                    None
 | 
			
		||||
                }
 | 
			
		||||
            })
 | 
			
		||||
@@ -1034,22 +1036,24 @@ mod tests {
 | 
			
		||||
 | 
			
		||||
    #[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 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);
 | 
			
		||||
        let rv = crdt.gossip_request().unwrap();
 | 
			
		||||
        assert_eq!(rv.0, nxt.gossip_addr);
 | 
			
		||||
        let now = crdt.alive[&nxt.id];
 | 
			
		||||
        let len = crdt.table.len() as u64;
 | 
			
		||||
        crdt.purge(now);
 | 
			
		||||
        let rv = crdt.gossip_request().unwrap();
 | 
			
		||||
        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();
 | 
			
		||||
        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();
 | 
			
		||||
        assert_matches!(rv, Err(Error::CrdtTooSmall));
 | 
			
		||||
    }
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user