Skip to content
Snippets Groups Projects
Commit 3cedaae3 authored by Letitia Li's avatar Letitia Li Committed by Fabien Tessier
Browse files

Reference Requirements can be used in backtracing latency results

parent e88f4bfe
Branches
No related tags found
1 merge request!30Merge project manager into master
......@@ -200,93 +200,96 @@ public class AvatarSMDReceiveSignal extends AvatarSMDBasicComponent implements C
Color c = g.getColor();
if (reference !=null){
//References must be in the form "The max delay between send/recieve signal:(signalname) and send/receive signal (signalname) is (less than/greater than) X.
String req= ((AvatarRDRequirement) reference).getText().trim();
if (req.contains("The max delay between")){
//Attempt to parse string
boolean lessThan= req.contains(" less than ");
String sig1 = req.split(" between ")[1].split(" and ")[0].trim();
String sig2 = req.split(" and ")[1].split(" is ")[0].trim();
String num = req.split(" than ")[1];
num = num.replaceAll("\\.","");
int refNum = -1;
try {
refNum = Integer.valueOf(num);
}
catch(Exception e){
}
if (sig1.equals("receive signal: " + value.split("\\(")[0])){
if (sig2.replaceAll(": ","-").equalsIgnoreCase(s)){
//Compare times
int tActual=Integer.valueOf(latencyVals.get(s.split(":")[0]));
if (refNum>0){
if (lessThan){
if (tActual < refNum){
g.setColor(Color.GREEN);
}
else {
g.setColor(Color.RED);
}
}
else {
if (tActual> refNum){
g.setColor(Color.GREEN);
if (reference instanceof AvatarRDRequirement){
String req= ((AvatarRDRequirement) reference).getText().trim();
if (req.contains("The max delay between")){
//Attempt to parse string
boolean lessThan= req.contains(" less than ");
String sig1 = req.split(" between ")[1].split(" and ")[0].trim();
String sig2 = req.split(" and ")[1].split(" is ")[0].trim();
String num = req.split(" than ")[1];
num = num.replaceAll("\\.","");
int refNum = -1;
try {
refNum = Integer.valueOf(num);
}
catch(Exception e){
}
if (sig1.equals("receive signal: " + value.split("\\(")[0])){
if (sig2.replaceAll(": ","-").equalsIgnoreCase(s)){
//Compare times
int tActual=Integer.valueOf(latencyVals.get(s.split(":")[0]));
if (refNum>0){
if (lessThan){
if (tActual < refNum){
g.setColor(Color.GREEN);
}
else {
g.setColor(Color.RED);
}
}
else {
g.setColor(Color.RED);
if (tActual> refNum){
g.setColor(Color.GREEN);
}
else {
g.setColor(Color.RED);
}
}
}
}
}
}
else if (sig2.equals("receive signal: " + value.split("\\(")[0])){
if (sig1.replaceAll(": ","-").trim().equalsIgnoreCase(s.split(":")[0].trim())){
//Compare times
int tActual=Integer.valueOf(latencyVals.get(s));
//System.out.println(refNum + " " + tActual);
if (refNum>0){
if (lessThan){
if (tActual < refNum){
g.setColor(Color.GREEN);
else if (sig2.equals("receive signal: " + value.split("\\(")[0])){
if (sig1.replaceAll(": ","-").trim().equalsIgnoreCase(s.split(":")[0].trim())){
//Compare times
int tActual=Integer.valueOf(latencyVals.get(s));
//System.out.println(refNum + " " + tActual);
if (refNum>0){
if (lessThan){
if (tActual < refNum){
g.setColor(Color.GREEN);
}
else {
g.setColor(Color.RED);
}
}
else {
g.setColor(Color.RED);
}
}
else {
if (tActual> refNum){
g.setColor(Color.GREEN);
}
else {
g.setColor(Color.RED);
if (tActual> refNum){
g.setColor(Color.GREEN);
}
else {
g.setColor(Color.RED);
}
}
}
}
}
}
}
}
/*if (reference instanceof TMLADReadChannel){
// System.out.println("ref " + reference.toString().split(": ")[1].split("\\(")[0] + " " + s.split("-")[1].split(":")[0]);
TMLADReadChannel rc = (TMLADReadChannel) reference;
ConcurrentHashMap<String, String> refLats =rc.getLatencyMap();
//System.out.println("referencelats " + refLats);
for (String checkpoint:refLats.keySet()){
if (s.split("\\-")[1].split(":")[0].equals(checkpoint.split("channel:")[1].split(" ")[0])){
String time=refLats.get(checkpoint);
int tdip= Integer.valueOf(time);
int tav=Integer.valueOf(latencyVals.get(s));
if (Math.abs(tdip-tav)>tdip){
g.setColor(Color.RED);
}
else {
g.setColor(Color.GREEN);
if (reference instanceof TMLADReadChannel){
// System.out.println("ref " + reference.toString().split(": ")[1].split("\\(")[0] + " " + s.split("-")[1].split(":")[0]);
TMLADReadChannel rc = (TMLADReadChannel) reference;
ConcurrentHashMap<String, String> refLats =rc.getLatencyMap();
//System.out.println("referencelats " + refLats);
for (String checkpoint:refLats.keySet()){
if (s.split("\\-")[1].split(":")[0].equals(checkpoint.split("channel:")[1].split(" ")[0])){
String time=refLats.get(checkpoint);
int tdip= Integer.valueOf(time);
int tav=Integer.valueOf(latencyVals.get(s));
if (Math.abs(tdip-tav)>tdip){
g.setColor(Color.RED);
}
else {
g.setColor(Color.GREEN);
}
}
}
}
}*/
}
g.drawString(latencyVals.get(s), x-latencyX/2, y-latencyY*index/2);
g.setColor(c);
index++;
......@@ -387,9 +390,9 @@ public class AvatarSMDReceiveSignal extends AvatarSMDBasicComponent implements C
}
String val = jdas.getSignal();
if (jdas.getReference()!=null){
//if (jdas.getReference()!=null){
reference = jdas.getReference();
}
//}
if (val.indexOf('(') == -1) {
val += "()";
}
......
......@@ -174,6 +174,12 @@ public class AvatarSMDSendSignal extends AvatarSMDBasicComponent implements Chec
drawLatencyInformation(g);
}
}
if (reference!=null){
if (reference instanceof AvatarRDRequirement){
AvatarRDRequirement refReq = (AvatarRDRequirement) reference;
g.drawString("ref: "+ refReq.getValue(), x, y+height1+textY);
}
}
}
public void drawLatencyInformation(Graphics g){
......@@ -184,25 +190,99 @@ public class AvatarSMDSendSignal extends AvatarSMDBasicComponent implements Chec
g.drawRect(x-latencyX-w, y-latencyY*index-textHeight, w+4, textHeight);
g.drawLine(x,y,x-latencyX, y-latencyY*index);
Color c = g.getColor();
if (reference instanceof TMLADWriteChannel){
// System.out.println("ref " + reference.toString().split(": ")[1].split("\\(")[0] + " " + s.split("-")[1].split(":")[0]);
TMLADWriteChannel rc = (TMLADWriteChannel) reference;
ConcurrentHashMap<String, String> refLats =rc.getLatencyMap();
//System.out.println("referencelats " + refLats);
for (String checkpoint:refLats.keySet()){
if (s.split("\\-")[1].split(":")[0].equals(checkpoint.split(":")[1].split(" ")[0])){
String time=refLats.get(checkpoint);
int tdip= Integer.valueOf(time);
int tav=Integer.valueOf(latencyVals.get(s));
if (Math.abs(tdip-tav)>tdip){
g.setColor(Color.RED);
if (reference !=null){
//References must be in the form "The max delay between send/recieve signal:(signalname) and send/receive signal (signalname) is (less than/greater than) X.
String req= ((AvatarRDRequirement) reference).getText().trim();
if (req.contains("The max delay between")){
//Attempt to parse string
boolean lessThan= req.contains(" less than ");
String sig1 = req.split(" between ")[1].split(" and ")[0].trim();
String sig2 = req.split(" and ")[1].split(" is ")[0].trim();
String num = req.split(" than ")[1];
num = num.replaceAll("\\.","");
int refNum = -1;
try {
refNum = Integer.valueOf(num);
}
catch(Exception e){
}
if (sig1.equals(sig2)){
//
}
else if (sig1.equals("send signal: " + value.split("\\(")[0])){
if (sig2.replaceAll(": ","-").equalsIgnoreCase(s)){
//Compare times
int tActual=Integer.valueOf(latencyVals.get(s.split(":")[0]));
if (refNum>0){
if (lessThan){
if (tActual < refNum){
g.setColor(Color.GREEN);
}
else {
g.setColor(Color.RED);
}
}
else {
if (tActual> refNum){
g.setColor(Color.GREEN);
}
else {
g.setColor(Color.RED);
}
}
}
}
else {
g.setColor(Color.GREEN);
}
else if (sig2.equals("send signal: " + value.split("\\(")[0])){
if (sig1.replaceAll(": ","-").trim().equalsIgnoreCase(s.split(":")[0].trim())){
//Compare times
int tActual=Integer.valueOf(latencyVals.get(s));
//System.out.println(refNum + " " + tActual);
if (refNum>0){
if (lessThan){
if (tActual < refNum){
g.setColor(Color.GREEN);
}
else {
g.setColor(Color.RED);
}
}
else {
if (tActual> refNum){
g.setColor(Color.GREEN);
}
else {
g.setColor(Color.RED);
}
}
}
}
}
}
if (reference instanceof TMLADWriteChannel){
// System.out.println("ref " + reference.toString().split(": ")[1].split("\\(")[0] + " " + s.split("-")[1].split(":")[0]);
TMLADWriteChannel rc = (TMLADWriteChannel) reference;
ConcurrentHashMap<String, String> refLats =rc.getLatencyMap();
//System.out.println("referencelats " + refLats);
for (String checkpoint:refLats.keySet()){
if (s.split("\\-")[1].split(":")[0].equals(checkpoint.split(":")[1].split(" ")[0])){
String time=refLats.get(checkpoint);
int tdip= Integer.valueOf(time);
int tav=Integer.valueOf(latencyVals.get(s));
if (Math.abs(tdip-tav)>tdip){
g.setColor(Color.RED);
}
else {
g.setColor(Color.GREEN);
}
}
}
}
}
g.drawString(latencyVals.get(s), x-latencyX/2, y-latencyY*index/2);
g.setColor(c);
index++;
......@@ -301,9 +381,9 @@ public class AvatarSMDSendSignal extends AvatarSMDBasicComponent implements Chec
}
String val = jdas.getSignal();
if (jdas.getReference()!=null){
// if (jdas.getReference()!=null ){
reference = jdas.getReference();
}
//}
if (val.indexOf('(') == -1) {
val += "()";
......
......@@ -168,13 +168,14 @@ public class JDialogAvatarSignal extends JDialogBase implements ActionListener
panel1.add(signal, c1);
//panel1.setEditable(true);
//Reference to DIPLODOCUS signal
//Reference to DIPLODOCUS signal or Requirement
c1.gridwidth = 1;
c1.fill = GridBagConstraints.HORIZONTAL;
c1.anchor = GridBagConstraints.CENTER;
panel1.add(new JLabel("Reference Requirement"),c1);
c1.gridwidth = GridBagConstraints.REMAINDER; //end row
refChecks = new JComboBox<TGComponent>(refs);
refChecks.insertItemAt(null, 0);
if (reference!=null){
refChecks.setSelectedItem(reference);
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment