Search in sources :

Example 1 with TestCaseRun

use of com.centurylink.mdw.designer.testing.TestCaseRun in project mdw-designer by CenturyLinkCloud.

the class DesignerProxy method prepareTestCase.

public TestCaseRun prepareTestCase(AutomatedTestCase testCase, int runNum, File resultDir, boolean createReplace, boolean verbose, PrintStream log, LogMessageMonitor monitor, boolean singleServer, boolean stubbing, boolean debug) throws RemoteException {
    if ((testCase.isGroovy() || testCase.isGherkin()) && !MdwPlugin.workspaceHasGroovySupport()) {
        String msg = "Please install Groovy support to execute test case: " + testCase.getName();
        throw new IllegalStateException(msg);
    }
    SimpleDateFormat sdf = new SimpleDateFormat("yyMMdd-HHmmssSSS");
    try {
        if (!testCase.isLegacy() && !testCase.getProject().isFilePersist()) {
            // non-VCS asset-based -- load ruleSet content
            testCase.load();
            testCase.getRuleSetVO().setPackageName(testCase.getPackage().getName());
        }
        testCase.getTestCase().prepare();
        Map<String, ProcessVO> procCache = new HashMap<>();
        String masterRequestId = testCase.getMasterRequestId();
        if (masterRequestId == null)
            masterRequestId = project.getUser().getUsername() + "-" + sdf.format(new Date());
        else if (!testCase.isGroovy() && !testCase.isGherkin() && masterRequestId.equals(TestDataFilter.AnyNumberToken))
            masterRequestId = Long.toString(System.currentTimeMillis());
        if (testCase.isGherkin() && masterRequestId.indexOf("${masterRequestId}") != -1)
            masterRequestId = masterRequestId.replace("${masterRequestId}", project.getUser().getUsername() + "-" + sdf.format(new Date()));
        testCase.setMasterRequestId(masterRequestId);
        TestCaseRun run;
        if (testCase.isGherkin()) {
            run = new GherkinTestCaseLaunch(testCase.getTestCase(), runNum, masterRequestId, new DesignerDataAccess(dataAccess.getDesignerDataAccess()), monitor, procCache, testCase.isLoadTest(), true, testCase.getProject().isOldNamespaces(), project);
        } else if (testCase.isGroovy()) {
            if (debug) {
                run = new AutoTestCaseRun(testCase, runNum, masterRequestId, new DesignerDataAccess(dataAccess.getDesignerDataAccess()), monitor, procCache, debug);
            } else {
                List<String> classpathList = null;
                IJavaProject javaProject = project.getJavaProject();
                if (javaProject != null && javaProject.exists()) {
                    classpathList = Arrays.asList(JavaRuntime.computeDefaultRuntimeClassPath(javaProject));
                }
                run = new GroovyTestCaseRun(testCase.getTestCase(), runNum, masterRequestId, new DesignerDataAccess(dataAccess.getDesignerDataAccess()), monitor, procCache, testCase.isLoadTest(), true, testCase.getProject().isOldNamespaces(), classpathList);
            }
        } else {
            run = new TestCaseRun(testCase.getTestCase(), runNum, masterRequestId, new DesignerDataAccess(dataAccess.getDesignerDataAccess()), monitor, procCache, testCase.isLoadTest(), true, testCase.getProject().isOldNamespaces());
        }
        run.prepareTest(createReplace, resultDir, verbose, singleServer, stubbing, log);
        return run;
    } catch (Exception ex) {
        throw new RemoteException(ex.getMessage(), ex);
    }
}
Also used : HashMap(java.util.HashMap) GherkinTestCaseLaunch(com.centurylink.mdw.plugin.launch.GherkinTestCaseLaunch) GroovyTestCaseRun(com.centurylink.mdw.designer.testing.GroovyTestCaseRun) Date(java.util.Date) JSONException(org.json.JSONException) TranslationException(com.centurylink.mdw.common.exception.TranslationException) AuthenticationException(com.centurylink.mdw.auth.AuthenticationException) IOException(java.io.IOException) XmlException(org.apache.xmlbeans.XmlException) ValidationException(com.centurylink.mdw.designer.utils.ValidationException) DataAccessOfflineException(com.centurylink.mdw.dataaccess.DataAccessOfflineException) ZipException(java.util.zip.ZipException) DataAccessException(com.centurylink.mdw.common.exception.DataAccessException) FileNotFoundException(java.io.FileNotFoundException) RemoteException(java.rmi.RemoteException) IJavaProject(org.eclipse.jdt.core.IJavaProject) AutoTestCaseRun(com.centurylink.mdw.plugin.launch.AutoTestCaseRun) ProcessVO(com.centurylink.mdw.model.value.process.ProcessVO) ArrayList(java.util.ArrayList) List(java.util.List) ProcessList(com.centurylink.mdw.model.value.process.ProcessList) DesignerDataAccess(com.centurylink.mdw.designer.DesignerDataAccess) TestCaseRun(com.centurylink.mdw.designer.testing.TestCaseRun) AutoTestCaseRun(com.centurylink.mdw.plugin.launch.AutoTestCaseRun) GroovyTestCaseRun(com.centurylink.mdw.designer.testing.GroovyTestCaseRun) RemoteException(java.rmi.RemoteException) SimpleDateFormat(java.text.SimpleDateFormat)

