@Override public void run() { try { logger.debug("INSIDE THE RUN METHOD OF: {} ", this.getClass().getName()); logger.debug("The test id is:" + testSuiteId); if (testSuiteStatusDao == null) { logger.debug("The test doa is null"); } TestSuiteStatus testSuiteStatus = testSuiteStatusDao.getByTestSuiteId(testSuiteId); TestSuite testSuite = testSuiteStatus.getTestSuite(); Set<TestSuiteTest> tests = testSuite.getTestSuiteTests(); List<Long> testIds = new ArrayList<Long>(); for (TestSuiteTest testSuiteTest : tests) { Test aTest = testSuiteTest.getTest(); testIds.add(aTest.getId()); testMonitor.scheduleATest(new TestExecutor(aTest.getId())); } logger.debug("Total number of tests in test suite: " + testIds.size()); Thread.sleep(15000); TestSuiteResult result = new TestSuiteResult(); result.setTestSuiteName(testSuite.getTestSuiteName()); result.setTestSuiteDescription(testSuite.getTestSuiteDescription()); result.setTotalTests(testIds.size()); result.setTotalFailed(0); result.setTotalPassed(0); List<FailedTestResult> failedTests = new ArrayList<FailedTestResult>(); FailedTestResult failedResult; // get the updates now long start = System.nanoTime(); for (Long testId : testIds) { TestStatus testStatus = testStatusDao.getByTestId(testId); long stop = System.nanoTime(); long timeTaken = TimeUnit.SECONDS.convert((stop - start), TimeUnit.NANOSECONDS); while (timeTaken < 120 && testStatus.getTestStatus().equals(TestStatus.RUNNING)) { Thread.sleep(5000); } if (testStatus.getTestStatus().equals(TestStatus.RUNNING)) { result.setTotalFailed(result.getTotalFailed() + 1); failedResult = new FailedTestResult(); failedResult.setTestName(testStatus.getTest().getTestName()); failedResult.setFailMessage("The Test is taking too long to run"); failedTests.add(failedResult); } else if (testStatus.getTestStatus().equals(TestStatus.FAILED)) { result.setTotalFailed(result.getTotalFailed() + 1); failedResult = new FailedTestResult(); failedResult.setTestName(testStatus.getTest().getTestName()); failedResult.setFailMessage("hmm. this test failed"); failedTests.add(failedResult); } else if (testStatus.getTestStatus().equals(TestStatus.PASSED)) { result.setTotalPassed(result.getTotalPassed() + 1); } } result.setFailedTests(failedTests); // generate a test report. String testReportURL = testMonitor.generateTestSuiteReport(result); // update the test with the URL link testSuiteStatus.setReportName(testReportURL); // update the status logger.debug("ABOUT TO SAVE THE STATUS"); testSuiteStatus.setTestSuiteStatus(TestSuiteStatus.COMPLETED); testSuiteStatusDao.save(testSuiteStatus); logger.debug("UPDATED AND SAVED THE STATUS"); } catch (Exception exp) { final Writer result = new StringWriter(); final PrintWriter printWriter = new PrintWriter(result); exp.printStackTrace(printWriter); logger.debug(result.toString()); } }