Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Energy, onHostDestruction: ensured ptr existence
[simgrid.git] / contrib / psg / src / example / symphony / test / NetworkEstimationTest.java
1 package example.symphony.test;\r
2 \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
9 \r
10 /**\r
11  *\r
12  * @author Andrea Esposito <and1989@gmail.com>\r
13  */\r
14 public class NetworkEstimationTest implements Control {\r
15 \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
20 \r
21     public NetworkEstimationTest(String prefix) {\r
22 \r
23         networkManagerID = Configuration.getPid(prefix + "." + PAR_NETMANAGER);\r
24         symphonyID = Configuration.getPid(prefix + "." + PAR_SYMPHONY);\r
25     }\r
26 \r
27     public boolean execute() {\r
28 \r
29         AdapterIterableNetwork it = new AdapterIterableNetwork();\r
30         int max = Integer.MIN_VALUE;\r
31         int min = Integer.MAX_VALUE;\r
32         int sum = 0;\r
33         int total = 0;\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
40                 sum += n;\r
41                 total++;\r
42             }\r
43         }\r
44 \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
49 \r
50         return false;\r
51     }\r
52 }\r