Skip to content
Snippets Groups Projects
NestedStructurePLANTest.java 6.23 KiB
Newer Older
maysam zoor's avatar
maysam zoor committed
package ui.GraphLatencyAnalysis;

import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
maysam zoor's avatar
maysam zoor committed

maysam zoor's avatar
maysam zoor committed
import java.io.File;
import java.util.HashMap;
import java.util.Map.Entry;
maysam zoor's avatar
maysam zoor committed
import java.util.Vector;

maysam zoor's avatar
maysam zoor committed
import org.junit.Before;
import org.junit.Test;
maysam zoor's avatar
maysam zoor committed

import simulationtraceanalysis.DependencyGraphTranslator;
import ui.AbstractUITest;
import ui.SimulationTrace;
maysam zoor's avatar
maysam zoor committed
import ui.TMLArchiPanel;
import ui.interactivesimulation.SimulationTransaction;
import ui.simulationtraceanalysis.JFrameLatencyDetailedAnalysis;
maysam zoor's avatar
maysam zoor committed
import ui.simulationtraceanalysis.LatencyDetailedAnalysisMain;
maysam zoor's avatar
maysam zoor committed

maysam zoor's avatar
maysam zoor committed
public class NestedStructurePLANTest extends AbstractUITest {
    private static final String mapping_Diag_Name = "Architecture";
maysam zoor's avatar
maysam zoor committed
    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";
maysam zoor's avatar
maysam zoor committed
    private LatencyDetailedAnalysisMain LatencyDetailedAnalysisMain;
maysam zoor's avatar
maysam zoor committed
    private JFrameLatencyDetailedAnalysis latencyDetailedAnalysis;
maysam zoor's avatar
maysam zoor committed
    private static DependencyGraphTranslator dgt;
maysam zoor's avatar
maysam zoor committed
    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;
maysam zoor's avatar
maysam zoor committed
    private static String task1;
    private static String task2;
    private static Object[][] allLatencies;

    @Before
    public void NestedStructurePLAN() throws InterruptedException {
        mainGUI.openProjectFromFile(new File(getBaseResourcesDir() + MODEL_PATH));
maysam zoor's avatar
maysam zoor committed
        // mainGUI.openProjectFromFile(new File(modelPath));
        final TMLArchiPanel panel = findArchiPanel(mapping_Diag_Name);
maysam zoor's avatar
maysam zoor committed
        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);
maysam zoor's avatar
maysam zoor committed
        LatencyDetailedAnalysisMain = new LatencyDetailedAnalysisMain(3, mainGUI, file2, false, false, 3);
        LatencyDetailedAnalysisMain.getTc().setMainGUI(mainGUI);
        LatencyDetailedAnalysisMain.latencyDetailedAnalysis(file2, panel, false, false, mainGUI);
        latencyDetailedAnalysis = LatencyDetailedAnalysisMain.getLatencyDetailedAnalysis();
maysam zoor's avatar
maysam zoor committed
        if (latencyDetailedAnalysis != null) {
            latencyDetailedAnalysis.setVisible(false);
            try {
                latencyDetailedAnalysis.getT().join();
            } catch (InterruptedException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            dgt = latencyDetailedAnalysis.getDgraph();
        }
    }

    @Test
    public void parseFile() {
        assertNotNull(latencyDetailedAnalysis);
        int graphsize = dgt.getGraphsize();
        assertTrue(graphsize == 57);
        // test sequence to all its nexts
        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));
maysam zoor's avatar
maysam zoor committed
        transFile1 = LatencyDetailedAnalysisMain.getLatencyDetailedAnalysis().parseFile(new File(getBaseResourcesDir() + SIMULATIONTRACE_PATH_FILE));
maysam zoor's avatar
maysam zoor committed
        assertTrue(transFile1.size() == 38);
        checkedDropDown = latencyDetailedAnalysis.getCheckedT();
        for (Entry<String, Integer> cT : checkedDropDown.entrySet()) {
            int id = cT.getValue();
            String taskName = cT.getKey();
            if (id == OPERATOR1_ID) {
maysam zoor's avatar
maysam zoor committed
                task1 = taskName;
            } else if (id == OPERATOR2_ID) {
maysam zoor's avatar
maysam zoor committed
                task2 = taskName;
            }
        }
        allLatencies = dgt.latencyDetailedAnalysis(task1, task2, transFile1, false, false);
        assertTrue(allLatencies.length == 1);
        assertTrue((int) allLatencies[0][1] == 60);
        assertTrue((int) allLatencies[0][3] == 212);
        assertTrue((int) allLatencies[0][4] == 152);
    }
}