private void write2ErrorTxtFile(ITestResult iTestResult, File testFolder) { if (testFolder == null) { LogUtils.log("Can not write error.txt - test folder is null"); return; } //noinspection ThrowableResultOfMethodCallIgnored if (iTestResult.getThrowable() == null) { LogUtils.log("nothing to write to error.txt - throwable is null"); return; } // trim if too long //noinspection ThrowableResultOfMethodCallIgnored String errorMsg = iTestResult.getThrowable().toString(); if (errorMsg.length() > 120) { errorMsg = errorMsg.substring(0, 120 - 3) + "..."; } File errorTxtFile = new File(testFolder.getAbsolutePath(), "error.txt"); PrintWriter out = null; try { out = new PrintWriter(new BufferedWriter(new FileWriter(errorTxtFile, true))); out.println(errorMsg); } catch (IOException ioe) { LogUtils.log("Failed to write contents into error.txt file", ioe); } finally { if (out != null) { out.close(); } } }
@Override public void onTestFailure(ITestResult iTestResult) { if (suiteName.toLowerCase().contains("webui")) { if (testInvocationCounter < maxCount) { testInvocationCounter++; iTestResult.setAttribute("retry", true); } else { LogUtils.log("Number of retries expired."); iTestResult.setStatus(ITestResult.FAILURE); // reset count testInvocationCounter = 1; testMethodName = TestNGUtils.constructTestMethodName(iTestResult); LogUtils.log("Test Failed: " + testMethodName, iTestResult.getThrowable()); File testFolder = DumpUtils.createTestFolder(testMethodName, suiteName); write2LogFile(iTestResult, testFolder); write2ErrorTxtFile(iTestResult, testFolder); } } else { testMethodName = TestNGUtils.constructTestMethodName(iTestResult); LogUtils.log("Test Failed: " + testMethodName, iTestResult.getThrowable()); File testFolder = DumpUtils.createTestFolder(testMethodName, suiteName); write2LogFile(iTestResult, testFolder); write2ErrorTxtFile(iTestResult, testFolder); } super.onTestFailure(iTestResult); }
@Override public void onConfigurationFailure(ITestResult iTestResult) { super.onConfigurationFailure(iTestResult); String testName = iTestResult.getTestClass().getName(); String configurationName = iTestResult.getMethod().toString().split("\\(|\\)")[0]; if (!enableLogstash && isAfter(iTestResult)) { DumpUtils.copyBeforeConfigurationsLogToTestDir(testName, suiteName); testName = testMethodName; } if (suiteName == null) { // this is in case the suite has a @BeforeSuite method. which is invoked before // the onStart is. suiteName = System.getProperty("iTests.suiteName", "sgtest"); } LogUtils.log("Configuration Failed: " + configurationName, iTestResult.getThrowable()); if (enableLogstash && iTestResult.getMethod().isBeforeClassConfiguration()) { initLogstash2(iTestResult); } String newmanTestFolder = System.getProperty("newman.test.path"); if (newmanTestFolder != null) { File testFolder = new File(newmanTestFolder); ZipUtils.unzipArchive(testFolder); try { copyAllFilesToLogDir(testFolder, testFolder); } catch (IOException e) { LogUtils.log("Failed to copy all log files"); } } else { ZipUtils.unzipArchive(testMethodName, suiteName); } if (enableLogstash && isAfter(iTestResult) && !iTestResult.getMethod().isAfterClassConfiguration() && !iTestResult.getMethod().isAfterSuiteConfiguration()) { testName = testMethodName; } File testFolder = DumpUtils.createTestFolder(testName, suiteName); write2LogFile(iTestResult, testFolder); write2ErrorTxtFile(iTestResult, testFolder); if (isAfter(iTestResult)) { if (enableLogstash) { if (process != null) { killLogstashAgent(1, logstashLogPath); } if (process2 != null && iTestResult.getMethod().isAfterClassConfiguration()) { killLogstashAgent(2, logstashLogPath2); } } } }
private void initLogstash(String testName) { initLogstashHost(); String pathToLogstash = SGTestHelper.getSGTestRootDir().replace("\\", "/") + "/src/main/resources/logstash"; String confFilePath = pathToLogstash + "/logstash-shipper-client.conf"; String fixedTestName = testName.substring(0, testName.length() - 2); String backupFilePath = pathToLogstash + "/logstash-shipper-client-" + fixedTestName + ".conf"; if (process == null) { try { LogUtils.log("copying file " + confFilePath + " to " + backupFilePath); IOUtils.copyFile(confFilePath, backupFilePath); // backupFilePath = IOUtils.backupFile(confFilePath); IOUtils.replaceTextInFile( backupFilePath, "<path_to_test_folder>", SGTestHelper.getSGTestRootDir().replace("\\", "/") + "/../" + suiteName + "/" + testName); IOUtils.replaceTextInFile(backupFilePath, "<suite_name>", suiteName); IOUtils.replaceTextInFile(backupFilePath, "<test_name>", testName); IOUtils.replaceTextInFile(backupFilePath, "<build_number>", buildNumber); IOUtils.replaceTextInFile(backupFilePath, "<version>", version); IOUtils.replaceTextInFile(backupFilePath, "<host>", logstashHost); String logstashJarPath = DeploymentUtils.getLocalRepository() + "net/logstash/1.2.2/logstash-1.2.2.jar"; logstashLogPath = pathToLogstash + "/logstash-" + fixedTestName + ".txt"; String cmdLine = "java -jar " + logstashJarPath + " agent -f " + backupFilePath + " -l " + logstashLogPath; final String[] parts = cmdLine.split(" "); final ProcessBuilder pb = new ProcessBuilder(parts); LogUtils.log("Executing Command line: " + cmdLine); TimeUnit.SECONDS.sleep(1); process = pb.start(); } catch (Exception e) { e.printStackTrace(); } } }
@Override public void onStart(ITestContext iTestContext) { suiteName = System.getProperty("iTests.suiteName", "sgtest"); LogUtils.log("suite number is now (on start) - " + suiteName); if (enableLogstash) { buildNumber = System.getProperty("iTests.buildNumber"); LogUtils.log("build number is now (on start) - " + buildNumber); version = System.getProperty("cloudifyVersion"); } }
@Override public void onTestSkipped(ITestResult iTestResult) { super.onTestSkipped(iTestResult); testMethodName = TestNGUtils.constructTestMethodName(iTestResult); LogUtils.log("Test Skipped: " + testMethodName, iTestResult.getThrowable()); write2LogFile(iTestResult, DumpUtils.createTestFolder(testMethodName, suiteName)); }
private void write2LogFile(ITestResult iTestResult, File testFolder) { BufferedWriter out = null; try { if (testFolder == null) { LogUtils.log("Can not write to file test folder is null"); return; } String output = SGTestNGReporter.getOutput(); if (StringUtils.isEmpty(output)) { LogUtils.log("nothing to write to log file"); return; } String parameters = TestNGUtils.extractParameters(iTestResult); File testLogFile = new File( testFolder.getAbsolutePath() + "/" + iTestResult.getName() + "(" + parameters + ").log"); if (!testLogFile.createNewFile()) { LogUtils.log( "Failed to create log file [" + testLogFile + "];\n log output: " + Reporter.getOutput()); return; } FileWriter fstream = new FileWriter(testLogFile); out = new BufferedWriter(fstream); out.write(output); } catch (Exception e) { LogUtils.log("Failed to write to log file result - " + iTestResult, e); } finally { SGTestNGReporter.reset(); if (out != null) { try { out.close(); } catch (IOException e) { LogUtils.log("Failed closing stream", e); // ignore } } } }
@Override public void onTestStart(ITestResult iTestResult) { super.onTestStart(iTestResult); String testName = TestNGUtils.constructTestMethodName(iTestResult); LogUtils.log("Test Start: " + testName); if (enableLogstash) { initLogstash(testName); } }
@Override public void onTestSuccess(ITestResult iTestResult) { super.onTestSuccess(iTestResult); if (suiteName.toLowerCase().contains("webui")) { testInvocationCounter = 1; } testMethodName = TestNGUtils.constructTestMethodName(iTestResult); LogUtils.log("Test Passed: " + testMethodName); write2LogFile(iTestResult, DumpUtils.createTestFolder(testMethodName, suiteName)); }
@Override public void beforeConfiguration(ITestResult tr) { if (enableLogstash) { super.beforeConfiguration(tr); if (suiteName == null) { // this is in case the suite has a @BeforeSuite method. which is invoked before // the onStart is. suiteName = System.getProperty("iTests.suiteName", "sgtest"); buildNumber = System.getProperty("iTests.buildNumber"); LogUtils.log("build number is now - " + buildNumber); version = System.getProperty("cloudifyVersion"); } } }
@Override public void onFinish(ITestContext testContext) { super.onFinish(testContext); if (suiteName == null) suiteName = System.getProperty("iTests.suiteName", "sgtest"); LogUtils.log("Finishing Suite: " + suiteName.toLowerCase()); if (suiteName.toLowerCase().contains("webui")) { onFinishWebUITests(testContext); } try { SGTestNGReporter.reset(); } catch (Exception e) { // ignore } }
protected boolean fill(String value, boolean initial_state) { try { // fromString(value); // fire event if (initial_state) fireDocumentRestored(); else fireDocumentChanged(); return true; } catch (Exception e) { LogUtils.report(e); return false; } }
/** * Initialize the document by parsing it from a string. * * @see #fromString */ public boolean init(String value) { try { // source resetStatus(); // init data initData(); fromString(value); // fire event fireDocumentInit(); return true; } catch (Exception e) { LogUtils.report(e); return false; } }
/** * Read the document from a file. * @param merge if <code>true</code> the content of the file is * appended to the current document, when possible * @param warning if <code>true</true> report when the file cannot * be parsed * @see #read */ public boolean open(File file, boolean merge, boolean warning) { try { FileInputStream fis = new FileInputStream(file); // read structure try { read(fis, merge); } catch (Exception e) { System.err.println("Got exception: " + e.getMessage()); init(); if (warning) throw e; return false; } // setFilename(file.getAbsolutePath()); fireDocumentInit(); return true; } catch (Exception e) { LogUtils.report(e); return false; } }
/** * Save the document to a file. * * @see #write */ public boolean save(String filename) { try { setFilename(filename); // write to tmp file File tmpfile = File.createTempFile("gwb", null); write(new FileOutputStream(tmpfile)); // copy to dest file and delete tmp file FileUtils.copy(tmpfile, new File(filename)); tmpfile.delete(); // // fireDocumentInit(); return true; } catch (Exception e) { LogUtils.report(e); return false; } }
private void initLogstash2(ITestResult tr) { initLogstashHost(); String simpleClassName = tr.getTestClass().getRealClass().getSimpleName(); String pathToLogstash = SGTestHelper.getSGTestRootDir().replace("\\", "/") + "/src/main/resources/logstash"; String confFilePath2 = pathToLogstash + "/logstash-shipper-client-2.conf"; String backupFilePath2 = pathToLogstash + "/logstash-shipper-client-2-" + simpleClassName + ".conf"; File backupFile2 = new File(backupFilePath2); LogUtils.log( "trying to start logstash agent number 2. simple class name is " + simpleClassName); if (backupFile2.exists()) { LogUtils.log("the file " + backupFilePath2 + " already exists. not starting logstash"); } if (!isAfter(tr) && !backupFile2.exists()) { try { // backupFilePath2 = IOUtils.backupFile(confFilePath2); LogUtils.log("copying file " + confFilePath2 + " to " + backupFilePath2); IOUtils.copyFile(confFilePath2, backupFilePath2); IOUtils.replaceTextInFile(backupFilePath2, "<path_to_build>", SGTestHelper.getBuildDir()); IOUtils.replaceTextInFile( backupFilePath2, "<suite_number>", "suite_" + System.getProperty("iTests.suiteId", "0")); IOUtils.replaceTextInFile( backupFilePath2, "<path_to_test_class_folder>", SGTestHelper.getSGTestRootDir().replace("\\", "/") + "/../" + suiteName + "/" + tr.getTestClass().getName()); IOUtils.replaceTextInFile(backupFilePath2, "<suite_name>", suiteName); IOUtils.replaceTextInFile(backupFilePath2, "<test_name>", simpleClassName); IOUtils.replaceTextInFile(backupFilePath2, "<build_number>", buildNumber); IOUtils.replaceTextInFile(backupFilePath2, "<version>", version); IOUtils.replaceTextInFile(backupFilePath2, "<host>", logstashHost); String logstashJarPath = DeploymentUtils.getLocalRepository() + "net/logstash/1.2.2/logstash-1.2.2.jar"; logstashLogPath2 = pathToLogstash + "/logstash-" + simpleClassName + "-2.txt"; String cmdLine = "java -jar " + logstashJarPath + " agent -f " + backupFilePath2 + " -l " + logstashLogPath2; final String[] parts = cmdLine.split(" "); final ProcessBuilder pb = new ProcessBuilder(parts); LogUtils.log("Executing Command line: " + cmdLine); process2 = pb.start(); } catch (IOException e) { e.printStackTrace(); } } }
private void killLogstashAgent(int logAgentNumber, String logstashLogPath) { FileObject listendir; CustomFileListener listener = new CustomFileListener(); long TIMEOUT_BETWEEN_FILE_QUERYING = 1000; long LOOP_TIMEOUT_IN_MILLIS = 10 * 1000; try { FileSystemManager fileSystemManager = VFS.getManager(); listendir = fileSystemManager.resolveFile(logstashLogPath); } catch (FileSystemException e) { e.printStackTrace(); return; } DefaultFileMonitor fm = new DefaultFileMonitor(listener); fm.setRecursive(true); fm.addFile(listendir); fm.setDelay(TIMEOUT_BETWEEN_FILE_QUERYING); fm.start(); LogUtils.log("waiting to destroy logger"); long startTimeMillis = System.currentTimeMillis(); while (true) { if (!listener.isProcessUp()) { break; } listener.setProcessUp(false); try { TimeUnit.MILLISECONDS.sleep(LOOP_TIMEOUT_IN_MILLIS); } catch (InterruptedException e) { e.printStackTrace(); } } long endTimeMillis = System.currentTimeMillis(); LogUtils.log("destroying logstash agent " + logAgentNumber); LogUtils.log("waited " + (endTimeMillis - startTimeMillis) / 1000 + " seconds"); fm.stop(); // File logstashOutputFile = new File(logstashLogPath); if (logAgentNumber == 1) { process.destroy(); process = null; } else { process2.destroy(); process2 = null; } // try { // TimeUnit.SECONDS.sleep(5); // // LogUtils.log("returning logstash config file to initial state"); // if(logAgentNumber == 1){ // IOUtils.replaceFileWithMove(new File(confFilePath), new File(backupFilePath)); // FileUtils.deleteQuietly(new File(backupFilePath)); // } // else{ // IOUtils.replaceFileWithMove(new File(confFilePath2), new // File(backupFilePath2)); // FileUtils.deleteQuietly(new File(backupFilePath2)); // // } // } catch (IOException e) { // e.printStackTrace(); // } catch (InterruptedException e) { // e.printStackTrace(); // } // if(logstashOutputFile.exists()){ // FileUtils.deleteQuietly(logstashOutputFile); // } }
/** Registry of JAXWS Adapter of endpoints. */ public class JAXWSAdapterRegistry { private static JAXWSAdapterRegistry registry = null; private final Map<String, ContextAdapter> store; private static final Logger logger = LogUtils.getLogger(); /** Creates a new instance of JAXWSServletUtil */ private JAXWSAdapterRegistry() { store = Collections.synchronizedMap(new HashMap<String, ContextAdapter>()); } public static synchronized JAXWSAdapterRegistry getInstance() { if (registry == null) registry = new JAXWSAdapterRegistry(); return registry; } public void addAdapter(String contextRoot, String urlPattern, Adapter info) { if (contextRoot == null) contextRoot = ""; synchronized (store) { ContextAdapter contextRtInfo = store.get(contextRoot); if (contextRtInfo == null) { contextRtInfo = new ContextAdapter(); } contextRtInfo.addAdapter(urlPattern, info); store.put(contextRoot, contextRtInfo); } } public Adapter getAdapter(String contextRoot, String path, String urlPattern) { ContextAdapter serviceInfo = store.get(contextRoot); if (serviceInfo == null) { return null; } return serviceInfo.getAdapter(path, urlPattern); } public void removeAdapter(String contextRoot) { if (contextRoot == null) contextRoot = ""; synchronized (store) { ContextAdapter serviceInfo = store.get(contextRoot); if (serviceInfo == null) { return; } store.remove(contextRoot); } } static class ContextAdapter { final Map<String, Adapter> fixedUrlPatternEndpoints; final List<Adapter> pathUrlPatternEndpoints; ContextAdapter() { fixedUrlPatternEndpoints = Collections.synchronizedMap(new HashMap<String, Adapter>()); pathUrlPatternEndpoints = Collections.synchronizedList(new ArrayList<Adapter>()); } void addAdapter(String urlPattern, Adapter info) { if (urlPattern.indexOf("*.") != -1) { // cannot deal with implicit mapping right now logger.log(Level.SEVERE, LogUtils.ENTERPRISE_WEBSERVICE_IMPLICIT_MAPPING_NOT_SUPPORTED); } else if (urlPattern.endsWith("/*")) { pathUrlPatternEndpoints.add(info); } else { synchronized (fixedUrlPatternEndpoints) { if (fixedUrlPatternEndpoints.containsKey(urlPattern)) { logger.log(Level.SEVERE, LogUtils.ENTERPRISE_WEBSERVICE_DUPLICATE_SERVICE, urlPattern); } fixedUrlPatternEndpoints.put(urlPattern, info); } } } Adapter getAdapter(String path, String urlPattern) { Adapter result = fixedUrlPatternEndpoints.get(path); if (result == null) { // This loop is unnecessary.Essentially what it is doing to always // return the first element from pathUrlPatternEndpoints // TO DO clean up after SCF required synchronized (pathUrlPatternEndpoints) { for (Iterator<Adapter> iter = pathUrlPatternEndpoints.iterator(); iter.hasNext(); ) { Adapter candidate = iter.next(); if (path.startsWith(getValidPathForEndpoint(urlPattern))) { result = candidate; break; } } } } return result; } private String getValidPathForEndpoint(String s) { if (s.endsWith("/*")) { return s.substring(0, s.length() - 2); } else { return s; } } } }
public SGTestNGListener() { if (enableLogstash) { LogUtils.log("in SGTestNGListener constructor"); } }