mirror of https://github.com/dswd/vpncloud.git
More tests
This commit is contained in:
parent
35c2b3479f
commit
43382bbe33
|
@ -9,7 +9,7 @@ use std::{
|
||||||
|
|
||||||
use crate::{
|
use crate::{
|
||||||
types::{Address, Range, RangeList},
|
types::{Address, Range, RangeList},
|
||||||
util::{Duration, Time, TimeSource, addr_nice}
|
util::{addr_nice, Duration, Time, TimeSource}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
@ -132,3 +132,5 @@ impl<TS: TimeSource> ClaimTable<TS> {
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TODO: test
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
use super::*;
|
use super::*;
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn ethernet_delivers() {
|
fn switch_delivers() {
|
||||||
let config = Config { device_type: Type::Tap, ..Config::default() };
|
let config = Config { device_type: Type::Tap, ..Config::default() };
|
||||||
let mut sim = TapSimulator::new();
|
let mut sim = TapSimulator::new();
|
||||||
let node1 = sim.add_node(false, &config);
|
let node1 = sim.add_node(false, &config);
|
||||||
|
@ -66,20 +66,119 @@ fn switch_learns() {
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn switch_honours_vlans() {
|
fn switch_honours_vlans() {
|
||||||
// TODO Test
|
let config = Config { device_type: Type::Tap, ..Config::default() };
|
||||||
|
let mut sim = TapSimulator::new();
|
||||||
|
let node1 = sim.add_node(false, &config);
|
||||||
|
let node2 = sim.add_node(false, &config);
|
||||||
|
let node3 = sim.add_node(false, &config);
|
||||||
|
|
||||||
|
sim.connect(node1, node2);
|
||||||
|
sim.connect(node1, node3);
|
||||||
|
sim.connect(node2, node3);
|
||||||
|
sim.simulate_all_messages();
|
||||||
|
assert!(sim.is_connected(node1, node2));
|
||||||
|
assert!(sim.is_connected(node2, node1));
|
||||||
|
assert!(sim.is_connected(node1, node3));
|
||||||
|
assert!(sim.is_connected(node3, node1));
|
||||||
|
assert!(sim.is_connected(node2, node3));
|
||||||
|
assert!(sim.is_connected(node3, node2));
|
||||||
|
|
||||||
|
let payload = vec![2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 0x81, 0, 0, 0x67, 1, 2, 3, 4, 5];
|
||||||
|
|
||||||
|
// Nothing learnt so far, node1 broadcasts
|
||||||
|
|
||||||
|
sim.put_payload(node1, payload.clone());
|
||||||
|
sim.simulate_all_messages();
|
||||||
|
|
||||||
|
assert_eq!(Some(payload.clone()), sim.pop_payload(node2));
|
||||||
|
assert_eq!(Some(payload), sim.pop_payload(node3));
|
||||||
|
|
||||||
|
let payload = vec![1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 0x81, 0, 0, 0x67, 5, 4, 3, 2, 1];
|
||||||
|
|
||||||
|
// Node 2 learned the address by receiving it, does not broadcast
|
||||||
|
|
||||||
|
sim.put_payload(node2, payload.clone());
|
||||||
|
sim.simulate_all_messages();
|
||||||
|
|
||||||
|
assert_eq!(Some(payload), sim.pop_payload(node1));
|
||||||
|
assert_eq!(None, sim.pop_payload(node3));
|
||||||
|
|
||||||
|
let payload = vec![1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 0x81, 0, 0, 0x68, 5, 4, 3, 2, 1];
|
||||||
|
|
||||||
|
// Different VLANs, node 2 does not learn, still broadcasts
|
||||||
|
|
||||||
|
sim.put_payload(node2, payload.clone());
|
||||||
|
sim.simulate_all_messages();
|
||||||
|
|
||||||
|
assert_eq!(Some(payload.clone()), sim.pop_payload(node1));
|
||||||
|
assert_eq!(Some(payload), sim.pop_payload(node3));
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
|
#[ignore]
|
||||||
fn switch_forgets() {
|
fn switch_forgets() {
|
||||||
// TODO Test
|
// TODO Test
|
||||||
|
unimplemented!()
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn router_delivers() {
|
fn router_delivers() {
|
||||||
// TODO Test
|
let config1 = Config {
|
||||||
|
device_type: Type::Tun,
|
||||||
|
auto_claim: false,
|
||||||
|
claims: vec!["1.1.1.1/32".to_string()],
|
||||||
|
..Config::default()
|
||||||
|
};
|
||||||
|
let config2 = Config {
|
||||||
|
device_type: Type::Tun,
|
||||||
|
auto_claim: false,
|
||||||
|
claims: vec!["2.2.2.2/32".to_string()],
|
||||||
|
..Config::default()
|
||||||
|
};
|
||||||
|
let mut sim = TunSimulator::new();
|
||||||
|
let node1 = sim.add_node(false, &config1);
|
||||||
|
let node2 = sim.add_node(false, &config2);
|
||||||
|
|
||||||
|
sim.connect(node1, node2);
|
||||||
|
sim.simulate_all_messages();
|
||||||
|
assert!(sim.is_connected(node1, node2));
|
||||||
|
assert!(sim.is_connected(node2, node1));
|
||||||
|
|
||||||
|
let payload = vec![0x40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2];
|
||||||
|
|
||||||
|
sim.put_payload(node1, payload.clone());
|
||||||
|
sim.simulate_all_messages();
|
||||||
|
|
||||||
|
assert_eq!(Some(payload), sim.pop_payload(node2));
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn router_drops_unknown_dest() {
|
fn router_drops_unknown_dest() {
|
||||||
// TODO Test
|
let config1 = Config {
|
||||||
|
device_type: Type::Tun,
|
||||||
|
auto_claim: false,
|
||||||
|
claims: vec!["1.1.1.1/32".to_string()],
|
||||||
|
..Config::default()
|
||||||
|
};
|
||||||
|
let config2 = Config {
|
||||||
|
device_type: Type::Tun,
|
||||||
|
auto_claim: false,
|
||||||
|
claims: vec!["2.2.2.2/32".to_string()],
|
||||||
|
..Config::default()
|
||||||
|
};
|
||||||
|
let mut sim = TunSimulator::new();
|
||||||
|
let node1 = sim.add_node(false, &config1);
|
||||||
|
let node2 = sim.add_node(false, &config2);
|
||||||
|
|
||||||
|
sim.connect(node1, node2);
|
||||||
|
sim.simulate_all_messages();
|
||||||
|
assert!(sim.is_connected(node1, node2));
|
||||||
|
assert!(sim.is_connected(node2, node1));
|
||||||
|
|
||||||
|
let payload = vec![0x40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 3, 3, 3, 3];
|
||||||
|
|
||||||
|
sim.put_payload(node1, payload);
|
||||||
|
sim.simulate_all_messages();
|
||||||
|
|
||||||
|
assert_eq!(None, sim.pop_payload(node2));
|
||||||
}
|
}
|
||||||
|
|
|
@ -144,26 +144,36 @@ fn lost_init_peng() {
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
|
#[ignore]
|
||||||
fn peer_exchange() {
|
fn peer_exchange() {
|
||||||
// TODO Test
|
// TODO Test
|
||||||
|
unimplemented!()
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
|
#[ignore]
|
||||||
fn lost_peer_exchange() {
|
fn lost_peer_exchange() {
|
||||||
// TODO Test
|
// TODO Test
|
||||||
|
unimplemented!()
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
|
#[ignore]
|
||||||
fn remove_dead_peers() {
|
fn remove_dead_peers() {
|
||||||
// TODO Test
|
// TODO Test
|
||||||
|
unimplemented!()
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
|
#[ignore]
|
||||||
fn update_primary_address() {
|
fn update_primary_address() {
|
||||||
// TODO Test
|
// TODO Test
|
||||||
|
unimplemented!()
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
|
#[ignore]
|
||||||
fn automatic_peer_timeout() {
|
fn automatic_peer_timeout() {
|
||||||
// TODO Test
|
// TODO Test
|
||||||
|
unimplemented!()
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue