public void Relays() {
Parameters p = new Parameters("Test", "Test");
string[] args = "-s=100".Split(' ');
Assert.AreNotEqual(-1, p.Parse(args), "Unable to parse" + p.ErrorMessage);
RelayOverlapSimulator sim = new RelayOverlapSimulator(p);
_sim = sim;
Address addr1 = null, addr2 = null;
Node node1 = null, node2 = null;
while(true) {
sim.AddDisconnectedPair(out addr1, out addr2, sim.NCEnable);
sim.Complete(true);
node1 = (sim.Nodes[addr1] as NodeMapping).Node as Node;
node2 = (sim.Nodes[addr2] as NodeMapping).Node as Node;
if(!Simulator.AreConnected(node1, node2)) {
break;
}
}
ManagedConnectionOverlord mco = new ManagedConnectionOverlord(node1);
mco.Start();
node1.AddConnectionOverlord(mco);
mco.Set(addr2);
Assert.IsTrue(AreConnected(node1, node2));
foreach(Connection con in node1.ConnectionTable.GetConnections(Relay.OverlapConnectionOverlord.STRUC_OVERLAP)) {
con.State.Edge.Close();
}
foreach(Connection con in node2.ConnectionTable.GetConnections(Relay.OverlapConnectionOverlord.STRUC_OVERLAP)) {
con.State.Edge.Close();
}
Assert.IsTrue(Simulator.AreConnected(node1, node2));
}