Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Remove PSG from SimGrid git
[simgrid.git] / contrib / psg / src / example / symphony / RingRouteTest.java
diff --git a/contrib/psg/src/example/symphony/RingRouteTest.java b/contrib/psg/src/example/symphony/RingRouteTest.java
deleted file mode 100644 (file)
index 06262cb..0000000
+++ /dev/null
@@ -1,150 +0,0 @@
-package example.symphony;\r
-\r
-import java.util.Collection;\r
-import java.util.Collections;\r
-import java.util.HashSet;\r
-import java.util.LinkedList;\r
-import java.util.logging.Level;\r
-import java.util.logging.Logger;\r
-\r
-import example.symphony.SymphonyProtocol.BootstrapStatus;\r
-import peersim.config.Configuration;\r
-import peersim.core.Control;\r
-import peersim.core.Network;\r
-import peersim.core.Node;\r
-\r
-/**\r
- *\r
- * @author Andrea Esposito <and1989@gmail.com>\r
- */\r
-public class RingRouteTest implements Control, Handler {\r
-\r
-    private static final String PAR_SYMPHONY = "symphony";\r
-    private static final String PAR_STARTNODE = "startnode";\r
-    private final int symphonyID;\r
-    private final int indexStartNode;\r
-    private Node start;\r
-    private boolean finished;\r
-    private boolean flagTimeout;\r
-    private HashSet<Node> antiLoopSet;\r
-\r
-    public RingRouteTest(String prefix) {\r
-        symphonyID = Configuration.getPid(prefix + "." + PAR_SYMPHONY);\r
-        indexStartNode = Configuration.getInt(prefix + "." + PAR_STARTNODE, 0);\r
-\r
-        finished = true;\r
-        flagTimeout = false;\r
-        antiLoopSet = new HashSet<Node>();\r
-    }\r
-\r
-    public boolean execute() {\r
-\r
-        if (!finished && flagTimeout) {\r
-\r
-            Logger.getLogger(RingRouteTest.class.getName()).log(Level.WARNING, "Sent msg but no aswer. Timeout. Ring Route Test terminated for Timeout.");\r
-\r
-            finished = true;\r
-            flagTimeout = false;\r
-        }\r
-\r
-        if (finished) {\r
-\r
-            flagTimeout = true;\r
-            antiLoopSet.clear();\r
-\r
-            int indexRealStartNode = indexStartNode;\r
-            Node realStartNode = Network.get(indexStartNode);\r
-            SymphonyProtocol symphony = (SymphonyProtocol) realStartNode.getProtocol(symphonyID);\r
-\r
-            while (!symphony.isBootstrapped() || !realStartNode.isUp()) {\r
-                indexRealStartNode = (indexRealStartNode + 1) % Network.size();\r
-                realStartNode = Network.get(indexRealStartNode);\r
-                symphony = (SymphonyProtocol) realStartNode.getProtocol(symphonyID);\r
-\r
-                if (indexRealStartNode == indexStartNode) {\r
-                    Logger.getLogger(RingRouteTest.class.getName()).log(Level.WARNING, "No ONLINE nodes. The ring is vanished. Ring Route Terminated.");\r
-                    finished = true;\r
-                    flagTimeout = false;\r
-                    return false;\r
-                }\r
-            }\r
-\r
-            start = realStartNode;\r
-            finished = false;\r
-\r
-            Logger.getLogger(RingRouteTest.class.getName()).log(Level.INFO, "RingRoute started.");\r
-\r
-            doRoute(start, true);\r
-        }\r
-\r
-        return false;\r
-    }\r
-\r
-    public void handle(SymphonyProtocol symphony, Tuple<Node, Double> tuple) {\r
-\r
-        if (tuple == null) {\r
-            Logger.getLogger(RingRouteTest.class.getName()).log(Level.SEVERE, "FAIL RING ROUTING");\r
-            finished = true;\r
-            return;\r
-        }\r
-\r
-        Logger.getLogger(RingRouteTest.class.getName()).log(Level.FINER, symphony.getIdentifier() + " source find the manager of " + tuple.y + " and it is " + ((SymphonyProtocol) tuple.x.getProtocol(symphonyID)).getIdentifier());\r
-\r
-        doRoute(tuple.x, false);\r
-    }\r
-\r
-    private void doRoute(Node node, boolean firstTime) {\r
-\r
-        SymphonyProtocol symphonyStartNode = (SymphonyProtocol) start.getProtocol(symphonyID);\r
-\r
-        if (!symphonyStartNode.isBootstrapped()) {\r
-            Logger.getLogger(RingRouteTest.class.getName()).log(Level.INFO, "The node i started from left. Ring Route Terminated.");\r
-            finished = true;\r
-            return;\r
-        }\r
-\r
-        if (!firstTime && node.equals(start)) {\r
-            Logger.getLogger(RingRouteTest.class.getName()).log(Level.INFO, "RingRoute Terminated");\r
-            finished = true;\r
-            return;\r
-        }\r
-\r
-        if (antiLoopSet.contains(node)) {\r
-            Logger.getLogger(RingRouteTest.class.getName()).log(Level.INFO, "Not able to reach the node that i started from. Ring Route Terminated.");\r
-            finished = true;\r
-            return;\r
-        } else {\r
-            antiLoopSet.add(node);\r
-        }\r
-\r
-        SymphonyProtocol symphony = (SymphonyProtocol) node.getProtocol(symphonyID);\r
-        AdapterSymphonyNodeComparator adapterSymphonyNodeComparator = new AdapterSymphonyNodeComparator(new SymphonyNodeComparator(symphonyID, node));\r
-\r
-        Collection<Tuple<Node, BootstrapStatus>> collection = (Collection<Tuple<Node, BootstrapStatus>>) symphony.leftShortRangeLinks.clone();\r
-        LinkedList<Tuple<Node, BootstrapStatus>> list = new LinkedList<Tuple<Node, BootstrapStatus>>(collection);\r
-        Collections.sort(list, adapterSymphonyNodeComparator);\r
-\r
-        Node targetNode = null;\r
-        for (Tuple<Node, BootstrapStatus> tuple : list) {\r
-            if (tuple.y == BootstrapStatus.ONLINE) {\r
-                targetNode = tuple.x;\r
-                break;\r
-            }\r
-        }\r
-\r
-        if (targetNode == null || !targetNode.isUp()) {\r
-            Logger.getLogger(RingRouteTest.class.getName()).log(Level.WARNING, "Terminated Ring Route but not done completely");\r
-            finished = true;\r
-            return;\r
-        }\r
-\r
-        SymphonyProtocol symphonyTarget = (SymphonyProtocol) targetNode.getProtocol(symphonyID);\r
-        try {\r
-            symphony.route(node, symphonyTarget.getIdentifier(), this);\r
-            Logger.getLogger(RingRouteTest.class.getName()).log(Level.FINEST, "Ring from: " + symphony.getIdentifier() + " to " + symphonyTarget.getIdentifier());\r
-        } catch (RoutingException ex) {\r
-            Logger.getLogger(RingRouteTest.class.getName()).log(Level.WARNING, "Finito AnelloRoute MA NON FATTO TUTTO");\r
-            finished = true;\r
-        }\r
-    }\r
-}\r