diff --git a/archive/releng.builder/tools/org.eclipse.wtp.releng.tools/plugin.xml b/archive/releng.builder/tools/org.eclipse.wtp.releng.tools/plugin.xml index d5d29386cbb0b0db24db170bdb70c1873f199314..65d7b9d41512bba4afa29207f871e711388c0db6 100644 --- a/archive/releng.builder/tools/org.eclipse.wtp.releng.tools/plugin.xml +++ b/archive/releng.builder/tools/org.eclipse.wtp.releng.tools/plugin.xml @@ -21,6 +21,11 @@ name="countBuildFiles" class="org.eclipse.wtp.releng.tools.FileCounter"> </antTask> + <antTask + library="wtpRelengTools.jar" + name="customizeAccessRules" + class="org.eclipse.wtp.releng.tools.CustomizeAccessRules"> + </antTask> </extension> diff --git a/archive/releng.builder/tools/org.eclipse.wtp.releng.tools/src/org/eclipse/wtp/releng/tools/CustomizeAccessRules.java b/archive/releng.builder/tools/org.eclipse.wtp.releng.tools/src/org/eclipse/wtp/releng/tools/CustomizeAccessRules.java new file mode 100644 index 0000000000000000000000000000000000000000..c82a7ef41f7fa3665f3f9ed75366f695b6e0bdef --- /dev/null +++ b/archive/releng.builder/tools/org.eclipse.wtp.releng.tools/src/org/eclipse/wtp/releng/tools/CustomizeAccessRules.java @@ -0,0 +1,397 @@ +package org.eclipse.wtp.releng.tools; + +import java.io.BufferedReader; +import java.io.File; +import java.io.FileNotFoundException; +import java.io.FileReader; +import java.io.FileWriter; +import java.io.FilenameFilter; +import java.io.IOException; +import java.util.ArrayList; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +import javax.xml.parsers.DocumentBuilder; +import javax.xml.parsers.DocumentBuilderFactory; +import javax.xml.parsers.ParserConfigurationException; + +import org.apache.tools.ant.BuildException; +import org.apache.tools.ant.Task; +import org.w3c.dom.Document; +import org.w3c.dom.Element; +import org.w3c.dom.NamedNodeMap; +import org.w3c.dom.Node; +import org.w3c.dom.NodeList; +import org.xml.sax.InputSource; +import org.xml.sax.SAXException; + +public class CustomizeAccessRules extends Task { + + private static final String LINE_SEPARATOR_PROPERTY_NAME = "line.separator"; + private static final String PATH_SEPARATOR_PROPERTY_NAME = "path.separator"; + + static class JavaCompilerFilter implements FilenameFilter { + + private static final String JAVA_COMPILER_FILENAME_EXTENSION = "args"; + private static final String JAVA_COMPILER_FILENAME_PREFIX = "javaCompiler"; + + public boolean accept(File dir, String name) { + if (name.startsWith(JAVA_COMPILER_FILENAME_PREFIX) && name.endsWith(JAVA_COMPILER_FILENAME_EXTENSION)) { + return true; + } + return false; + } + + } + + private String bundleDirectory; + private String defaultRules; + + + private static final String FORBID_CHARACTER = "-"; + private static final String DISCOURAGED_CHARACTER = "~"; + private static final String ACCESSIBLE_CHARACTER = "+"; + private static final String NONACCESSIBLE_RULE_VALUE = "nonaccessible"; + private static final String DISCOURAGED_RULE_VALUE = "discouraged"; + private static final String ACCESSIBLE_RULE_VALUE = "accessible"; + private static final String PATTERN_ATTRIBUTE_NAME = "pattern"; + private static final String KIND_ATTRIBUTE_NAME = "kind"; + private static final String ACCESSRULE_ELEMENT_NAME = "accessrule"; + private static final String ORG_ECLIPSE_PDE_CORE_REQUIRED_PLUGINS = "org.eclipse.pde.core.requiredPlugins"; + private static final String PATH_ATTRIBUTE_NAME = "path"; + private static final String CLASSPATHENTRY_ELEMENT_NAME = "classpathentry"; + private static final String RBRACKET = "]"; + private static final String LBRACKET = "["; + private static final String BACKUP_FILE_EXTENSION = ".bak"; + private static final String CLASSPATH_FILENAME = ".classpath"; + private static final String COMMA = ","; + private static final String ADAPTER_ACCESS = "#ADAPTER#ACCESS#"; + + + private static String EOL = System.getProperty(LINE_SEPARATOR_PROPERTY_NAME); + private static String PATH_SEPERATOR = System.getProperty(PATH_SEPARATOR_PROPERTY_NAME); + private static FilenameFilter javaCompilerFilter = new JavaCompilerFilter(); + + private static Pattern adapterAccessLinePattern = Pattern.compile(ADAPTER_ACCESS + "(.*)\\[(.*)\\]"); + + + private String computeCustomizedRules(File classpathFile) { + // first priority is to use any from classpath file. + String results = extractClassPathRules(classpathFile); + // if none, see if default rules have been specified in task element + if ((results == null) || (results.length() == 0)) { + if ((getDefaultRules() != null) && (getDefaultRules().length() > 0)) { + results = convertForm(getDefaultRules()); + if ((results != null) && (results.length() > 0)) { + System.out.println(" Info: Using the provided default pattern: " + EOL + " " + results); + } + else { + System.out.println(" Info: Access Rules not customized" + EOL); + } + } + } + return results; + } + + private boolean contains(String mainString, String toBeFound) { + return (-1 < mainString.indexOf(toBeFound)); + } + + private String convertForm(String commaSeperatedList) { + String result = commaSeperatedList; + result = result.replaceAll(COMMA, PATH_SEPERATOR); + result = removeSpace(result); + return result + PATH_SEPERATOR; + } + + private void customizeAccess(File javaCompilerFile, File classpathFile) { + try { + + String name = javaCompilerFile.getName(); + String bakName = name + BACKUP_FILE_EXTENSION; + File bakFile = new File(javaCompilerFile.getParentFile(), bakName); + // if backup already exists, just keep adding '.bak' until doesn't + while (bakFile.exists()) { + bakName = bakName + BACKUP_FILE_EXTENSION; + bakFile = new File(javaCompilerFile.getParentFile(), bakName); + } + + /* + * FYI. Seems like the javaCompiler file is recreated, from one + * compile/generate step to another, so we need to re-process + * (that is, the existence of the .bak file doesn't mean we are + * done). + */ + + FileReader fileReader = new FileReader(javaCompilerFile); + BufferedReader bufferedReader = new BufferedReader(fileReader); + + File newFile = new File(javaCompilerFile.getParentFile(), "tempnew" + javaCompilerFile.getName()); + FileWriter newFileWriter = new FileWriter(newFile); + + while (bufferedReader.ready()) { + String line = bufferedReader.readLine(); + Matcher matcher = adapterAccessLinePattern.matcher(line); + if (matcher.matches()) { + String cp = matcher.group(1); + String ar = matcher.group(2); + + String customizedRules = computeCustomizedRules(classpathFile); + + if (contains(ar, customizedRules)) { + // simply re-write what we already have + newFileWriter.write(ADAPTER_ACCESS + cp + LBRACKET + ar + RBRACKET + EOL); + } + else { + // or, add if not already there + newFileWriter.write(ADAPTER_ACCESS + cp + LBRACKET + customizedRules + ar + RBRACKET + EOL); + } + } + else { + System.out.println("Debug: Line did not match grammar syntax expectations: " + line); + newFileWriter.write(line + EOL); + } + + } + + newFileWriter.close(); + fileReader.close(); + + File holdFile = new File(javaCompilerFile.getParentFile(), javaCompilerFile.getName()); + javaCompilerFile.renameTo(bakFile); + newFile.renameTo(holdFile); + + } + catch (FileNotFoundException e) { + throw new BuildException(e); + } + catch (IOException e) { + System.out.println("Could not read/write javaCompilerFile"); + e.printStackTrace(); + } + + } + + public void execute() throws BuildException { + + try { + System.out.println("bundleDirectory: " + getBundleDirectory()); + + if ((getBundleDirectory() != null) && (getBundleDirectory().length() > 0)) { + File directory = new File(getBundleDirectory()); + if ((directory != null) && directory.exists() && directory.isDirectory()) { + processBundlesDirectory(directory); + } + else { + String msg = "the directory does not exist"; + System.out.println(msg); + } + } + } + catch (Exception e) { + e.printStackTrace(); + throw new BuildException(e); + } + + } + + private String extractClassPathRules(File classpathFile) { + StringBuffer patterns = new StringBuffer(); + Document aDocument = getDOM(classpathFile); + Element element = getElementWithAttribute(aDocument, CLASSPATHENTRY_ELEMENT_NAME, PATH_ATTRIBUTE_NAME, ORG_ECLIPSE_PDE_CORE_REQUIRED_PLUGINS); + NodeList nodeList = element.getElementsByTagName(ACCESSRULE_ELEMENT_NAME); + + int length = nodeList.getLength(); + if (length > 0) { + ArrayList accessible = new ArrayList(); + ArrayList discouraged = new ArrayList(); + ArrayList forbidden = new ArrayList(); + for (int i = 0; i < length; i++) { + Node node = nodeList.item(i); + NamedNodeMap aNamedNodeMap = node.getAttributes(); + Node kindAttribute = aNamedNodeMap.getNamedItem(KIND_ATTRIBUTE_NAME); + String kindValue = kindAttribute.getNodeValue(); + Node patternAttribute = aNamedNodeMap.getNamedItem(PATTERN_ATTRIBUTE_NAME); + String patternValue = patternAttribute.getNodeValue(); + + if (ACCESSIBLE_RULE_VALUE.equals(kindValue)) { + accessible.add(patternValue); + } + else if (DISCOURAGED_RULE_VALUE.equals(kindValue)) { + discouraged.add(patternValue); + } + else if (NONACCESSIBLE_RULE_VALUE.equals(kindValue)) { + forbidden.add(patternValue); + } + } + + /* + * we store all the node/attribute values in arrayLists first, + * just to be positive we add them in order or acceessible, + * discouraged, and forbidden. (I'm not positive the + * getElementsByTagName gaurentees the order we want). + */ + for (int j = 0; j < accessible.size(); j++) { + patterns.append(ACCESSIBLE_CHARACTER + (String) accessible.get(j) + PATH_SEPERATOR); + } + for (int j = 0; j < discouraged.size(); j++) { + patterns.append(DISCOURAGED_CHARACTER + (String) discouraged.get(j) + PATH_SEPERATOR); + } + for (int j = 0; j < forbidden.size(); j++) { + patterns.append(FORBID_CHARACTER + (String) forbidden.get(j) + PATH_SEPERATOR); + } + } + String result = patterns.toString(); + if (result.length() > 0) { + System.out.println(" Info: Found pattern in classpath file: " + EOL + " " + result); + } + return result; + } + + public String getBundleDirectory() { + return bundleDirectory; + } + + public String getDefaultRules() { + return defaultRules; + } + + private Document getDOM(File file) { + + Document aDocument = null; + BufferedReader reader = null; + try { + reader = new BufferedReader(new FileReader(file)); + InputSource inputSource = new InputSource(reader); + DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); + DocumentBuilder builder = factory.newDocumentBuilder(); + aDocument = builder.parse(inputSource); + } + catch (SAXException e) { + e.printStackTrace(); + } + catch (IOException e) { + e.printStackTrace(); + } + catch (ParserConfigurationException e) { + e.printStackTrace(); + } + finally { + if (reader != null) { + try { + reader.close(); + } + catch (IOException e) { + // ignore this one + } + } + } + + if (aDocument == null) { + String msg = "Error: could not parse xml in classpath file: " + file.getAbsolutePath(); + throw new BuildException(msg); + } + return aDocument; + + } + + private Element getElementWithAttribute(Document aDocument, String elementName, String attributeName, String attributeValue) { + Element element = null; + NodeList nodeList = aDocument.getElementsByTagName(elementName); + + int length = nodeList.getLength(); + for (int i = 0; i < length; i++) { + Node node = nodeList.item(i); + NamedNodeMap aNamedNodeMap = node.getAttributes(); + Node attribute = aNamedNodeMap.getNamedItem(attributeName); + if (attribute.getNodeValue().equals(attributeValue)) { + element = (Element) node; + break; + } + } + return element; + } + + private boolean isSuitable(File file) { + return (file != null) && file.exists() && file.canRead() && file.canWrite(); + } + + private void processBundlesDirectory(File bundlesDirectory) { + + if (bundlesDirectory == null) { + throw new BuildException("Error: bundlesDirectory can not be null"); + } + + String[] files = bundlesDirectory.list(); + if ((files == null) || (files.length == 0)) { + throw new BuildException("Error: bundlesDirectory was empty"); + } + + for (int i = 0; i < files.length; i++) { + File file = new File(bundlesDirectory, files[i]); + if (file.isFile()) { + System.out.println("debug info: top level file ignored: " + file.getName()); + } + else { + processDirectory(file); + } + } + + } + + private void processDirectory(File directory) { + + String[] allFiles = directory.list(); + if (allFiles == null) { + throw new BuildException("Error: bundlesDirectory was empty"); + } + + File classpathFile = new File(directory, CLASSPATH_FILENAME); + File[] javaCompilerFiles = directory.listFiles(javaCompilerFilter); + + File javaCompilerFile = null; + if (javaCompilerFiles != null) { + for (int j = 0; j < javaCompilerFiles.length; j++) { + javaCompilerFile = javaCompilerFiles[j]; + if (isSuitable(javaCompilerFile) && isSuitable(classpathFile)) { + System.out.println("Info: customizing access rules in " + directory.getName()); + customizeAccess(javaCompilerFile, classpathFile); + } + } + } + } + + /** + * Simply space remover (not for natural language) + * + * @param s + * @return String + */ + private String removeSpace(String s) { + String results = null; + StringBuffer sb = new StringBuffer(); + for (int i = 0; i < s.length(); i++) { + char c = s.charAt(i); + if (Character.isWhitespace(c)) { + // do not copy to buffer + } + else { + // add to buffer + sb.append(c); + } + } + if (sb.length() > 0) { + results = sb.toString(); + } + return results; + + } + + public void setBundleDirectory(String bundleDirectory) { + this.bundleDirectory = bundleDirectory; + } + + public void setDefaultRules(String defaultRules) { + this.defaultRules = defaultRules; + } +} diff --git a/archive/releng.builder/tools/org.eclipse.wtp.releng.tools/src/org/eclipse/wtp/releng/tools/ResultsSummaryGenerator.java b/archive/releng.builder/tools/org.eclipse.wtp.releng.tools/src/org/eclipse/wtp/releng/tools/ResultsSummaryGenerator.java index 4bac6c618c8511377ed95525beae727c1b2eca33..eb52fae4bddca51df4d18c2f38cd0a9466bb77ac 100644 --- a/archive/releng.builder/tools/org.eclipse.wtp.releng.tools/src/org/eclipse/wtp/releng/tools/ResultsSummaryGenerator.java +++ b/archive/releng.builder/tools/org.eclipse.wtp.releng.tools/src/org/eclipse/wtp/releng/tools/ResultsSummaryGenerator.java @@ -27,6 +27,7 @@ import javax.xml.transform.dom.DOMSource; import javax.xml.transform.stream.StreamResult; import org.apache.tools.ant.BuildException; +import org.apache.tools.ant.Project; import org.apache.tools.ant.Task; import org.w3c.dom.Document; import org.w3c.dom.Element; @@ -108,7 +109,6 @@ public class ResultsSummaryGenerator extends Task { // <descriptor, ie. OS name>,path to template file, path to output file // public String platformSpecificTemplateList = ""; - // Name of the generated index php file. public String testResultsHtmlFileName; @@ -162,14 +162,16 @@ public class ResultsSummaryGenerator extends Task { public static void main(String[] args) { ResultsSummaryGenerator test = new ResultsSummaryGenerator(); - test.setDropTokenList("%sdk%,%tests%,%example%,%rcpruntime%,%rcpsdk%,%icubase%,%runtime%,%platformsdk%,%jdt%,%jdtsdk%,%pde%,%pdesdk%,%cvs%,%cvssdk%,%teamextras%,%swt%,%relengtools%"); + test + .setDropTokenList("%sdk%,%tests%,%example%,%rcpruntime%,%rcpsdk%,%icubase%,%runtime%,%platformsdk%,%jdt%,%jdtsdk%,%pde%,%pdesdk%,%cvs%,%cvssdk%,%teamextras%,%swt%,%relengtools%"); test.setPlatformIdentifierToken("%platform%"); test.getDropTokensFromList(test.dropTokenList); test.setIsBuildTested(true); test.setXmlDirectoryName("C:\\junk\\testresults\\xml"); test.setHtmlDirectoryName("C:\\junk\\testresults"); test.setDropDirectoryName("C:\\junk"); - test.setTestResultsTemplateFileName("C:\\junk\\templateFiles\\testResults.php.template"); + test + .setTestResultsTemplateFileName("C:\\junk\\templateFiles\\testResults.php.template"); // test.setPlatformSpecificTemplateList("Windows,C:\\junk\\templateFiles\\platform.php.template,winPlatform.php;Linux,C:\\junk\\templateFiles\\platform.php.template,linPlatform.php;Solaris,C:\\junk\\templateFiles\\platform.php.template,solPlatform.php;AIX,C:\\junk\\templateFiles\\platform.php.template,aixPlatform.php;Macintosh,C:\\junk\\templateFiles\\platform.php.template,macPlatform.php;Source // Build,C:\\junk\\templateFiles\\sourceBuilds.php.template,sourceBuilds.php"); test.setTestResultsHtmlFileName("testResults.php"); @@ -188,13 +190,13 @@ public class ResultsSummaryGenerator extends Task { try { getDropTokensFromList(dropTokenList); testResultsTemplateString = readFile(testResultsTemplateFileName); - //dropTemplateString = readFile(dropTemplateFileName); + // dropTemplateString = readFile(dropTemplateFileName); // Specific to the platform build-page /* * if (platformSpecificTemplateList != "") { String description, - * platformTemplateFile, platformDropFile; // Retrieve the - * different platforms and their info + * platformTemplateFile, platformDropFile; // Retrieve the different + * platforms and their info * getDifferentPlatformsFromList(platformSpecificTemplateList); // * Parses the platform info and retrieves the platform name, // * template file, and drop file for (int i = 0; i < @@ -223,13 +225,14 @@ public class ResultsSummaryGenerator extends Task { // } // else { // } - } - catch (Exception e) { + } catch (Exception e) { throw new BuildException(e); } } - private void parseCompileLogs() throws TransformerFactoryConfigurationError, IOException, TransformerException { + private void parseCompileLogs() + throws TransformerFactoryConfigurationError, IOException, + TransformerException { totalErrors = 0; totalAccess = 0; totalWarnings = 0; @@ -394,15 +397,18 @@ public class ResultsSummaryGenerator extends Task { // System.out.println("totalErrors: " + totalErrors); // , // log("totalErrors: " + totalErrors, Project.MSG_INFO); - buffer.append( - "<tr CLASS=\"" + rowtype + " " + "bold" + "\">" + EOL + "<td>" - + EOL).append("TOTALS (" + rowCount + ")").append( - "</td><td CLASS=\"numeric\">").append(totalErrors).append( - "</td><td CLASS=\"numeric\">").append(totalAccess).append("(") - .append(totalforbiddenAccessWarningCount).append("/").append( - totaldiscouragedAccessWarningCount).append(")").append( - "</td><td CLASS=\"numeric\">").append(totalWarnings) - .append("</td>" + EOL + "</tr>" + EOL); + buffer.append("<tr CLASS=\"" + rowtype + " " + "bold" + "\">" + EOL) + .append("<td>" + EOL) + .append("TOTALS (" + rowCount + ")") + .append("</td><td CLASS=\"numeric\">") + .append(totalErrors) + .append("</td><td CLASS=\"numeric\">") + .append(totalforbiddenAccessWarningCount) + .append("</td><td CLASS=\"numeric\">") + .append(totaldiscouragedAccessWarningCount) + .append("</td><td CLASS=\"numeric\">") + .append(totalWarnings) + .append("</td>" + EOL + "</tr>" + EOL); } @@ -413,16 +419,13 @@ public class ResultsSummaryGenerator extends Task { int warningCount = countCompileWarnings(fileContents); int forbiddenWarningCount = countForbiddenWarnings(fileContents); int discouragedWarningCount = countDiscouragedWarnings(fileContents); - if (errorCount != 0) { - // use wildcard in place of version number on directory names - String logName = log.substring(getCompileLogsDirectoryName() - .length() + 1); - StringBuffer stringBuffer = new StringBuffer(logName); - stringBuffer.replace(logName.indexOf("_") + 1, logName.indexOf( - File.separator, logName.indexOf("_") + 1), "*"); - logName = new String(stringBuffer); - - } + // use wildcard in place of version number on directory names + String logName = log + .substring(getCompileLogsDirectoryName().length() + 1); + StringBuffer stringBuffer = new StringBuffer(logName); + stringBuffer.replace(logName.indexOf("_") + 1, logName.indexOf( + File.separator, logName.indexOf("_") + 1), "*"); + logName = new String(stringBuffer); formatCompileErrorRow(log, errorCount, warningCount, forbiddenWarningCount, discouragedWarningCount, buffer); } @@ -459,12 +462,14 @@ public class ResultsSummaryGenerator extends Task { } } - if (aDocument == null) + if (aDocument == null) { + log("could not parse xml in log file: " + log, Project.MSG_ERR); return; - // Get summary of problems + } + + // Get summary of problems. + // By API, nodeList should never be null. NodeList nodeList = aDocument.getElementsByTagName("problem"); - if (nodeList == null || nodeList.getLength() == 0) - return; int length = nodeList.getLength(); for (int i = 0; i < length; i++) { @@ -491,17 +496,16 @@ public class ResultsSummaryGenerator extends Task { } } } - if (errorCount != 0) { - // use wildcard in place of version number on directory names - // System.out.println(log + "/n"); - String logName = log.substring(getCompileLogsDirectoryName() - .length() + 1); - StringBuffer buffer = new StringBuffer(logName); - buffer.replace(logName.indexOf("_") + 1, logName.indexOf( - File.separator, logName.indexOf("_") + 1), "*"); - logName = new String(buffer); - } + // use wildcard in place of version number on directory names + // System.out.println(log + "/n"); + String logName = log + .substring(getCompileLogsDirectoryName().length() + 1); + StringBuffer buffer = new StringBuffer(logName); + buffer.replace(logName.indexOf("_") + 1, logName.indexOf( + File.separator, logName.indexOf("_") + 1), "*"); + logName = new String(buffer); + formatCompileErrorRow(log.replaceAll(".xml", ".html"), errorCount, warningCount, forbiddenWarningCount, discouragedWarningCount, stringBuffer); @@ -644,7 +648,6 @@ public class ResultsSummaryGenerator extends Task { private int totaldiscouragedAccessWarningCount; private int totalforbiddenAccessWarningCount; - private void parseUnitTestXml() throws IOException, TransformerFactoryConfigurationError, TransformerException { @@ -746,7 +749,6 @@ public class ResultsSummaryGenerator extends Task { } - private void writeTestResultsFile() { String outputFileName = dropDirectoryName + File.separator @@ -871,38 +873,55 @@ public class ResultsSummaryGenerator extends Task { } String rowtype = "normaltable"; - if (errorCount > 0) { + if (errorCount > 0 || forbiddenAccessWarningCount > 0) { rowtype = "errortable"; - } else if (warningCount > 0) { + } else if (warningCount > 0 || discouragedAccessWarningCount > 0) { rowtype = "warningtable"; - if (warningCount > 15) { + if (warningCount > 15 || discouragedAccessWarningCount > 0) { rowtype = "extraWarningTable"; } } - buffer.append("<tr CLASS=\"" + rowtype + "\">" + EOL + "<td>" + EOL) - .append("<a href=").append("\"").append( - getHrefCompileLogsTargetPath()).append(shortName) - .append("\" type='text/plain' ").append(">") - .append(displayName).append("</a>").append( - "</td><td CLASS=\"numeric\">").append("<a href=") - .append("\"").append(getHrefCompileLogsTargetPath()).append( - shortName).append("#ERRORS").append( - "\" type='text/plain' ").append(">").append(errorCount) - .append("</a>").append("</td><td CLASS=\"numeric\">").append( - "<a href=").append("\"").append( - getHrefCompileLogsTargetPath()).append(shortName) + buffer.append("<tr CLASS=\"" + rowtype + "\">" + EOL) + .append("<td>" + EOL) + .append("<a href=\"").append(getHrefCompileLogsTargetPath()).append(shortName) + .append("\" type='text/plain' >") + .append(displayName) + .append("</a></td>") + .append(EOL) + + .append("<td CLASS=\"numeric\">").append("<a href=\"") + .append(getHrefCompileLogsTargetPath()).append(shortName) + .append("#ERRORS") + .append("\" type='text/plain' >") + .append(errorCount) + .append("</a></td>") + .append(EOL) + + .append("<td CLASS=\"numeric\">").append("<a href=\"") + .append(getHrefCompileLogsTargetPath()).append(shortName) .append("#ACCESSRULES_WARNINGS") - .append("\" type='text/plain' ").append(">").append( - accessRuleWarningCount).append("</a>").append("(") - .append(forbiddenAccessWarningCount).append("/").append( - discouragedAccessWarningCount).append(")").append( - "</td><td CLASS=\"numeric\">").append("<a href=") - .append("\"").append(getHrefCompileLogsTargetPath()).append( - shortName).append("#OTHER_WARNINGS").append( - "\" type='text/plain' ").append(">").append( - warningCount).append("</a>").append( - "</td>" + EOL + "</tr>" + EOL); + .append("\" type='text/plain' >") + .append(forbiddenAccessWarningCount) + .append("</a></td>") + .append(EOL) + + .append("<td CLASS=\"numeric\">").append("<a href=\"") + .append(getHrefCompileLogsTargetPath()).append(shortName) + .append("#ACCESSRULES_WARNINGS") + .append("\" type='text/plain' >") + .append(discouragedAccessWarningCount) + .append("</a></td>") + .append(EOL) + + + .append("<td CLASS=\"numeric\">").append("<a href=\"") + .append(getHrefCompileLogsTargetPath()).append(shortName).append("#OTHER_WARNINGS") + .append("\" type='text/plain' >") + .append(warningCount) + .append("</a></td>") + + .append( EOL + "</tr>" + EOL); } /** @@ -1135,8 +1154,6 @@ public class ResultsSummaryGenerator extends Task { this.dropHtmlFileName = dropHtmlFileName; } - - private void getDropTokensFromList(String list) { StringTokenizer tokenizer = new StringTokenizer(list, ","); dropTokens = new Vector(); diff --git a/archive/releng.builder/tools/org.eclipse.wtp.releng.tools/src/org/eclipse/wtp/releng/tools/TestResultsGenerator.java b/archive/releng.builder/tools/org.eclipse.wtp.releng.tools/src/org/eclipse/wtp/releng/tools/TestResultsGenerator.java deleted file mode 100644 index fd34228f80ced466fdb0058a69191c52ffcf9fc1..0000000000000000000000000000000000000000 --- a/archive/releng.builder/tools/org.eclipse.wtp.releng.tools/src/org/eclipse/wtp/releng/tools/TestResultsGenerator.java +++ /dev/null @@ -1,1125 +0,0 @@ -package org.eclipse.wtp.releng.tools; - -import java.io.BufferedReader; -import java.io.File; -import java.io.FileInputStream; -import java.io.FileNotFoundException; -import java.io.FileOutputStream; -import java.io.FileReader; -import java.io.IOException; -import java.io.InputStream; -import java.util.Arrays; -import java.util.StringTokenizer; -import java.util.Vector; - -import javax.xml.parsers.DocumentBuilder; -import javax.xml.parsers.DocumentBuilderFactory; -import javax.xml.parsers.ParserConfigurationException; - -import org.apache.tools.ant.Task; -import org.w3c.dom.Document; -import org.w3c.dom.Element; -import org.w3c.dom.NamedNodeMap; -import org.w3c.dom.Node; -import org.w3c.dom.NodeList; -import org.xml.sax.InputSource; -import org.xml.sax.SAXException; - -/** - * @version 1.0 - * @author Dean Roberts - */ -public class TestResultsGenerator extends Task { - private static final String WARNING_SEVERITY = "WARNING"; - private static final String ERROR_SEVERITY = "ERROR"; - private static final String ForbiddenReferenceID = "ForbiddenReference"; - private static final String DiscouragedReferenceID = "DiscouragedReference"; - - private static final int DEFAULT_READING_SIZE = 8192; - - static final String elementName = "testsuite"; - static final String testResultsToken = "%testresults%"; - static final String compileLogsToken = "%compilelogs%"; - public Vector dropTokens; - public Vector platformSpecs; - public Vector differentPlatforms; - public String testResultsWithProblems = "\n"; - - private DocumentBuilder parser = null; - public String testResultsTemplateString = ""; - public String dropTemplateString = ""; - - public Vector platformDescription; - public Vector platformTemplateString; - public Vector platformDropFileName; - - // Status of tests results (pending, successful, failed), used to specify - // the color - // of the test Results link on the build pages (standard, green, red), - // once failures - // are encountered, this is set to failed - protected String testResultsStatus = "successful"; - // assume tests ran. If no html files are found, this is set to false - private boolean testsRan = true; - - // Parameters - // build runs JUnit automated tests - private boolean isBuildTested; - - // buildType, I, N - public String buildType; - - // Comma separated list of drop tokens - public String dropTokenList; - - // Token in platform.php.template to be replaced by the desired platform - // ID - public String platformIdentifierToken; - - // Location of the xml files - public String xmlDirectoryName; - - // Location of the html files - public String htmlDirectoryName; - - // Location of the resulting index.php file. - public String dropDirectoryName; - - // Location and name of the template index.php file. - public String testResultsTemplateFileName; - - // Platform specific template and output list (colon separated) in the - // following format: - // <descriptor, ie. OS name>,path to template file, path to output file - public String platformSpecificTemplateList = ""; - - // Name of the generated index php file. - public String testResultsHtmlFileName; - - // Name of the generated drop index php file; - public String dropHtmlFileName; - - // Arbitrary path used in the index.php page to href the - // generated .html files. - public String hrefTestResultsTargetPath; - - // Aritrary path used in the index.php page to reference the compileLogs - public String hrefCompileLogsTargetPath; - - // Location of compile logs base directory - public String compileLogsDirectoryName; - - // Location and name of test manifest file - public String testManifestFileName; - - // Initialize the prefix to a default string - private String prefix = "default"; - private String testShortName = ""; - private int counter = 0; - // The four configurations, add new configurations to test results here + - // update - // testResults.php.template for changes - private String[] testsConfig = { "linux.gtk.x86.xml", - "linux.gtk.x86_5.0.xml", "macosx.carbon.ppc.xml", - "win32.win32.x86.xml", "win32.win32.x86_5.0.xml" }; - - public static void main(String[] args) { - TestResultsGenerator test = new TestResultsGenerator(); - test - .setDropTokenList("%sdk%,%tests%,%example%,%rcpruntime%,%rcpsdk%,%icubase%,%runtime%,%platformsdk%,%jdt%,%jdtsdk%,%pde%,%pdesdk%,%cvs%,%cvssdk%,%teamextras%,%swt%,%relengtools%"); - test.setPlatformIdentifierToken("%platform%"); - test.getDropTokensFromList(test.dropTokenList); - test.setIsBuildTested(true); - test.setXmlDirectoryName("C:\\junk\\testresults\\xml"); - test.setHtmlDirectoryName("C:\\junk\\testresults"); - test.setDropDirectoryName("C:\\junk"); - test - .setTestResultsTemplateFileName("C:\\junk\\templateFiles\\testResults.php.template"); - test - .setPlatformSpecificTemplateList("Windows,C:\\junk\\templateFiles\\platform.php.template,winPlatform.php;Linux,C:\\junk\\templateFiles\\platform.php.template,linPlatform.php;Solaris,C:\\junk\\templateFiles\\platform.php.template,solPlatform.php;AIX,C:\\junk\\templateFiles\\platform.php.template,aixPlatform.php;Macintosh,C:\\junk\\templateFiles\\platform.php.template,macPlatform.php;Source Build,C:\\junk\\templateFiles\\sourceBuilds.php.template,sourceBuilds.php"); - test.setTestResultsHtmlFileName("testResults.php"); - // test.setDropHtmlFileName("index.php"); - test.setDropHtmlFileName("index.html"); - - test.setHrefTestResultsTargetPath("testresults"); - test.setCompileLogsDirectoryName("C:\\junk\\compilelogs\\plugins"); - test.setHrefCompileLogsTargetPath("compilelogs"); - test.setTestManifestFileName("C:\\junk\\testManifest.xml"); - test.execute(); - } - - public void execute() { - - platformDescription = new Vector(); - platformTemplateString = new Vector(); - platformDropFileName = new Vector(); - // anErrorTracker.loadFile(testManifestFileName); - getDropTokensFromList(dropTokenList); - testResultsTemplateString = readFile(testResultsTemplateFileName); - // dropTemplateString = readFile(dropTemplateFileName); - - // Specific to the platform build-page - if (platformSpecificTemplateList != "") { - String description, platformTemplateFile, platformDropFile; - // Retrieve the different platforms and their info - getDifferentPlatformsFromList(platformSpecificTemplateList); - // Parses the platform info and retrieves the platform name, - // template file, and drop file - for (int i = 0; i < differentPlatforms.size(); i++) { - getPlatformSpecsFromList(differentPlatforms.get(i).toString()); - description = platformSpecs.get(0).toString(); - platformTemplateFile = platformSpecs.get(1).toString(); - platformDropFile = platformSpecs.get(2).toString(); - platformDescription.add(description); - platformTemplateString.add(readFile(platformTemplateFile)); - platformDropFileName.add(platformDropFile); - - } - - } - - System.out.println("Begin: Generating test results index page"); - System.out.println("Parsing XML files"); - parseXml(); - System.out.println("Parsing compile logs"); - parseCompileLogs(); - System.out.println("End: Generating test results index page"); - writeTestResultsFile(); - // For the platform build-page, write platform files, in addition to - // the index file - if (platformSpecificTemplateList != "") { - writeDropFiles(); - } - } - - public void parseCompileLogs() { - - StringBuffer replaceString = new StringBuffer(); - processCompileLogsDirectory(compileLogsDirectoryName, replaceString); - if (replaceString.length() == 0) { - replaceString.append("None"); - } - testResultsTemplateString = replace(testResultsTemplateString, - compileLogsToken, String.valueOf(replaceString)); - - } - - private void processCompileLogsDirectory(String directoryName, - StringBuffer buffer) { - File sourceDirectory = new File(directoryName); - if (sourceDirectory.isFile()) { - if (sourceDirectory.getName().endsWith(".log")) - readCompileLog(sourceDirectory.getAbsolutePath(), buffer); - if (sourceDirectory.getName().endsWith(".xml")) - parseCompileLog(sourceDirectory.getAbsolutePath(), buffer); - } - if (sourceDirectory.isDirectory()) { - File[] logFiles = sourceDirectory.listFiles(); - Arrays.sort(logFiles); - for (int j = 0; j < logFiles.length; j++) { - processCompileLogsDirectory(logFiles[j].getAbsolutePath(), - buffer); - } - } - } - - private void readCompileLog(String log, StringBuffer buffer) { - String fileContents = readFile(log); - - int errorCount = countCompileErrors(fileContents); - int warningCount = countCompileWarnings(fileContents); - int forbiddenWarningCount = countForbiddenWarnings(fileContents); - int discouragedWarningCount = countDiscouragedWarnings(fileContents); - if (errorCount != 0) { - // use wildcard in place of version number on directory names - String logName = log.substring(getCompileLogsDirectoryName() - .length() + 1); - StringBuffer stringBuffer = new StringBuffer(logName); - stringBuffer.replace(logName.indexOf("_") + 1, logName.indexOf( - File.separator, logName.indexOf("_") + 1), "*"); - logName = new String(stringBuffer); - - } - formatCompileErrorRow(log, errorCount, warningCount, - forbiddenWarningCount, discouragedWarningCount, buffer); - } - - private void parseCompileLog(String log, StringBuffer stringBuffer) { - int errorCount = 0; - int warningCount = 0; - int forbiddenWarningCount = 0; - int discouragedWarningCount = 0; - - File file = new File(log); - Document aDocument = null; - BufferedReader reader = null; - try { - reader = new BufferedReader(new FileReader(file)); - InputSource inputSource = new InputSource(reader); - DocumentBuilderFactory factory = DocumentBuilderFactory - .newInstance(); - DocumentBuilder builder = factory.newDocumentBuilder(); - aDocument = builder.parse(inputSource); - } catch (SAXException e) { - e.printStackTrace(); - } catch (IOException e) { - e.printStackTrace(); - } catch (ParserConfigurationException e) { - e.printStackTrace(); - } finally { - if (reader != null) { - try { - reader.close(); - } catch (IOException e) { - // ignore - } - } - } - - if (aDocument == null) - return; - // Get summary of problems - NodeList nodeList = aDocument.getElementsByTagName("problem"); - if (nodeList == null || nodeList.getLength() == 0) - return; - - int length = nodeList.getLength(); - for (int i = 0; i < length; i++) { - Node problemNode = nodeList.item(i); - NamedNodeMap aNamedNodeMap = problemNode.getAttributes(); - Node severityNode = aNamedNodeMap.getNamedItem("severity"); - Node idNode = aNamedNodeMap.getNamedItem("id"); - if (severityNode != null) { - String severityNodeValue = severityNode.getNodeValue(); - if (WARNING_SEVERITY.equals(severityNodeValue)) { - // this is a warning - // need to check the id - String nodeValue = idNode.getNodeValue(); - if (ForbiddenReferenceID.equals(nodeValue)) { - forbiddenWarningCount++; - } else if (DiscouragedReferenceID.equals(nodeValue)) { - discouragedWarningCount++; - } else { - warningCount++; - } - } else if (ERROR_SEVERITY.equals(severityNodeValue)) { - // this is an error - errorCount++; - } - } - } - if (errorCount != 0) { - // use wildcard in place of version number on directory names - // System.out.println(log + "/n"); - String logName = log.substring(getCompileLogsDirectoryName() - .length() + 1); - StringBuffer buffer = new StringBuffer(logName); - buffer.replace(logName.indexOf("_") + 1, logName.indexOf( - File.separator, logName.indexOf("_") + 1), "*"); - logName = new String(buffer); - - } - formatCompileErrorRow(log.replaceAll(".xml", ".html"), errorCount, - warningCount, forbiddenWarningCount, discouragedWarningCount, - stringBuffer); - } - - public static byte[] getFileByteContent(String fileName) throws IOException { - InputStream stream = null; - try { - File file = new File(fileName); - stream = new FileInputStream(file); - return getInputStreamAsByteArray(stream, (int) file.length()); - } finally { - if (stream != null) { - try { - stream.close(); - } catch (IOException e) { - // ignore - } - } - } - } - - /** - * Returns the given input stream's contents as a byte array. If a length is - * specified (ie. if length != -1), only length bytes are returned. - * Otherwise all bytes in the stream are returned. Note this doesn't close - * the stream. - * - * @throws IOException - * if a problem occured reading the stream. - */ - public static byte[] getInputStreamAsByteArray(InputStream stream, - int length) throws IOException { - byte[] contents; - if (length == -1) { - contents = new byte[0]; - int contentsLength = 0; - int amountRead = -1; - do { - int amountRequested = Math.max(stream.available(), - DEFAULT_READING_SIZE); // read - // at - // least - // 8K - - // resize contents if needed - if (contentsLength + amountRequested > contents.length) { - System.arraycopy(contents, 0, - contents = new byte[contentsLength - + amountRequested], 0, contentsLength); - } - - // read as many bytes as possible - amountRead = stream.read(contents, contentsLength, - amountRequested); - - if (amountRead > 0) { - // remember length of contents - contentsLength += amountRead; - } - } while (amountRead != -1); - - // resize contents if necessary - if (contentsLength < contents.length) { - System.arraycopy(contents, 0, - contents = new byte[contentsLength], 0, contentsLength); - } - } else { - contents = new byte[length]; - int len = 0; - int readSize = 0; - while ((readSize != -1) && (len != length)) { - // See PR 1FMS89U - // We record first the read size. In this case len is the - // actual read size. - len += readSize; - readSize = stream.read(contents, len, length - len); - } - } - - return contents; - } - - public String readFile(String fileName) { - byte[] aByteArray = null; - try { - aByteArray = getFileByteContent(fileName); - } catch (IOException e) { - e.printStackTrace(); - } - if (aByteArray == null) { - return ""; - } - return new String(aByteArray); - } - - private int countCompileErrors(String aString) { - return extractNumber(aString, "error"); - } - - private int countCompileWarnings(String aString) { - return extractNumber(aString, "warning"); - } - - private int countForbiddenWarnings(String aString) { - return extractNumber(aString, "Access restriction:"); - } - - private int countDiscouragedWarnings(String aString) { - return extractNumber(aString, "Discouraged access:"); - } - - private int extractNumber(String aString, String endToken) { - int endIndex = aString.lastIndexOf(endToken); - if (endIndex == -1) { - return 0; - } - - int startIndex = endIndex; - while (startIndex >= 0 && aString.charAt(startIndex) != '(' - && aString.charAt(startIndex) != ',') { - startIndex--; - } - - String count = aString.substring(startIndex + 1, endIndex).trim(); - try { - return Integer.parseInt(count); - } catch (NumberFormatException e) { - return 0; - } - - } - - private boolean includeAll; - - public void parseXml() { - - File sourceDirectory = new File(xmlDirectoryName); - - if (sourceDirectory.exists()) { - - String replaceString = ""; - - File[] xmlFileNames = sourceDirectory.listFiles(); - Arrays.sort(xmlFileNames); - - for (int i = 0; i < xmlFileNames.length; i++) { - if (xmlFileNames[i].getPath().endsWith(".xml")) { - String fullName = xmlFileNames[i].getPath(); - int errorCount = countErrors(fullName); - if (errorCount != 0) { - String testName = xmlFileNames[i].getName().substring( - 0, xmlFileNames[i].getName().length() - 4); - testResultsWithProblems = testResultsWithProblems - .concat("\n" + testName); - } - - String tmp = ((platformSpecificTemplateList == "") ? formatRow( - xmlFileNames[i].getPath(), errorCount, true) - : formatRowReleng(xmlFileNames[i].getPath(), - errorCount, true)); - replaceString = replaceString + tmp; - - } - } - - testResultsTemplateString = replace(testResultsTemplateString, - testResultsToken, replaceString); - testsRan = true; - - } else { - testsRan = false; - System.out.println("Test results not found in " - + sourceDirectory.getAbsolutePath()); - } - - } - - private String replace(String source, String original, String replacement) { - - int replaceIndex = source.indexOf(original); - if (replaceIndex > -1) { - String resultString = source.substring(0, replaceIndex); - resultString = resultString + replacement; - resultString = resultString - + source.substring(replaceIndex + original.length()); - return resultString; - } else { - System.out.println("Could not find token: " + original); - return source; - } - - } - - protected void writeDropFiles() { - // Write all the platform files - for (int i = 0; i < platformDescription.size(); i++) { - writePlatformFile(platformDescription.get(i).toString(), - platformTemplateString.get(i).toString(), - platformDropFileName.get(i).toString()); - } - } - - // Writes the platform file (dropFileName) specific to "desiredPlatform" - private void writePlatformFile(String desiredPlatform, - String templateString, String dropFileName) { - - templateString = replace(templateString, platformIdentifierToken, - desiredPlatform); - templateString = replace(templateString, "%testsStatus%", - testResultsStatus); - String outputFileName = dropDirectoryName + File.separator - + dropFileName; - writeFile(outputFileName, templateString); - } - - - public void writeTestResultsFile() { - - String outputFileName = dropDirectoryName + File.separator - + testResultsHtmlFileName; - writeFile(outputFileName, testResultsTemplateString); - } - - private void writeFile(String outputFileName, String contents) { - FileOutputStream outputStream = null; - try { - outputStream = new FileOutputStream(outputFileName); - outputStream.write(contents.getBytes()); - } catch (FileNotFoundException e) { - System.out.println("File not found exception writing: " - + outputFileName); - } catch (IOException e) { - System.out.println("IOException writing: " + outputFileName); - } finally { - if (outputStream != null) { - try { - outputStream.close(); - } catch (IOException e) { - // ignore - } - } - } - } - - public void setTestResultsHtmlFileName(String aString) { - testResultsHtmlFileName = aString; - } - - public String getTestResultsHtmlFileName() { - return testResultsHtmlFileName; - } - - public void setTestResultsTemplateFileName(String aString) { - testResultsTemplateFileName = aString; - } - - public String getTestResultsTemplateFileName() { - return testResultsTemplateFileName; - } - - public void setXmlDirectoryName(String aString) { - xmlDirectoryName = aString; - } - - public String getXmlDirectoryName() { - return xmlDirectoryName; - } - - public void setHtmlDirectoryName(String aString) { - htmlDirectoryName = aString; - } - - public String getHtmlDirectoryName() { - return htmlDirectoryName; - } - - public void setDropDirectoryName(String aString) { - dropDirectoryName = aString; - } - - public String getDropDirectoryName() { - return dropDirectoryName; - } - - private void formatCompileErrorRow(String fileName, int errorCount, - int warningCount, int forbiddenAccessWarningCount, - int discouragedAccessWarningCount, StringBuffer buffer) { - - int accessRuleWarningCount = forbiddenAccessWarningCount - + discouragedAccessWarningCount; - if (!includeAll) { - if (errorCount == 0 && warningCount == 0 - && accessRuleWarningCount == 0) { - return; - } - } - - int i = fileName.indexOf(getHrefCompileLogsTargetPath()); - - String shortName = fileName.substring(i - + getHrefCompileLogsTargetPath().length()); - - buffer.append("<tr>\n<td>\n").append("<a href=").append("\"").append( - getHrefCompileLogsTargetPath()).append(shortName).append("\">") - .append(shortName).append("</a>").append( - "</td><td align=\"center\">").append("<a href=") - .append("\"").append(getHrefCompileLogsTargetPath()).append( - shortName).append("#ERRORS").append("\">").append( - errorCount).append("</a>").append( - "</td><td align=\"center\">").append("<a href=") - .append("\"").append(getHrefCompileLogsTargetPath()).append( - shortName).append("#ACCESSRULES_WARNINGS") - .append("\">").append(accessRuleWarningCount).append("</a>") - .append("(").append(forbiddenAccessWarningCount).append("/") - .append(discouragedAccessWarningCount).append(")").append( - "</td><td align=\"center\">").append("<a href=") - .append("\"").append(getHrefCompileLogsTargetPath()).append( - shortName).append("#OTHER_WARNINGS").append("\">") - .append(warningCount).append("</a>").append("</td>\n</tr>\n"); - } - - private String formatRow(String fileName, int errorCount, boolean link) { - - // replace .xml with .html - - String aString = ""; - if (!link) { - return "<tr><td>" + fileName + " (missing)" + "</td><td>" + "DNF"; - } - - if (fileName.endsWith(".xml")) { - - int begin = fileName.lastIndexOf(File.separatorChar); - int end = fileName.lastIndexOf(".xml"); - - String shortName = fileName.substring(begin + 1, end); - String displayName = shortName; - if (errorCount != 0) - aString = aString + "<tr><td><b>"; - else - aString = aString + "<tr><td>"; - - if (errorCount != 0) { - displayName = "<font color=\"#ff0000\">" + displayName - + "</font>"; - } - if (errorCount == -1) { - aString = aString.concat(displayName); - } else { - aString = aString + "<a href=" + "\"" - + hrefTestResultsTargetPath + "/" + shortName + ".html" - + "\">" + displayName + "</a>"; - } - if (errorCount > 0) - aString = aString + "</td><td><b>"; - else - aString = aString + "</td><td>"; - - if (errorCount == -1) - aString = aString + "<font color=\"#ff0000\">DNF"; - - else if (errorCount > 0) - aString = aString + "<font color=\"#ff0000\">" - + String.valueOf(errorCount); - else - aString = aString + String.valueOf(errorCount); - - if (errorCount != 0) - aString = aString + "</font></b></td></tr>"; - else - aString = aString + "</td></tr>"; - } - - return aString; - - } - - // Specific to the RelEng test results page - private String formatRowReleng(String fileName, int errorCount, boolean link) { - - // If the file name doesn't end with any of the set test - // configurations, do nothing - boolean endsWithConfig = false; - int card = testsConfig.length; - for (int i = 0; i < card; i++) { - if (fileName.endsWith(testsConfig[i])) - endsWithConfig = true; - } - if (!endsWithConfig) - return ""; - - String aString = ""; - if (!link) { - return "<tr><td>" + fileName + "</td><td align=\"center\">" - + "DNF </tr>"; - } - - if (fileName.endsWith(".xml")) { - - int begin = fileName.lastIndexOf(File.separatorChar); - - // Get org.eclipse. out of the component name - String shortName = fileName.substring(begin + 13, fileName - .indexOf('_')); - String displayName = shortName; - - // If the short name does not start with this prefix - if (!shortName.startsWith(prefix)) { - // If the prefix is not yet set - if (prefix == "default") { - // Set the testShortName variable to the current short - // name - testShortName = shortName; - counter = 0; - // Set new prefix - prefix = shortName.substring(0, - shortName.indexOf(".tests") + 6); - aString = aString + "<tbody><tr><td><b>" + prefix + ".*" - + "</b><td><td><td><td>"; - aString = aString + "<tr><td><P>" + shortName; - - // Loop until the matching string postfix(test config.) is - // found - while (counter < card - && !fileName.endsWith(testsConfig[counter])) { - aString = aString + "<td align=\"center\">-</td>"; - counter++; - } - } else { - // Set new prefix - prefix = shortName.substring(0, - shortName.indexOf(".tests") + 6); - - // Loop until the matching string postfix(test config.) is - // found - while (counter < card - && !fileName.endsWith(testsConfig[counter])) { - aString = aString + "<td align=\"center\">-</td>"; - counter++; - } - - // In this case, the new prefix should be set with the - // short name under it, - // since this would mean that the team has more than one - // component test - if (!shortName.endsWith("tests")) { - aString = aString + "<tbody><tr><td><b>" + prefix - + ".*" + "</b><td><td><td><td>"; - aString = aString + "<tr><td><P>" + shortName; - } - // The team has only one component test - else - aString = aString + "<tbody><tr><td><b>" + shortName; - testShortName = shortName; - - counter = 0; - } - } - // If the file's short name starts with the current prefix - if (shortName.startsWith(prefix)) { - // If the new file has a different short name than the current - // one - if (!shortName.equals(testShortName)) { - // Fill the remaining cells with '-'. These files will - // later be listed as - // missing - while (counter < card) { - aString = aString + "<td align=\"center\">-</td>"; - counter++; - } - counter = 0; - // Print the component name - aString = aString + "<tr><td><P>" + shortName; - // Loop until the matching string postfix(test config.) is - // found - while (counter < card - && !fileName.endsWith(testsConfig[counter])) { - aString = aString + "<td align=\"center\">-</td>"; - counter++; - } - } else { - // Loop until the matching string postfix(test config.) is - // found - while (counter < card - && !fileName.endsWith(testsConfig[counter])) { - aString = aString + "<td align=\"center\">-</td>"; - counter++; - } - // If the previous component has no more test files left - if (counter == card) { - counter = 0; - // Print the new component name - aString = aString + "<tr><td><P>" + shortName; - // Loop until the matching string postfix(test - // config.) is found - while (counter < card - && !fileName.endsWith(testsConfig[counter])) { - aString = aString + "<td align=\"center\">-</td>"; - counter++; - } - } - } - - testShortName = shortName; - - if (errorCount != 0) - aString = aString + "<td align=\"center\"><b>"; - else - aString = aString + "<td align=\"center\">"; - - // Print number of errors - if (errorCount != 0) { - displayName = "<font color=\"#ff0000\">" + "(" - + String.valueOf(errorCount) + ")" + "</font>"; - } else { - displayName = "(0)"; - } - - // Reference - if (errorCount == -1) { - aString = aString.concat(displayName); - } else { - aString = aString - + "<a href=" - + "\"" - + hrefTestResultsTargetPath - + "/" - + fileName.substring(begin + 1, - fileName.length() - 4) + ".html" + "\">" - + displayName + "</a>"; - } - - if (errorCount == -1) - aString = aString + "<font color=\"#ff0000\">DNF"; - - if (errorCount != 0) - aString = aString + "</font></b></td>"; - else - aString = aString + "</td>"; - counter++; - } - } - - return aString; - } - - private int countErrors(String fileName) { - int errorCount = 0; - - if (new File(fileName).length() == 0) - return -1; - - try { - DocumentBuilderFactory docBuilderFactory = DocumentBuilderFactory - .newInstance(); - parser = docBuilderFactory.newDocumentBuilder(); - - Document document = parser.parse(fileName); - NodeList elements = document.getElementsByTagName(elementName); - - int elementCount = elements.getLength(); - if (elementCount == 0) - return -1; - for (int i = 0; i < elementCount; i++) { - Element element = (Element) elements.item(i); - NamedNodeMap attributes = element.getAttributes(); - Node aNode = attributes.getNamedItem("errors"); - errorCount = errorCount - + Integer.parseInt(aNode.getNodeValue()); - aNode = attributes.getNamedItem("failures"); - errorCount = errorCount - + Integer.parseInt(aNode.getNodeValue()); - - } - - } catch (IOException e) { - System.out.println("IOException: " + fileName); - // e.printStackTrace(); - return 0; - } catch (SAXException e) { - System.out.println("SAXException: " + fileName); - // e.printStackTrace(); - return 0; - } catch (ParserConfigurationException e) { - e.printStackTrace(); - } - return errorCount; - } - - /** - * Gets the hrefTestResultsTargetPath. - * - * @return Returns a String - */ - public String getHrefTestResultsTargetPath() { - return hrefTestResultsTargetPath; - } - - /** - * Sets the hrefTestResultsTargetPath. - * - * @param hrefTestResultsTargetPath - * The hrefTestResultsTargetPath to set - */ - public void setHrefTestResultsTargetPath(String htmlTargetPath) { - this.hrefTestResultsTargetPath = htmlTargetPath; - } - - /** - * Gets the compileLogsDirectoryName. - * - * @return Returns a String - */ - public String getCompileLogsDirectoryName() { - return compileLogsDirectoryName; - } - - /** - * Sets the compileLogsDirectoryName. - * - * @param compileLogsDirectoryName - * The compileLogsDirectoryName to set - */ - public void setCompileLogsDirectoryName(String compileLogsDirectoryName) { - this.compileLogsDirectoryName = compileLogsDirectoryName; - } - - /** - * Gets the hrefCompileLogsTargetPath. - * - * @return Returns a String - */ - public String getHrefCompileLogsTargetPath() { - return hrefCompileLogsTargetPath; - } - - /** - * Sets the hrefCompileLogsTargetPath. - * - * @param hrefCompileLogsTargetPath - * The hrefCompileLogsTargetPath to set - */ - public void setHrefCompileLogsTargetPath(String hrefCompileLogsTargetPath) { - this.hrefCompileLogsTargetPath = hrefCompileLogsTargetPath; - } - - /** - * Gets the testManifestFileName. - * - * @return Returns a String - */ - public String getTestManifestFileName() { - return testManifestFileName; - } - - /** - * Sets the testManifestFileName. - * - * @param testManifestFileName - * The testManifestFileName to set - */ - public void setTestManifestFileName(String testManifestFileName) { - this.testManifestFileName = testManifestFileName; - } - - /** - * Gets the dropHtmlFileName. - * - * @return Returns a String - */ - public String getDropHtmlFileName() { - return dropHtmlFileName; - } - - /** - * Sets the dropHtmlFileName. - * - * @param dropHtmlFileName - * The dropHtmlFileName to set - */ - public void setDropHtmlFileName(String dropHtmlFileName) { - this.dropHtmlFileName = dropHtmlFileName; - } - - protected void getDropTokensFromList(String list) { - StringTokenizer tokenizer = new StringTokenizer(list, ","); - dropTokens = new Vector(); - - while (tokenizer.hasMoreTokens()) { - dropTokens.add(tokenizer.nextToken()); - } - } - - protected void getDifferentPlatformsFromList(String list) { - StringTokenizer tokenizer = new StringTokenizer(list, ";"); - differentPlatforms = new Vector(); - - while (tokenizer.hasMoreTokens()) { - differentPlatforms.add(tokenizer.nextToken()); - } - } - - protected void getPlatformSpecsFromList(String list) { - StringTokenizer tokenizer = new StringTokenizer(list, ","); - platformSpecs = new Vector(); - - while (tokenizer.hasMoreTokens()) { - platformSpecs.add(tokenizer.nextToken()); - } - } - - public String getDropTokenList() { - return dropTokenList; - } - - public void setDropTokenList(String dropTokenList) { - this.dropTokenList = dropTokenList; - } - - public boolean isBuildTested() { - return isBuildTested; - } - - public void setIsBuildTested(boolean isBuildTested) { - this.isBuildTested = isBuildTested; - } - - /** - * @return - */ - public boolean testsRan() { - return testsRan; - } - - /** - * @param b - */ - public void setTestsRan(boolean b) { - testsRan = b; - } - - /** - * @return - */ - public Vector getDropTokens() { - return dropTokens; - } - - /** - * @param vector - */ - public void setDropTokens(Vector vector) { - dropTokens = vector; - } - - /** - * @return - */ - public String getTestResultsWithProblems() { - return testResultsWithProblems; - } - - /** - * @param string - */ - public void setTestResultsWithProblems(String string) { - testResultsWithProblems = string; - } - - public String getBuildType() { - return buildType; - } - - public void setBuildType(String buildType) { - this.buildType = buildType; - } - - public String getPlatformSpecificTemplateList() { - return platformSpecificTemplateList; - } - - public void setPlatformSpecificTemplateList( - String platformSpecificTemplateList) { - this.platformSpecificTemplateList = platformSpecificTemplateList; - } - - public void setPlatformIdentifierToken(String platformIdentifierToken) { - this.platformIdentifierToken = platformIdentifierToken; - } - - public String getPlatformIdentifierToken() { - return platformIdentifierToken; - } - - public boolean isIncludeAll() { - return includeAll; - } - - public void setIncludeAll(boolean includeAll) { - this.includeAll = includeAll; - } - -} diff --git a/archive/releng.builder/tools/org.eclipse.wtp.releng.tools/src/org/eclipse/wtp/releng/tools/handy.jpage b/archive/releng.builder/tools/org.eclipse.wtp.releng.tools/src/org/eclipse/wtp/releng/tools/handy.jpage new file mode 100644 index 0000000000000000000000000000000000000000..ff164c5a42d81d6ee048e0cff0da9355bf254505 --- /dev/null +++ b/archive/releng.builder/tools/org.eclipse.wtp.releng.tools/src/org/eclipse/wtp/releng/tools/handy.jpage @@ -0,0 +1,17 @@ +System.getProperty("path.separator"); + +System.getProperty("file.separator"); + +System.getProperty("line.separator"); + +void dumpAllProperties() { + java.util.Enumeration enumeration = System.getProperties().keys(); + String key = null; + while (enumeration.hasMoreElements()) { + key = (String) enumeration.nextElement(); + System.out.print(key); + for (int i = 0; i < (30 - key.length()); i++) + System.out.print(" "); + System.out.println("->" + System.getProperty(key)); + } +}