2019-12-04 12:09:20 +00:00
|
|
|
// VpnCloud - Peer-to-Peer VPN
|
2021-02-08 09:11:20 +00:00
|
|
|
// Copyright (C) 2015-2021 Dennis Schwerdel
|
2019-12-04 12:09:20 +00:00
|
|
|
// This software is licensed under GPL-3 or newer (see LICENSE.md)
|
|
|
|
|
|
|
|
use super::*;
|
|
|
|
|
|
|
|
#[test]
|
|
|
|
fn connect_nat_2_peers() {
|
2020-09-24 17:48:13 +00:00
|
|
|
let config = Config { port_forwarding: false, ..Default::default() };
|
|
|
|
let mut sim = TapSimulator::new();
|
|
|
|
let node1 = sim.add_node(true, &config);
|
|
|
|
let node2 = sim.add_node(true, &config);
|
2019-12-04 12:09:20 +00:00
|
|
|
|
2020-09-24 17:48:13 +00:00
|
|
|
sim.connect(node1, node2);
|
|
|
|
sim.connect(node2, node1);
|
2019-12-04 12:09:20 +00:00
|
|
|
|
2020-09-24 17:48:13 +00:00
|
|
|
sim.simulate_time(60);
|
2019-12-04 12:09:20 +00:00
|
|
|
|
2020-09-24 17:48:13 +00:00
|
|
|
assert!(sim.is_connected(node1, node2));
|
|
|
|
assert!(sim.is_connected(node2, node1));
|
2019-12-04 12:09:20 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
#[test]
|
|
|
|
fn connect_nat_3_peers() {
|
2020-09-24 17:48:13 +00:00
|
|
|
let config = Config::default();
|
|
|
|
let mut sim = TapSimulator::new();
|
|
|
|
let node1 = sim.add_node(true, &config);
|
|
|
|
let node2 = sim.add_node(true, &config);
|
|
|
|
let node3 = sim.add_node(true, &config);
|
|
|
|
|
|
|
|
sim.connect(node1, node2);
|
|
|
|
sim.connect(node2, node1);
|
|
|
|
sim.connect(node1, node3);
|
|
|
|
sim.connect(node3, node1);
|
|
|
|
|
|
|
|
sim.simulate_time(300);
|
|
|
|
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-12-04 12:09:20 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
#[test]
|
|
|
|
fn nat_keepalive() {
|
2020-09-24 17:48:13 +00:00
|
|
|
let config = Config::default();
|
|
|
|
let mut sim = TapSimulator::new();
|
|
|
|
let node1 = sim.add_node(true, &config);
|
|
|
|
let node2 = sim.add_node(true, &config);
|
|
|
|
let node3 = sim.add_node(true, &config);
|
|
|
|
|
|
|
|
sim.connect(node1, node2);
|
|
|
|
sim.connect(node2, node1);
|
|
|
|
sim.connect(node1, node3);
|
|
|
|
sim.connect(node3, node1);
|
|
|
|
|
|
|
|
sim.simulate_time(1000);
|
|
|
|
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));
|
|
|
|
|
|
|
|
sim.simulate_time(10000);
|
|
|
|
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-12-04 12:09:20 +00:00
|
|
|
}
|