📄 runlist.java
字号:
jvmProps.addElement("jdk12test=" + jdk12test); if (jdk12exttest != null) jvmProps.addElement("jdk12exttest=" + jdk12exttest); if (jdk14test != null) jvmProps.addElement("jdk14test=" + jdk14test); if (keepfiles != null) jvmProps.addElement("keepfiles=" + keepfiles); if ( (outputdir != null) && (outputdir.length()>0) ) { jvmProps.addElement("outputdir=" + outputdir); } if ( (topsuitedir != null) && (topsuitedir.length()>0) ) jvmProps.addElement("topsuitedir=" + topsuitedir); else jvmProps.addElement("topsuitedir=" + outputdir); if (topreportdir != null) jvmProps.addElement("topreportdir=" + topreportdir); else jvmProps.addElement("topreprtdir=" + topsuitedir); if ( (runDir != null) && (runDir.exists()) ) jvmProps.addElement("rundir=" + runDir.getCanonicalPath()); if ( (bootcp != null) && (bootcp.length()>0) ) jvmProps.addElement("bootcp=" + bootcp); if ( (serverJvm != null) && (serverJvm.length()>0) ) jvmProps.addElement("serverJvm=" + serverJvm); if ( (serverJvmName != null) && (serverJvmName.length()>0) ) jvmProps.addElement("serverJvmName=" + serverJvmName); if ( useprocess == false ) jvmProps.addElement("useprocess=false"); if ( skipsed.equals("true") ) jvmProps.addElement("skipsed=true"); if ( systemdiff != null ) jvmProps.addElement("systemdiff=" + systemdiff); if ( ijdefaultResourcePackage != null ) jvmProps.addElement("ij.defaultResourcePackage=" + ijdefaultResourcePackage); if ( mtestdir != null ) jvmProps.addElement("mtestdir=" + mtestdir); if (topSpecialProps.length()>0) { jvmProps.addElement("testSpecialProps=" + topSpecialProps + ((otherSpecialProps.length()>0)? ("^" + otherSpecialProps) :"") ); } else if (otherSpecialProps.length()>0) jvmProps.addElement("testSpecialProps=" + otherSpecialProps); // Ensure any properties that define the default connection // for the tests to use a DataSource are passed from the // command line onto the RunTest invoked. These properties are // // ij.dataSource=<classname of datasource> // // any number of // ij.dataSource.<datasource property>=<value> Properties sysProps = System.getProperties(); for (Enumeration e = sysProps.keys(); e.hasMoreElements(); ) { String key = (String) e.nextElement(); if (key.startsWith("ij.dataSource")) jvmProps.addElement(key + "=" + sysProps.getProperty(key)); } jvmProps.addElement("suitename=" + suite); if ( (topSuiteName != null) && (topSuiteName.length()>0) ) jvmProps.addElement("topsuitename=" + topSuiteName); if (classpath != null) jvm.setClasspath(classpath); jvm.setD(jvmProps); Vector v = jvm.getCommandLine(); v.addElement("org.apache.derbyTesting.functionTests.harness.RunTest"); String str = ""; String lastTest = null; String skipTo = System.getProperties().getProperty("skipToFile"); String stopAfter = System.getProperties().getProperty("stopAfterFile"); // Read the individual tests // Example: "lang/avg.sql" or "conn/resultset.java" while ( (str = runlistFile.readLine()) != null ) { // skip tests if specified if (skipTo != null && !str.equals(skipTo)) continue; else skipTo = null; if (stopAfter != null && lastTest != null && lastTest.equals(stopAfter)) break; // Create the command for RunTest // Create a string array from the vector String testCmd[] = new String[v.size() + 1]; StringBuffer verboseSb = new StringBuffer(); int i = 0; for (i = 0; i < v.size(); i++) { testCmd[i] = (String)v.elementAt(i); verboseSb.append(testCmd[i] + " "); } testCmd[i++] = str; verboseSb.append(str + " "); //if (verbose) //System.out.println("Execute command: " + verboseSb.toString()); String uc = System.getProperties().getProperty("useCommonDB"); if (uc == null) uc = "false"; if ( useprocess == true && uc.equals("true")==false) { System.out.println("Execute command: " + verboseSb.toString()); // Now execute the command to run the test Process pr = null; try { pr = Runtime.getRuntime().exec(testCmd); // We need the process inputstream to capture into the output file BackgroundStreamDrainer stdout = new BackgroundStreamDrainer(pr.getInputStream(), null); BackgroundStreamDrainer stderr = new BackgroundStreamDrainer(pr.getErrorStream(), null); pr.waitFor(); String result = HandleResult.handleResult(pr.exitValue(), stdout.getData(), stderr.getData(), pwOut); pr.destroy(); } catch(Throwable t) { System.out.println("Process exception: " + t.getMessage()); if (pr != null) { pr.destroy(); pr = null; } } } else { String[] args = new String[6]; args[0] = str; // the test name if ( ijdefaultResourcePackage != null ) args[1] = ijdefaultResourcePackage; else args[1] = "/org/apache/derbyTesting/functionTests/"; if ( usesystem != null ) args[2] = usesystem; else args[2] = ""; args[3] = "noprocess"; if ( shutdownurl != null) args[4] = shutdownurl; else args[4] = ""; args[5] = suite; org.apache.derbyTesting.functionTests.harness.RunTest.main(args); // Write any diff to the suite's output String tmp = str.substring(str.indexOf("/") + 1, str.lastIndexOf(".")); String diffname = tmp + "." + "diff"; File diffFile = new File(outDir, diffname); if ( (diffFile != null) && (diffFile.exists()) ) { BufferedReader inFile = new BufferedReader(new FileReader(diffFile)); String diffLine = ""; while ( (diffLine = inFile.readLine()) != null ) { pwOut.println(diffLine); } } } // reset the system properties to prevent confusion // when running with java threads ManageSysProps.resetSysProps(); lastTest = str; } } /** * Locate the suite's properties file */ public static Properties locateSuiteProperties(String suiteName, Properties parentProps, boolean isParent, boolean isTop) throws ClassNotFoundException, IOException, Exception { // Check for suite properties //System.out.println("Checking for suite properties"); String suitePropsName = "suites" + '/' + suiteName + ".properties"; InputStream is = org.apache.derbyTesting.functionTests.harness.RunTest.loadTestResource(suitePropsName); if (is == null) { // Look in userdir suitePropsName = userdir + '/' + suiteName + ".properties"; is = org.apache.derbyTesting.functionTests.harness.RunTest.loadTestResource(suitePropsName); } Properties p = new Properties(); // Reset these properties if (isParent) { usesystem = null; upgradetest = null; jarfile = null; outcopy = null; useoutput = null; mtestdir = null; skipsed = "false"; //outputdir = outDir.getCanonicalPath(); } if (is != null) { p.load(is); is = null; } else { // Reset framework to the parent suite's framework, if any // because framework may have been set by previous suite framework = parentProps.getProperty("framework"); serverJvm = parentProps.getProperty("serverJvm"); serverJvmName = parentProps.getProperty("serverJvmName"); // Do the same for ij.defaultResourcePackage ijdefaultResourcePackage = parentProps.getProperty("ij.defaultResourcePackage"); // And do the same for encryption encryption = parentProps.getProperty("encryption"); testEncryptionProvider = parentProps.getProperty("testEncryptionProvider"); // And do the same for jdk12test jdk12test = parentProps.getProperty("jdk12test"); jdk12exttest = parentProps.getProperty("jdk12exttest"); // and jdk14test jdk14test = parentProps.getProperty("jdk14test"); runwithj9 = parentProps.getProperty("runwithj9"); runwithibmjvm = parentProps.getProperty("runwithibmjvm"); String testJVM = (jvmName.startsWith("j9") ? "j9" : jvmName); runwithjvm = parentProps.getProperty("runwith" + testJVM); excludeJCC = parentProps.getProperty("excludeJCC"); } return p; } /** * Properties which may be defined for all suites * at the top level suite (such as "nightly") */ private static void setTopSuiteProperties() throws ClassNotFoundException, IOException { framework = suiteProperties.getProperty("framework"); jversion = suiteProperties.getProperty("jversion"); //System.out.println("RunList top jversion= " + jversion); jvmName = suiteProperties.getProperty("jvm"); String j9config = System.getProperty("com.ibm.oti.configuration"); if (j9config != null) if (j9config.equals("foun10")) jvmName="j9_foundation"; else if (j9config.equals("max")) jvmName="j9_13"; if (jversion == null) javaVersion = System.getProperty("java.version"); else javaVersion = jversion; //System.out.println("RunList setTopSuiteProperties javaVersion: " + javaVersion); javaCmd = suiteProperties.getProperty("javaCmd"); if (javaCmd == null) javaCmd = "java"; else if (javaCmd.equals("jview")) jvmName = "jview"; // if j9, we need to check further String javavmVersion; if (System.getProperty("java.vm.name").equals("J9")) javavmVersion = (System.getProperty("java.vm.version")); else javavmVersion = javaVersion; JavaVersionHolder jvh = new JavaVersionHolder(javavmVersion); majorVersion = jvh.getMajorVersion(); minorVersion = jvh.getMinorVersion(); iminor = jvh.getMinorNumber(); imajor = jvh.getMajorNumber(); if ( (jvmName == null) || (jvmName.equals("jview")) ) { if ( (iminor < 2) && (imajor < 2) ) jvmName = "currentjvm"; else jvmName = "jdk" + majorVersion + minorVersion; } if (jvmName.equals("j9_13")) { javaVersion = javaVersion + " - " + majorVersion + "." + minorVersion; System.out.println("javaVersion now: " + javaVersion); // up to j9 2.1 (jdk 1.3.1. subset) the results are the same for all versions, or // we don't care about it anymore. So switch back to 1.3 (java.version values). if ((imajor <= 2) && (iminor < 2)) { majorVersion = "1"; minorVersion = "3"; imajor = 1; iminor = 3; } else jvmName = "j9_" + majorVersion + minorVersion; } jvmflags = suiteProperties.getProperty("jvmflags"); testJavaFlags = suiteProperties.getProperty("testJavaFlags"); classpath = suiteProperties.getProperty("classpath"); classpathServer = suiteProperties.getProperty("classpathServer"); usesystem = suiteProperties.getProperty("usesystem"); upgradetest = suiteProperties.getProperty("upgradetest"); outcopy = suiteProperties.getProperty("outcopy"); useoutput = suiteProperties.getProperty("useoutput"); encryption = suiteProperties.getProperty("encryption"); testEncryptionProvider = suiteProperties.getProperty("testEncryptionProvider"); jdk12test = suiteProperties.getProperty("jdk12test"); jdk12exttest = suiteProperties.getProperty("jdk12exttest"); jdk14test = suiteProperties.getProperty("jdk14test"); runwithibmjvm = suiteProperties.getProperty("runwithibmjvm"); runwithj9 = suiteProperties.getProperty("runwithj9"); String testJVM = (jvmName.startsWith("j9") ? "j9" : jvmName); runwithjvm = suiteProperties.getProperty("runwith" + testJVM); excludeJCC = suiteProperties.getProperty("excludeJCC"); keepfiles = suiteProperties.getProperty("keepfiles"); systemdiff = suiteProperties.getProperty("systemdiff"); outputdir = suiteProperties.getProperty("outputdir"); if (outputdir == null) outputdir = userdir; topsuitedir = suiteProperties.getProperty("topsuitedir"); if (topsuitedir == null) topsuitedir = outputdir; bootcp = suiteProperties.getProperty("bootcp"); serverJvm = suiteProperties.getProperty("serverJvm"); serverJvmName = suiteProperties.getProperty("serverJvmName"); canondir = suiteProperties.getProperty("canondir"); mtestdir = suiteProperties.getProperty("mtestdir"); String usepr = suiteProperties.getProperty("useprocess"); if ( (usepr != null) && (usepr.equals("false")) ) useprocess = false; skipsed = suiteProperties.getProperty("skipsed"); String dbug = suiteProperties.getProperty("verbose"); if ( (dbug != null) && (dbug.equals("true")) ) verbose = true; reportstderr = suiteProperties.getProperty("reportstderr"); timeout = suiteProperties.getProperty("timeout"); shutdownurl = suiteProperties.getProperty("shutdownurl"); topSuiteName = suiteProperties.getProperty("suitename"); ijdefaultResourcePackage = suiteProperties.getProperty("ij.defaultResourcePackage"); // The top level suiteProperties may have special // properties which need to be added to testSpecialProps if ( (specialProperties != null) && (!specialProperties.isEmpty()) ) { //System.out.println("Top suite has special props"); setSpecialProps(specialProperties, true); } } /** * Properties for nested suites */ private static void setSuiteProperties(Properties p, String suiteName, Properties parentProperties, boolean isParent, boolean isTop) throws ClassNotFoundException, IOException { // Some properties may have been set by the top suite // jvm, jvmflags, classpath, systemdiff, verbose, etc. // In that case, these will be preserved for the rest if (jversion != null) p.put("jvm", jversion); if ( jvmName == null ) jvmName = "currentjvm"; else p.put("jvm", jvmName); if ( javaCmd == null ) javaCmd = "java"; else p.put("javaCmd", javaCmd);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -