forked from MattWoelk/DirectedDiffusion
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathNodeTest.java
200 lines (175 loc) · 6.84 KB
/
NodeTest.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
import java.awt.Point;
import java.util.ArrayList;
import java.util.Collections;
import java.math.BigInteger;
import java.sql.Date;
public class NodeTest
{
static int dimension = 4, numNodes = 10, radioRange = 4; //will be set by user
public static int currentTime = 0;
public static void main(String[] args)
{
String tmp = (args.length == 0) ? "" : args[0];
if(tmp.toLowerCase().equals("unittest"))
{
if(args.length >= 2)
runUnitTests(args[1]);
else
runUnitTests("");
}else{
ArrayList<Point> gridPoints = new ArrayList<Point>();
ArrayList<Node> allNodes = new ArrayList<Node>();
for(int i = 0; i < dimension; i++) //Initializes grid points
for(int j = 0; j < dimension; j++)
gridPoints.add(new Point(i,j));
//this debug code showing the effect of Collections.shuffle can be removed later
System.out.println("Before shuffling, gridPoints contains:\n");
for(int i = 0; i < dimension*dimension; i++)
System.out.println("\t("+(int)gridPoints.get(i).getX()+","+(int)gridPoints.get(i).getY()+")");
Collections.shuffle(gridPoints);
System.out.println("After shuffling, gridPoints contains:\n");
for(int i = 0; i < dimension*dimension; i++)
System.out.println("\t("+(int)gridPoints.get(i).getX()+","+(int)gridPoints.get(i).getY()+")");
for(int i = 0; i < numNodes; i++) //Make the Nodes, giving them a random coordinate
allNodes.add(new Node(i, (int)gridPoints.get(i).getX(), (int)gridPoints.get(i).getY(), radioRange, numNodes));
for(int i = 0; i < numNodes; i++)
{ //Each node knows all nodes
allNodes.get(i).setAllNodes(allNodes);
}
for(int i = 0; i < numNodes; i++)
{ //Each node finds its neighbors
allNodes.get(i).findNeighbors();
}
while(true)
{
System.out.println("Shuffling nodes:\n");
Collections.shuffle(allNodes); //Randomizes the order of the nodes in the list.
for(int i = 0; i < numNodes; i++)
{ //Invoke the processNode method of each node
boolean success = allNodes.get(i).processNode();
}
sleep(4000); // sleep in ms
}
}
}
public static void runUnitTests(String arg)
{
String tmp = arg;
boolean all = false;
if(tmp.toLowerCase().equals("all"))
all = true;
boolean testNode = all;
boolean testEDReceive = all;
boolean testExpDataSend = all;
boolean testPacketReceiver = all;
boolean testPacketTransmitter = all;
boolean testRnFDataSend = all;
System.out.println("----TESTING!----");
if(testNode || arg.toLowerCase().equals("node"))
{
currentTime = 0;
System.out.println("\n,.~*TESTING NODE!*~.,\n");
ArrayList<Node> nods = new ArrayList<Node>();
System.out.println("Testing Node neighbouring:");
nods.add(new Node(0, 0, 0, 10, 2));
nods.add(new Node(1, 1, 0, 10, 2));
nods.get(0).setAllNodes(nods);
nods.get(1).setAllNodes(nods);
nods.get(0).findNeighbors();
nods.get(1).findNeighbors();
assertTest(nods.get(0).getXCoord() == 0, "xco1");
assertTest(nods.get(0).getYCoord() == 0, "yco1");
assertTest(nods.get(1).getXCoord() == 1, "xco2");
assertTest(nods.get(1).getYCoord() == 0, "yco2");
assertTest(nods.get(0).getNeighbours().get(0) == nods.get(1), "neib1");
assertTest(nods.get(1).getNeighbours().get(0) == nods.get(0), "neib2");
assertTest(nods.get(0).getNeighbours().size() == 1, "neibcount1");
assertTest(nods.get(1).getNeighbours().size() == 1, "neibcount2");
}
if(testEDReceive || arg.toLowerCase().equals("edreceive"))
{
System.out.println("\n,.~*TESTING EDReceive!*~.,\n");
EDReceive edTest = new EDReceive();
assertTest(edTest.getSeqNum(0) == -1, "nosenders");
edTest.addSender(42);
assertTest(edTest.getSeqNum(0) != -1, "onesender");
edTest.updateSeqNum(0, 99);
assertTest(edTest.getSeqNum(0) == 99, "updateseqnum");
}
if(testExpDataSend || arg.toLowerCase().equals("expdatasend"))
{
currentTime = 0;
System.out.println("\n,.~*TESTING ExpDataSend!*~.,\n");
ArrayList<Node> nods = new ArrayList<Node>();
nods.add(new Node(0, 0, 0, 10, 2));
nods.add(new Node(1, 1, 0, 10, 2));
nods.get(0).setAllNodes(nods);
nods.get(1).setAllNodes(nods);
nods.get(0).findNeighbors();
nods.get(1).findNeighbors();
ExpDataSend exTest = new ExpDataSend(1, nods.get(0), new Interest(0));
for(int i = 0; i < nods.size(); i++)
{
nods.get(i).run(); //TODO: fix and get working
}
//exTest.EDSendFlag();
}
if(testPacketReceiver || arg.toLowerCase().equals("packetreceiver"))
{
System.out.println("\n,.~*TESTING PacketReceiver!*~.,\n");
PacketReceiver prec = new PacketReceiver();
Packet pkt = new Packet('a', "yup", (double)0, new Date((long)0));
prec.receivePacket(pkt);
Packet pkt2 = prec.getPacket();
assertTest(pkt2 == pkt, "receive");
assertTest(prec.check_empty(), "empty");
}
if(testPacketTransmitter || arg.toLowerCase().equals("packettransmitter"))
{
System.out.println("\n,.~*TESTING PacketTransmitter!*~.,\n");
PacketTransmitter ptra = new PacketTransmitter();
Packet pkt = new Packet('a', "yup", (double)0, new Date((long)0));
ArrayList<Node> nods = new ArrayList<Node>();
nods.add(new Node(0, 0, 0, 10, 2));
nods.add(new Node(1, 1, 0, 10, 2));
nods.get(0).setAllNodes(nods);
nods.get(1).setAllNodes(nods);
nods.get(0).findNeighbors();
nods.get(1).findNeighbors();
ptra.setNeighbors(nods.get(0).getNeighbours());
ptra.addPacket(pkt);
assertTest(nods.get(1).lastReceivedPacketTest() == pkt, "received packet");
}
if(testRnFDataSend || arg.toLowerCase().equals("rnfdatasend"))
{
System.out.println("\n,.~*TESTING RnfDataSend!*~.,\n");
ArrayList<Node> nods = new ArrayList<Node>();
nods.add(new Node(0, 0, 0, 10, 2));
nods.add(new Node(1, 1, 0, 10, 2));
nods.get(0).setAllNodes(nods);
nods.get(1).setAllNodes(nods);
nods.get(0).findNeighbors();
nods.get(1).findNeighbors();
//RnFDataSend exTest = new RnFDataSend(10110, nods.get(0));
//exTest.RnFSendFlag();
}
}
public static void assertTest(boolean test, String value)
{
if(test)
{
System.out.println("- PASSED TEST: " + value);
}else{
System.out.println("==FAILED TEST: " + value);
}
}
public static void sleep(int ms)
{
try
{
Thread.sleep(ms);
}catch (InterruptedException ie){
System.out.println(ie.getMessage());
}
}
}