Example 2 with TestCaseRun

use of com.centurylink.mdw.designer.testing.TestCaseRun in project mdw-designer by CenturyLinkCloud.

the class AutomatedTestCase method setMessage.

public void setMessage(String message) {
    this.message = message;
    TestCaseRun firstRun = testCase.getFirstRun();
    if (firstRun != null)
        firstRun.setMessage(message);
}
Also used : TestCaseRun(com.centurylink.mdw.designer.testing.TestCaseRun)

Example 3 with TestCaseRun

use of com.centurylink.mdw.designer.testing.TestCaseRun in project mdw-designer by CenturyLinkCloud.

the class AutomatedTestView method runTests.

public void runTests() {
    // TODO: currently mixed execution of Gherkin/Groovy scripts
    // fails to start LogMessageMonitor in Designer VM (otherwise will
    // conflict with Cucumber-JVM)
    boolean hasGherkin = false;
    for (AutomatedTestCase rtc : testSuite.getTestCases()) {
        if (rtc.isGherkin())
            hasGherkin = true;
    }
    try {
        prepForRun();
        counterData = new CounterData(testSuite.getTestCases().size());
        updateCounterPanel(0, 0, 0, true);
        monitor = null;
        if (!hasGherkin && !testSuite.isDebug())
            monitor = new LogMessageMonitor(testSuite.getProject().getDesignerProxy().getDesignerDataAccess(), testSuite.getProject().isOldNamespaces());
        String msg = designerProxy.checkForServerDbMismatch();
        if (msg != null) {
            MessageDialog.openError(getSite().getShell(), "Server DB Mismatch", msg);
            handleStop();
            return;
        }
        if (StubServer.isRunning())
            StubServer.stop();
        if (testSuite.isStubbing() && !hasGherkin && !testSuite.isDebug()) {
            StubServer.Stubber stubber = new TestStubber();
            int port = testSuite.getProject().getServerSettings().getStubServerPort();
            StubServer.start(testSuite.getProject().getDesignerProxy().getRestfulServer(), port, stubber, testSuite.getProject().isOldNamespaces());
        }
    } catch (Exception ex) {
        PluginMessages.uiError(ex, "Automated Test", testSuite.getProject());
        handleStop();
        return;
    }
    Thread background = new Thread(new Runnable() {

        public void run() {
            testCaseStatuses = new HashMap<>();
            updateProgressBar(5, false, false);
            threadPool = new ThreadPool(testSuite.getThreadCount());
            PrintStream printStream = null;
            updateProgressBar(10, false, false);
            if (monitor != null)
                monitor.start(true);
            for (AutomatedTestCase testCase : testSuite.getTestCases()) {
                if (!testSuite.isRunning())
                    continue;
                File resultDir = testCase.getResultsDir();
                try {
                    File executeLog = testCase.getOutputFile();
                    deleteFile(executeLog);
                    if (testCase.isPostman())
                        deleteFile(testCase.getItemOutputFile());
                    if (!executeLog.getParentFile().exists() && !executeLog.getParentFile().mkdirs())
                        throw new IOException("Unable to create test run directory: " + executeLog.getParentFile());
                    PrintStream log = new PrintStream(executeLog);
                    ImageDescriptor icon = MdwPlugin.getImageDescriptor("icons/auto_test.gif");
                    MessageConsole console = MessageConsole.findConsole("Tests", icon, display);
                    printStream = new PrintStream(console.newFileConsoleOutputStream(executeLog));
                    TestCaseRun testCaseRun = designerProxy.prepareTestCase(testCase, 0, resultDir, testSuite.isCreateReplaceResults(), testSuite.isVerbose(), log, monitor, testSuite.isSingleServer(), testSuite.isStubbing(), testSuite.isDebug());
                    masterRequestRunMap.put(testCaseRun.getMasterRequestId(), testCaseRun);
                    testCaseRun.setMasterRequestListener(AutomatedTestView.this);
                    threadPool.execute(testCaseRun);
                    updateTreeAndProgressBar(false);
                    try {
                        Thread.sleep(testSuite.getThreadInterval() * 1000);
                    } catch (InterruptedException ex) {
                    }
                } catch (Exception ex) {
                    PluginMessages.log(ex);
                    testCase.setErrored();
                    updateTreeAndProgressBar(true);
                    testSuite.setRunning(false);
                    if (printStream != null) {
                        ex.printStackTrace(printStream);
                        printStream.close();
                    }
                    handleStop();
                    return;
                }
            }
            while (!threadPool.isTerminated()) {
                // update the tree and the progress bar
                updateTreeAndProgressBar(false);
                if (testSuite.isFinished())
                    threadPool.shutdown();
                try {
                    Thread.sleep(2500);
                } catch (InterruptedException e) {
                }
            }
            updateTreeAndProgressBar(true);
            testSuite.setRunning(false);
            actionGroup.enableStopAction(false);
            actionGroup.enableRerunAction(true);
            File resultsFile = testSuite.getProject().getFunctionTestResultsFile();
            actionGroup.enableFormatFunctionTestResults(resultsFile != null && resultsFile.exists());
            locked = false;
            if (monitor != null && monitor.isBound())
                monitor.shutdown();
            if (printStream != null)
                printStream.close();
        }
    });
    background.start();
}
Also used : PrintStream(java.io.PrintStream) MessageConsole(com.centurylink.mdw.plugin.MessageConsole) ConcurrentHashMap(java.util.concurrent.ConcurrentHashMap) HashMap(java.util.HashMap) ThreadPool(com.centurylink.mdw.designer.testing.ThreadPool) Stubber(com.centurylink.mdw.designer.testing.StubServer.Stubber) IOException(java.io.IOException) JSONException(org.json.JSONException) FileNotFoundException(java.io.FileNotFoundException) IOException(java.io.IOException) StubServer(com.centurylink.mdw.designer.testing.StubServer) LogMessageMonitor(com.centurylink.mdw.designer.testing.LogMessageMonitor) ImageDescriptor(org.eclipse.jface.resource.ImageDescriptor) AutomatedTestCase(com.centurylink.mdw.plugin.designer.model.AutomatedTestCase) TestCaseRun(com.centurylink.mdw.designer.testing.TestCaseRun) File(java.io.File)

