Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
peersimgrid release 1.0
[simgrid.git] / contrib / psg / src / example / symphony / test / NetworkEstimationTest.java
diff --git a/contrib/psg/src/example/symphony/test/NetworkEstimationTest.java b/contrib/psg/src/example/symphony/test/NetworkEstimationTest.java
new file mode 100644 (file)
index 0000000..1d0d945
--- /dev/null
@@ -0,0 +1,52 @@
+package example.symphony.test;\r
+\r
+import example.symphony.AdapterIterableNetwork;\r
+import example.symphony.SymphonyNetworkManager;\r
+import example.symphony.SymphonyProtocol;\r
+import peersim.config.Configuration;\r
+import peersim.core.Control;\r
+import peersim.core.Node;\r
+\r
+/**\r
+ *\r
+ * @author Andrea Esposito <and1989@gmail.com>\r
+ */\r
+public class NetworkEstimationTest implements Control {\r
+\r
+    private static final String PAR_NETMANAGER = "symphonynetworkmanager";\r
+    private static final String PAR_SYMPHONY = "symphony";\r
+    private final int symphonyID;\r
+    private final int networkManagerID;\r
+\r
+    public NetworkEstimationTest(String prefix) {\r
+\r
+        networkManagerID = Configuration.getPid(prefix + "." + PAR_NETMANAGER);\r
+        symphonyID = Configuration.getPid(prefix + "." + PAR_SYMPHONY);\r
+    }\r
+\r
+    public boolean execute() {\r
+\r
+        AdapterIterableNetwork it = new AdapterIterableNetwork();\r
+        int max = Integer.MIN_VALUE;\r
+        int min = Integer.MAX_VALUE;\r
+        int sum = 0;\r
+        int total = 0;\r
+        for (Node node : it) {\r
+            if (node.isUp() && ((SymphonyProtocol) node.getProtocol(symphonyID)).isBootstrapped()) {\r
+                SymphonyNetworkManager networkManager = (SymphonyNetworkManager) node.getProtocol(networkManagerID);\r
+                int n = networkManager.getN();\r
+                min = n < min ? n : min;\r
+                max = n > max ? n : max;\r
+                sum += n;\r
+                total++;\r
+            }\r
+        }\r
+\r
+        System.out.println("Real Dimension: " + (Math.log(total) / Math.log(2)));\r
+        System.out.println("Average Estimated Dimension: " + (total == 0 ? "No Node online" : (Math.log((sum / total)) / Math.log(2))));\r
+        System.out.println("MAX: " + Math.log(max) / Math.log(2));\r
+        System.out.println("MIN: " + Math.log(min) / Math.log(2));\r
+\r
+        return false;\r
+    }\r
+}\r