adding TestON
diff --git a/TestON/TAI/src/tai_ofa/ExecuteTest.java b/TestON/TAI/src/tai_ofa/ExecuteTest.java
new file mode 100644
index 0000000..d4f9197
--- /dev/null
+++ b/TestON/TAI/src/tai_ofa/ExecuteTest.java
@@ -0,0 +1,705 @@
+/*
+ * To change this template, choose Tools | Templates
+ * and open the template in the editor.
+ */
+package tai_ofa;
+
+/**
+ *
+ * @author Raghavkashyap (raghavkashyap@paxterra.com)
+
+	
+ *   TestON is free software: you can redistribute it and/or modify
+ *   it under the terms of the GNU General Public License as published by
+ *   the Free Software Foundation, either version 2 of the License, or
+ *   (at your option) any later version.
+
+ *   TestON is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+
+ *   You should have received a copy of the GNU General Public License
+ *   along with TestON.  If not, see <http://www.gnu.org/licenses/>.
+
+ */
+// Import the Java classes
+import com.sun.javafx.scene.layout.region.BackgroundFill;
+import com.sun.org.apache.bcel.internal.generic.LoadInstruction;
+import java.awt.TextArea;
+import java.util.*;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+import java.io.*;
+import java.net.MalformedURLException;
+import java.nio.file.WatchService;
+import java.text.SimpleDateFormat;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import javafx.application.Platform;
+import javafx.beans.value.ChangeListener;
+import javafx.beans.value.ObservableValue;
+import javafx.collections.FXCollections;
+import javafx.collections.ObservableList;
+import javafx.event.EventHandler;
+import javafx.geometry.Insets;
+import javafx.scene.chart.PieChart;
+import javafx.scene.control.Button;
+import javafx.scene.control.CheckBox;
+import javafx.scene.control.Label;
+import javafx.scene.control.Tab;
+import javafx.scene.control.TabPane;
+import javafx.scene.control.TableView;
+import javafx.scene.control.TextAreaBuilder;
+import javafx.scene.effect.BlendMode;
+import javafx.scene.image.Image;
+import javafx.scene.image.ImageView;
+import javafx.scene.input.ScrollEvent;
+import javafx.scene.layout.HBox;
+import javafx.scene.layout.StackPane;
+import javafx.scene.paint.Color;
+import javafx.scene.paint.Paint;
+import javafx.stage.Popup;
+import javafx.stage.Stage;
+import org.apache.xmlrpc.XmlRpcClient;
+import org.apache.xmlrpc.XmlRpcException;
+
+public class ExecuteTest {
+
+    Pattern stepPatt, casePatt, resultPatt, namePatt, summaryPatt, testStartPatt, testEndPatt, testExecutionTimePatt, testsPlannedPatt,
+            testsRunPatt, totalPassPatt, totalFailPatt, noResultPatt, totalAbortPatt, execPercentagePatt, successPercentagePatt, assertionPatt, totalreRun;
+    TableView summaryTable, finalSummaryTable, stepTable;
+    public static int noOfPassed = 0, noOfFailed = 0, noOfAborted = 0, noOfNoResult = 0, failed = 0, passed = 0, noResults = 0, aboarted = 0;
+    String summary, testStart, testEnd, testExecutionTime, testsPlanned, testsRun, totalPass,
+            totalFail, noResult, totalAbort, execPercentage, successPercentage;
+    ObservableList<SummaryTable> data;
+    ObservableList<FinalSummaryTable> finalSummaryData;
+    ObservableList<StepTable> stepSummaryData;
+    //AutoMateTestSummary summaryWindow ;
+    StackPane summaryTableRoot;
+    TreeMap<String, String> stepHash = new TreeMap<String, String>();
+    TreeMap<String, String> caseNameHash = new TreeMap<String, String>();
+    Matcher m;
+    int tableIndex = -1;
+    int stepTableIndex = -1;
+    Runnable r3;
+    Button viewLogsButton;
+    PieChart summaryChart;
+    PieChart.Data passData, failData, abortData, noResultData;
+    String selectedTest;
+    ObservableList<PieChart.Data> pieChartData;
+    javafx.scene.control.TextArea compononetLogText = TextAreaBuilder.create().build();
+    javafx.scene.control.TextArea flowVisorSessionText = TextAreaBuilder.create().build();
+    javafx.scene.control.TextArea poxSessionText = TextAreaBuilder.create().build();
+    javafx.scene.control.TextArea mininetSessionText = TextAreaBuilder.create().build();
+    Label statusImage;
+    TAILocale label = new TAILocale(Locale.ENGLISH);
+
+    public ExecuteTest(TableView summary, ObservableList<SummaryTable> dataInstance,
+            PieChart chart, TableView finalSummary, ObservableList<FinalSummaryTable> finalSummaryDataInstance,
+            Button viewLogs, ObservableList<PieChart.Data> pieChartData,
+            PieChart.Data passData, PieChart.Data failData, PieChart.Data abortData, PieChart.Data noResultData, String testName, javafx.scene.control.TextArea componentLogText,
+            TableView stepTable, ObservableList<StepTable> stepTableData, javafx.scene.control.TextArea poxText, javafx.scene.control.TextArea mininetText, javafx.scene.control.TextArea flowText) {
+        this.summaryTable = summary;
+        data = dataInstance;
+        summaryChart = chart;
+        finalSummaryTable = finalSummary;
+        finalSummaryData = finalSummaryDataInstance;
+        viewLogsButton = viewLogs;
+        this.pieChartData = pieChartData;
+        this.passData = passData;
+        this.failData = failData;
+        this.abortData = abortData;
+        this.noResultData = noResultData;
+        this.selectedTest = testName;
+        this.compononetLogText = componentLogText;
+        this.stepTable = stepTable;
+        this.stepSummaryData = stepTableData;
+        this.poxSessionText = poxText;
+        this.mininetSessionText = mininetText;
+        this.flowVisorSessionText = flowText;
+
+    }
+    String currentTestCase, testCaseName, testCaseStatus, testCaseStartTime, testCaseEndTime;
+
+    public void runTest() {
+
+
+
+        try {
+
+            summaryTable.setVisible(true);
+            getCaseName();
+            Iterator entries = caseNameHash.entrySet().iterator();
+            data = FXCollections.observableArrayList();
+            int index = 0;
+            while (entries.hasNext()) {
+                index++;
+                Map.Entry entry = (Map.Entry) entries.next();
+                String key = (String) entry.getKey();
+                String value = (String) entry.getValue();
+                Image image = new Image(getClass().getResourceAsStream("/images/loading.gif"), 10, 10, true, true);
+                data.add(new SummaryTable(new Label(key), new Label(value), new Label("", new ImageView(image)), new Label(), new Label()));
+            }
+            summaryTable.setItems(data);
+            File file = new File(selectedTest);
+            String[] runThisFile = file.getName().split("\\.");
+            try {
+                XmlRpcClient server = new XmlRpcClient("http://localhost:9000");
+                Vector params = new Vector();
+                params.add(new String(selectedTest));
+                final Object result = server.execute("runTest", params);
+                new Thread(new Runnable() {
+                    @Override
+                    public void run() {
+                        ProcessBuilder header = new ProcessBuilder("/bin/sh", "-c", "head -20 " + result.toString());
+                        Process headProcess;
+                        try {
+                            headProcess = header.start();
+                            BufferedReader inputHeader = new BufferedReader(new InputStreamReader(headProcess.getInputStream()));
+                            String lines;
+                            String totalText = "";
+                            while ((lines = inputHeader.readLine()) != null) {
+                                try {
+                                    totalText = totalText + "\n" + lines;
+                                    updateData(lines);
+                                } catch (Exception e) {
+                                }
+                            }
+                            compononetLogText.appendText(totalText);
+                            headProcess.destroy();
+                        } catch (IOException ex) {
+                            Logger.getLogger(ExecuteTest.class.getName()).log(Level.SEVERE, null, ex);
+                        }
+                        String command = "tail -f " + result.toString();
+                        File dir = new File(result.toString());
+                        String parentPath = dir.getParent();
+                        ProcessBuilder tail = new ProcessBuilder("/bin/sh", "-c", "tail -f " + result.toString());
+                        Process process;
+                        int nullcount = 0;
+                        try {
+                            while (true) {
+                                process = tail.start();
+                                BufferedReader input = new BufferedReader(new InputStreamReader(process.getInputStream()));
+                                String line;
+                                try {
+                                    while ((line = input.readLine()) != null) {
+                                        compononetLogText.appendText("\n" + line + "\n");
+                                        updateData(line);
+                                    }
+                                    if (input.readLine() == null) {
+                                        nullcount++;
+                                    }
+                                    if (nullcount == 2) {
+                                        process.destroy();
+                                    }
+
+                                } catch (Exception e) {
+                                }
+                            }
+                        } catch (IOException ex) {
+                            Logger.getLogger(ExecuteTest.class.getName()).log(Level.SEVERE, null, ex);
+                        }
+                        String poxFileName = parentPath + "/" + "POX2.session";
+                        String flowFileName = parentPath + "/" + "FlowVisor1.session";
+                        String mininetFileName = parentPath + "/" + "Mininet1.session";
+                        ProcessBuilder tailpox = new ProcessBuilder("/bin/sh", "-c", "tail -f " + poxFileName);
+                    }
+                }).start();
+
+                r3 = new Runnable() {
+                    public void run() {
+                        try {
+                            summaryChart.setVisible(true);
+                            try {
+                                pieChartData.set(0, new PieChart.Data("Pass", ExecuteTest.noOfPassed));
+                                pieChartData.set(1, new PieChart.Data("Fail", ExecuteTest.noOfFailed));
+                                pieChartData.set(2, new PieChart.Data("Abort", ExecuteTest.noOfAborted));
+                                passData.setPieValue(1);
+                                failData.setPieValue(0);
+                                abortData.setPieValue(0);
+                                noResultData.setPieValue(0);
+                                summaryChart.getStylesheets().add(getClass().getResource("test.css").toExternalForm());
+                                summaryChart.setData(pieChartData);
+                            } catch (Exception e) {
+                                e.printStackTrace();
+                            }
+                        } catch (Exception e) {
+                            e.printStackTrace();
+                        }
+                    }
+                };
+            } catch (Exception e) {
+                e.printStackTrace();
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+
+    public void updateData(String line) {
+
+        casePatt = Pattern.compile("\\s*Result\\s+summary\\s+for\\s+Testcase(\\d+)");
+        m = casePatt.matcher(line);
+        if (m.find()) {
+            Date dNow = new Date();
+            SimpleDateFormat ft = new SimpleDateFormat("hh:mm:ss a zzz dd.MM.yyyy");
+            testCaseStartTime = ft.format(dNow);
+            currentTestCase = m.group(1);
+            stepHash.clear();
+            getTestSteps(m.group(1));
+            Image image = new Image(getClass().getResourceAsStream("/images/loading.gif"), 10, 10, true, true);
+            Label statusImage = new Label("", new ImageView(image));
+            stepSummaryData = FXCollections.observableArrayList(new StepTable(new Label(""), new Label(""), new Label("")));
+            Iterator entries = stepHash.entrySet().iterator();
+            while (entries.hasNext()) {
+                Map.Entry entry = (Map.Entry) entries.next();
+                String key = (String) entry.getKey();
+                String value = (String) entry.getValue();
+                stepSummaryData.add(new StepTable(new Label(key), new Label(value), new Label("", new ImageView(image))));
+            }
+            stepTable.setItems(stepSummaryData);
+        }
+
+        namePatt = Pattern.compile("\\[(.*)\\]\\s*\\[(.*)\\]\\s*\\[\\s*CASE\\s*\\](.*)\\s*");
+        m = namePatt.matcher(line);
+
+        if (m.find()) {
+            testCaseName = m.group(3);
+            Image image = new Image(getClass().getResourceAsStream("/images/progress.png"));
+            statusImage = new Label("", new ImageView(image));
+            if (tableIndex < 0) {
+                data = FXCollections.observableArrayList(new SummaryTable(new Label(currentTestCase), new Label(testCaseName),
+                        statusImage, new Label(testCaseStartTime), new Label()));
+            } else {
+                data.add(new SummaryTable(new Label(currentTestCase), new Label(testCaseName), statusImage,
+                        new Label(testCaseStartTime), new Label("")));
+            }
+            tableIndex++;
+        }
+
+        stepPatt = Pattern.compile("\\[(.*)\\]\\s*\\[(.*)\\]\\s*\\[\\s*STEP\\s*\\]\\s*(\\d+)\\.(\\d+):(.*)\\s*");
+
+        m = stepPatt.matcher(line);
+        if (m.find()) {
+            String currentStepNumber = m.group(3) + "." + m.group(4);
+            for (int i = 1; i < stepSummaryData.size(); i++) {
+                if (stepSummaryData.get(i).getTestStepId().getText().equals(currentStepNumber)) {
+                    Image image = new Image(getClass().getResourceAsStream("/images/progress.png"));
+                    stepTableIndex = i;
+                    stepSummaryData.set(i, new StepTable(new Label(stepSummaryData.get(i).getTestStepId().getText()), new Label(stepSummaryData.get(i).getTestStepName().getText()), new Label("", new ImageView(image))));
+                    Image images = new Image(getClass().getResourceAsStream("/images/Pass_Icon.png"));
+                }
+            }
+
+        }
+
+        assertionPatt = Pattern.compile("\\s*(.*)\\s*-\\s*(\\w+)\\s*-\\s*(\\w+)\\s*-\\s*(.*)\\s*");
+        m = assertionPatt.matcher(line);
+        if (m.find() && stepTableIndex > -1) {
+            if (m.group(3).equals("INFO") && m.group(4).equals("Assertion Passed")) {
+                Image image = new Image(getClass().getResourceAsStream("/images/Pass_Icon.png"));
+                stepSummaryData.set(stepTableIndex, new StepTable(new Label(stepSummaryData.get(stepTableIndex).getTestStepId().getText()),
+                        new Label(stepSummaryData.get(stepTableIndex).getTestStepName().getText()), new Label("", new ImageView(image))));
+            } else if (m.group(3).equals("WARNING") && m.group(4).equals("Assertion Failed")) {
+                Image image = new Image(getClass().getResourceAsStream("/images/Fail_Icon.png"));
+                stepSummaryData.set(stepTableIndex, new StepTable(new Label(stepSummaryData.get(stepTableIndex).getTestStepId().getText()),
+                        new Label(stepSummaryData.get(stepTableIndex).getTestStepName().getText()), new Label("", new ImageView(image))));
+                XmlRpcClient server;
+            }
+
+        }
+
+        resultPatt = Pattern.compile("\\s*Result:\\s+(\\w+)\\s*");
+        m = resultPatt.matcher(line);
+        if (m.find()) {
+            testCaseStatus = m.group(1);
+            Date dNow = new Date();
+            Image image;
+            SimpleDateFormat ft = new SimpleDateFormat("hh:mm:ss a zzz dd.MM.yyyy");
+            testCaseEndTime = ft.format(dNow);
+            if (testCaseStatus.equalsIgnoreCase("No result")) {
+                image = new Image(getClass().getResourceAsStream("/images/noResult.png"));
+                statusImage = new Label("", new ImageView(image));;
+                ExecuteTest.noOfNoResult++;
+            }
+
+            if (testCaseStatus.equalsIgnoreCase("Pass")) {
+                image = new Image(getClass().getResourceAsStream("/images/Pass_Icon.png"));
+                statusImage = new Label("", new ImageView(image));
+                ExecuteTest.noOfPassed++;
+            }
+            if (testCaseStatus.equals("Failed")) {
+                image = new Image(getClass().getResourceAsStream("/images/Fail_Icon.png"));
+                statusImage = new Label("", new ImageView(image));
+                ExecuteTest.noOfFailed++;
+            } else if (testCaseStatus.equals("Aborted")) {
+                image = new Image(getClass().getResourceAsStream("/images/Abort_Icon.png"));
+                statusImage = new Label("", new ImageView(image));
+                this.noOfAborted++;
+            }
+            data.set(tableIndex, new SummaryTable(new Label(currentTestCase), new Label(testCaseName),
+                    statusImage, new Label(testCaseStartTime), new Label(testCaseEndTime)));
+            summaryTable.setItems(data);
+        }
+
+        summaryPatt = Pattern.compile("\\s*Test+\\s+Execution(.*)");
+        m = summaryPatt.matcher(line);
+        if (m.find()) {
+        }
+
+        testStartPatt = Pattern.compile("Test\\s+Start\\s+\\:\\s+(.*)");
+        m = testStartPatt.matcher(line);
+        if (m.find()) {
+            Image image = new Image(getClass().getResourceAsStream("/images/Pass_Icon.png"));
+            statusImage = new Label("", new ImageView(image));
+            data.set(tableIndex, new SummaryTable(new Label(currentTestCase), new Label(testCaseName),
+                    statusImage, new Label(testCaseStartTime), new Label(testCaseEndTime)));
+            stepTable.setVisible(false);
+            finalSummaryTable.setVisible(true);
+            summaryChart.setVisible(true);
+            finalSummaryData = FXCollections.observableArrayList(new FinalSummaryTable(new Label(""), new Label("")));
+            finalSummaryTable.setItems(finalSummaryData);
+            testStart = m.group(1);
+            finalSummaryData.set(0, new FinalSummaryTable(new Label("Test Start"), new Label(testStart)));
+            finalSummaryTable.setItems(finalSummaryData);
+        }
+        testEndPatt = Pattern.compile("Test\\s+End\\s+\\:\\s+(.*)");
+        m = testEndPatt.matcher(line);
+        if (m.find()) {
+            testEnd = m.group(1);
+            finalSummaryData.add(new FinalSummaryTable(new Label("Test End"), new Label(testEnd)));
+            finalSummaryTable.setItems(finalSummaryData);
+        }
+        testExecutionTimePatt = Pattern.compile("\\s*Execution\\s+Time\\s+\\:\\s+(.*)");
+        m = testExecutionTimePatt.matcher(line);
+        if (m.find()) {
+            testExecutionTime = m.group(1);
+            finalSummaryData.add(new FinalSummaryTable(new Label("Execution Time"), new Label(testExecutionTime)));
+            finalSummaryTable.setItems(finalSummaryData);
+        }
+        testsPlannedPatt = Pattern.compile("\\s*Total\\s+tests\\s+planned\\s+\\:\\s*(.*)");
+        m = testsPlannedPatt.matcher(line);
+        if (m.find()) {
+            testsPlanned = m.group(1);
+            finalSummaryData.add(new FinalSummaryTable(new Label("Total Tests Planned"), new Label(testsPlanned)));
+            finalSummaryTable.setItems(finalSummaryData);
+        }
+
+        testsRunPatt = Pattern.compile("\\s*Total\\s+tests\\s+Run\\s+\\:\\s+(.*)");
+        m = testsRunPatt.matcher(line);
+        if (m.find()) {
+            testsRun = m.group(1);
+            finalSummaryData.add(new FinalSummaryTable(new Label("Total Tests Run"), new Label(testsRun)));
+            finalSummaryTable.setItems(finalSummaryData);
+        }
+        totalPassPatt = Pattern.compile("Total\\s+Pass\\s+\\:\\s+(.*)");
+        m = totalPassPatt.matcher(line);
+        if (m.find()) {
+            totalPass = m.group(1);
+            Label totalPassL = new Label("Total Pass");
+            totalPassL.setTextFill(Color.GREEN);
+            totalPassL.setStyle("-fx-font-weight: bold");
+            Label totalPassValue = new Label(totalPass);
+            totalPassValue.setTextFill(Color.GREEN);
+            totalPassValue.setStyle("-fx-font-weight: bold");
+            finalSummaryData.add(new FinalSummaryTable(totalPassL, totalPassValue));
+            finalSummaryTable.setItems(finalSummaryData);
+        }
+        totalFailPatt = Pattern.compile("Total\\s+Fail\\s+\\:\\s+(.*)");
+        m = totalFailPatt.matcher(line);
+        if (m.find()) {
+            totalFail = m.group(1);
+            Label totalFailL = new Label("Total Fail");
+            totalFailL.setTextFill(Color.RED);
+            totalFailL.setStyle("-fx-font-weight: bold");
+            Label totalFailValue = new Label(totalFail);
+            totalFailValue.setTextFill(Color.RED);
+            totalFailValue.setStyle("-fx-font-weight: bold");
+            finalSummaryData.add(new FinalSummaryTable(totalFailL, totalFailValue));
+            finalSummaryTable.setItems(finalSummaryData);
+        }
+
+        totalreRun = Pattern.compile("Total\\s+Re\\-Run\\s+\\:\\s+(.*)");
+        m = totalreRun.matcher(line);
+        if (m.find()) {
+            Label totalReRun = new Label("Total Re-Run");
+            totalReRun.setTextFill(Color.BLUE);
+            totalReRun.setStyle("-fx-font-weight: bold");
+            Label totalReRunValue = new Label(m.group(1));
+            totalReRunValue.setTextFill(Color.BLUE);
+            totalReRunValue.setStyle("-fx-font-weight: bold");
+            finalSummaryData.add(new FinalSummaryTable(totalReRun, totalReRunValue));
+            finalSummaryTable.setItems(finalSummaryData);
+        }
+
+        noResultPatt = Pattern.compile("Total\\s+No\\s+Result\\s+\\:\\s+(.*)");
+        m = noResultPatt.matcher(line);
+        if (m.find()) {
+            noResult = m.group(1);
+            finalSummaryData.add(new FinalSummaryTable(new Label("Total No-Result"), new Label(noResult)));
+            finalSummaryTable.setItems(finalSummaryData);
+        }
+
+        totalAbortPatt = Pattern.compile("Total\\sabort\\s+\\:\\s+(.*)");
+        m = totalAbortPatt.matcher(line);
+        if (m.find()) {
+            totalAbort = m.group(1);
+            finalSummaryData.add(new FinalSummaryTable(new Label("Total Abort"), new Label(totalAbort)));
+            finalSummaryTable.setItems(finalSummaryData);
+        }
+        execPercentagePatt = Pattern.compile("Execution\\s+Result\\s+\\:\\s+(.*)");
+        m = execPercentagePatt.matcher(line);
+        if (m.find()) {
+            execPercentage = m.group(1);
+            finalSummaryData.add(new FinalSummaryTable(new Label("Execution Percentage"), new Label(execPercentage)));
+            finalSummaryTable.setItems(finalSummaryData);
+            Platform.runLater(r3);
+        }
+        successPercentagePatt = Pattern.compile("Success\\s+Percentage\\s+\\:\\s+(.*)");
+        m = successPercentagePatt.matcher(line);
+        if (m.find()) {
+            successPercentage = m.group(1);
+            finalSummaryData.add(new FinalSummaryTable(new Label("Success Percentage"), new Label(successPercentage)));
+            finalSummaryTable.setItems(finalSummaryData);
+        }
+    }
+
+    public ExecuteTest() {
+    }
+
+    public String getTestCase() {
+        return currentTestCase;
+    }
+
+    public void getTestSteps(String caseNumber) {
+        OFAFileOperations fileOperation = new OFAFileOperations();
+        int stepCount = 0;
+        String stepCounter = "";
+        String ospkFileName = label.hierarchyTestON + "/tests/" + selectedTest + "/" + selectedTest + ".ospk";
+        String pythonScriptName = label.hierarchyTestON + "/tests/" + selectedTest + "/" + selectedTest + ".py";
+        BufferedReader input = null;
+        ArrayList<String> contents = new ArrayList<String>();
+        File scriptName = new File(ospkFileName);
+        if (scriptName.exists()) {
+            try {
+                //use buffering, reading one line at a time
+                //FileReader always assumes default encoding is OK!
+                try {
+                    input = new BufferedReader(new FileReader(scriptName));
+                } catch (Exception e) {
+                }
+
+                try {
+                    String line = null; //not declared within while loop
+                    while ((line = input.readLine()) != null) {
+                        contents.add(line);
+                    }
+                } finally {
+                    try {
+                        input.close();
+                    } catch (Exception e) {
+                    }
+                }
+            } catch (IOException ex) {
+                ex.printStackTrace();
+            }
+            for (int i = 0; i < contents.size(); i++) {
+                Pattern casePattern = Pattern.compile("\\s*CASE\\s*(\\d+)\\s*");
+                Matcher caseMatcher = casePattern.matcher(contents.get(i));
+                if (caseMatcher.find()) {
+                    if (caseMatcher.group(1).equals(caseNumber)) {
+                        i++;
+                        Pattern casePatterns = Pattern.compile("\\s*CASE\\s*(\\d+)\\s*");
+                        Matcher caseMatchers = casePatterns.matcher(contents.get(i));
+                        while (!caseMatchers.find() && i < contents.size()) {
+                            Pattern casesPatterns = Pattern.compile("\\s*CASE\\s*(\\d+)\\s*");
+                            Matcher casesMatchers = casesPatterns.matcher(contents.get(i));
+                            if (casesMatchers.find()) {
+                                break;
+                            } else {
+                                Pattern stepPattern = Pattern.compile("\\s*STEP\\s+\"\\s*(.*)\\s*\"\\s*");
+                                Matcher stepMatcher = stepPattern.matcher(contents.get(i));
+                                try {
+                                    if (stepMatcher.find()) {
+                                        stepCount++;
+                                        stepCounter = caseNumber + "." + String.valueOf(stepCount);
+                                        stepHash.put(stepCounter, stepMatcher.group(1));
+                                    }
+                                } catch (Exception e) {
+                                    break;
+                                }
+                                i++;
+                            }
+
+                        }
+                        i--;
+                    }
+
+                }
+            }
+        } else {
+            try {
+                //use buffering, reading one line at a time
+                //FileReader always assumes default encoding is OK!
+                try {
+                    input = new BufferedReader(new FileReader(pythonScriptName));
+
+                } catch (Exception e) {
+                }
+
+                try {
+                    String line = null; //not declared within while loop
+
+                    while ((line = input.readLine()) != null) {
+                        contents.add(line);
+                    }
+                } finally {
+                    try {
+                        input.close();
+                    } catch (Exception e) {
+                    }
+
+                }
+            } catch (IOException ex) {
+                ex.printStackTrace();
+            }
+
+            for (int i = 0; i < contents.size(); i++) {
+                Pattern casePattern = Pattern.compile("\\s*def\\s+CASE(\\d+)\\s*\\(\\s*(.*)\\s*\\)\\s*:\\s*");
+                Matcher caseMatcher = casePattern.matcher(contents.get(i));
+                if (caseMatcher.find()) {
+                    if (caseMatcher.group(1).equals(caseNumber)) {
+                        i++;
+                        Pattern casePatterns = Pattern.compile("\\s*def\\s+CASE(\\d+)\\s*\\(\\s*(.*)\\s*\\)\\s*:\\s*");
+                        Matcher caseMatchers = casePatterns.matcher(contents.get(i));
+                        while (!caseMatchers.find() && i < contents.size()) {
+                            Pattern casesPatterns = Pattern.compile("\\s*def\\s+CASE(\\d+)\\s*\\(\\s*(.*)\\s*\\)\\s*:\\s*");
+                            Matcher casesMatchers = casesPatterns.matcher(contents.get(i));
+                            if (casesMatchers.find()) {
+                                break;
+                            } else {
+                                Pattern stepPattern = Pattern.compile("\\s*main.step\\(\\s*\"\\s*(.*)\\s*\"\\s*\\)\\s*");
+                                Matcher stepMatcher = stepPattern.matcher(contents.get(i));
+                                try {
+                                    if (stepMatcher.find()) {
+                                        stepCount++;
+                                        stepCounter = caseNumber + "." + String.valueOf(stepCount);
+                                        stepHash.put(stepCounter, stepMatcher.group(1));
+                                    }
+                                } catch (Exception e) {
+                                    break;
+                                }
+                                i++;
+                            }
+                        }
+                        i--;
+                    }
+                }
+            }
+        }
+    }
+
+    public void getCaseName() {
+        int stepCount = 0;
+        String stepCounter = "";
+        String paramFilePath = label.hierarchyTestON + "/tests/" + selectedTest + "/" + selectedTest + ".params";
+        FileInputStream fstream;
+        String testCases = "";
+        ArrayList<String> paramFileName = new ArrayList<String>();
+        ArrayList<String> nameBetweenTags = new ArrayList<String>();
+        try {
+            fstream = new FileInputStream(paramFilePath);
+            DataInputStream in = new DataInputStream(fstream);
+            BufferedReader br = new BufferedReader(new InputStreamReader(in));
+            String strLine;
+            try {
+                while ((strLine = br.readLine()) != null) {
+                    paramFileName.add(strLine);
+                }
+            } catch (IOException ex) {
+                Logger.getLogger(ExecuteTest.class.getName()).log(Level.SEVERE, null, ex);
+            }
+        } catch (FileNotFoundException ex) {
+            Logger.getLogger(ExecuteTest.class.getName()).log(Level.SEVERE, null, ex);
+        }
+
+        for (int index = 0; index < paramFileName.size(); index++) {
+            Pattern testsPattern = Pattern.compile("<testcases>\\s*(.*)\\s*</testcases>");
+            Matcher testMatcher = testsPattern.matcher(paramFileName.get(index));
+            if (testMatcher.find()) {
+                testCases = testMatcher.group(1);
+                testCases = testCases.replaceAll(" ", "");
+            }
+
+        }
+
+        String[] testArray = null;
+        testArray = testCases.split(",");
+        String ospkFileName = label.hierarchyTestON + "/tests/" + selectedTest + "/" + selectedTest + ".ospk";
+        String pythonScriptName = label.hierarchyTestON + "/tests/" + selectedTest + "/" + selectedTest + ".py";
+        BufferedReader input = null;
+        ArrayList<String> contents = new ArrayList<String>();
+        File scriptName = new File(ospkFileName);
+        String caseId = "";
+        String caseName = "";
+        if (scriptName.exists()) {
+            try {
+                FileInputStream fstream1 = new FileInputStream(ospkFileName);
+                ArrayList<String> driverFunctionName = new ArrayList<String>();
+                DataInputStream in = new DataInputStream(fstream1);
+                BufferedReader br = new BufferedReader(new InputStreamReader(in));
+                String strLine;
+                while ((strLine = br.readLine()) != null) {
+                    Pattern casePattern = Pattern.compile("^CASE\\s+(\\d+)");
+                    Matcher match = casePattern.matcher(strLine);
+                    while (match.find()) {
+                        driverFunctionName.add(match.group());
+                        caseId = match.group(1);
+                        strLine = br.readLine();
+                        casePattern = Pattern.compile("NAME\\s+(\\\"+(.*)\\\")");
+                        match = casePattern.matcher(strLine);
+                        if (match.find()) {
+                            caseName = match.group(2);
+                        }
+                        caseNameHash.put(caseId, caseName);
+                    }
+                }
+            } catch (Exception e) {
+            }
+        } else {
+            try {
+
+                FileInputStream fstream2 = new FileInputStream(pythonScriptName);
+                ArrayList<String> driverFunctionName = new ArrayList<String>();
+                DataInputStream in = new DataInputStream(fstream2);
+                BufferedReader br = new BufferedReader(new InputStreamReader(in));
+                String strLine;
+                while ((strLine = br.readLine()) != null) {
+                    Pattern casePattern = Pattern.compile("\\s*def\\s+CASE(\\d+)\\s*\\(\\s*(.*)\\s*\\)\\s*:\\s*");
+                    Matcher match = casePattern.matcher(strLine);
+                    if (match.find()) {
+                        driverFunctionName.add(match.group());
+                        if (Arrays.asList(testArray).contains(match.group(1))) {
+                            caseId = match.group(1);
+                        } else {
+                            caseId = null;
+                        }
+                        strLine = br.readLine();
+                    }
+
+                    casePattern = Pattern.compile("\\s*main.case\\(\\s*\"\\s*(.*)\\s*\"\\s*\\)\\s*");
+                    match = casePattern.matcher(strLine);
+
+                    if (match.find()) {
+                        caseName = match.group(1);
+                        if (caseId != null) {
+                            caseNameHash.put(caseId, caseName);
+                        }
+                    }
+                }
+            } catch (Exception e) {
+            }
+        }
+    }
+}