Example 4 with TestCaseRun

use of com.centurylink.mdw.designer.testing.TestCaseRun in project mdw-designer by CenturyLinkCloud.

the class AutomatedTestView method runLoadTests.

public void runLoadTests() {
    int totalRunCount = 0;
    for (AutomatedTestCase testCase : testSuite.getTestCases()) totalRunCount += testCase.getRunCount();
    testSuite.setRunCount(totalRunCount);
    try {
        prepForRun();
        counterData = new CounterData(testSuite.getRunCount());
        updateCounterPanel(0, 0, 0, true);
        monitorObj = new LoadTestLogMonitor(testSuite.getProject().getDesignerProxy().getDesignerDataAccess(), masterRequestRunMap, null);
        String msg = designerProxy.checkForServerDbMismatch();
        if (msg != null) {
            MessageDialog.openError(getSite().getShell(), "Server DB Mismatch", msg);
            handleStop();
            return;
        }
        if (testSuite.isStubbing()) {
            StubServer.Stubber stubber = new TestStubber();
            if (StubServer.isRunning())
                StubServer.stop();
            int port = testSuite.getProject().getServerSettings().getStubServerPort();
            StubServer.start(testSuite.getProject().getDesignerProxy().getRestfulServer(), port, stubber, testSuite.getProject().isOldNamespaces());
        }
    } catch (Exception ex) {
        PluginMessages.uiError(ex, "Load Test", testSuite.getProject());
        handleStop();
        return;
    }
    Thread background = new Thread(new Runnable() {

        public void run() {
            testCaseStatuses = new HashMap<>();
            updateProgressBar(5, false, false);
            threadPool = new ThreadPool(testSuite.getThreadCount());
            long startTime = System.currentTimeMillis();
            int totalPrepared = 0;
            int totalCompleted = 0;
            try {
                startTime = System.currentTimeMillis();
                monitorObj.start(true);
                for (AutomatedTestCase testCase : testSuite.getTestCases()) {
                    File resultDir = testCase.getResultsDir();
                    File executeLog = new File(resultDir.getPath() + "/execute.log");
                    int ct = testCase.getRunCount();
                    for (int k = 0; k < ct; k++) {
                        deleteFile(executeLog);
                        if (!executeLog.getParentFile().exists() && !executeLog.getParentFile().mkdirs())
                            throw new IOException("Unable to create test run directory: " + executeLog.getParentFile());
                        PrintStream log = new PrintStream(executeLog);
                        TestCaseRun testCaseRun = designerProxy.prepareTestCase(testCase, k, resultDir, false, testSuite.isVerbose(), log, monitorObj, testSuite.isSingleServer(), testSuite.isStubbing(), false);
                        totalPrepared++;
                        testCase.getTestCase().setNumberPrepared(totalPrepared);
                        masterRequestRunMap.put(testCaseRun.getMasterRequestId(), testCaseRun);
                        threadPool.execute(testCaseRun);
                        updateTreeAndProgressBar(false);
                        try {
                            Thread.sleep(testSuite.getThreadInterval() * 1000);
                        } catch (InterruptedException ex) {
                        }
                    }
                }
                updateProgressBar(10, false, false);
                // server's commonThreadPool
                while (!threadPool.isTerminated()) {
                    // update the tree and the progress bar
                    updateTreeAndProgressBar(false);
                    if (testSuite.isFinished())
                        threadPool.shutdown();
                    try {
                        Thread.sleep(1000);
                    } catch (InterruptedException e) {
                    }
                }
                testSuite.setRunning(false);
                actionGroup.enableStopAction(false);
                actionGroup.enableRerunAction(true);
                File resultsFile = testSuite.getProject().getLoadTestResultsFile();
                actionGroup.enableFormatLoadTestResults(resultsFile != null && resultsFile.exists());
            } catch (Exception ex) {
                ex.printStackTrace();
            } finally {
                if (monitorObj != null)
                    monitorObj.shutdown();
                locked = false;
            }
            try {
                generateLoadTestReport(totalPrepared, totalCompleted, monitorObj, startTime, testSuite.getResultsDir().toString());
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            }
        }
    });
    background.start();
}
Also used : PrintStream(java.io.PrintStream) ConcurrentHashMap(java.util.concurrent.ConcurrentHashMap) HashMap(java.util.HashMap) ThreadPool(com.centurylink.mdw.designer.testing.ThreadPool) FileNotFoundException(java.io.FileNotFoundException) Stubber(com.centurylink.mdw.designer.testing.StubServer.Stubber) IOException(java.io.IOException) JSONException(org.json.JSONException) FileNotFoundException(java.io.FileNotFoundException) IOException(java.io.IOException) StubServer(com.centurylink.mdw.designer.testing.StubServer) AutomatedTestCase(com.centurylink.mdw.plugin.designer.model.AutomatedTestCase) TestCaseRun(com.centurylink.mdw.designer.testing.TestCaseRun) LoadTestLogMonitor(com.centurylink.mdw.designer.testing.LoadTestLogMonitor) File(java.io.File)

