From a992c149f04ca38e4ff4588a36e7cb991bc95b51 Mon Sep 17 00:00:00 2001 From: Letitia Li <letitia.li@telecom-paristech.fr> Date: Thu, 17 Nov 2016 17:16:27 +0100 Subject: [PATCH] Latency measurements updated to table --- src/tmltranslator/TMLModeling.java | 18 +++ src/ui/GTMLModeling.java | 1 + .../JFrameInteractiveSimulation.java | 126 ++++++++++++++---- .../SimulationTransaction.java | 2 +- 4 files changed, 123 insertions(+), 24 deletions(-) diff --git a/src/tmltranslator/TMLModeling.java b/src/tmltranslator/TMLModeling.java index 6b6615858f..f296fa5160 100755 --- a/src/tmltranslator/TMLModeling.java +++ b/src/tmltranslator/TMLModeling.java @@ -47,6 +47,7 @@ package tmltranslator; import java.util.*; import myutil.*; +import ui.TGComponent; import ui.tmlcompd.*; import ui.TAttribute; import avatartranslator.*; @@ -69,6 +70,7 @@ public class TMLModeling { public HashMap<SecurityPattern, ArrayList<TMLTask>> securityTaskMap = new HashMap<SecurityPattern, ArrayList<TMLTask>>(); private String[] ops = {">", "<", "+", "-", "*", "/", "[", "]", "(", ")", ":", "=", "==", ","}; private ArrayList<String> checkedActivity = new ArrayList<String>(); + private HashMap<String, TGComponent> checkedActivities = new HashMap<String, TGComponent>(); private int hashCode; private boolean hashCodeComputed = false; @@ -91,9 +93,17 @@ public class TMLModeling { public void addCheckedActivity(String s){ checkedActivity.add(s); } + + public void addCheckedActivity(String s, TGComponent tgc){ + checkedActivities.put(s,tgc); + } public ArrayList<String> getCheckedActivities(){ return checkedActivity; } + + public HashMap<String, TGComponent> getCheckedComps(){ + return checkedActivities; + } public SecurityPattern getSecurityPattern(String s){ for (SecurityPattern sp:secPatterns){ if (sp.name.equals(s)){ @@ -1119,6 +1129,7 @@ public class TMLModeling { secPatterns.addAll(tmlm.secPatterns); securityTaskMap.putAll(tmlm.securityTaskMap); checkedActivity.addAll(tmlm.getCheckedActivities()); + checkedActivities.putAll(tmlm.getCheckedComps()); } // Elements with same names are not duplicated @@ -1162,6 +1173,13 @@ public class TMLModeling { checkedActivity.add(s); } } + + for (String s: tmlm.getCheckedComps().keySet()){ + if (!checkedActivities.containsKey(s)){ + checkedActivities.put(s, tmlm.getCheckedComps().get(s)); + } + } + } diff --git a/src/ui/GTMLModeling.java b/src/ui/GTMLModeling.java index ae11a423e6..5ba77f2927 100755 --- a/src/ui/GTMLModeling.java +++ b/src/ui/GTMLModeling.java @@ -1455,6 +1455,7 @@ public class GTMLModeling { String name = tmltask.getName() + ":" + tgc.getName(); TraceManager.addDev("To check " + name); tmlm.addCheckedActivity(name); + tmlm.addCheckedActivity(name,tgc); } if (tgc instanceof TMLADActionState) { tmlaction = new TMLActionState("action", tgc); diff --git a/src/ui/interactivesimulation/JFrameInteractiveSimulation.java b/src/ui/interactivesimulation/JFrameInteractiveSimulation.java index c3e283c02b..ae29f1b464 100755 --- a/src/ui/interactivesimulation/JFrameInteractiveSimulation.java +++ b/src/ui/interactivesimulation/JFrameInteractiveSimulation.java @@ -69,6 +69,7 @@ import java.io.File; import java.io.IOException; import java.util.ArrayList; import java.util.Hashtable; +import java.util.HashMap; import java.util.Vector; import javax.swing.AbstractButton; @@ -246,7 +247,7 @@ public class JFrameInteractiveSimulation extends JFrame implements ActionListen JComboBox transaction1; JComboBox transaction2; JButton addLatencyCheckButton; - JButton updateLatencyInformationButton; + JButton updateLatencyButton; LatencyTableModel latm; public Vector checkedTransactions = new Vector(); private JScrollPane jspLatency; @@ -273,7 +274,9 @@ public class JFrameInteractiveSimulation extends JFrame implements ActionListen private Hashtable <String, String> diagramTable; private ArrayList<Point> points; - + private HashMap<String, String> checkTable=new HashMap<String, String>(); + private HashMap<String, ArrayList<String>> transTimes = new HashMap<String, ArrayList<String>>(); + private Vector latencies=new Vector(); public JFrameInteractiveSimulation(Frame _f, MainGUI _mgui, String _title, String _hostSystemC, String _pathExecute, TMLMapping _tmap, ArrayList<Point> _points) { super(_title); @@ -966,32 +969,35 @@ public class JFrameInteractiveSimulation extends JFrame implements ActionListen GridBagLayout gridbag0 = new GridBagLayout(); GridBagConstraints c0 = new GridBagConstraints(); latencyPanel.setLayout(gridbag0); - infoTab.addTab("Latency", null, latencyPanel, "Latency Measurements"); - transaction1 = new JComboBox(checkedTransactions); - transaction1.setPrototypeDisplayValue("Transaction1"); - - transaction2 = new JComboBox(checkedTransactions); - transaction2.setPrototypeDisplayValue("Transaction2"); - latencyPanel.add(transaction1, c0); - c0.gridwidth = GridBagConstraints.RELATIVE; - latencyPanel.add(transaction2, c0); + infoTab.addTab("Latency", null, latencyPanel, "Latency Measurements"); c0.gridwidth = GridBagConstraints.REMAINDER; - addLatencyCheckButton = new JButton(actions[InteractiveSimulationActions.ACT_ADD_LATENCY]); - latencyPanel.add(addLatencyCheckButton,c0); latm = new LatencyTableModel(this); + latm.setData(latencies); sorterPI = new TableSorter(latm); jtablePI = new JTable(sorterPI); sorterPI.setTableHeader(jtablePI.getTableHeader()); - ((jtablePI.getColumnModel()).getColumn(0)).setPreferredWidth(100); - ((jtablePI.getColumnModel()).getColumn(1)).setPreferredWidth(100); + ((jtablePI.getColumnModel()).getColumn(0)).setPreferredWidth(200); + ((jtablePI.getColumnModel()).getColumn(1)).setPreferredWidth(200); ((jtablePI.getColumnModel()).getColumn(2)).setPreferredWidth(50); + jtablePI.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); jspLatency = new JScrollPane(jtablePI); jspLatency.setWheelScrollingEnabled(true); jspLatency.getVerticalScrollBar().setUnitIncrement(10); - jspLatency.setPreferredSize(new Dimension(260, 300)); + jspLatency.setMinimumSize(new Dimension(300, 300)); + jspLatency.setPreferredSize(new Dimension(300, 300)); latencyPanel.add(jspLatency, c0); + transaction1 = new JComboBox(checkedTransactions); + transaction2 = new JComboBox(checkedTransactions); + latencyPanel.add(transaction1, c0); + latencyPanel.add(transaction2, c0); + + addLatencyCheckButton = new JButton(actions[InteractiveSimulationActions.ACT_ADD_LATENCY]); + latencyPanel.add(addLatencyCheckButton,c0); + + updateLatencyButton = new JButton(actions[InteractiveSimulationActions.ACT_UPDATE_LATENCY]); + latencyPanel.add(updateLatencyButton,c0); if (!hashOK) { wrongHashCode(); @@ -1518,6 +1524,9 @@ public class JFrameInteractiveSimulation extends JFrame implements ActionListen if (hashOK) { if (elt.getTagName().compareTo(SIMULATION_TASK) == 0) { + // for (int i=0; i<elt.getAttributes().getLength(); i++){ + // System.out.println(elt.getAttributes().item(i)); +// } id = null; name = null; command = null; @@ -1602,6 +1611,18 @@ public class JFrameInteractiveSimulation extends JFrame implements ActionListen nextCommand = "-1"; } updateRunningCommand(id, command, progression, startTime, finishTime, nextCommand, transStartTime, transFinishTime, state); + if (checkTable.containsKey(command)){ + //System.out.println("added trans " + command + " " +finishTime); + if (!transTimes.containsKey(command)){ + ArrayList<String> timeList = new ArrayList<String>(); + transTimes.put(command, timeList); + } + if (!transTimes.get(command).contains(finishTime)){ + transTimes.get(command).add(finishTime); + } + //System.out.println("nl:" + nl + " value=" + node0.getNodeValue() + " content=" + node0.getTextContent()); + + } } if (openDiagram.isEnabled() && openDiagram.isSelected() && (name != null) && (command != null)) { @@ -1684,6 +1705,7 @@ public class JFrameInteractiveSimulation extends JFrame implements ActionListen }*/ if (elt.getTagName().compareTo(SIMULATION_TRANS) == 0) { + SimulationTransaction st = new SimulationTransaction(); st.nodeType = elt.getAttribute("deviceid"); @@ -1700,19 +1722,32 @@ public class JFrameInteractiveSimulation extends JFrame implements ActionListen st.command = commandT.substring(index+1, commandT.length()).trim(); } } + //TraceManager.addDev("Command handled"); st.startTime = elt.getAttribute("starttime"); - st.endTime = elt.getAttribute("endtime"); + st.endTime = elt.getAttribute("endtime"); + if (checkTable.containsKey(commandT)){ + //System.out.println("added trans " + commandT + " " +st.endTime); + if (!transTimes.containsKey(commandT)){ + ArrayList<String> timeList = new ArrayList<String>(); + transTimes.put(commandT, timeList); + } + if (!transTimes.get(commandT).contains(st.endTime)){ + transTimes.get(commandT).add(st.endTime); + } + //System.out.println("nl:" + nl + " value=" + node0.getNodeValue() + " content=" + node0.getTextContent()); + + } st.length = elt.getAttribute("length"); st.virtualLength = elt.getAttribute("virtuallength"); st.channelName = elt.getAttribute("ch"); - + // st.id = id; if (trans == null) { trans = new Vector<SimulationTransaction>(); } trans.add(st); - addTransactionToNode(st); + addTransactionToNode(st); transInfo = true; } @@ -2249,6 +2284,7 @@ public class JFrameInteractiveSimulation extends JFrame implements ActionListen } trans = null; + int nb = NB_OF_TRANSACTIONS; if (transactionPanel != null) { nb = transactionPanel.getNbOfTransactions(); @@ -2257,17 +2293,55 @@ public class JFrameInteractiveSimulation extends JFrame implements ActionListen } private void addLatency(){ - Vector latencies = new Vector(); SimulationLatency sl = new SimulationLatency(); sl.trans1 = transaction1.getSelectedItem().toString(); sl.trans2 = transaction2.getSelectedItem().toString(); sl.time="0"; - latencies.add(sl); + boolean found=false; + for (Object o:latencies){ + SimulationLatency s = (SimulationLatency) o; + if (s.trans1 == sl.trans1 && s.trans2 == sl.trans2){ + found=true; + } + } + if (!found){ + latencies.add(sl); + } + updateLatency(); latm.setData(latencies); } private void updateLatency(){ - + System.out.println(transTimes); + for (Object o: latencies){ + SimulationLatency sl = (SimulationLatency) o; + for (String st1:transTimes.keySet()){ + if (checkTable.containsKey(st1)){ + for (String st2:transTimes.keySet()){ + if (st1!=st2){ + if (checkTable.containsKey(st2)){ + if (checkTable.get(st2).contains(sl.trans2) && checkTable.get(st1).contains(sl.trans1)){ + int time = 0; + for(String time1: transTimes.get(st1)){ + for (String time2: transTimes.get(st2)){ + int diff = Integer.valueOf(time1) - Integer.valueOf(time2); + if (diff > time && diff >0){ + time=diff; + } + } + } + sl.time=Integer.toString(time); + //System.out.println(sl.trans2 + " "+sl.trans1 + " " + time); + //sl.time= Integer.toString(Math.abs(Integer.valueOf(st.startTime)-Integer.valueOf(st2.startTime))); + + } + } + } + } + } + } + } + latm.setData(latencies); } private void updateTaskCommands() { @@ -2310,7 +2384,7 @@ public class JFrameInteractiveSimulation extends JFrame implements ActionListen } TraceManager.addDev("state:" + _state); - + if ((i != null) && (c != null)) { try { //System.out.println("Searching for old value"); @@ -2955,10 +3029,16 @@ public class JFrameInteractiveSimulation extends JFrame implements ActionListen if (tmap==null){ return; } + + System.out.println(tmap.getTMLModeling().getCheckedComps()); for (String s: tmap.getTMLModeling().getCheckedActivities()){ TraceManager.addDev(s); checkedTransactions.add(s.split("__")[s.split("__").length-1]); } + for (String s: tmap.getTMLModeling().getCheckedComps().keySet()){ + //System.out.println(tmap.getTMLModeling().getCheckedComps().get(s).getDIPLOID() + " "+s); + checkTable.put(Integer.toString(tmap.getTMLModeling().getCheckedComps().get(s).getDIPLOID()),s); + } } public void activeBreakPoint(boolean active) { if (mode == STARTED_AND_CONNECTED) { diff --git a/src/ui/interactivesimulation/SimulationTransaction.java b/src/ui/interactivesimulation/SimulationTransaction.java index c885ab1e32..784ab6e8f3 100755 --- a/src/ui/interactivesimulation/SimulationTransaction.java +++ b/src/ui/interactivesimulation/SimulationTransaction.java @@ -66,7 +66,7 @@ public class SimulationTransaction { public String length; /* Used for identifiying asynchronous messages */ public String virtualLength; public String channelName; - + public String id; public SimulationTransaction() { } -- GitLab