vpncloud/src/tests/peers.rs

180 lines
4.5 KiB
Rust
Raw Normal View History

2019-02-26 17:36:54 +00:00
// VpnCloud - Peer-to-Peer VPN
2021-02-08 09:11:20 +00:00
// Copyright (C) 2015-2021 Dennis Schwerdel
2019-02-26 17:36:54 +00:00
// This software is licensed under GPL-3 or newer (see LICENSE.md)
use super::*;
#[test]
2020-09-24 17:48:13 +00:00
fn direct_connect() {
let config = Config::default();
let mut sim = TapSimulator::new();
let node1 = sim.add_node(false, &config);
let node2 = sim.add_node(false, &config);
sim.connect(node1, node2);
sim.simulate_all_messages();
assert!(sim.is_connected(node1, node2));
assert!(sim.is_connected(node2, node1));
2019-02-26 17:36:54 +00:00
}
#[test]
2020-09-24 17:48:13 +00:00
fn direct_connect_unencrypted() {
let config = Config {
crypto: CryptoConfig { algorithms: vec!["plain".to_string()], ..CryptoConfig::default() },
..Config::default()
};
let mut sim = TapSimulator::new();
let node1 = sim.add_node(false, &config);
let node2 = sim.add_node(false, &config);
sim.connect(node1, node2);
sim.simulate_all_messages();
assert!(sim.is_connected(node1, node2));
assert!(sim.is_connected(node2, node1));
2019-02-26 17:36:54 +00:00
}
#[test]
fn cross_connect() {
2020-09-24 17:48:13 +00:00
let config = 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.simulate_all_messages();
sim.simulate_time(120);
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));
2019-03-01 15:36:18 +00:00
}
#[test]
fn connect_via_beacons() {
2020-09-24 17:48:13 +00:00
let mut sim = TapSimulator::new();
2019-03-03 13:56:59 +00:00
let beacon_path = "target/.vpncloud_test";
2020-09-24 17:48:13 +00:00
let config1 = Config { beacon_store: Some(beacon_path.to_string()), ..Default::default() };
let node1 = sim.add_node(false, &config1);
let config2 = Config { beacon_load: Some(beacon_path.to_string()), ..Default::default() };
let node2 = sim.add_node(false, &config2);
sim.set_time(100);
sim.trigger_node_housekeep(node1);
sim.trigger_node_housekeep(node2);
sim.simulate_all_messages();
assert!(sim.is_connected(node1, node2));
assert!(sim.is_connected(node2, node1));
2019-03-01 15:36:18 +00:00
}
#[test]
fn reconnect_after_timeout() {
2020-09-24 17:48:13 +00:00
let config = Config::default();
let mut sim = TapSimulator::new();
let node1 = sim.add_node(false, &config);
let node2 = sim.add_node(false, &config);
sim.connect(node1, node2);
sim.simulate_all_messages();
assert!(sim.is_connected(node1, node2));
assert!(sim.is_connected(node2, node1));
sim.set_time(5000);
sim.trigger_housekeep();
assert!(!sim.is_connected(node1, node2));
assert!(!sim.is_connected(node2, node1));
sim.simulate_all_messages();
assert!(sim.is_connected(node1, node2));
assert!(sim.is_connected(node2, node1));
2019-03-01 15:36:18 +00:00
}
#[test]
2020-09-24 17:48:13 +00:00
fn lost_init_ping() {
let config = Config::default();
let mut sim = TapSimulator::new();
let node1 = sim.add_node(false, &config);
let node2 = sim.add_node(false, &config);
sim.connect(node1, node2);
sim.drop_message(); // drop init ping
sim.simulate_time(120);
assert!(sim.is_connected(node1, node2));
assert!(sim.is_connected(node2, node1));
2019-03-01 15:36:18 +00:00
}
#[test]
2020-09-24 17:48:13 +00:00
fn lost_init_pong() {
let config = Config::default();
let mut sim = TapSimulator::new();
let node1 = sim.add_node(false, &config);
let node2 = sim.add_node(false, &config);
sim.connect(node1, node2);
sim.simulate_next_message(); // init ping
sim.drop_message(); // drop init pong
sim.simulate_time(120);
assert!(sim.is_connected(node1, node2));
assert!(sim.is_connected(node2, node1));
}
2019-03-03 13:56:59 +00:00
2020-09-24 17:48:13 +00:00
#[test]
fn lost_init_peng() {
let config = Config::default();
let mut sim = TapSimulator::new();
let node1 = sim.add_node(false, &config);
let node2 = sim.add_node(false, &config);
sim.connect(node1, node2);
sim.simulate_next_message(); // init ping
sim.simulate_next_message(); // init pong
sim.drop_message(); // drop init peng
sim.simulate_time(120);
assert!(sim.is_connected(node1, node2));
assert!(sim.is_connected(node2, node1));
2019-02-26 17:36:54 +00:00
}
2019-03-01 15:36:18 +00:00
#[test]
2020-10-19 22:19:38 +00:00
#[ignore]
2019-03-01 15:36:18 +00:00
fn peer_exchange() {
2020-09-24 17:48:13 +00:00
// TODO Test
2020-10-19 22:19:38 +00:00
unimplemented!()
2019-03-01 15:36:18 +00:00
}
#[test]
2020-10-19 22:19:38 +00:00
#[ignore]
2019-03-01 15:36:18 +00:00
fn lost_peer_exchange() {
2020-09-24 17:48:13 +00:00
// TODO Test
2020-10-19 22:19:38 +00:00
unimplemented!()
2019-03-01 15:36:18 +00:00
}
#[test]
2020-10-19 22:19:38 +00:00
#[ignore]
2019-03-01 15:36:18 +00:00
fn remove_dead_peers() {
2020-09-24 17:48:13 +00:00
// TODO Test
2020-10-19 22:19:38 +00:00
unimplemented!()
2019-03-01 15:36:18 +00:00
}
#[test]
2020-10-19 22:19:38 +00:00
#[ignore]
2019-03-01 15:36:18 +00:00
fn update_primary_address() {
2020-09-24 17:48:13 +00:00
// TODO Test
2020-10-19 22:19:38 +00:00
unimplemented!()
2019-03-01 15:36:18 +00:00
}
#[test]
2020-10-19 22:19:38 +00:00
#[ignore]
fn automatic_peer_timeout() {
2020-09-24 17:48:13 +00:00
// TODO Test
2020-10-19 22:19:38 +00:00
unimplemented!()
}