Aggregations

TestCaseRun (com.centurylink.mdw.designer.testing.TestCaseRun)4 FileNotFoundException (java.io.FileNotFoundException)3 IOException (java.io.IOException)3 HashMap (java.util.HashMap)3 JSONException (org.json.JSONException)3 StubServer (com.centurylink.mdw.designer.testing.StubServer)2 Stubber (com.centurylink.mdw.designer.testing.StubServer.Stubber)2 ThreadPool (com.centurylink.mdw.designer.testing.ThreadPool)2 AutomatedTestCase (com.centurylink.mdw.plugin.designer.model.AutomatedTestCase)2 File (java.io.File)2 PrintStream (java.io.PrintStream)2 ConcurrentHashMap (java.util.concurrent.ConcurrentHashMap)2 AuthenticationException (com.centurylink.mdw.auth.AuthenticationException)1 DataAccessException (com.centurylink.mdw.common.exception.DataAccessException)1 TranslationException (com.centurylink.mdw.common.exception.TranslationException)1 DataAccessOfflineException (com.centurylink.mdw.dataaccess.DataAccessOfflineException)1 DesignerDataAccess (com.centurylink.mdw.designer.DesignerDataAccess)1 GroovyTestCaseRun (com.centurylink.mdw.designer.testing.GroovyTestCaseRun)1 LoadTestLogMonitor (com.centurylink.mdw.designer.testing.LoadTestLogMonitor)1 LogMessageMonitor (com.centurylink.mdw.designer.testing.LogMessageMonitor)1