1 package example.symphony.test;
\r
3 import example.symphony.AdapterIterableNetwork;
\r
4 import example.symphony.SymphonyNetworkManager;
\r
5 import example.symphony.SymphonyProtocol;
\r
6 import peersim.config.Configuration;
\r
7 import peersim.core.Control;
\r
8 import peersim.core.Node;
\r
12 * @author Andrea Esposito <and1989@gmail.com>
\r
14 public class NetworkEstimationTest implements Control {
\r
16 private static final String PAR_NETMANAGER = "symphonynetworkmanager";
\r
17 private static final String PAR_SYMPHONY = "symphony";
\r
18 private final int symphonyID;
\r
19 private final int networkManagerID;
\r
21 public NetworkEstimationTest(String prefix) {
\r
23 networkManagerID = Configuration.getPid(prefix + "." + PAR_NETMANAGER);
\r
24 symphonyID = Configuration.getPid(prefix + "." + PAR_SYMPHONY);
\r
27 public boolean execute() {
\r
29 AdapterIterableNetwork it = new AdapterIterableNetwork();
\r
30 int max = Integer.MIN_VALUE;
\r
31 int min = Integer.MAX_VALUE;
\r
34 for (Node node : it) {
\r
35 if (node.isUp() && ((SymphonyProtocol) node.getProtocol(symphonyID)).isBootstrapped()) {
\r
36 SymphonyNetworkManager networkManager = (SymphonyNetworkManager) node.getProtocol(networkManagerID);
\r
37 int n = networkManager.getN();
\r
38 min = n < min ? n : min;
\r
39 max = n > max ? n : max;
\r
45 System.out.println("Real Dimension: " + (Math.log(total) / Math.log(2)));
\r
46 System.out.println("Average Estimated Dimension: " + (total == 0 ? "No Node online" : (Math.log((sum / total)) / Math.log(2))));
\r
47 System.out.println("MAX: " + Math.log(max) / Math.log(2));
\r
48 System.out.println("MIN: " + Math.log(min) / Math.log(2));
\r