📄 runtest.java
字号:
// Determine if it is ok to delete base when done if ( (usesystem == null) || (usesystem.length()<=0) ) deleteBaseDir = true; // ok to delete base when done else deleteBaseDir = false; // keep db dir for nist & puzzles in case of failures // testOutName used to create the tmpOutFile // this is probably always going to be testBase if ( testOutName == null ) { if (testType.equals("demo")) testOutName = testBase.substring(testBase.indexOf(".")+1); else testOutName = testBase; } // Create a .tmp file for doing sed later to create testBase.out tmpOutFile = new File(outDir, testOutName + ".tmp"); // Always create a .tmpmstr in local encoding so we can do Diff in locale encoding // With Network server, this also will get adjusted for displaywidth//TODO: always, except when setting a special property to force .out creation in UTF-8? tempMasterName = testOutName+".tmpmstr"; // Define the .out file which will be created by massaging the tmp.out finalOutFile = new File(outDir, testOutName + ".out"); // Define the .diff file which will contain diffs and other info diffFile = new File(outDir, testOutName + ".diff"); stdOutFile = new File(outDir, testOutName + ".std"); // Define also the .pass and .fail files if ( isSuiteRun ) { String sname = suiteName.substring(0,suiteName.indexOf(":")); //System.out.println("sname: " + sname); //System.out.println("topsuiteName: " + topsuiteName); passFileName = sname+".pass"; passFile = new File(rsuiteDir, passFileName); failFileName = sname+".fail"; failFile = new File(rsuiteDir, failFileName); } else { passFileName=testBase+".pass"; passFile = new File(outDir, passFileName); failFileName=testBase+".fail"; failFile = new File(outDir, failFileName); } //System.out.println("passFileName: " + passFileName); boolean status = true; // Delete any old .out or .tmp files if (tmpOutFile.exists()) status = tmpOutFile.delete(); tempMasterFile = new File (outDir, tempMasterName); if (tempMasterFile.exists()) status = tempMasterFile.delete(); if (finalOutFile.exists()) status = finalOutFile.delete(); if (diffFile.exists()) status = diffFile.delete(); if (stdOutFile.exists()) status = stdOutFile.delete(); // Delete any old pass or fail files if (!isSuiteRun) { if (failFile.exists()) status = failFile.delete(); if (passFile.exists()) status = passFile.delete(); } if (status == false) System.out.println("Unable to delete tmp, out and/or diff files to start"); // Create a PrintWriter for writing env and test info to the diff file pwDiff = new PrintWriter (new BufferedWriter(new FileWriter(diffFile.getPath()), 4096), true); } private static void getProperties(Properties sp) throws Exception { // Get any properties specified on the command line searchCP = sp.getProperty("ij.searchClassPath"); framework = sp.getProperty("framework"); if (framework == null) framework = "embedded"; if (!verifyFramework(framework)) framework = ""; else driverName = NetServer.getDriverName(framework); String skipFile; // Some tests will not work with some frameworks, // so check property files for tests to be skipped skipFile = framework + ".exclude"; if (!framework.equals("")) { if (SkipTest.skipIt(skipFile, scriptName)) { skiptest = true; addSkiptestReason("Test skipped: listed in " + skipFile + " file, skipping test: " + scriptName); } } else framework = ""; jvmName = sp.getProperty("jvm"); //System.out.println("jvmName is: " + jvmName); if ( (jvmName == null) || (jvmName.length()==0) || (jvmName.equals("jview"))) { javaVersion = System.getProperty("java.version"); //System.out.println("javaVersion is: " + javaVersion); } else javaVersion = jvmName; //hang on a minute - if j9, we need to check further String javavmVersion; if (sp.getProperty("java.vm.name").equals("J9")) javavmVersion = (sp.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 { if (System.getProperty("java.vm.vendor").startsWith("IBM")) { if (System.getProperty("java.vm.name").equals("J9")) { if (System.getProperty("com.ibm.oti.configuration").equals("foun10")) { jvmName = "j9_foundation"; } else { // for reporting; first extend javaVersion javaVersion = javaVersion + " - " + majorVersion + "." + minorVersion; // 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. Switch back to 1.3. (java.version) values. if ((imajor <= 2) && (iminor < 2)) { majorVersion = "1"; minorVersion = "3"; imajor = 1; iminor = 3; } jvmName = "j9_" + majorVersion + minorVersion; } } else jvmName = "ibm" + majorVersion + minorVersion; } else jvmName = "jdk" + majorVersion + minorVersion; } } javaCmd = sp.getProperty("javaCmd"); bootcp = sp.getProperty("bootcp"); jvmflags = sp.getProperty("jvmflags"); testJavaFlags = sp.getProperty("testJavaFlags"); classpath = sp.getProperty("classpath"); //System.out.println("classpath set to: " + classpath); classpathServer = sp.getProperty("classpathServer"); if ( (classpathServer == null) || (classpathServer.startsWith("${")) ) classpathServer = classpath; //System.out.println("classpathServer set to: " + classpathServer); jarfile = sp.getProperty("jarfile"); String upg = sp.getProperty("upgradetest"); if (upg != null) { upg = upg.toLowerCase(); if (upg.equals("true")) upgradetest = true; } if ( framework.startsWith("Derby") && (! jvmName.equals("j9_foundation"))) { Class c = null; Method m = null; Object o = null; Integer i = null; try { c = Class.forName("com.ibm.db2.jcc.DB2Driver"); o = c.newInstance(); m = c.getMethod("getMajorVersion", null); i = (Integer)m.invoke(o, null); jccMajor = i.intValue(); m = c.getMethod("getMinorVersion", null); i = (Integer)m.invoke(o, null); jccMinor = i.intValue(); } catch (ClassNotFoundException e) {} String excludeJcc = sp.getProperty("excludeJCC"); try { RunList.checkClientExclusion(excludeJcc, "JCC", jccMajor, jccMinor, javaVersion); } catch (Exception e) { skiptest = true; addSkiptestReason(e.getMessage()); } } String sysdiff = sp.getProperty("systemdiff"); if (sysdiff != null) { sysdiff = sysdiff.toLowerCase(); if (sysdiff.equals("true")) systemdiff = true; } String keep = sp.getProperty("keepfiles"); if (keep != null) { keep = keep.toLowerCase(); if (keep.equals("true")) keepfiles = true; } String encrypt = sp.getProperty("encryption"); if ( (encrypt != null) && (encrypt.equalsIgnoreCase("true")) ) encryption = true; String jdk12ext = sp.getProperty("jdk12exttest"); if ( (jdk12ext != null) && (jdk12ext.equalsIgnoreCase("true")) ) jdk12exttest = true; // applied to jdk12 or higher if ( encryption || jdk12exttest ) { // Must be running jdk12 or higher and must have extensions if ( iminor < 2 ) // this is 1.1.x { skiptest = true; addSkiptestReason("Test skipped: encryption or jdk12exttest requires jdk12 or higher; this is jdk1"+iminor+", skipping test: " + scriptFileName); } else // now check for extensions { try { Class jtaClass = Class.forName("javax.transaction.xa.Xid"); } catch (ClassNotFoundException cnfe) { // at least one of the extension classes was not found skiptest = true; addSkiptestReason("Test skipped: javax.transaction.xa.Xid not found, skipping test: " + scriptFileName); } try { Class jdbcClass = Class.forName("javax.sql.RowSet"); } catch (ClassNotFoundException cnfe2) { // at least one of the extension classes was not found skiptest = true; addSkiptestReason("Test skipped: javax.sql.RowSet not found, skipping test: " + scriptFileName); } } } runningdir = sp.getProperty("rundir"); if (runningdir == null) runningdir = ""; outputdir = sp.getProperty("outputdir"); if (outputdir == null) outputdir = ""; bootcp = sp.getProperty("bootcp"); canondir = sp.getProperty("canondir"); canonpath = sp.getProperty("canonpath"); testOutName = sp.getProperty("testoutname"); useOutput = new Boolean(sp.getProperty("useoutput","true")).booleanValue(); outcopy = new Boolean(sp.getProperty("outcopy","false")).booleanValue(); mtestdir = sp.getProperty("mtestdir"); // used by multi tests if (mtestdir == null) mtestdir = ""; String usepr = sp.getProperty("useprocess"); if (usepr != null) { usepr = usepr.toLowerCase(); if (usepr.equals("false")) useprocess = false; else useprocess = true; } else useprocess = true; String nosed = sp.getProperty("skipsed"); if (nosed != null) { nosed = nosed.toLowerCase(); if (nosed.equals("true")) skipsed = true; } String dbug = sp.getProperty("verbose"); if (dbug != null) { dbug = dbug.toLowerCase(); if (dbug.equals("true")) verbose = true; } String rstderr = sp.getProperty("reportstderr"); if (rstderr != null) { rstderr = rstderr.toLowerCase(); if (rstderr.equals("false")) reportstderr = false; } // default to -1 (no timeout) if no property is set if (timeoutStr == null) { timeoutStr = sp.getProperty("timeout", "-1"); //System.out.println("+++setting timeoutStr to " + timeoutStr + " in RunTest::getProperties"); } else { //System.out.println("+++timeoutStr was already " + timeoutStr + " in RunTest::getProperties"); } try { timeout = Integer.parseInt(timeoutStr); } catch (NumberFormatException nfe) { timeout = -1; } //System.out.println("RunTest timeout is: " + timeout); testSpecialProps = sp.getProperty("testSpecialProps"); if (useprocess) { String defrespckg = sp.getProperty("ij.defaultResourcePackage"); if (defrespckg != null) // if not set there is a default defined { defaultPackageName = defrespckg; if (!defaultPackageName.endsWith("/")) defaultPackageName += "/"; } usesystem = sp.getProperty("usesystem"); } if ( (useprocess) || (suiteName == null) ) {
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -