diff --git a/src/main/java/tmltranslator/simulation/DependencyGraphTranslator.java b/src/main/java/tmltranslator/simulation/DependencyGraphTranslator.java index d8730bbbb9d7f0619a6988479bc8609b9e4393f9..86c204051cc1165703a9e059030a7b3ec2867d60 100644 --- a/src/main/java/tmltranslator/simulation/DependencyGraphTranslator.java +++ b/src/main/java/tmltranslator/simulation/DependencyGraphTranslator.java @@ -153,6 +153,7 @@ public class DependencyGraphTranslator extends SwingWorker { private Object[][] dataByTask = null; private Object[][] dataByTaskMinMax = null; private HashMap<Integer, Vector<SimulationTransaction>> dataByTaskR = new HashMap<Integer, Vector<SimulationTransaction>>(); + private HashMap<Integer, Vector<SimulationTransaction>> mandatoryOptionalSimT = new HashMap<Integer, Vector<SimulationTransaction>>(); private HashMap<Integer, List<SimulationTransaction>> dataBydelayedTasks = new HashMap<Integer, List<SimulationTransaction>>(); private HashMap<Integer, HashMap<String, ArrayList<ArrayList<Integer>>>> timeDelayedPerRow = new HashMap<Integer, HashMap<String, ArrayList<ArrayList<Integer>>>>(); private HashMap<Integer, HashMap<String, ArrayList<ArrayList<Integer>>>> timeDelayedPerRowMinMax = new HashMap<Integer, HashMap<String, ArrayList<ArrayList<Integer>>>>(); @@ -168,6 +169,7 @@ public class DependencyGraphTranslator extends SwingWorker { private ArrayList<String> devicesToBeConsidered = new ArrayList<String>(); private Vector<SimulationTransaction> relatedsimTraces = new Vector<SimulationTransaction>(); private Vector<SimulationTransaction> delayDueTosimTraces = new Vector<SimulationTransaction>(); + private Vector<SimulationTransaction> mandatoryOptional = new Vector<SimulationTransaction>(); private HashMap<String, ArrayList<SimulationTransaction>> relatedsimTraceswithTaint = new HashMap<String, ArrayList<SimulationTransaction>>(); private int nbOfNodes = 0; private List<String> usedLabels = new ArrayList<String>(); @@ -205,8 +207,8 @@ public class DependencyGraphTranslator extends SwingWorker { private static final String WAIT_REQ_LABEL = "Wait reqChannel_"; private static final String GET_REQ_ARG_LABEL = "getReqArg"; private static final String WAIT_ST = "Wait: "; - private static final String WAIT_EVENT = "Wait event: "; - private static final String SEND_EVENT = "Send event: "; + private static final String WAIT_EVENT = "Waitevent:"; + private static final String SEND_EVENT = "Sendevent:"; private static final String STOP_AFTER_INFINITE_LOOP = "Stop after infinite loop"; private static final String START_OF_FORK = "startOfFork"; private static final String START_OF_JOIN = "startOfJoin"; @@ -2063,6 +2065,7 @@ public class DependencyGraphTranslator extends SwingWorker { dataBydelayedTasks = new HashMap<Integer, List<SimulationTransaction>>(); dataByTask = null; relatedsimTraces = new Vector<SimulationTransaction>(); + mandatoryOptional = new Vector<SimulationTransaction>(); delayDueTosimTraces = new Vector<SimulationTransaction>(); dependencyGraphRelations.setRunnableTimePerDevice(new HashMap<String, ArrayList<ArrayList<Integer>>>()); if (path2 != null && path2.getLength() > 0) { @@ -2072,7 +2075,7 @@ public class DependencyGraphTranslator extends SwingWorker { GraphPath<Vertex, DefaultEdge> pathTochannel = DijkstraShortestPath.findPathBetween(g, v1, getvertex(ChannelName)); GraphPath<Vertex, DefaultEdge> pathFromChannel = DijkstraShortestPath.findPathBetween(g, getvertex(ChannelName), getvertex(task22)); - if (pathTochannel != null && pathTochannel.getLength() > 0 && pathFromChannel != null && pathFromChannel.getLength() > 0) { + if (pathFromChannel != null && pathFromChannel.getLength() > 0) { devicesToBeConsidered.addAll(busChList); } } @@ -2720,6 +2723,23 @@ public class DependencyGraphTranslator extends SwingWorker { dependencyGraphRelations.getRunnableTimePerDevice().put(dName, timeValuesList); } } + } else if (pathToDestination != null && pathToDestination.getLength() > 0) { + mandatoryOptional.add(st); + ArrayList<Integer> timeValues = new ArrayList<Integer>(); + timeValues.add(0, Integer.valueOf(st.runnableTime)); + timeValues.add(1, startTime); + String dName = st.deviceName + "_" + st.coreNumber; + if (!(st.runnableTime).equals(st.startTime)) { + if (dependencyGraphRelations.getRunnableTimePerDevice().containsKey(dName)) { + if (!dependencyGraphRelations.getRunnableTimePerDevice().get(dName).contains(timeValues)) { + dependencyGraphRelations.getRunnableTimePerDevice().get(dName).add(timeValues); + } + } else { + ArrayList<ArrayList<Integer>> timeValuesList = new ArrayList<ArrayList<Integer>>(); + timeValuesList.add(timeValues); + dependencyGraphRelations.getRunnableTimePerDevice().put(dName, timeValuesList); + } + } } else if (((st.deviceName.equals(task2DeviceName) && task2CoreNbr.equals(st.coreNumber)) || (st.deviceName.equals(task1DeviceName) && task1CoreNbr.equals(st.coreNumber)) || devicesToBeConsidered.contains(deviceName)) && !st.id.equals(idTask1) && !st.id.equals(idTask2)) { @@ -2757,6 +2777,7 @@ public class DependencyGraphTranslator extends SwingWorker { dataByTaskR.put(i, relatedsimTraces); dataBydelayedTasks.put(i, delayDueTosimTraces); timeDelayedPerRow.put(i, dependencyGraphRelations.getRunnableTimePerDevice()); + mandatoryOptionalSimT.put(i, mandatoryOptional); // dataByTask[i][5] = list.getModel(); // dataByTask[i][6] = totalTime; } @@ -3713,6 +3734,20 @@ public class DependencyGraphTranslator extends SwingWorker { return dataByTaskRowDetails; } + public String[][] getMandatoryOptionalByRow(int row) { + String[][] dataByTaskRowDetails = new String[mandatoryOptionalSimT.get(row).size()][5]; + int i = 0; + for (SimulationTransaction st : mandatoryOptionalSimT.get(row)) { + dataByTaskRowDetails[i][0] = st.command; + dataByTaskRowDetails[i][1] = nameIDTaskList.get(st.id); + dataByTaskRowDetails[i][2] = st.deviceName + "_" + st.coreNumber; + dataByTaskRowDetails[i][3] = st.startTime; + dataByTaskRowDetails[i][4] = st.endTime; + i++; + } + return dataByTaskRowDetails; + } + // fill the detailed latency table once a row is selected public Object[][] getTaskByRowDetailsMinMaxTaint(int row) { String task12 = (String) dataByTaskMinMax[row][0]; @@ -3775,6 +3810,10 @@ public class DependencyGraphTranslator extends SwingWorker { return dataByTaskR.get(row); } + public List<SimulationTransaction> getMandatoryOptionalSimTTaks(int row) { + return mandatoryOptionalSimT.get(row); + } + public Vector<SimulationTransaction> getMinMaxTasksByRowTainted(int row) { int maxStartTime = (int) dataByTaskMinMax[row][1]; int maxEndTime = (int) dataByTaskMinMax[row][3]; @@ -4142,18 +4181,26 @@ public class DependencyGraphTranslator extends SwingWorker { } // import graph in .graphml format - public void importGraph(String filename) throws ExportException, IOException, ImportException { + public Graph<Vertex, DefaultEdge> importGraph(String filename) throws IOException { FileReader ps = new FileReader(filename + ".graphml"); + Graph<Vertex, DefaultEdge> importedG = new DefaultDirectedGraph<>(DefaultEdge.class); + GraphMLImporter<Vertex, DefaultEdge> importer; // gmlExporter.exportGraph(g, PS); // FileWriter PS2 = new FileWriter(filename + "test.graphml"); - VertexProvider<String> vertexProvider = (id, attributes) -> { - String cv = new String(id); - return cv; + VertexProvider<Vertex> vertexProvider = (id, attributes) -> { + Vertex v = new Vertex(id, 0); + return v; }; - EdgeProvider<String, DefaultEdge> edgeProvider = (from, to, label, attributes) -> new DefaultEdge(); - GraphMLImporter<String, DefaultEdge> importer = new GraphMLImporter<String, DefaultEdge>(vertexProvider, edgeProvider); - Graph<String, DefaultEdge> importedGraph = null; - importer.importGraph(importedGraph, ps); + EdgeProvider<Vertex, DefaultEdge> edgeProvider = (from, to, label, attributes) -> new DefaultEdge(); + importer = new GraphMLImporter<Vertex, DefaultEdge>(vertexProvider, edgeProvider); + try { + + importer.importGraph(importedG, ps); + } catch (ImportException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + return importedG; } public HashMap<String, String> getNameIDTaskList() { @@ -4347,4 +4394,31 @@ public class DependencyGraphTranslator extends SwingWorker { public DependencyGraphRelations getDependencyGraphRelations() { return dependencyGraphRelations; } + + public boolean compareWithImported(String filename) { + try { + Graph<Vertex, DefaultEdge> importedGraph = importGraph(filename); + for (Vertex vg : g.vertexSet()) { + if (!importedGraph.vertexSet().contains(vg)) { + return false; + } + } + for (DefaultEdge vg : g.edgeSet()) { + if (!importedGraph.edgeSet().toString().contains(vg.toString())) { + return false; + } + } + if (g.vertexSet().size() != importedGraph.vertexSet().size()) { + return false; + } + if (g.edgeSet().size() != importedGraph.edgeSet().size()) { + return false; + } + } catch (IOException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + return true; + + } } \ No newline at end of file diff --git a/src/main/java/tmltranslator/simulation/PlanArrays.java b/src/main/java/tmltranslator/simulation/PlanArrays.java index b16153a7884ef3c6502d80e0a0f3f5e10f7c23c3..06f99061630bb74af01cfc0ebbb4630ad9ac3f0b 100644 --- a/src/main/java/tmltranslator/simulation/PlanArrays.java +++ b/src/main/java/tmltranslator/simulation/PlanArrays.java @@ -10,6 +10,7 @@ public class PlanArrays { private List<String> onPathBehavior = new ArrayList<String>(); private List<String> offPathBehavior = new ArrayList<String>(); private List<String> offPathBehaviorCausingDelay = new ArrayList<String>(); + private List<String> mandatoryOptional = new ArrayList<String>(); private static final String ZERO = "0"; private static final String DEVICE_NAME = "Device Name"; private String[] columnNames; @@ -38,6 +39,23 @@ public class PlanArrays { deviceNames1.add(deviceNameandcore); } } + for (SimulationTransaction st : dgraph.getMandatoryOptionalSimTTaks(row)) { + if (st.coreNumber == null) { + st.coreNumber = ZERO; + } + tmpEnd = Integer.parseInt(st.endTime); + if (tmpEnd > maxTime) { + maxTime = tmpEnd; + } + tmpStart = Integer.parseInt(st.startTime); + if (tmpStart < minTime) { + minTime = tmpStart; + } + String deviceNameandcore = st.deviceName + "_" + st.coreNumber; + if (!deviceNames1.contains(deviceNameandcore)) { + deviceNames1.add(deviceNameandcore); + } + } for (SimulationTransaction st : dgraph.getRowDetailsByHW(row)) { tmpEnd = Integer.parseInt(st.endTime); if (st.coreNumber == null) { @@ -85,6 +103,26 @@ public class PlanArrays { } } } + for (SimulationTransaction st : dgraph.getMandatoryOptionalSimTTaks(row)) { + if (st.coreNumber == null) { + st.coreNumber = ZERO; + } + for (String dName : deviceNames1) { + String deviceNameandcore = st.deviceName + "_" + st.coreNumber; + if (deviceNameandcore.equals(dName)) { + length = Integer.parseInt(st.length); + for (int i = 0; i < length; i++) { + int columnnmber = Integer.parseInt(st.endTime) - minTime - i; + dataDetailedByTask[deviceNames1.indexOf(dName)][columnnmber] = dgraph.getNameIDTaskList().get(st.id); + ; + mandatoryOptional.add(dgraph.getNameIDTaskList().get(st.id) + columnNames[columnnmber]); + // if (!dgraph.getOnPath().contains(st)) { + // dgraph.getOnPath().add(st); + // } + } + } + } + } HashMap<String, ArrayList<ArrayList<Integer>>> delayTime = dgraph.getRowDelayDetailsByHW(row); for (SimulationTransaction st : dgraph.getRowDetailsByHW(row)) { int startTime = Integer.valueOf(st.startTime); @@ -308,4 +346,9 @@ public class PlanArrays { public String[] getColumnNames() { return columnNames; } + + public List<String> getMandatoryOptional() { + return mandatoryOptional; + } + } diff --git a/src/main/java/ui/simulationtraceanalysis/JFrameLatencyComparedDetailedPopup.java b/src/main/java/ui/simulationtraceanalysis/JFrameLatencyComparedDetailedPopup.java index 05e6f2cf214fb6e454355e1b93a400146152c554..91a9834ffb722664e39054f6b7254cd2e3590e49 100644 --- a/src/main/java/ui/simulationtraceanalysis/JFrameLatencyComparedDetailedPopup.java +++ b/src/main/java/ui/simulationtraceanalysis/JFrameLatencyComparedDetailedPopup.java @@ -560,7 +560,7 @@ public class JFrameLatencyComparedDetailedPopup extends JFrame implements TableM table.setFillsViewportHeight(true); table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); table.setAutoCreateRowSorter(true); - TableRenderer tr = new TableRenderer(onPathBehavior, offPathBehaviorCausingDelay, offPathBehavior); + TableRenderer tr = new TableRenderer(onPathBehavior, offPathBehaviorCausingDelay, offPathBehavior,offPathBehavior); int ncols = table.getColumnCount(); table.getModel().addTableModelListener(this); TableColumnModel tcm = table.getColumnModel(); diff --git a/src/main/java/ui/simulationtraceanalysis/JFrameLatencyDetailedAnalysis.java b/src/main/java/ui/simulationtraceanalysis/JFrameLatencyDetailedAnalysis.java index 1e8d5948c88c486e7e3d6f1ca502a9777aadee36..58633d849e9c692947099a1a56d3319d7a6b6e0d 100644 --- a/src/main/java/ui/simulationtraceanalysis/JFrameLatencyDetailedAnalysis.java +++ b/src/main/java/ui/simulationtraceanalysis/JFrameLatencyDetailedAnalysis.java @@ -511,6 +511,7 @@ public class JFrameLatencyDetailedAnalysis extends JFrame implements ActionListe protected void generateDirectedGraph(TMLMapping<TGComponent> tmap, List<TMLComponentDesignPanel> cpanels) { try { dgraph = new DependencyGraphTranslator(tmap); + tc.setDgraph(dgraph); pbar.setMaximum(dgraph.getNodeNbProgressBar()); pbar.setMinimum(0); dgraph.addPropertyChangeListener(new PropertyChangeListener() { diff --git a/src/main/java/ui/simulationtraceanalysis/JFrameLatencyDetailedPopup.java b/src/main/java/ui/simulationtraceanalysis/JFrameLatencyDetailedPopup.java index 3cda41c3b4b6931fced3fd5935df20f71db3684b..5433179ad8483d5937b6bd1abde120d61a536e0d 100644 --- a/src/main/java/ui/simulationtraceanalysis/JFrameLatencyDetailedPopup.java +++ b/src/main/java/ui/simulationtraceanalysis/JFrameLatencyDetailedPopup.java @@ -229,7 +229,7 @@ public class JFrameLatencyDetailedPopup extends JFrame implements TableModelList table.setFillsViewportHeight(true); table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); table.setAutoCreateRowSorter(true); - TableRenderer tr = new TableRenderer(arrays.getOnPathBehavior(), arrays.getOffPathBehaviorCausingDelay(), arrays.getOffPathBehavior()); + TableRenderer tr = new TableRenderer(arrays.getOnPathBehavior(), arrays.getOffPathBehaviorCausingDelay(), arrays.getOffPathBehavior(),arrays.getMandatoryOptional()); int ncols = table.getColumnCount(); table.getModel().addTableModelListener(this); TableColumnModel tcm = table.getColumnModel(); diff --git a/src/main/java/ui/simulationtraceanalysis/LatencyAnalysisParallelAlgorithms.java b/src/main/java/ui/simulationtraceanalysis/LatencyAnalysisParallelAlgorithms.java index e59cb0cdcc849367112741a11a0e1ff83bc23fcb..7018f4cbc31578154008f3bda2466c1b10806ece 100644 --- a/src/main/java/ui/simulationtraceanalysis/LatencyAnalysisParallelAlgorithms.java +++ b/src/main/java/ui/simulationtraceanalysis/LatencyAnalysisParallelAlgorithms.java @@ -25,7 +25,7 @@ public class LatencyAnalysisParallelAlgorithms implements Runnable { private List<TMLComponentDesignPanel> cpanels; private DependencyGraphTranslator dgraph, dgraph1, dgraph2; private int row, row1, row2, row3, row4, selectedIndex; - private Object[][] dataDetailedByTask, dataDetailedByTask2; + private Object[][] dataDetailedByTask, dataDetailedByTask2, dataMandatoryOptional; private LatencyDetailedAnalysisMain main; private MainGUI mainGUI; private SimulationTrace selectedST; @@ -45,6 +45,7 @@ public class LatencyAnalysisParallelAlgorithms implements Runnable { jFrameLDA.generateDirectedGraph(tmap, cpanels); } else if (algorithmId == 2) { dataDetailedByTask = dgraph.getTaskByRowDetails(row); + dataMandatoryOptional = dgraph.getMandatoryOptionalByRow(row); } else if (algorithmId == 3) { dataDetailedByTask = dgraph.getTaskByRowDetailsMinMaxTaint(row); } else if (algorithmId == 4) { @@ -222,6 +223,10 @@ public class LatencyAnalysisParallelAlgorithms implements Runnable { this.dgraph1 = dgraph1; } + public Object[][] getDataMandatoryOptional() { + return dataMandatoryOptional; + } + public void latencyDetailedAnalysis(JFrameCompareLatencyDetail jFrameCompareLatencyDetail, String task12, String task22, String task32, String task42, Vector<SimulationTransaction> transFile12, Vector<SimulationTransaction> transFile22) { cld = jFrameCompareLatencyDetail; diff --git a/src/main/java/ui/simulationtraceanalysis/TableRenderer.java b/src/main/java/ui/simulationtraceanalysis/TableRenderer.java index 407d06889bfa76f62fd3e4a9aec94ef3ac0e4d04..9168a3728012fc06ad9c59b1f39a70c67d4383ff 100644 --- a/src/main/java/ui/simulationtraceanalysis/TableRenderer.java +++ b/src/main/java/ui/simulationtraceanalysis/TableRenderer.java @@ -17,14 +17,16 @@ class TableRenderer extends DefaultTableCellRenderer { private List<String> onPathBehaviors = new Vector<String>(); private List<String> offPathBehaviors = new Vector<String>(); private List<String> offPathBehaviorCausingDelay = new Vector<String>(); + private List<String> mandatoryOptionalByRow = new Vector<String>(); - public TableRenderer(List<String> onPathBehavior, List<String> offPathBehaviorCausingDelay, List<String> offPathBehavior) { + public TableRenderer(List<String> onPathBehavior, List<String> offPathBehaviorCausingDelay, List<String> offPathBehavior,List<String> mandatoryOptionalByRow) { this.onPathBehaviors = new Vector<String>(); this.offPathBehaviorCausingDelay = new Vector<String>(); this.offPathBehaviors = new Vector<String>(); this.onPathBehaviors = onPathBehavior; this.offPathBehaviorCausingDelay = offPathBehaviorCausingDelay; this.offPathBehaviors = offPathBehavior; + this.mandatoryOptionalByRow=mandatoryOptionalByRow; } public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) { @@ -45,6 +47,10 @@ class TableRenderer extends DefaultTableCellRenderer { randomColour = Color.orange; // randomColour = Color.red; } + else if (mandatoryOptionalByRow.contains(value.toString() + table.getColumnName(column))) { + randomColour = Color.LIGHT_GRAY; + // randomColour = Color.red; + } } else { this.colorCell = false; } diff --git a/ttool/src/test/java/ui/ComparisonOfsimulationTracesInXML/ComparisonOfSimulationTracesTest.java b/ttool/src/test/java/ui/comparisonofsimulationtraces/ComparisonOfSimulationTracesTest.java similarity index 60% rename from ttool/src/test/java/ui/ComparisonOfsimulationTracesInXML/ComparisonOfSimulationTracesTest.java rename to ttool/src/test/java/ui/comparisonofsimulationtraces/ComparisonOfSimulationTracesTest.java index 72661a360a1c3f8613dc5be55b13037c6de04b70..8e3ec6ccef3ee93fd57a7ee191b08bceb4195463 100644 --- a/ttool/src/test/java/ui/ComparisonOfsimulationTracesInXML/ComparisonOfSimulationTracesTest.java +++ b/ttool/src/test/java/ui/comparisonofsimulationtraces/ComparisonOfSimulationTracesTest.java @@ -1,4 +1,4 @@ -package ui.ComparisonOfsimulationTracesInXML; +package ui.comparisonofsimulationtraces; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertTrue; @@ -17,25 +17,17 @@ import ui.SimulationTrace; import ui.interactivesimulation.JFrameShowLatencyDetails; import ui.simulationtraceanalysis.JFrameCompareSimulationTraces; - public class ComparisonOfSimulationTracesTest extends AbstractUITest { - protected static SimulationTrace selectedST1; - protected static SimulationTrace selectedST2; - protected static String STfilePath1; - protected static String STfilePath2; - private static JFrameCompareSimulationTraces cSimTrace; - private static CompareSimulationTrace newContentPane; - private static JFrameShowLatencyDetails showLatencyDetails; private static final String PATH1 = "/ui/xmlCompare/input/simple.xml"; private static final String PATH2 = "/ui/xmlCompare/input/simplifiedWithSecurity.xml"; + private static String STfilePath1 = getBaseResourcesDir() + PATH1; + private static String STfilePath2 = getBaseResourcesDir() + PATH2; - @BeforeClass - public static void setUpBeforeClass() throws Exception { - STfilePath1 = getBaseResourcesDir() + PATH1; - STfilePath2 = getBaseResourcesDir() + PATH2; - selectedST1 = new SimulationTrace("simple.xml", 6, STfilePath1); - selectedST2 = new SimulationTrace("simplifiedWithSecurity.xml", 6, STfilePath2); - } + private JFrameCompareSimulationTraces cSimTrace; + private CompareSimulationTrace newContentPane; + private JFrameShowLatencyDetails showLatencyDetails; + private SimulationTrace selectedST1 = new SimulationTrace("", 6, STfilePath1); + private SimulationTrace selectedST2 = new SimulationTrace("", 6, STfilePath2); @Test public void loadTest() { @@ -45,15 +37,11 @@ public class ComparisonOfSimulationTracesTest extends AbstractUITest { @Test public void parseXMLTest() throws SAXException, IOException, ParserConfigurationException { - cSimTrace = new JFrameCompareSimulationTraces(mainGUI, "Compare Simulation simulation", selectedST1, false); + cSimTrace = new JFrameCompareSimulationTraces(mainGUI, "", selectedST1, false); cSimTrace.setVisible(false); cSimTrace.parseXML(STfilePath1, STfilePath2); assertNotNull(cSimTrace.getTransFile1()); assertNotNull(cSimTrace.getTransFile2()); - } - - @Test - public void diffTest() throws SAXException, IOException, ParserConfigurationException { newContentPane = new CompareSimulationTrace(); newContentPane.JPanelCompareXmlGraph(cSimTrace.getTransFile1(), cSimTrace.getTransFile2()); assertTrue(newContentPane.getTable().getRowCount() > 0); diff --git a/ttool/src/test/java/ui/GraphLatencyAnalysis/CompareLatencyInSimulationTracesTest.java b/ttool/src/test/java/ui/graphlatencyanalysis/CompareLatencyInSimulationTracesTest.java similarity index 85% rename from ttool/src/test/java/ui/GraphLatencyAnalysis/CompareLatencyInSimulationTracesTest.java rename to ttool/src/test/java/ui/graphlatencyanalysis/CompareLatencyInSimulationTracesTest.java index 14718c4732c7b96dbe6df2ea689a21462ab31d87..78cd58bcf71d3eb9a25cd80e4206af9b479fbf26 100644 --- a/ttool/src/test/java/ui/GraphLatencyAnalysis/CompareLatencyInSimulationTracesTest.java +++ b/ttool/src/test/java/ui/graphlatencyanalysis/CompareLatencyInSimulationTracesTest.java @@ -1,4 +1,4 @@ -package ui.GraphLatencyAnalysis; +package ui.graphlatencyanalysis; import static org.junit.Assert.assertTrue; @@ -27,18 +27,19 @@ import ui.simulationtraceanalysis.LatencyDetailedAnalysisMain; public class CompareLatencyInSimulationTracesTest extends AbstractUITest { private static final String INPUT_PATH = "/ui/graphLatencyAnalysis/input"; - private static final String simulationTracePathFile1 = INPUT_PATH + "/graphTestSimulationTrace.xml"; - private static final String simulationTracePathFile2 = INPUT_PATH + "/testFunc.xml"; - private static final String modelPath = INPUT_PATH + "/GraphTestModel.xml"; - private static final String mappingDiagName = "Architecture2"; + private static final String SIMULATIONTRACEPATHFILE1 = INPUT_PATH + "/graphTestSimulationTrace.xml"; + private static final String SIMULATIONTRACEPATHFILE2 = INPUT_PATH + "/testFunc.xml"; + private static final String MODELPATH = INPUT_PATH + "/GraphTestModel.xml"; + private static final String MAPPINGDIAGNAME = "Architecture2"; + private static final int OPERATOR1ID = 44; + private static final int OPERATOR2ID = 26; + private static final int OPERATOR3ID = 40; + private static final int OPERATOR4ID = 28; + private Vector<String> checkedTransactionsFile1 = new Vector<String>(); private Vector<String> checkedTransactionsFile2 = new Vector<String>(); - private static final int operator1ID = 44; - private static final int operator2ID = 26; - private static final int operator3ID = 40; - private static final int operator4ID = 28; private DependencyGraphTranslator dgraph1, dgraph2; - private static String task1, task2, task3, task4; + private String task1, task2, task3, task4; private JFrameCompareLatencyDetail cld; private LatencyDetailedAnalysisMain LatencyDetailedAnalysisMain; private JFrameLatencyDetailedAnalysis jFrameLatencyDetailedAnalysis; @@ -49,7 +50,7 @@ public class CompareLatencyInSimulationTracesTest extends AbstractUITest { private HashMap<String, Integer> checkedT1 = new HashMap<String, Integer>(); private HashMap<String, Integer> checkedT2 = new HashMap<String, Integer>(); // protected MainGUI mainGUI1 = null; - private static Object[][] dataDetailedByTask, dataDetailedByTask2, dataHWDelayByTask, dataHWDelayByTask2; + private Object[][] dataDetailedByTask, dataDetailedByTask2, dataHWDelayByTask, dataHWDelayByTask2; public CompareLatencyInSimulationTracesTest() { super(); @@ -58,9 +59,9 @@ public class CompareLatencyInSimulationTracesTest extends AbstractUITest { @Before public void GraphLatencyAnalysis() throws XPathExpressionException, ParserConfigurationException, SAXException, IOException, InterruptedException { - mainGUI.openProjectFromFile(new File(getBaseResourcesDir() + modelPath)); - final TMLArchiPanel panel = findArchiPanel(mappingDiagName); - simT1 = new SimulationTrace("graphTestSimulationTrace", 6, (getBaseResourcesDir() + simulationTracePathFile1)); + mainGUI.openProjectFromFile(new File(getBaseResourcesDir() + MODELPATH)); + final TMLArchiPanel panel = findArchiPanel(MAPPINGDIAGNAME); + simT1 = new SimulationTrace("", 6, (getBaseResourcesDir() + SIMULATIONTRACEPATHFILE1)); LatencyDetailedAnalysisMain = new LatencyDetailedAnalysisMain(3, mainGUI, simT1, false, false, 3); LatencyDetailedAnalysisMain.setCheckedTransactionsFile(new Vector<String>()); try { @@ -75,7 +76,6 @@ public class CompareLatencyInSimulationTracesTest extends AbstractUITest { cld.setVisible(false); } } catch (XPathExpressionException | ParserConfigurationException | SAXException | IOException e) { - // TODO Auto-generated catch block e.printStackTrace(); } LatencyDetailedAnalysisMain.getTc().getT().join(); @@ -85,7 +85,7 @@ public class CompareLatencyInSimulationTracesTest extends AbstractUITest { checkedT1 = LatencyDetailedAnalysisMain.getCheckedT1(); cld.setDgraph(null); LatencyDetailedAnalysisMain.setCheckedTransactionsFile(new Vector<String>()); - simT2 = new SimulationTrace("graphTestSimulationTrace", 6, (getBaseResourcesDir() + simulationTracePathFile2)); + simT2 = new SimulationTrace("", 6, (getBaseResourcesDir() + SIMULATIONTRACEPATHFILE2)); try { LatencyDetailedAnalysisMain.latencyDetailedAnalysisForXML(mainGUI, simT2, false, true, 1); } catch (XPathExpressionException | ParserConfigurationException | SAXException | IOException e) { @@ -110,18 +110,18 @@ public class CompareLatencyInSimulationTracesTest extends AbstractUITest { for (Entry<String, Integer> cT : checkedT1.entrySet()) { int id = cT.getValue(); String taskName = cT.getKey(); - if (id == operator1ID) { + if (id == OPERATOR1ID) { task1 = taskName; - } else if (id == operator2ID) { + } else if (id == OPERATOR2ID) { task2 = taskName; } } for (Entry<String, Integer> cT : checkedT2.entrySet()) { int id = cT.getValue(); String taskName = cT.getKey(); - if (id == operator3ID) { + if (id == OPERATOR3ID) { task3 = taskName; - } else if (id == operator4ID) { + } else if (id == OPERATOR4ID) { task4 = taskName; } } diff --git a/ttool/src/test/java/ui/GraphLatencyAnalysis/GraphLatencyAnalysisTest.java b/ttool/src/test/java/ui/graphlatencyanalysis/GraphLatencyAnalysisTest.java similarity index 91% rename from ttool/src/test/java/ui/GraphLatencyAnalysis/GraphLatencyAnalysisTest.java rename to ttool/src/test/java/ui/graphlatencyanalysis/GraphLatencyAnalysisTest.java index 52ea83df8e169c36c9fb6c9acc1216cb47d781c2..1471c6c1a4511a7dbce164d3afe081c9691f5d3a 100644 --- a/ttool/src/test/java/ui/GraphLatencyAnalysis/GraphLatencyAnalysisTest.java +++ b/ttool/src/test/java/ui/graphlatencyanalysis/GraphLatencyAnalysisTest.java @@ -1,4 +1,4 @@ -package ui.GraphLatencyAnalysis; +package ui.graphlatencyanalysis; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertTrue; @@ -24,15 +24,15 @@ public class GraphLatencyAnalysisTest extends AbstractUITest { private static final String SIMULATIONTRACE_PATH = INPUT_PATH + "/graphTestSimulationTrace.xml"; private static final String modelPath = INPUT_PATH + "/GraphTestModel.xml"; private static final String mappingDiagName = "Architecture2"; - private Vector<SimulationTransaction> transFile1; - // private Vector<String> dropDown; - private HashMap<String, Integer> checkedDropDown = new HashMap<String, Integer>(); private static final int OPERATOR1_ID = 44; private static final int OPERATOR2_ID = 26; - private static String task1; - private static String task2; - private static DependencyGraphTranslator dgt; - private static Object[][] allLatencies, minMaxArray, taskHWByRowDetails, detailedLatency; + + private Vector<SimulationTransaction> transFile1; + private HashMap<String, Integer> checkedDropDown = new HashMap<String, Integer>(); + private String task1; + private String task2; + private DependencyGraphTranslator dgt; + private Object[][] allLatencies, minMaxArray, taskHWByRowDetails, detailedLatency; private JFrameLatencyDetailedAnalysis latencyDetailedAnalysis; private LatencyDetailedAnalysisMain LatencyDetailedAnalysisMain; @@ -47,7 +47,7 @@ public class GraphLatencyAnalysisTest extends AbstractUITest { System.out.println("Non NULL Panel"); } mainGUI.checkModelingSyntax(panel, true); - SimulationTrace file2 = new SimulationTrace("graphTestSimulationTrace", 6, SIMULATIONTRACE_PATH); + SimulationTrace file2 = new SimulationTrace("", 6, SIMULATIONTRACE_PATH); LatencyDetailedAnalysisMain = new LatencyDetailedAnalysisMain(3, mainGUI, file2, false, false, 3); LatencyDetailedAnalysisMain.getTc().setMainGUI(mainGUI); LatencyDetailedAnalysisMain.latencyDetailedAnalysis(file2, panel, false, false, mainGUI); diff --git a/ttool/src/test/java/ui/GraphLatencyAnalysis/NestedStructurePLANTest.java b/ttool/src/test/java/ui/graphlatencyanalysis/NestedStructurePLANTest.java similarity index 51% rename from ttool/src/test/java/ui/GraphLatencyAnalysis/NestedStructurePLANTest.java rename to ttool/src/test/java/ui/graphlatencyanalysis/NestedStructurePLANTest.java index e07f24de35f2c699a6b918188e65da97185e7391..383e044cc1d4c5230019a44cc76dc677065fc09e 100644 --- a/ttool/src/test/java/ui/GraphLatencyAnalysis/NestedStructurePLANTest.java +++ b/ttool/src/test/java/ui/graphlatencyanalysis/NestedStructurePLANTest.java @@ -1,4 +1,4 @@ -package ui.GraphLatencyAnalysis; +package ui.graphlatencyanalysis; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertNotNull; @@ -6,6 +6,7 @@ import static org.junit.Assert.assertTrue; import java.awt.*; import java.io.File; +import java.io.IOException; import java.util.HashMap; import java.util.Map.Entry; import java.util.Vector; @@ -13,8 +14,10 @@ import java.util.Vector; import org.junit.Before; import org.junit.Test; +import myutil.TraceManager; import tmltranslator.simulation.DependencyGraphTranslator; import tmltranslator.simulation.SimulationTransaction; +import tmltranslator.simulation.Vertex; import ui.AbstractUITest; import ui.SimulationTrace; import ui.TMLArchiPanel; @@ -23,38 +26,33 @@ import ui.simulationtraceanalysis.LatencyDetailedAnalysisMain; public class NestedStructurePLANTest extends AbstractUITest { - private static final int[] EXIST_EDGE = {66, 65, - 66,63, - 64, 63}; - - private static final String mapping_Diag_Name = "Architecture"; + private static final String MAPPING_DIAG_NAME = "Architecture"; private static final String INPUT_PATH = "/ui/graphLatencyAnalysis/input"; private static final String SIMULATIONTRACE_PATH_FILE = INPUT_PATH + "/loopseqTrace.xml"; private static final String MODEL_PATH = INPUT_PATH + "/loopseqgraph.xml"; - + private static final int OPERATOR1_ID = 69; + private static final int OPERATOR2_ID = 53; + private static final String GRAPH = INPUT_PATH + "/seqGraph1"; private LatencyDetailedAnalysisMain LatencyDetailedAnalysisMain; private JFrameLatencyDetailedAnalysis latencyDetailedAnalysis; - private static DependencyGraphTranslator dgt; + private DependencyGraphTranslator dgt; private Vector<SimulationTransaction> transFile1; private HashMap<String, Integer> checkedDropDown = new HashMap<String, Integer>(); - private static final int OPERATOR1_ID = 69; - private static final int OPERATOR2_ID = 53; - private static String task1; - private static String task2; - private static Object[][] allLatencies; + private String task1; + private String task2; + private Object[][] allLatencies; @Before public void NestedStructurePLAN() throws InterruptedException { mainGUI.openProjectFromFile(new File(getBaseResourcesDir() + MODEL_PATH)); - // mainGUI.openProjectFromFile(new File(modelPath)); - final TMLArchiPanel panel = findArchiPanel(mapping_Diag_Name); + final TMLArchiPanel panel = findArchiPanel(MAPPING_DIAG_NAME); if (panel == null) { System.out.println("NULL Panel"); } else { System.out.println("Non NULL Panel"); } mainGUI.checkModelingSyntax(panel, true); - SimulationTrace file2 = new SimulationTrace("graphTestSimulationTrace", 6, SIMULATIONTRACE_PATH_FILE); + SimulationTrace file2 = new SimulationTrace("", 6, SIMULATIONTRACE_PATH_FILE); LatencyDetailedAnalysisMain = new LatencyDetailedAnalysisMain(3, mainGUI, file2, false, false, 3); LatencyDetailedAnalysisMain.getTc().setMainGUI(mainGUI); LatencyDetailedAnalysisMain.latencyDetailedAnalysis(file2, panel, false, false, mainGUI); @@ -65,10 +63,8 @@ public class NestedStructurePLANTest extends AbstractUITest { try { latencyDetailedAnalysis.getT().join(); } catch (InterruptedException e) { - // TODO Auto-generated catch block e.printStackTrace(); } - dgt = latencyDetailedAnalysis.getDgraph(); } } @@ -77,72 +73,8 @@ public class NestedStructurePLANTest extends AbstractUITest { public void parseFile() { assertNotNull(latencyDetailedAnalysis); int graphsize = dgt.getGraphsize(); - System.out.println("Graphsize=" + graphsize); assertTrue(graphsize >= 57); - - // test sequence to all its nexts - - for(int i=0; i<EXIST_EDGE.length-1; i = i + 2) { - assertTrue(dgt.edgeExists(EXIST_EDGE[i], EXIST_EDGE[i+1])); - } - - /*assertTrue(dgt.edgeExists(66, 65)); - assertTrue(dgt.edgeExists(66, 63)); - // test sequence branch to another - assertTrue(dgt.edgeExists(64, 63));*/ - - - - - assertTrue(dgt.edgeExists(63, 62)); - // test ordered sequence - assertTrue(dgt.edgeExists(62, 61)); - assertTrue(dgt.edgeExists(62, 60)); - // test nested sequence to unordered sequence - assertTrue(dgt.edgeExists(57, 60)); - assertTrue(dgt.edgeExists(68, 60)); - // test unordered sequence nexts - assertTrue(dgt.edgeExists(61, 67)); - assertTrue(dgt.edgeExists(61, 58)); - assertTrue(dgt.edgeExists(68, 58)); - assertTrue(dgt.edgeExists(57, 67)); - // test ordered sequence nexts - assertTrue(dgt.edgeExists(26, 25)); - assertTrue(dgt.edgeExists(26, 21)); - assertTrue(dgt.edgeExists(26, 23)); - // test ordered sequence ends - assertTrue(dgt.edgeExists(24, 21)); - // nested seq loop - assertTrue(dgt.edgeExists(27, 23)); - assertTrue(dgt.edgeExists(30, 36)); - assertTrue(dgt.edgeExists(29, 36)); - // inside loop only connected to loop vertex - assertFalse(dgt.edgeExists(30, 22)); - assertFalse(dgt.edgeExists(29, 22)); - // sequence last branch end not connected to other branches - assertFalse(dgt.edgeExists(22, 25)); - assertFalse(dgt.edgeExists(22, 21)); - // sequence branches not connected backward - assertFalse(dgt.edgeExists(27, 25)); - // loop for ever edges+ nested loops and seq - assertTrue(dgt.edgeExists(44, 49)); - assertTrue(dgt.edgeExists(44, 51)); - assertTrue(dgt.edgeExists(44, 53)); - assertTrue(dgt.edgeExists(43, 42)); - assertTrue(dgt.edgeExists(43, 41)); - assertTrue(dgt.edgeExists(45, 41)); - assertTrue(dgt.edgeExists(40, 49)); - assertTrue(dgt.edgeExists(48, 54)); - assertTrue(dgt.edgeExists(48, 51)); - assertTrue(dgt.edgeExists(48, 53)); - assertTrue(dgt.edgeExists(50, 49)); - assertTrue(dgt.edgeExists(50, 53)); - assertTrue(dgt.edgeExists(50, 54)); - assertTrue(dgt.edgeExists(52, 51)); - assertTrue(dgt.edgeExists(52, 49)); - assertTrue(dgt.edgeExists(52, 54)); - assertFalse(dgt.edgeExists(40, 54)); - assertFalse(dgt.edgeExists(40, 42)); + assertTrue(dgt.compareWithImported(GRAPH)); transFile1 = LatencyDetailedAnalysisMain.getLatencyDetailedAnalysis().parseFile(new File(getBaseResourcesDir() + SIMULATIONTRACE_PATH_FILE)); assertTrue(transFile1.size() == 38); checkedDropDown = latencyDetailedAnalysis.getCheckedT(); diff --git a/ttool/src/test/resources/ui/graphLatencyAnalysis/input/seqGraph1.graphml b/ttool/src/test/resources/ui/graphLatencyAnalysis/input/seqGraph1.graphml new file mode 100644 index 0000000000000000000000000000000000000000..c81cd9696aba7013458041edff5783bacf6bcdb1 --- /dev/null +++ b/ttool/src/test/resources/ui/graphLatencyAnalysis/input/seqGraph1.graphml @@ -0,0 +1,429 @@ +<?xml version="1.0" encoding="UTF-8"?><graphml xmlns="http://graphml.graphdrawing.org/xmlns" xsi:schemaLocation="http://graphml.graphdrawing.org/xmlns http://graphml.graphdrawing.org/xmlns/1.0/graphml.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> +<key id="vertex_label_key" for="node" attr.name="VertexLabel" attr.type="string"/> +<key id="edge_label_key" for="edge" attr.name="EdgeLabel" attr.type="string"/> +<graph edgedefault="directed"> +<node id="Bus0"> +<data key="vertex_label_key">Bus0</data> +</node> +<node id="Memory0"> +<data key="vertex_label_key">Memory0</data> +</node> +<node id="f__dataC__13"> +<data key="vertex_label_key">f__dataC__13</data> +</node> +<node id="f__data__16"> +<data key="vertex_label_key">f__data__16</data> +</node> +<node id="CPU_R"> +<data key="vertex_label_key">CPU_R</data> +</node> +<node id="f__rez"> +<data key="vertex_label_key">f__rez</data> +</node> +<node id="f__rez__start__39"> +<data key="vertex_label_key">f__rez__start__39</data> +</node> +<node id="f__rez__infiniteloop__54"> +<data key="vertex_label_key">f__rez__infiniteloop__54</data> +</node> +<node id="f__rez__rseq__44"> +<data key="vertex_label_key">f__rez__rseq__44</data> +</node> +<node id="f__rez__readchannel__53"> +<data key="vertex_label_key">f__rez__readchannel__53</data> +</node> +<node id="f__rez__stopstate__52"> +<data key="vertex_label_key">f__rez__stopstate__52</data> +</node> +<node id="f__rez__execc__51"> +<data key="vertex_label_key">f__rez__execc__51</data> +</node> +<node id="f__rez__stopstate__50"> +<data key="vertex_label_key">f__rez__stopstate__50</data> +</node> +<node id="f__rez__loop__49"> +<data key="vertex_label_key">f__rez__loop__49</data> +</node> +<node id="f__rez__execi__46"> +<data key="vertex_label_key">f__rez__execi__46</data> +</node> +<node id="f__rez__seq__43"> +<data key="vertex_label_key">f__rez__seq__43</data> +</node> +<node id="f__rez__d-delay__47"> +<data key="vertex_label_key">f__rez__d-delay__47</data> +</node> +<node id="f__rez__stopstate__48"> +<data key="vertex_label_key">f__rez__stopstate__48</data> +</node> +<node id="f__rez__execi__42"> +<data key="vertex_label_key">f__rez__execi__42</data> +</node> +<node id="f__rez__stopstate__45"> +<data key="vertex_label_key">f__rez__stopstate__45</data> +</node> +<node id="f__rez__execc__41"> +<data key="vertex_label_key">f__rez__execc__41</data> +</node> +<node id="f__rez__stopstate__40"> +<data key="vertex_label_key">f__rez__stopstate__40</data> +</node> +<node id="f__app"> +<data key="vertex_label_key">f__app</data> +</node> +<node id="f__app__start__20"> +<data key="vertex_label_key">f__app__start__20</data> +</node> +<node id="f__app__Waitevent:f__sendData__f__sendData__38"> +<data key="vertex_label_key">f__app__Waitevent:f__sendData__f__sendData__38</data> +</node> +<node id="f__app__readchannel__37"> +<data key="vertex_label_key">f__app__readchannel__37</data> +</node> +<node id="f__app__seq__26"> +<data key="vertex_label_key">f__app__seq__26</data> +</node> +<node id="f__app__execi__25"> +<data key="vertex_label_key">f__app__execi__25</data> +</node> +<node id="f__app__stopstate__24"> +<data key="vertex_label_key">f__app__stopstate__24</data> +</node> +<node id="f__app__execi__21"> +<data key="vertex_label_key">f__app__execi__21</data> +</node> +<node id="f__app__loop__0__36"> +<data key="vertex_label_key">f__app__loop__0__36</data> +</node> +<node id="f__app__execi__23"> +<data key="vertex_label_key">f__app__execi__23</data> +</node> +<node id="f__app__stopstate__22"> +<data key="vertex_label_key">f__app__stopstate__22</data> +</node> +<node id="f__app__action__33"> +<data key="vertex_label_key">f__app__action__33</data> +</node> +<node id="f__app__choice__34"> +<data key="vertex_label_key">f__app__choice__34</data> +</node> +<node id="f__app__writechannel__28"> +<data key="vertex_label_key">f__app__writechannel__28</data> +</node> +<node id="f__app__stopstate__27"> +<data key="vertex_label_key">f__app__stopstate__27</data> +</node> +<node id="f__app__execi__32"> +<data key="vertex_label_key">f__app__execi__32</data> +</node> +<node id="f__app__stopstate__30"> +<data key="vertex_label_key">f__app__stopstate__30</data> +</node> +<node id="f__app__execi__31"> +<data key="vertex_label_key">f__app__execi__31</data> +</node> +<node id="f__app__stopstate__29"> +<data key="vertex_label_key">f__app__stopstate__29</data> +</node> +<node id="CPU_S"> +<data key="vertex_label_key">CPU_S</data> +</node> +<node id="f__send"> +<data key="vertex_label_key">f__send</data> +</node> +<node id="f__send__start__56"> +<data key="vertex_label_key">f__send__start__56</data> +</node> +<node id="f__send__seq__66"> +<data key="vertex_label_key">f__send__seq__66</data> +</node> +<node id="f__send__d-delay__65"> +<data key="vertex_label_key">f__send__d-delay__65</data> +</node> +<node id="f__send__stopstate__64"> +<data key="vertex_label_key">f__send__stopstate__64</data> +</node> +<node id="f__send__execi__63"> +<data key="vertex_label_key">f__send__execi__63</data> +</node> +<node id="f__send__seq__62"> +<data key="vertex_label_key">f__send__seq__62</data> +</node> +<node id="f__send__rseq__61"> +<data key="vertex_label_key">f__send__rseq__61</data> +</node> +<node id="f__send__execc__60"> +<data key="vertex_label_key">f__send__execc__60</data> +</node> +<node id="f__send__stopstate__59"> +<data key="vertex_label_key">f__send__stopstate__59</data> +</node> +<node id="f__send__execi__58"> +<data key="vertex_label_key">f__send__execi__58</data> +</node> +<node id="f__send__stopstate__57"> +<data key="vertex_label_key">f__send__stopstate__57</data> +</node> +<node id="f__send__Sendevent:f__sendData__f__sendData__67"> +<data key="vertex_label_key">f__send__Sendevent:f__sendData__f__sendData__67</data> +</node> +<node id="f__send__writechannel__69"> +<data key="vertex_label_key">f__send__writechannel__69</data> +</node> +<node id="f__send__stopstate__68"> +<data key="vertex_label_key">f__send__stopstate__68</data> +</node> +<edge id="Bus0f__dataC__13" source="Bus0" target="f__dataC__13"> +<data key="edge_label_key">1.0</data> +</edge> +<edge id="Bus0f__data__16" source="Bus0" target="f__data__16"> +<data key="edge_label_key">1.0</data> +</edge> +<edge id="CPU_Rf__rez" source="CPU_R" target="f__rez"> +<data key="edge_label_key">1.0</data> +</edge> +<edge id="f__rezf__rez__start__39" source="f__rez" target="f__rez__start__39"> +<data key="edge_label_key">1.0</data> +</edge> +<edge id="f__rez__start__39f__rez__infiniteloop__54" source="f__rez__start__39" target="f__rez__infiniteloop__54"> +<data key="edge_label_key">1.0</data> +</edge> +<edge id="f__rez__infiniteloop__54f__rez__rseq__44" source="f__rez__infiniteloop__54" target="f__rez__rseq__44"> +<data key="edge_label_key">1.0</data> +</edge> +<edge id="f__rez__rseq__44f__rez__readchannel__53" source="f__rez__rseq__44" target="f__rez__readchannel__53"> +<data key="edge_label_key">1.0</data> +</edge> +<edge id="f__rez__readchannel__53f__rez__stopstate__52" source="f__rez__readchannel__53" target="f__rez__stopstate__52"> +<data key="edge_label_key">1.0</data> +</edge> +<edge id="f__rez__rseq__44f__rez__execc__51" source="f__rez__rseq__44" target="f__rez__execc__51"> +<data key="edge_label_key">1.0</data> +</edge> +<edge id="f__rez__execc__51f__rez__stopstate__50" source="f__rez__execc__51" target="f__rez__stopstate__50"> +<data key="edge_label_key">1.0</data> +</edge> +<edge id="f__rez__rseq__44f__rez__loop__49" source="f__rez__rseq__44" target="f__rez__loop__49"> +<data key="edge_label_key">1.0</data> +</edge> +<edge id="f__rez__loop__49f__rez__execi__46" source="f__rez__loop__49" target="f__rez__execi__46"> +<data key="edge_label_key">1.0</data> +</edge> +<edge id="f__rez__execi__46f__rez__seq__43" source="f__rez__execi__46" target="f__rez__seq__43"> +<data key="edge_label_key">1.0</data> +</edge> +<edge id="f__rez__loop__49f__rez__d-delay__47" source="f__rez__loop__49" target="f__rez__d-delay__47"> +<data key="edge_label_key">1.0</data> +</edge> +<edge id="f__rez__d-delay__47f__rez__stopstate__48" source="f__rez__d-delay__47" target="f__rez__stopstate__48"> +<data key="edge_label_key">1.0</data> +</edge> +<edge id="f__rez__seq__43f__rez__execi__42" source="f__rez__seq__43" target="f__rez__execi__42"> +<data key="edge_label_key">1.0</data> +</edge> +<edge id="f__rez__execi__42f__rez__stopstate__45" source="f__rez__execi__42" target="f__rez__stopstate__45"> +<data key="edge_label_key">1.0</data> +</edge> +<edge id="f__rez__seq__43f__rez__execc__41" source="f__rez__seq__43" target="f__rez__execc__41"> +<data key="edge_label_key">1.0</data> +</edge> +<edge id="f__rez__execc__41f__rez__stopstate__40" source="f__rez__execc__41" target="f__rez__stopstate__40"> +<data key="edge_label_key">1.0</data> +</edge> +<edge id="CPU_Rf__app" source="CPU_R" target="f__app"> +<data key="edge_label_key">1.0</data> +</edge> +<edge id="f__appf__app__start__20" source="f__app" target="f__app__start__20"> +<data key="edge_label_key">1.0</data> +</edge> +<edge id="f__app__start__20f__app__Waitevent:f__sendData__f__sendData__38" source="f__app__start__20" target="f__app__Waitevent:f__sendData__f__sendData__38"> +<data key="edge_label_key">1.0</data> +</edge> +<edge id="f__app__Waitevent:f__sendData__f__sendData__38f__app__readchannel__37" source="f__app__Waitevent:f__sendData__f__sendData__38" target="f__app__readchannel__37"> +<data key="edge_label_key">1.0</data> +</edge> +<edge id="f__app__readchannel__37f__app__seq__26" source="f__app__readchannel__37" target="f__app__seq__26"> +<data key="edge_label_key">1.0</data> +</edge> +<edge id="f__app__seq__26f__app__execi__25" source="f__app__seq__26" target="f__app__execi__25"> +<data key="edge_label_key">1.0</data> +</edge> +<edge id="f__app__execi__25f__app__stopstate__24" source="f__app__execi__25" target="f__app__stopstate__24"> +<data key="edge_label_key">1.0</data> +</edge> +<edge id="f__app__seq__26f__app__execi__21" source="f__app__seq__26" target="f__app__execi__21"> +<data key="edge_label_key">1.0</data> +</edge> +<edge id="f__app__execi__21f__app__loop__0__36" source="f__app__execi__21" target="f__app__loop__0__36"> +<data key="edge_label_key">1.0</data> +</edge> +<edge id="f__app__seq__26f__app__execi__23" source="f__app__seq__26" target="f__app__execi__23"> +<data key="edge_label_key">1.0</data> +</edge> +<edge id="f__app__execi__23f__app__stopstate__22" source="f__app__execi__23" target="f__app__stopstate__22"> +<data key="edge_label_key">1.0</data> +</edge> +<edge id="f__app__loop__0__36f__app__action__33" source="f__app__loop__0__36" target="f__app__action__33"> +<data key="edge_label_key">1.0</data> +</edge> +<edge id="f__app__action__33f__app__choice__34" source="f__app__action__33" target="f__app__choice__34"> +<data key="edge_label_key">1.0</data> +</edge> +<edge id="f__app__loop__0__36f__app__writechannel__28" source="f__app__loop__0__36" target="f__app__writechannel__28"> +<data key="edge_label_key">1.0</data> +</edge> +<edge id="f__app__writechannel__28f__app__stopstate__27" source="f__app__writechannel__28" target="f__app__stopstate__27"> +<data key="edge_label_key">1.0</data> +</edge> +<edge id="f__app__choice__34f__app__execi__32" source="f__app__choice__34" target="f__app__execi__32"> +<data key="edge_label_key">1.0</data> +</edge> +<edge id="f__app__execi__32f__app__stopstate__30" source="f__app__execi__32" target="f__app__stopstate__30"> +<data key="edge_label_key">1.0</data> +</edge> +<edge id="f__app__choice__34f__app__execi__31" source="f__app__choice__34" target="f__app__execi__31"> +<data key="edge_label_key">1.0</data> +</edge> +<edge id="f__app__execi__31f__app__stopstate__29" source="f__app__execi__31" target="f__app__stopstate__29"> +<data key="edge_label_key">1.0</data> +</edge> +<edge id="CPU_Sf__send" source="CPU_S" target="f__send"> +<data key="edge_label_key">1.0</data> +</edge> +<edge id="f__sendf__send__start__56" source="f__send" target="f__send__start__56"> +<data key="edge_label_key">1.0</data> +</edge> +<edge id="f__send__start__56f__send__seq__66" source="f__send__start__56" target="f__send__seq__66"> +<data key="edge_label_key">1.0</data> +</edge> +<edge id="f__send__seq__66f__send__d-delay__65" source="f__send__seq__66" target="f__send__d-delay__65"> +<data key="edge_label_key">1.0</data> +</edge> +<edge id="f__send__d-delay__65f__send__stopstate__64" source="f__send__d-delay__65" target="f__send__stopstate__64"> +<data key="edge_label_key">1.0</data> +</edge> +<edge id="f__send__seq__66f__send__execi__63" source="f__send__seq__66" target="f__send__execi__63"> +<data key="edge_label_key">1.0</data> +</edge> +<edge id="f__send__execi__63f__send__seq__62" source="f__send__execi__63" target="f__send__seq__62"> +<data key="edge_label_key">1.0</data> +</edge> +<edge id="f__send__seq__62f__send__rseq__61" source="f__send__seq__62" target="f__send__rseq__61"> +<data key="edge_label_key">1.0</data> +</edge> +<edge id="f__send__seq__62f__send__execc__60" source="f__send__seq__62" target="f__send__execc__60"> +<data key="edge_label_key">1.0</data> +</edge> +<edge id="f__send__execc__60f__send__stopstate__59" source="f__send__execc__60" target="f__send__stopstate__59"> +<data key="edge_label_key">1.0</data> +</edge> +<edge id="f__send__rseq__61f__send__execi__58" source="f__send__rseq__61" target="f__send__execi__58"> +<data key="edge_label_key">1.0</data> +</edge> +<edge id="f__send__execi__58f__send__stopstate__57" source="f__send__execi__58" target="f__send__stopstate__57"> +<data key="edge_label_key">1.0</data> +</edge> +<edge id="f__send__rseq__61f__send__Sendevent:f__sendData__f__sendData__67" source="f__send__rseq__61" target="f__send__Sendevent:f__sendData__f__sendData__67"> +<data key="edge_label_key">1.0</data> +</edge> +<edge id="f__send__Sendevent:f__sendData__f__sendData__67f__send__writechannel__69" source="f__send__Sendevent:f__sendData__f__sendData__67" target="f__send__writechannel__69"> +<data key="edge_label_key">1.0</data> +</edge> +<edge id="f__send__writechannel__69f__send__stopstate__68" source="f__send__writechannel__69" target="f__send__stopstate__68"> +<data key="edge_label_key">1.0</data> +</edge> +<edge id="CPU_RBus0" source="CPU_R" target="Bus0"> +<data key="edge_label_key">1.0</data> +</edge> +<edge id="Bus0CPU_R" source="Bus0" target="CPU_R"> +<data key="edge_label_key">1.0</data> +</edge> +<edge id="CPU_SBus0" source="CPU_S" target="Bus0"> +<data key="edge_label_key">1.0</data> +</edge> +<edge id="Bus0CPU_S" source="Bus0" target="CPU_S"> +<data key="edge_label_key">1.0</data> +</edge> +<edge id="Memory0Bus0" source="Memory0" target="Bus0"> +<data key="edge_label_key">1.0</data> +</edge> +<edge id="Bus0Memory0" source="Bus0" target="Memory0"> +<data key="edge_label_key">1.0</data> +</edge> +<edge id="f__rez__stopstate__40f__rez__loop__49" source="f__rez__stopstate__40" target="f__rez__loop__49"> +<data key="edge_label_key">1.0</data> +</edge> +<edge id="f__rez__stopstate__52f__rez__infiniteloop__54" source="f__rez__stopstate__52" target="f__rez__infiniteloop__54"> +<data key="edge_label_key">1.0</data> +</edge> +<edge id="f__rez__stopstate__50f__rez__infiniteloop__54" source="f__rez__stopstate__50" target="f__rez__infiniteloop__54"> +<data key="edge_label_key">1.0</data> +</edge> +<edge id="f__app__stopstate__30f__app__loop__0__36" source="f__app__stopstate__30" target="f__app__loop__0__36"> +<data key="edge_label_key">1.0</data> +</edge> +<edge id="f__rez__stopstate__48f__rez__infiniteloop__54" source="f__rez__stopstate__48" target="f__rez__infiniteloop__54"> +<data key="edge_label_key">1.0</data> +</edge> +<edge id="f__app__stopstate__29f__app__loop__0__36" source="f__app__stopstate__29" target="f__app__loop__0__36"> +<data key="edge_label_key">1.0</data> +</edge> +<edge id="f__send__Sendevent:f__sendData__f__sendData__67f__app__Waitevent:f__sendData__f__sendData__38" source="f__send__Sendevent:f__sendData__f__sendData__67" target="f__app__Waitevent:f__sendData__f__sendData__38"> +<data key="edge_label_key">1.0</data> +</edge> +<edge id="f__dataC__13f__rez__readchannel__53" source="f__dataC__13" target="f__rez__readchannel__53"> +<data key="edge_label_key">1.0</data> +</edge> +<edge id="f__data__16f__app__readchannel__37" source="f__data__16" target="f__app__readchannel__37"> +<data key="edge_label_key">1.0</data> +</edge> +<edge id="f__send__writechannel__69f__data__16" source="f__send__writechannel__69" target="f__data__16"> +<data key="edge_label_key">1.0</data> +</edge> +<edge id="f__app__writechannel__28f__dataC__13" source="f__app__writechannel__28" target="f__dataC__13"> +<data key="edge_label_key">1.0</data> +</edge> +<edge id="f__app__stopstate__24f__app__execi__21" source="f__app__stopstate__24" target="f__app__execi__21"> +<data key="edge_label_key">1.0</data> +</edge> +<edge id="f__rez__stopstate__45f__rez__execc__41" source="f__rez__stopstate__45" target="f__rez__execc__41"> +<data key="edge_label_key">1.0</data> +</edge> +<edge id="f__send__stopstate__64f__send__execi__63" source="f__send__stopstate__64" target="f__send__execi__63"> +<data key="edge_label_key">1.0</data> +</edge> +<edge id="f__send__stopstate__57f__send__execc__60" source="f__send__stopstate__57" target="f__send__execc__60"> +<data key="edge_label_key">1.0</data> +</edge> +<edge id="f__send__stopstate__68f__send__execc__60" source="f__send__stopstate__68" target="f__send__execc__60"> +<data key="edge_label_key">1.0</data> +</edge> +<edge id="f__app__stopstate__27f__app__execi__23" source="f__app__stopstate__27" target="f__app__execi__23"> +<data key="edge_label_key">1.0</data> +</edge> +<edge id="f__rez__stopstate__52f__rez__loop__49" source="f__rez__stopstate__52" target="f__rez__loop__49"> +<data key="edge_label_key">1.0</data> +</edge> +<edge id="f__rez__stopstate__52f__rez__execc__51" source="f__rez__stopstate__52" target="f__rez__execc__51"> +<data key="edge_label_key">1.0</data> +</edge> +<edge id="f__rez__stopstate__50f__rez__loop__49" source="f__rez__stopstate__50" target="f__rez__loop__49"> +<data key="edge_label_key">1.0</data> +</edge> +<edge id="f__rez__stopstate__50f__rez__readchannel__53" source="f__rez__stopstate__50" target="f__rez__readchannel__53"> +<data key="edge_label_key">1.0</data> +</edge> +<edge id="f__rez__stopstate__48f__rez__readchannel__53" source="f__rez__stopstate__48" target="f__rez__readchannel__53"> +<data key="edge_label_key">1.0</data> +</edge> +<edge id="f__rez__stopstate__48f__rez__execc__51" source="f__rez__stopstate__48" target="f__rez__execc__51"> +<data key="edge_label_key">1.0</data> +</edge> +<edge id="f__send__stopstate__57f__send__Sendevent:f__sendData__f__sendData__67" source="f__send__stopstate__57" target="f__send__Sendevent:f__sendData__f__sendData__67"> +<data key="edge_label_key">1.0</data> +</edge> +<edge id="f__send__stopstate__68f__send__execi__58" source="f__send__stopstate__68" target="f__send__execi__58"> +<data key="edge_label_key">1.0</data> +</edge> +</graph> +</graphml>