db-derby-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From d..@apache.org
Subject svn commit: r122528 - in incubator/derby/code/trunk/java/testing: . org/apache/derbyTesting/functionTests/harness org/apache/derbyTesting/functionTests/master org/apache/derbyTesting/functionTests/master/DerbyNet org/apache/derbyTesting/functionTests/master/j9_13 org/apache/derbyTesting/functionTests/suites org/apache/derbyTesting/functionTests/testData org/apache/derbyTesting/functionTests/testData/v1 org/apache/derbyTesting/functionTests/testData/v2 org/apache/derbyTesting/functionTests/tests/derbynet org/apache/derbyTesting/functionTests/tests/jdbcapi org/apache/derbyTesting/functionTests/tests/lang org/apache/derbyTesting/functionTests/tests/store org/apache/derbyTesting/functionTests/tests/storetests org/apache/derbyTesting/functionTests/tests/tools org/apache/derbyTesting/functionTests/util org/apache/derbyTesting/functionTests/util/StaticInitializers org/apache/derbyTesting/functionTests/util/VTIClasses
Date Thu, 16 Dec 2004 06:20:44 GMT
Author: djd
Date: Wed Dec 15 22:20:35 2004
New Revision: 122528

URL: http://svn.apache.org/viewcvs?view=rev&rev=122528
Log:
Set svn:eol-style native on all text files under java/testing.

Modified:
   incubator/derby/code/trunk/java/testing/README.htm   (contents, props changed)
   incubator/derby/code/trunk/java/testing/build.xml   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/BackgroundStreamDrainer.java   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/BackgroundStreamSaver.java   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/CopySuppFiles.java   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/CurrentTime.java   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/FileCompare.java   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/GRFileFilter.java   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/GenerateReport.java   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/HandleResult.java   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/JavaVersionHolder.java   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/ManageSysProps.java   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/NetServer.java   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/ProcessStreamDrainer.java   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/ProcessStreamResult.java   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/PropertyUtil.java   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/RunClass.java   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/RunIJ.java   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/RunList.java   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/RunSuite.java   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/RunTest.java   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/Sed.java   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/SimpleDiff.java   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/SkipTest.java   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/SpecialFlags.java   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/SysInfoLog.java   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/TimedProcess.java   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/UnJar.java   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/build.xml   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/copyfiles.ant   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/currentjvm.java   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/dbcleanup.java   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/ibm13.java   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/ibm14.java   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/j9_13.java   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/jdk13.java   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/jdk14.java   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/jdk15.java   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/jvm.java   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/shutdown.java   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/testtypes.properties   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/AIjdbc.out   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/CharUTF8.out   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/DB2IsolationLevels.out   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/DerbyNet/NSinSameJVM.out   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/DerbyNet/big.out   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/DerbyNet/callable.out   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/DerbyNet/dataSourcePermissions_net.out   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/DerbyNet/dblook_test_net.out   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/DerbyNet/forupdate.out   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/DerbyNet/holdCursorExternalSortJDBC30.out   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/DerbyNet/holdCursorIJ.out   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/DerbyNet/holdCursorJDBC30.out   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/DerbyNet/metadata.out   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/DerbyNet/parameterMetaDataJdbc30.out   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/DerbyNet/procedure.out   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/DerbyNet/savepointJdbc30.out   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/DerbyNet/supersimple.out   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/DerbyNet/sysinfo.out   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/DerbyNet/wisconsin.out   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/LOB.out   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/LOBDB2compatibility.out   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/Rllmodule1.out   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/Rllmodule2.out   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/Rllmodule3.out   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/Rllmodule4.out   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/RowLockBasic.out   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/RowLockIso.out   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/SpaceTable.out   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/TableLockBasic.out   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/TransactionTable.out   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/access.out   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/aggbuiltin.out   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/aggregate.out   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/aggregateOptimization.out   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/altertable.out   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/arithmetic.out   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/authorize.out   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/autoincrement.out   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/backupRestore.out   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/badConnection.out   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/bit.out   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/bit2.out   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/bug3498.out   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/bug4356.out   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/bug5052rts.out   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/bug5054.out   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/build.xml   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/case.out   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/cast.out   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/casting.out   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/checkConstraint.out   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/checkSecMgr.out   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/cisco.out   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/closed.out   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/coalesceTests.out   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/columnDefaults.out   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/comparisons.out   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/compressTable.out   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/concateTests.out   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/connect.out   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/connectDisconnect.out   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/consistencyChecker.out   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/constantExpression.out   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/csPrepStmt.out   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/currentSchema.out   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/currentof.out   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/cursor.out   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/cursorerrors.out   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/dataSourcePermissions.out   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/datetime.out   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/db2Compatibility.out   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/dbManagerLimits.out   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/ddlTableLockMode.out   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/deadlockMode.out   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/declareGlobalTempTableJava.out   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/declareGlobalTempTableJavaJDBC30.out   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/delete.out   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/depend.out   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/derived.out   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/desc_index.out   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/distinct.out   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/distinctElimination.out   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/distinctFiltering.out   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/dropTable.out   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/dynamicLikeOptimization.out   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/ejbql.out   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/ejbql_nonSPS.out   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/errorCode.out   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/executeUpdate.out   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/fk_nonSPS.out   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/floattypes.out   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/forbitdata.out   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/forupdate.out   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/functions.out   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/getCurrentProperties.out   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/groupBy.out   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/heapscan.out   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/holdCursorExternalSortJDBC30.out   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/holdCursorIJ.out   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/holdCursorJDBC30.out   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/holdCursorJavaReflection.out   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/identifier.out   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/implicitConversions.out   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/inbetween.out   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/infostreams.out   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/innerjoin.out   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/insert.out   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/isolationLevels.out   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/j9_13/arithmetic.out   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/j9_13/distinct.out   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/j9_13/ejbql.out   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/j9_13/errorCode.out   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/j9_13/floattypes.out   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/j9_13/groupBy.out   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/j9_13/outparams.out   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/joinDeadlock.out   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/joins.out   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/langUnitTests.out   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/lockTable.out   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/lockTableVti.out   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/logDevice.out   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/logStream.out   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/logop.out   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/lojreorder.out   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/longColumn.out   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/longRow.out   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/longStringColumn.out   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/madhare.out   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/maxMemPerTab.out   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/maxthreads.out   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/metadata.out   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/metadataMultiConn.out   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/miscerrors.out   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/modifyColumn.out   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/nestedCommit.out   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/nonreserved.out   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/nulls.out   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/openScans.out   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/orderby.out   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/orderbyElimination.out   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/outerjoin.out   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/outparams.out   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/paramij.out   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/partdml.out   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/positionedDelUpd.out   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/precedence.out   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/predicatesIntoViews.out   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/prepStmt.out   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/primarykey.out   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/procedure.out   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/refActions.out   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/refActions1.out   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/refActions2.out   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/refActions3.out   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/releaseCompileLocks.out   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/removeStubs.out   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/renameIndex.out   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/renameTable.out   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/reopenScan.out   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/repeat.out   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/rlliso1multi.out   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/rlliso3multi.out   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/rollForwardRecovery.out   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/runtimeinfo.out   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/schemas.out   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/select.out   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/simpleScroll.out   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/simpleThreadWrapper.out   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/specjPlans.out   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/st_1.out   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/st_b5772.out   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/st_schema.out   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/staleplans.out   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/stmtCache0.out   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/stmtCache1.out   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/stmtCache3.out   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/streams.out   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/stringtypes.out   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/subquery.out   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/subquery2.out   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/subqueryFlattening.out   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/supersimple.out   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/syscat.out   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/tempRestrictions.out   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/testProperties.out   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/testProtocol.out   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/testconnection.out   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/testij.out   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/testsqldecimal.out   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/timeslice.out   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/triggerBeforeTrig.out   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/triggerGeneral.out   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/triggerRecursion.out   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/triggerRefClause.out   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/triggerStream.out   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/ungroupedAggregatesNegative.out   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/union.out   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/unlimited.out   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/update.out   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/updateCursor.out   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/valuesclause.out   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/views.out   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/wisconsin.out   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/xaAnotherTest.out   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/xaMorph.out   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/xaOffline1.out   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/xaSimpleNegative.out   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/xaSimplePositive.out   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/xaStateTran.out   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/xab2354.out   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/suites/build.xml   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/suites/derbyall.properties   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/suites/derbylang.runall   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/suites/derbynetmats.properties   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/suites/derbynetmats.runall   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/suites/j9derbynetmats.runall   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/suites/noDerbyNet.runall   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/suites/noembedded.runall   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/suites/storeall.properties   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/suites/storemats.properties   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/suites/storemats.runall   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/suites/storemore.runall   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/suites/storetests.properties   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/suites/storetests.runall   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/suites/xa.properties   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/suites/xa.runall   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/testData/build.xml   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/testData/v1/copyfiles.ant   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/testData/v2/copyfiles.ant   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/derbynet/NSinSameJVM.java   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/derbynet/NSinSameJVM_app.properties   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/derbynet/badConnection.java   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/derbynet/badConnection_sed.properties   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/derbynet/build.xml   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/derbynet/callable.java   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/derbynet/checkSecMgr.java   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/derbynet/copyfiles.ant   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/derbynet/csPrepStmt.java   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/derbynet/dataSourcePermissions_net.java   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/derbynet/dataSourcePermissions_net_app.properties   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/derbynet/dataSourcePermissions_net_sed.properties   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/derbynet/dblook_test_net.java   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/derbynet/dblook_test_net_app.properties   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/derbynet/default_app.properties   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/derbynet/default_derby.properties   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/derbynet/executeUpdate.java   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/derbynet/getCurrentProperties.java   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/derbynet/maxthreads.java   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/derbynet/prepStmt.java   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/derbynet/runtimeinfo.java   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/derbynet/runtimeinfo_sed.properties   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/derbynet/sysinfo.java   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/derbynet/sysinfo_sed.properties   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/derbynet/testProperties.java   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/derbynet/testconnection.java   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/derbynet/testij.java   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/derbynet/testij.sql   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/derbynet/testij_app.properties   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/derbynet/testij_sed.properties   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/derbynet/timeslice.java   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/jdbcapi/build.xml   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/jdbcapi/copyfiles.ant   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/jdbcapi/dataSourcePermissions.java   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/jdbcapi/default_app.properties   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/jdbcapi/default_derby.properties   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/jdbcapi/metadata.java   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/jdbcapi/metadataMultiConn.java   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/jdbcapi/metadata_derby.properties   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/jdbcapi/metadata_sed.properties   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/jdbcapi/parameterMetaDataJdbc30.java   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/jdbcapi/parameterMetaDataJdbc30_app.properties   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/jdbcapi/savepointJdbc30.java   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/jdbcapi/savepointJdbc30_app.properties   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/jdbcapi/savepointJdbc30_derby.properties   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/jdbcapi/xaAnotherTest.sql   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/jdbcapi/xaAnotherTest_app.properties   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/jdbcapi/xaAnotherTest_derby.properties   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/jdbcapi/xaAnotherTest_sed.properties   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/jdbcapi/xaMorph.sql   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/jdbcapi/xaSimpleNegative.sql   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/jdbcapi/xaSimpleNegative_derby.properties   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/jdbcapi/xaSimplePositive.sql   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/jdbcapi/xaSimplePositive_app.properties   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/jdbcapi/xaSimplePositive_sed.properties   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/jdbcapi/xaStateTran.sql   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/AIjdbc.java   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/CharUTF8.java   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/DB2IsolationLevels.sql   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/LOB.sql   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/LOBDB2compatibility.sql   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/LOBDB2compatibility_derby.properties   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/WISCInsert.java   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/WiscMetaData.java   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/WiscVTI.java   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/aggbuiltin.sql   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/aggbuiltin_app.properties   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/aggregate.sql   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/aggregateOptimization.sql   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/aggregateOptimization_app.properties   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/aggregateOptimization_derby.properties   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/altertable.sql   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/altertable_derby.properties   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/arithmetic.sql   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/authorize.sql   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/authorize_app.properties   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/authorize_derby.properties   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/autoincrement.sql   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/big.sql   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/big_derby.properties   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/bit.sql   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/bit2.sql   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/bug4356.java   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/bug5052rts.java   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/bug5054.java   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/build.xml   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/case.sql   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/cast.sql   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/casting.java   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/checkConstraint.sql   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/closed.java   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/coalesceTests.java   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/columnDefaults.sql   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/columnDefaults_app.properties   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/comparisons.sql   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/comparisons_app.properties   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/compressTable.sql   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/compressTable_app.properties   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/compressTable_derby.properties   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/concateTests.java   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/connect.sql   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/connect_app.properties   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/connect_derby.properties   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/consistencyChecker.sql   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/constantExpression.sql   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/copyfiles.ant   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/currentSchema.sql   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/currentof.java   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/currentof_derby.properties   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/cursor.java   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/cursorerrors.sql   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/cursorerrors_app.properties   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/cursorerrors_derby.properties   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/datetime.sql   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/db2Compatibility.sql   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/dbManagerLimits.java   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/dbManagerLimits_app.properties   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/ddlTableLockMode.sql   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/ddlTableLockMode_app.properties   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/deadlockMode.java   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/deadlockMode_derby.properties   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/deadlockMode_sed.properties   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/declareGlobalTempTableJava.java   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/declareGlobalTempTableJavaJDBC30.java   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/declareGlobalTempTableJavaJDBC30_app.properties   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/declareGlobalTempTableJava_derby.properties   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/default_app.properties   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/default_derby.properties   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/delete.sql   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/depend.sql   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/derived.sql   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/desc_index.sql   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/desc_index_app.properties   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/distinct.sql   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/distinctElimination.sql   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/distinctElimination_derby.properties   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/distinctFiltering.sql   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/distinct_app.properties   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/distinct_derby.properties   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/dropTable.sql   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/dynamicLikeOptimization.sql   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/dynamicLikeOptimization_app.properties   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/dynamicLikeOptimization_derby.properties   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/ejbql.sql   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/ejbql_app.properties   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/ejbql_nonSPS.sql   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/errorCode.sql   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/errorCode_app.properties   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/fk_nonSPS.sql   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/fk_nonSPS_derby.properties   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/floattypes.sql   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/floattypes_app.properties   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/forbitdata.java   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/forupdate.sql   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/functions.sql   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/groupBy.sql   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/holdCursorIJ.sql   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/holdCursorIJ_app.properties   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/holdCursorJavaReflection.java   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/holdCursorJavaReflection_app.properties   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/identifier.sql   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/implicitConversions.sql   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/implicitConversions_app.properties   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/implicitConversions_derby.properties   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/inbetween.sql   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/inbetween_derby.properties   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/infostreams.sql   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/infostreams_derby.properties   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/innerjoin.sql   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/insert.sql   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/insert_sed.properties   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/isolationLevels.sql   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/joinDeadlock.sql   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/joinDeadlock_derby.properties   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/joins.sql   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/joins_app.properties   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/lockTable.sql   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/lockTable_derby.properties   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/logStream.java   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/logop.sql   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/lojreorder.sql   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/longStringColumn.java   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/longStringColumn_derby.properties   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/maxMemPerTab.sql   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/maxMemPerTab_derby.properties   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/miscerrors.sql   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/modifyColumn.sql   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/nestedCommit.sql   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/nonreserved.sql   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/nulls.sql   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/openScans.sql   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/openScans_derby.properties   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/orderby.sql   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/orderbyElimination.sql   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/orderbyElimination_derby.properties   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/outerjoin.sql   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/outparams.java   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/paramij.sql   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/partdml.sql   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/partdml_app.properties   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/positionedDelUpd.sql   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/precedence.sql   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/predicatesIntoViews.sql   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/predicatesIntoViews_derby.properties   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/primarykey.sql   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/procedure.java   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/procedure_derby.properties   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/refActions.sql   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/refActions1.sql   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/refActions2.sql   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/refActions3.sql   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/refActions_derby.properties   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/releaseCompileLocks.sql   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/releaseCompileLocks_app.properties   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/renameIndex.sql   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/renameIndex_derby.properties   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/renameTable.sql   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/renameTable_derby.properties   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/reopenScan.sql   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/repeat.java   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/repeat_app.properties   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/repeat_derby.properties   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/schemas.sql   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/select.sql   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/selectivity.sql   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/selectivity_app.properties   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/selectivity_derby.properties   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/simpleScroll.sql   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/simpleThread.java   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/simpleThreadWrapper.java   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/specjPlans.sql   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/specjPlans_app.properties   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/staleplans.sql   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/staleplans_app.properties   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/staleplans_derby.properties   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/stmtCache0.sql   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/stmtCache0_derby.properties   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/stmtCache1.sql   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/stmtCache1_app.properties   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/stmtCache1_derby.properties   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/stmtCache3.java   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/stmtCache3_derby.properties   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/streams.java   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/stringtypes.sql   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/subquery.sql   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/subquery2.sql   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/subquery2_derby.properties   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/subqueryFlattening.sql   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/subqueryFlattening_derby.properties   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/subquery_derby.properties   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/supersimple.sql   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/supersimple_derby.properties   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/syscat.sql   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/tempRestrictions.sql   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/triggerBeforeTrig.sql   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/triggerGeneral.sql   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/triggerGeneral_app.properties   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/triggerGeneral_derby.properties   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/triggerRecursion.sql   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/triggerRecursion_derby.properties   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/triggerRefClause.sql   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/triggerStream.sql   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/triggerStream_app.properties   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/triggerStream_derby.properties   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/ungroupedAggregatesNegative.sql   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/union.sql   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/unlimited.sql   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/unlimited2.sql   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/update.sql   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/updateCursor.java   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/updateCursor_derby.properties   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/userDefMethods.java   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/valuesclause.sql   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/views.sql   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/wisconsin.sql   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/wisconsin_app.properties   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/wisconsin_derby.properties   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/wisconsin_sed.properties   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/store/Rllmodule1.sql   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/store/Rllmodule1_derby.properties   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/store/Rllmodule2.sql   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/store/Rllmodule2_derby.properties   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/store/Rllmodule3.sql   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/store/Rllmodule3_derby.properties   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/store/Rllmodule4.sql   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/store/Rllmodule4_derby.properties   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/store/RowLockBasic.sql   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/store/RowLockBasic_derby.properties   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/store/RowLockIso.sql   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/store/RowLockIso_app.properties   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/store/RowLockIso_derby.properties   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/store/SpaceTable.sql   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/store/TableLockBasic.sql   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/store/TableLockBasic_derby.properties   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/store/TransactionTable.sql   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/store/TransactionTable_app.properties   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/store/TransactionTable_derby.properties   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/store/access.sql   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/store/access_app.properties   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/store/access_derby.properties   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/store/backupRestore.sql   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/store/backupRestore_app.properties   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/store/bug3498.sql   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/store/bug3498_app.properties   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/store/build.xml   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/store/cisco.sql   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/store/cisco_app.properties   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/store/cisco_default.properties   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/store/cisco_derby.properties   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/store/connectDisconnect.sql   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/store/connectDisconnect_app.properties   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/store/connectDisconnect_derby.properties   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/store/copyfiles.ant   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/store/default_app.properties   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/store/default_derby.properties   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/store/heapscan.sql   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/store/heapscan_app.properties   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/store/heapscan_derby.properties   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/store/holdCursorExternalSortJDBC30.sql   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/store/holdCursorExternalSortJDBC30_app.properties   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/store/holdCursorExternalSortJDBC30_derby.properties   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/store/holdCursorJDBC30.sql   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/store/holdCursorJDBC30_app.properties   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/store/lockTableVti.sql   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/store/logDevice.sql   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/store/logDevice_app.properties   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/store/longColumn.sql   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/store/longColumn_derby.properties   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/store/longRow.sql   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/store/madhare.sql   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/store/removeStubs.sql   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/store/rlliso1multi.sql   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/store/rlliso1multi_app.properties   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/store/rlliso1multi_derby.properties   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/store/rlliso2multi.sql   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/store/rlliso2multi_app.properties   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/store/rlliso2multi_derby.properties   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/store/rlliso3multi.sql   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/store/rlliso3multi_app.properties   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/store/rlliso3multi_derby.properties   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/store/rollForwardRecovery.sql   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/store/rollForwardRecovery_app.properties   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/store/rollForwardRecovery_derby.properties   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/store/testsqldecimal.sql   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/store/testsqldecimal_derby.properties   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/store/xaOffline1.sql   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/store/xaOffline1_derby.properties   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/store/xaOffline1_sed.properties   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/store/xab2354.sql   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/store/xab2354_sed.properties   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/storetests/build.xml   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/storetests/copyfiles.ant   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/storetests/default_app.properties   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/storetests/default_derby.properties   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/storetests/st_1.sql   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/storetests/st_b5772.sql   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/storetests/st_schema.sql   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/storetests/st_schema_app.properties   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/tools/build.xml   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/tools/copyfiles.ant   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/tools/dblook_makeDB.sql   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/tools/dblook_makeDB_2.sql   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/tools/dblook_test.java   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/tools/dblook_test_app.properties   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/tools/dblook_test_sed.properties   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/tools/default_app.properties   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/tools/default_derby.properties   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/util/ConsistencyChecker.java   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/util/DbFile.java   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/util/ExtendingInterface.java   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/util/Formatters.java   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/util/JDBCTestDisplayUtil.java   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/util/ManyMethods.java   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/util/NoMethodInterface.java   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/util/ProcedureTest.java   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/util/PropertyUtil.java   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/util/ShortHolder.java   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/util/StatParser.java   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/util/StaticInitializers/DMLInStaticInitializer.java   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/util/StaticInitializers/InsertInStaticInitializer.java   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/util/StreamUtil.java   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/util/SubClass.java   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/util/SubInterfaceClass.java   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/util/SubSubClass.java   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/util/T_Access.java   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/util/T_Authorize.java   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/util/T_ConsistencyChecker.java   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/util/TestPropertyInfo.java   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/util/TestUtil.java   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/util/Triggers.java   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/util/VTIClasses/AbstractAllNegativeNoStatic.java   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/util/VTIClasses/ECTResult.java   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/util/VTIClasses/ExternalTable.java   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/util/VTIClasses/PositiveInteger_VTICosting_SI.java   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/util/VTIClasses/ResultSetMetaDataPositive.java   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/util/build.xml   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/util/nwsvr.policy   (contents, props changed)

Modified: incubator/derby/code/trunk/java/testing/README.htm
Url: http://svn.apache.org/viewcvs/incubator/derby/code/trunk/java/testing/README.htm?view=diff&rev=122528&p1=incubator/derby/code/trunk/java/testing/README.htm&r1=122527&p2=incubator/derby/code/trunk/java/testing/README.htm&r2=122528
==============================================================================
--- incubator/derby/code/trunk/java/testing/README.htm	(original)
+++ incubator/derby/code/trunk/java/testing/README.htm	Wed Dec 15 22:20:35 2004
@@ -1,1039 +1,1039 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
-<head>
-  <meta content="text/html; charset=ISO-8859-1"
- http-equiv="content-type">
-  <title>readme.htm</title>
-</head>
-<body>
-<h1><a class="mozTocH1" name="mozTocId934928"></a>Derby Functional Tests<br>
-</h1>
-<h2><a class="mozTocH2" name="mozTocId504000"></a>Package:
-org.apache.derbyTesting<!--mozToc h1 1 h2 2 h3 3 h4 4 h5 5 h6 6--><br>
-</h2>
-<p>
-<small>created by myrna@golux.com<br>
-last updated on 12/02/2004 by: myrna@golux.com<br>
-</small>
-</p>
-<ul>
-  <li><a href="#intro">1. Introduction</a></li>
-  <li><a href="#quickstart">2. Quickstart</a></li>
-  <li style="margin-left: 40px;"><a
- href="#2.1_running_with_derby_classes_">2.1 running tests<br>
-    </a></li>
-  <li style="margin-left: 40px;"><a
- href="#building_derbyTesting__running_with">2.2 building
-derbyTesting package</a><br>
-  </li>
-  <li><a href="#run">3. More details on running the derby functional
-tests</a></li>
-  <li style="margin-left: 40px;"><a href="#run1">3.1 Running 1 test</a></li>
-  <li style="margin-left: 40px;"><a href="#run2">3.2 Running suites of
-tests</a></li>
-  <li><a href="#overview">4. Harness internals for developers</a> </li>
-  <li style="margin-left: 40px;"><a href="#ov1">4.1 Test types</a></li>
-  <li style="margin-left: 40px;"><a href="#ov2">4.2 Supporting files
-for tests</a></li>
-  <li style="margin-left: 40px;"><a href="#ov3">4.3
-&lt;testname&gt;_app.properties</a></li>
-  <li style="margin-left: 40px;"><a href="#ov4">4.4
-&lt;testname&gt;_derby.properties</a></li>
-  <li style="margin-left: 40px;"><a href="#ov5">4.5 tmp files, out
-files, master files, and canons</a></li>
-  <li style="margin-left: 40px;"><a href="#ov6">4.6 Masking and
-comparing</a></li>
-  <li style="margin-left: 40px;"><a href="#Adding_a_new_test">4.7
-Adding a new test</a></li>
-  <li style="margin-left: 40px;"><a
- href="#4.8_Suites_and_Adding_a_new_suite">4.8 Suites and adding a
-new suite</a></li>
-  <li style="margin-left: 40px;"><a href="#ov9">4.9 Running with a new
-jvm</a></li>
-  <li style="margin-left: 40px;"><a href="#skipping">4.10 Skipping a
-test</a></li>
-  <li style="margin-left: 40px;"><a href="#frameworks">4.11 Frameworks</a></li>
-  <li style="margin-left: 40px;"><a href="#props">4.12 Some test
-harness properties</a> </li>
-</ul>
-<br>
-<h2>1. <a name="intro"></a>Introduction</h2>
-<p>
-This document describes functionality of the derby
-functional testing package org.apache.derbyTesting. This package is
-based on the functional tests in use at IBM for testing the Cloudscape
-product before its contribution to ASF.</p>
-<p>In the following, instructions are geared towards a unix
-environment. For other environments, some details may need to be
-adjusted. For instance, the document may
-refer to $ANT_HOME, for DOS, this would be %ANT_HOME%.<br>
-</p>
-<p>In the following the top
-directory under which the subversion tree is placed is referred to as
-${derby.source} - see also the
-derby <a href="http://incubator.apache.org/derby/BUILDING.html">BUILDING.txt</a>.<br>
-</p>
-<p>The version of the classes and supporting files of the derbyTesting
-package have to match the version of the classes of the derby package.
-Thus you either need to build all jars yourself, or get all jar files
-from the incubator site at the same time when available. <br>
-<br>
-</p>
-<span style="font-weight: bold;">
-</span>
-<h2><a class="mozTocH2" name="mozTocId191589"></a>2. <a
- name="quickstart"></a>QuickStart<br>
-</h2>
-<h3><a name="2.1_running_with_derby_classes_"></a>2.1 running tests</h3>
-<p>
-The derbyTesting package enables you to run 1 test or a suite of tests.
-Before you can run, you need to setup your environment:<br>
-</p>
-<ul>
-  <li>Obtain a jdk or jre (based on jdk 1.3.1 specification or higher).
-Add the bin directory to your $PATH. Currently supported are:<br>
-  </li>
-</ul>
-<table
- style="text-align: left; width: 497px; height: 32px; margin-left: 40px;"
- border="1" cellpadding="2" cellspacing="2">
-  <tbody>
-    <tr>
-      <td style="vertical-align: top;"><small>&nbsp;&nbsp;&nbsp; jdk131
-- Sun
-HotSpot jdk1.3.1</small><br>
-      <small>&nbsp;&nbsp;&nbsp; jdk141 - Sun HotSpot jdk1.4.1</small><br>
-      <small>&nbsp;&nbsp;&nbsp; jdk142 - Sun HotSpot jdk1.4.2</small><br>
-      <small>&nbsp;&nbsp;&nbsp; jdk15 - Sun HotSpot jdk1.5</small><br>
-      <small>&nbsp;&nbsp;&nbsp; ibm131 - IBM Classic jdk1.3.1</small><br>
-      <small>&nbsp;&nbsp;&nbsp; ibm141 - IBM Classic jdk1.4.1</small><br>
-      <small>&nbsp;&nbsp;&nbsp; ibm142 - IBM Classic jdk1.4.2</small><br>
-      <small>&nbsp;&nbsp;&nbsp; j9_13 - WCTME jvm (available with IBM
-Websphere Client Technology Micro Edition) <br>
-      </small></td>
-    </tr>
-  </tbody>
-</table>
-<ul>
-  <li>set $CLASSPATH to include the following jars:</li>
-  <ul>
-    <li><small>jakarta-oro-2.0.8.jar</small></li>
-    <small>&nbsp;&nbsp;&nbsp; oromatcher, obtain from <a
- href="http://jakarta.apache.org/oro/index.html">http://jakarta.apache.org/oro/index.html</a>,
-or follow this link for <a
- href="http://apache.roweboat.net/jakarta/oro/source/jakarta-oro-2.0.8.zip">zip</a>
-file, or <a
- href="http://apache.roweboat.net/jakarta/oro/source/jakarta-oro-2.0.8.tar.gz">tar</a>.gz)</small><li><small>derbyTesting.jar<br>
-      </small></li>
-  </ul>
-  <ul>
-    <small>&nbsp;&nbsp;&nbsp;&nbsp; test files and classes</small><li><small>derby.jar<br>
-      </small></li>
-    <small>&nbsp;&nbsp;&nbsp; main derby package classes</small><li><small>derbytools.jar<br>
-      </small></li>
-    <small>&nbsp;&nbsp;&nbsp; derby tools classes for tools like ij
-and dblook</small><li><small>derbynet.jar<br>
-      </small></li>
-    <small>&nbsp;&nbsp;&nbsp; derby network server classes</small><li><small>db2jcc.jar
-and db2jcc_license_c.jar <br>
-      </small></li>
-    <small>&nbsp;&nbsp;&nbsp; IBM Universal JDBC Driver classes. (See
-IBM <a href="http://www-106.ibm.com/developerworks/db2/downloads/jcc/">developerworks</a>
-for download)</small><br>
-    <li><small>derbyLocale_*.jar</small></li>
-    <small>&nbsp;&nbsp;&nbsp; locale files holding translated messages.</small><br>
-  </ul>
-</ul>
-<small></small>
-<ul>
-  <ul>
-  </ul>
-</ul>
-<p>
-For example:<br>
-</p>
-<div style="margin-left: 40px;">
-<table style="text-align: left; width: 484px; height: 32px;" border="1"
- cellpadding="2" cellspacing="2">
-  <tbody>
-    <tr>
-      <td style="vertical-align: top;"><small>(note that $jardir is
-only a convenience variable and that the command below has carriage
-returns for formatting reasons):<br>
-      </small><small>set jardir=/local/derbyjar<br>
-set
-CLASSPATH="$jardir/derby.jar:$jardir/derbytools.jar:$jardir/derbynet.jar:$jardir/db2jcc.jar:<br>
-$jardir/db2jcc_license_c.jar:$jardir/derbyTesting.jar:/local/derby/tools/java/jakarta-oro-2.0.8.jar:<br>
-$jardir/derbyLocale_de_DE.jar:$jardir/derbyLocale_es.jar:$jardir/derbyLocale_fr.jar:<br>
-$jardir/derbyLocale_it.jar:$jardir/derbyLocale_ja_JP.jar:$jardir/derbyLocale_ko_KR.jar:<br>
-$jardir/derbyLocale_pt_BR.jar:$jardir/derbyLocale_zh_CN.jar:$jardir/derbyLocale_zh_TW.jar:<br>
-$CLASSPATH</small><br>
-      <small>set PATH=/local/jdk141/bin:$PATH</small><br>
-      </td>
-    </tr>
-  </tbody>
-</table>
-</div>
-<p>
-To run 1 test:
-</p>
-<table
- style="text-align: left; width: 514px; height: 32px; margin-left: 40px;"
- border="1" cellpadding="2" cellspacing="2">
-  <tbody>
-    <tr>
-      <td style="vertical-align: top;">syntax:<br>
-&nbsp;&nbsp;&nbsp; <small>java
--D&lt;testproperty&gt;
-org.apache.derbyTesting.functionTests.harness.RunTest
-&lt;testdir&gt;/&lt;testname&gt;</small><br>
-      <small>where <br>
-      </small>
-      <ul>
-        <li><small>&nbsp;&nbsp; &lt;testproperty&gt; are test specific
-properties, such as
-'framework' for the RunTest class. </small></li>
-        <li><small>&nbsp;&nbsp; &lt;testdir&gt; is one of the
-directories under
-functionTests/tests where the actual test is located</small></li>
-        <li><small>&nbsp;&nbsp; &lt;testname&gt; is the actual name of
-the test</small></li>
-      </ul>
-      <small>examples:<br>
-to run the test supersimple against the embedded driver:<br>
-      </small>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <small>java
-org.apache.derbyTesting.functionTests.harness.RunTest
-lang/supersimple.sql<br>
-      <br>
-To run a test with network server, add -Dframework=DerbyNet to the run.
-The test harness will to start
-network server at port 1527 or connect to a running one, run the test,
-and stop network server thereafter.<br>
-for example:<br>
-&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; java </small><small>-Dframework=DerbyNet
-      </small><small>org.apache.derbyTesting.functionTests.harness.RunTest
-lang/supersimple.sql<br>
-      </small><small> </small></td>
-    </tr>
-  </tbody>
-</table>
-<p>
-A successful run will have a .pass file, and the output to the
-console will show no difference between expected and actual test
-result. A failed test run will have at least a .fail file and the
-output to the console will show the difference between expected and
-actual result.<br>
-</p>
-<p>
-To run a suite:
-</p>
-<table
- style="text-align: left; width: 546px; height: 32px; margin-left: 40px;"
- border="1" cellpadding="2" cellspacing="2">
-  <tbody>
-    <tr>
-      <td style="vertical-align: top;">syntax:<br>
-&nbsp; <small>java
--D&lt;testproperty&gt;
-org.apache.derbyTesting.functionTests.harness.RunSuite&nbsp;
-&lt;testsuite&gt;</small><br>
-      <small>where <br>
-      </small>
-      <ul>
-        <li><small>&nbsp;&nbsp; &lt;testproperty&gt; are test specific
-properties, such as
-'verbose' for the RunSuite class. </small></li>
-        <li><small>&nbsp;&nbsp; &lt;testsuite&gt; is one of the suites
-under
-org/apache/derbyTesting/suites</small></li>
-      </ul>
-      <small>for example for running&nbsp; the suite derbylang:<br>
-      </small><small>&nbsp;&nbsp; java -Dverbose=true
-org.apache.derbyTesting.functionTests.harness.RunSuite derbylang</small><br>
-      </td>
-    </tr>
-  </tbody>
-</table>
-<p>
-Each suite run should be started in a clean directory. The test
-output directory will not be emptied out before testing is
-begun, although individual test files and result files will be cleaned
-out and overwritten.&nbsp;
-</p>
-<p>
-The suites provided are:
-</p>
-<ul>
-  <li>derbylang: <br>
-  </li>
-  <ul>
-    <li>basic functionality of&nbsp;
-language implementation in derby. <br>
-    </li>
-    <li>Mostly .sql type tests. <br>
-    </li>
-    <li>tested on a variety of hardware takes from 1.15m to 2.00 hours<br>
-    </li>
-  </ul>
-  <li>derbynetmats</li>
-  <ul>
-    <li>basic network server tests.</li>
-    <li>variety of tests, including some from derbylang suite</li>
-    <li>tested on a variety of hardware takes from 15 to 30 minutes</li>
-  </ul>
-  <li>storeall</li>
-  <ul>
-    <li>tests for storage area</li>
-    <li>includes:</li>
-    <ul>
-      <li>storemats: most basic quick verification tests.<br>
-      </li>
-      <li>storemore: more extensive storage tests</li>
-      <li>storetests: set of store tests grouped together because they
-do not each need to create a new database</li>
-    </ul>
-    <li>tested on a variety of hardware takes from 10 to 25 minutes<br>
-    </li>
-  </ul>
-  <li>xa</li>
-  <ul>
-    <li>tests the xa implementation. There is both a storage and
-language element to these tests</li>
-    <li>tested on a variety of hardware takes from 2 to 4 minutes<br>
-    </li>
-  </ul>
-  <li>derbytools</li>
-  <ul>
-    <li>currently only test included is for the dblook utility. <br>
-    </li>
-  </ul>
-  <li>derbyall</li>
-  <ul>
-    <li>contains all suites typically run by all developers<br>
-    </li>
-  </ul>
-  <ul>
-    <li>tested on a variety of hardware takes from 1.50 - 4.00 hours </li>
-  </ul>
-  <li><a href="#Note1:"><small>See Note1</small></a><br>
-  </li>
-</ul>
-<p>
-A successful run with all tests passing will have no *.fail files
-created, the &lt;testsuite&gt;_fail.txt file will be empty, and the
-&lt;testsuite&gt;_report.txt file will show no failures in the Summary
-results section.
-</p>
-<table
- style="text-align: left; width: 556px; height: 32px; margin-left: 40px;"
- border="1" cellpadding="2" cellspacing="2">
-  <tbody>
-    <tr>
-      <td style="vertical-align: top;"><small>-------snippet from
-derbylang_report.txt -----<br>
------------------------------------------------------------<br>
-Summary results:<br>
-      <br>
-Test Run Started: 2004-11-10 11:27:55.0<br>
-Test Run Duration: 00:04:09<br>
-      <br>
-129 Tests Run<br>
-100% Pass (129 tests passed)<br>
-&nbsp;0% Fail (0 tests failed)<br>
-0 Suites skipped</small><br>
-      </td>
-    </tr>
-  </tbody>
-</table>
-<br>
-<h3><a name="building_derbyTesting__running_with"></a>2.2 building
-derbyTesting package<br>
-</h3>
-<p>
-To build the derbyTesting package:<br>
-</p>
-<ul>
-  <li>follow all the steps in the derby <a
- href="http://incubator.apache.org/derby/BUILDING.html">BUILDING.txt</a>.</li>
-</ul>
-<p>This is some typical
-output for the ant build process.<br>
-</p>
-<table
- style="text-align: left; width: 516px; height: 32px; margin-left: 40px;"
- border="1" cellpadding="2" cellspacing="2">
-  <tbody>
-    <tr>
-      <td style="vertical-align: top;"><small>&gt; cd
-/local/derby/java/testing<br>
-&gt; ant.ksh<br>
-Searching for build.xml ...<br>
-Buildfile: /local/derby/java/testing/build.xml<br>
-      <br>
-compile:<br>
-&nbsp;&nbsp;&nbsp; [javac] Compiling 30 source files to
-/local/derby/classes<br>
-...<br>
-&nbsp;&nbsp;&nbsp;&nbsp; [copy] Copying 1 file to
-/local/derby/classes/org/apache/derbyTesting/funct<br>
-ionTests<br>
-      <br>
-BUILD SUCCESSFUL<br>
-Total time: 10 minutes 3 seconds</small></td>
-    </tr>
-  </tbody>
-</table>
-<p>Once you have built the derbyTesting package built, you can make a
-derbyTesting.jar use the jar build target at the ${derby.source}level.
-</p>
-<p>
-This will look something like:
-</p>
-<table
- style="text-align: left; width: 528px; height: 32px; margin-left: 40px;"
- border="1" cellpadding="2" cellspacing="2">
-  <tbody>
-    <tr>
-      <td style="vertical-align: top;"><small>c:&gt; ant derbytestingjar<br>
-Searching for build.xml ...<br>
-Buildfile: C:\derby\build.xml<br>
-      <br>
-initjars:<br>
-&nbsp;&nbsp;&nbsp; [mkdir] Created dir: C:\derby\jars\<br>
-&nbsp;&nbsp;&nbsp; [mkdir] Created dir: C:\derby\jars\lists<br>
-&nbsp;&nbsp;&nbsp;&nbsp; [echo] Revision number set to exported<br>
-&nbsp;&nbsp;&nbsp;&nbsp; [echo] .<br>
-      <br>
-derbytestingjar:<br>
-&nbsp;&nbsp;&nbsp;&nbsp; [echo] Beginning derbytesting.jar build<br>
-.....<br>
-BUILD SUCCESSFULL<br>
-      </small></td>
-    </tr>
-  </tbody>
-</table>
-<br>
-<br>
-<h2><a class="mozTocH2" name="mozTocId582299"></a>3. <a name="run"></a>More
-details on running the derby functional tests</h2>
-<p>
-The functional tests are run using a class called 'RunTest'. This class
-calls a number of other classes. A group of tests, called a 'suite' is
-executed using a class called 'RunSuite'.<br>
-</p>
-<h3><a class="mozTocH3" name="mozTocId595945"></a>3.1 <a name="run1"></a>Running
-1 test</h3>
-<p>See section 2.1 for the basic steps to run 1 test.
-</p>
-<p>To pass on system level properties to the test harness, use the test
-harness property -DtestSpecialFlags. For
-example, to run a test forcing
-the message text to be retrieved from the network server:
-</p>
-<table
- style="text-align: left; width: 558px; height: 32px; margin-left: 40px;"
- border="1" cellpadding="2" cellspacing="2">
-  <tbody>
-    <tr>
-      <td style="vertical-align: top;"> <small>java
--Dframework=DerbyNet
--DtestSpecialFlags=RetrieveMessagesFromServerOnGetMessage=true&nbsp;
-org.apache.derbyTesting.functionTests.harness.RunTest
-lang/supersimple.sql</small></td>
-    </tr>
-  </tbody>
-</table>
-<p><br>
-Tests will be executed in the current directory. When
-running a test
-using the network server, i.e. -Dframework=DerbyNet, the test will run
-in a subdirectory (automatically created) 'DerbyNet'. <small> <br>
-<a href="#Note2:">See Note2</a>.<br>
-</small></p>
-<p>
-The test will normally create the following:<br>
-</p>
-<ul>
-  <li>a database. The default name is 'wombat'. However, the name may
-be different depending on certain properties passed in to the test
-harness.</li>
-  <li>a .out file: the final result file</li>
-  <li>a .tmp file; the initial result file, before any modification to
-prevent irrelevant differences has been applied (before 'masking').</li>
-  <li>a .diff file; the differences between the .out and the master
-file with expected output it is compared to.</li>
-  <li>a .pass or .fail file. This file lists the test if it passes
-under .pass, and under .fail if the output in .out is different from
-the expected output in the master.</li>
-</ul>
-<p>
-possibly created:<br>
-</p>
-<ul>
-  <li>additional files used in a specific test may get copied over to
-the test directory. These normally do not get cleaned up.</li>
-  <li>.tmpstr file is created for network server tests and is a
-possibly
-massaged copy of the master file the output needs to be compared with.</li>
-  <li>.err and .out files in network server database files for any
-additional error output.</li>
-</ul>
-<p>
-When the test is successful, cleanup will occur unless the test harness
-property -Dkeepfiles=true is used. Cleanup will attempt to cleanup all
-files except for .pass. <small><br>
-<a href="#Note3:_">See Note3.</a></small>
-</p>
-<p>
-A successful run (this example is from a dos environment) would
-look for instance like:
-</p>
-<table
- style="text-align: left; width: 414px; height: 45px; margin-left: 80px;"
- border="1" cellpadding="2" cellspacing="2">
-  <tbody>
-    <tr>
-      <td style="vertical-align: top;"><small>c:&gt;
-derbyTesting.functionTests.harness.RunTest lang/supersimple.sql<br>
-C:\derby\run2<br>
-supersimple<br>
--- listing properties --<br>
-derby.locks.deadlockTimeout=3<br>
-derby.locks.waitTimeout=3<br>
-*** Start: supersimple jdk1.4.2_03 2004-11-10 16:51:02 ***<br>
-The test should be running...<br>
-MasterFileName = master/supersimple.out<br>
-*** End:&nbsp;&nbsp; supersimple jdk1.4.2_03 2004-11-10 16:51:25 ***<br>
-      </small></td>
-    </tr>
-  </tbody>
-</table>
-<br>
-<p>A Test Failure shows the diff, creates a .fail file, does not create
-a .pass file, and does not cleanup any files upon completion. The
-output might look like this:<br>
-</p>
-<table
- style="text-align: left; width: 442px; height: 32px; margin-left: 80px;"
- border="1" cellpadding="2" cellspacing="2">
-  <tbody>
-    <tr>
-      <td style="vertical-align: top;"><small>&nbsp;</small><small>c:&gt;
-derbyTesting.functionTests.harness.RunTest lang/supersimple.sql<br>
-C:\derby\run2</small><small><br>
-supersimple<br>
--- listing properties --<br>
-derby.locks.deadlockTimeout=3<br>
-derby.locks.waitTimeout=3<br>
-*** Start: supersimple jdk1.4.2_03 2004-11-10 16:54:39 ***<br>
-The test should be running...<br>
-MasterFileName = master/supersimple.out<br>
-10 del<br>
-&lt; 10<br>
-10a10<br>
-&gt; 1<br>
-Test Failed.<br>
-*** End:&nbsp;&nbsp; supersimple jdk1.4.2_03 2004-11-10 16:55:02 ***</small><br>
-      </td>
-    </tr>
-  </tbody>
-</table>
-<br>
-<h3><a class="mozTocH3" name="mozTocId368566"></a>3.2 <a name="run2"></a>Running
-a suite of tests</h3>
-<p>
-See section 2.1 for a basic explanation on how to run a suite of tests.<br>
-</p>
-<p>
-Tests will be run in a subdirectory with the name of the test
-suite under the current directory. Eg. for derbylang suite, a directory
-derbylang will be created. While the tests are run, information about
-the run is inserted into a &lt;testsuite&gt;.sum file. When all tests
-have completed summary files are created &lt;testsuite&gt;_pass.txt,
-_fail.txt, and _diff.txt files are created as well as a
-&lt;testsuite&gt;_report.txt
-with additional details. Some of the information is duplicate. Also, a
-.skip file will be created holding a list of the tests that were
-skipped (for more details on this, see the section on <a
- href="#skipping">skipping tests</a>).
-</p>
-<p>
-RunSuite does not empty the top level directory before running. Thus,
-if another suite was run in the same directory at an earlier time, the
-resulting summary files might contain results for more than the current
-run. Therefore it is important to run each suite in a clean directory.
-</p>
-<p>Sample output from RunSuite:<br>
-</p>
-<table
- style="text-align: left; width: 471px; height: 32px; margin-left: 80px;"
- border="1" cellpadding="2" cellspacing="2">
-  <tbody>
-    <tr>
-      <td style="vertical-align: top;"><small><small>c:&gt; $ java
-org.apache.derbyTesting.functionTests.harness.RunSuite derbylang<br>
-Top suite: derbylang<br>
-Suite to run: derbylang:derbylang<br>
-Now do RunList<br>
-Now run the suite's tests<br>
-Run the tests...<br>
-Execute command: java -DjavaCmd=java
--Doutputdir=C:\derbyt1\derbylang\derbylang
--Dtopsuitedir=C:\derbyt1\derbylang -Dtoprepo<br>
-rtdir=C:\derbyt1\derbylang -Drundir=C:\derbyt1
--Dsuitename=derbylang:derbylang -Dtopsuitename=derbylang
-org.apache.derbyTesting.functionTests.harness.RunTest
-lang/altertable.sql<br>
-Execute command: java -DjavaCmd=java
--Doutputdir=C:\derbyt1\derbylang\derbylang
--Dtopsuitedir=C:\derbyt1\derbylang -Dtopreportdir=C:\derbyt1\derbylang
--Drundir=C:\derbyt1 -Dsuitename=derbylang:derbylang
--Dtopsuitename=derbylang
-org.apache.derbyTesting.functionTests.harness.RunTest
-lang/arithmetic.sql<br>
-...(.more tests)....<br>
-Generated report: derbylang_report.txt</small></small><small><br>
-      </small></td>
-    </tr>
-  </tbody>
-</table>
-<p>
-This output does not show whether the tests passed or failed. The
-Summary section in &lt;testsuite&gt;_report.txt shows the statistics of
-the passed vs. failed tests, the summary &lt;testsuite&gt;_*.txt files
-list the tests that passed and failed.
-</p>
-<br>
-<h2><a class="mozTocH2" name="mozTocId635355"></a>4. <a name="overview"></a>
-Harness internals for developers<br>
-</h2>
-<p>
-The following is intended for people who have the subversion tree
-available and want to add or modify tests.
-</p>
-<p>
-The test harness executing one test basically does the following in
-sequence:
-</p>
-<ul>
-  <li>identify test to run</li>
-  <li>identify properties to run with</li>
-  <li>copy needed support files</li>
-  <li>find the expected output</li>
-  <li>if network server, start network server</li>
-  <li>run the test, creating the database</li>
-  <li>if network server, shutdown the server</li>
-  <li>modify the output based on Sed class and _sed.properties file for
-the test</li>
-  <li>compare expected output with actual output</li>
-  <li>if pass, cleanup.</li>
-</ul>
-<br>
-<h3><a class="mozTocH3" name="mozTocId344499"></a>4.1 <a name="ov1"></a>Test
-types</h3>
-<p>
-The test harness recognizes, or will recognize tests with the following
-extensions:<br>
-</p>
-<ul>
-  <li>&nbsp;.java&nbsp;&nbsp;&nbsp; tests that run in a separate jvm.</li>
-  <li>&nbsp;.sql &nbsp;&nbsp;&nbsp; tests that run using ij</li>
-  <li>&nbsp;.sql2 &nbsp;&nbsp;&nbsp; related to .sql</li>
-  <li>&nbsp;.multi &nbsp;&nbsp;&nbsp; multi threaded tests. There are
-no
-multi threaded tests in the first contribution to apache, and the
-sections pertaining to such tests have been commented out</li>
-  <li>&nbsp;.unit &nbsp;&nbsp;&nbsp; unit tests. Currently there are no
-hooks for unit tests in the harness and no unit tests are contributed
-initially.</li>
-</ul>
-<br>
-<h3><a class="mozTocH3" name="mozTocId809770"></a>4.2 <a name="ov2"></a>Supporting
-files for tests</h3>
-<p>
-Various additional files may be used by a test, for instance, to create
-large data values, to test using of jar files and the like. Any files
-that need to be accessed by a particular test that are not accessed
-from the classpath need to be listed under supportfiles= in the
-&lt;testname&gt;_app.properties file.<br>
-Tests can refer to classes without being in the classpath, and sql
-tests can use the ij command 'run resource ' to execute additional .sql
-files without changes to the _app.properties files.
-</p>
-<p>For example, in the file
-(org/apache/derbyTesting/functionTests/tests/)tools/dblook_test_app.properties:<br>
-<small>&nbsp;&nbsp;&nbsp;
-supportfiles=tools/dblook_makeDB.sql,tools/dblook_test.jar</small><br>
-</p>
-<h3><a class="mozTocH3" name="mozTocId427577"></a>4.3 <a name="ov3"></a>&lt;testname&gt;_app.properties</h3>
-<p>
-Every test directory has a default_app.properties. This file is for
-system level properties generic to all the tests in that test
-directory. </p>
-<p>
-If a test requires different system level properties, a test specific
-properties file can be created to overwrite the defaults. The test
-specific properties file needs to have a name starting with the
-test file name, followed with _app.properties</p>
-<p>For example, for the test tools/dblook_test.java, there is a
-properties file called tools/dblook_test_app.properties<br>
-</p>
-<h3><a class="mozTocH3" name="mozTocId715566"></a>4.4 <a name="ov4"></a>&lt;testname&gt;_derby.properties</h3>
-<p>
-Every test directory has a default_derby.properties. This file is for
-derby specific properties common to all the tests in that test
-directory.<br>
-If a test requires different derby properties, a test specific
-properties file can be created to overwrite the defaults. The test
-specific properties file needs to have a name starting with the
-test file name, followed with _derby.properties<br>
-<br>
-</p>
-<h3><a class="mozTocH3" name="mozTocId874096"></a>4.5 <a name="ov5"></a>tmp
-files, out files, master files, and canons</h3>
-<p>
-The test's output will be put into a file testname.tmp. Then the output
-is modified if masking is required and the result is put into a .out
-file.<br>
-The expected output is found by examining the following directories,
-based on certain input<br>
-</p>
-<ul>
-  <li>functionTests/master/framework/jcc_version/jvmcode</li>
-  <li>functionTests/master/framework/jcc_version/earlier_jvmcode</li>
-  <li>functionTests/master/framework/jcc_version</li>
-  <li>functionTests/master/framework/jvmcode</li>
-  <li>functionTests/master/framework/earlier_jvmcode</li>
-  <li>functionTests/master/jvmcode</li>
-  <li>functionTests/master</li>
-</ul>
-<p>
-For example, if we are running a test and the flag -Dframework=DerbyNet
-is used and the jvm we are
-using is Sun's jdk 142, and the jcc version is 2.4 (not available at
-time of writing) then the search for the master to compare with
-starts in the functionTests/derbynet/jcc2.4/jdk14 directory. If a .out
-file with the same name as the test is found in that directory, that
-master is taken. If there is no such file in that directory, search
-continues in the directory functionTests/derbynet/jcc2.4/jdk13 if it
-exists.</p>
-<p>If there is no file there, nor for any other jcc directory, it will
-continue to derbynet/jdk14, and the search is continued for earlier jvm
-versions.<br>
-If we are not running network server, the DerbyNet and
-jcc_version directories are not traversed.<br>
-</p>
-<p>The version details do not go into the subversion level, i.e.
-running
-with jdk141 or jdk142 is expected to have the same behavior.
-</p>
-<p>
-This functionality supports dealing with minor differences in behavior
-caused by minor differences in behavior in the underlying jvms, jcc
-versions, differences between results returned through network server
-vs. embedded and minor differences between a debug and non debug (jar)
-build. </p>
-<p>
-However, having a large number of these files means a maintenance
-problem. Every time test output changes due to modifications to derby
-or to the test, all output files in all directories need to be updated
-accordingly. If at all possible, irrelevant differences should be
-masked out, or the test should be written so that the output does not
-reflect such items. </p>
-<p>
-Suggestions to minimize canons:
-</p>
-<ul>
-  <li>create test specific masking</li>
-  <li>ensure test data has a specific correct returned order; or an
-order by should be added to a query</li>
-  <li>when writing java tests, ensure only pertinent output is
-reflected.</li>
-</ul>
-<br>
-<h3><a class="mozTocH3" name="mozTocId68107"></a>4.6 <a name="ov6"></a>Masking
-and comparing</h3>
-<p>
-Tests often fail because of unimportant differences, such as process
-ids, statement ids, timestamps. The derby functional test harness
-provides for masking of these differences at 2 levels:<br>
-</p>
-<ol>
-  <li>overall level. Masking required in all, or many tests can be
-achieved using the class Sed in the test harness directory. This class
-can either delete a reference present in the .tmp file from the .out
-file, or replace it with a generic string. </li>
-  <li>test specific level. To make masking for only one test, a
-(testname)_sed.properties file can be created which allows to either
-remove a string from the output or to replace it.</li>
-</ol>
-<p>
-The diff is executed between the final resulting output and the master
-file found.<br>
-<br>
-</p>
-<h3><a name="Adding_a_new_test"></a>4.7<span style="font-weight: bold;">&nbsp;
-</span>Adding
-a new test</h3>
-<p>
-To add a new test:
-</p>
-<ul>
-  <li>create the test file (e.g. newfunctest.java or newfunctest.sql)
-in the appropriate tests subdirectory</li>
-  <li>list any files needed that are not .sql or .java files in a
-supportfiles entry in a test specific _app.properties file. e.g.
-newfunctest_app.properties:&nbsp; supportfiles=xyz.jar<br>
-  </li>
-  <li>list any specific derby properties in a test specific
-_derby.properties file.</li>
-  <li>add the properties files to the copyfiles.ant file in the test
-specific directory</li>
-  <li>run the test. The first time around, the test will fail because
-no master file will be found. </li>
-  <li>if the output is correct, copy it to the master directory. Note
-that there is no copyfiles.ant file needed for the master directory,
-all .out files are automatically copied.</li>
-  <li>run the test again. Investigate if any differences need to be
-masked out using a test specific sed.properties file (e.g.
-newfunctest_sed.properties). If so, ensure this is added to
-copyfiles.ant.</li>
-  <li>add the test to a specific suites/*.xml file, maintaining proper
-xml syntax. </li>
-  <li>run the suite, and correct any problems found.</li>
-</ul>
-<br>
-<h3><a name="4.8_Suites_and_Adding_a_new_suite"></a>4.8 Suites and
-Adding a new suite</h3>
-<p>
-A suite constitutes of a &lt;suitename&gt;.properties file and/or a
-&lt;suitename&gt;.runall file in the
-org/apache/derbyTesting/functionTests/suites directory. The .properties
-files hold references to other .properties files, or .runall files, the
-.runall files are the actual lists of tests.
-</p>
-<p>
-The lowest level suite always needs to have a .runall file.
-</p>
-<p>
-For example, the derbyall suite is only a derbyall.properties file that
-refers to other suites in the 'suites' property:
-</p>
-<table
- style="text-align: left; width: 527px; height: 32px; margin-left: 40px;"
- border="1" cellpadding="2" cellspacing="2">
-  <tbody>
-    <tr>
-      <td style="vertical-align: top;"><small>-----------------------derbyall.properties---------------<br>
-suites=derbylang derbynetmats storeall xa derbytools<br>
-derby.debug.true=enableBtreeConsistencyCheck<br>
-derby.stream.error.logSeverityLevel=0<br>
-      </small></td>
-    </tr>
-  </tbody>
-</table>
-<p>
-The derbylang suite is only a derbylang.runall, which lists the tests.
-The derbynetmats suite has both a .runall and a .properties file, so
-some additional properties can be specified that are true for all tests
-in that suite. </p>
-<table
- style="text-align: left; width: 521px; height: 32px; margin-left: 40px;"
- border="1" cellpadding="2" cellspacing="2">
-  <tbody>
-    <tr>
-      <td style="vertical-align: top;"><small>------------------derbynetmats.properties-----------------<br>
-framework=DerbyNet<br>
-suites=derbynetmats<br>
-jdk12test=true<br>
-runwithj9=false<br>
-timeout=60<br>
-      </small></td>
-    </tr>
-  </tbody>
-</table>
-<p>
-To add a suite, you need to create at least a &lt;suite&gt;.runall
-file, which lists the actual tests, or a properties file that refers to
-other suites that do have a .runall file. The suite should be added
-into the directory
-${derby.source}/java/testing/org/apache/derbyTesting/functionTests/suites.<br>
-<br>
-</p>
-<h3><a name="4.9_Running_with_a_new_jvm_"></a> <a name="ov9"></a>4.9
-Running
-with a new jvm<br>
-</h3>
-<p>Currently, the supported jvms are:
-</p>
-<table style="text-align: left; width: 497px; height: 32px;" border="1"
- cellpadding="2" cellspacing="2">
-  <tbody>
-    <tr>
-      <td style="vertical-align: top;"><small>&nbsp;&nbsp;&nbsp; jdk131
-- Sun
-HotSpot jdk1.3.1 - class: jdk13</small><br>
-      <small>&nbsp;&nbsp;&nbsp; jdk141 - Sun HotSpot jdk1.4.1 - class
-jdk14</small><br>
-      <small>&nbsp;&nbsp;&nbsp; jdk142 - Sun HotSpot jdk1.4.2 - class
-jdk14</small><br>
-      <small>&nbsp;&nbsp;&nbsp; jdk15 - Sun HotSpot jdk1.5 - class jdk15</small><br>
-      <small>&nbsp;&nbsp;&nbsp; ibm131 - IBM Classic jdk1.3.1&nbsp; -
-class ibm13</small><br>
-      <small>&nbsp;&nbsp;&nbsp; ibm141 - IBM Classic jdk1.4.1 - class
-ibm14</small><br>
-      <small>&nbsp;&nbsp;&nbsp; ibm142 - IBM Classic jdk1.4.1 - class
-ibm14</small><br>
-      <small>&nbsp;&nbsp;&nbsp; j9_13 - WCTME jvm (available with IBM
-Websphere Client Technology Micro Edition) - class j9_13<br>
-      </small></td>
-    </tr>
-  </tbody>
-</table>
-<p>The classes above are subclasses of
-org.apache.derbyTesting.functionTests.harness.jvm. The name at the
-front is just a convention.<br>
-</p>
-<p>To run a test with a jvm that does not have a matching class under
-org.apache.derbyTesting.functionTests.harness, do the following:<br>
-</p>
-<ul>
-  <li>just run the tests as if there is a jvm class. The harness will
-default to using
-the jdk14 class. Unlikely, but possibly there are no differences<br>
-  </li>
-  <li>if there are failures showing that cannot be explained any other
-way but genuine, acceptable jvm differences, do the following:</li>
-  <ul>
-    <li>create a subclass of
-org.apache.derbyTesting.functionTests.harness.jvm. In this class,
-specify any jvm specific property settings required </li>
-    <li>compile the new jvm class and run the tests</li>
-    <li>create a new canon directory for any additional canons that
-need to be created.</li>
-    <li>in rare occasions, other harness changes may be required</li>
-    <li>for any tests that should not run with this environment, add a
-line in the testname_app.properties file indicating this. For instance
-to add a line for a jvm called jdk29, it would be like this:
-runwithjdk29=false. Note that the versioning does not currently extend
-past 2 digits.</li>
-    <li>Add code in RunTest.java to switch to the new jvm based on
-values for system and vendor properties</li>
-  </ul>
-</ul>
-<br>
-<h3><a name="skipping"></a>4.10 Skipping a test</h3>
-<p>
-Some tests are written to test specific functionality only available
-with for instance certain jvms, or, with network server, certain
-versions of the IBM Universal Driver. To control this, properties can
-be set for each test, for instance, if a test should not be run when
-using an ibm jvm, set runwithibmjvm=false. If a test should be run with
-Sun Hotspot jvm version 14, then set runwithjdk14=true.<br>
-The skip setting does not go into the subversion level, i.e. setting
-runwithjdk141=false has no effect, and setting runwithjdk14 affects
-runs with jdk141 as well as jdk142.<br>
-Other skip reasons are encryption protocols specific to a certain jvm. <br>
-</p>
-<br>
-<h3><a name="frameworks"></a>4.11 Frameworks</h3>
-<p>
-Currently, the only framework used is DerbyNet for network server. <br>
-Setting framework property setting will invoke the test harness class
-NetServer, which currently has configuration for connecting to DB2 via
-jcc (the IBM Universal Driver), and via the older db2 driver. But there
-are currently no tests to exercise these settings.<br>
-Setting this framework also causes the search for expected output to
-include DerbyNet and jcc version specific subdirectories under master.<br>
-</p>
-<br>
-<h3><a name="props"></a>4.12 Some test harness properties</h3>
-<p>
-For a complete set, refer to comments in RunTest.java, but here are
-some valuable test properties which can be passed to the RunTest class:
-</p>
-<table
- style="text-align: left; margin-left: 40px; width: 601px; height: 252px;"
- border="1" cellpadding="2" cellspacing="2">
-  <tbody>
-    <tr>
-      <td style="vertical-align: top;">runwith&lt;jvm&gt;<br>
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; See above
-section <a href="#skipping">4.10</a><br>
-framework<br>
-&nbsp;&nbsp;&nbsp; specifies which framework to run with. For example:<br>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; java -Dframework=DerbyNet
-org.apache.derbyTesting.functionTests.RunTest <br>
-lang/supersimple.sql<br>
-verbose<br>
-&nbsp;&nbsp;&nbsp; Shows more detailed output. For example:<br>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; java -Dverbose=true
-org.apache.derbyTesting.functionTests.RunTest lang/arithmetic.sql<br>
-keepfiles<br>
-&nbsp; &nbsp; Indicates to not clean up any of the files if the test
-passed.<br>
-&nbsp;&nbsp; &nbsp; &nbsp;&nbsp; java -Dkeepfiles=true
-org.apache.derbyTesting.functionTests.RunTest lang/arithmetic.sql<br>
-TestSpecialFlags<br>
-&nbsp;&nbsp;&nbsp; sets additional properties.<br>
-&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; java
--D=TestSpecialFlags=derby.infolog.append=true
-org.apache.derbyTesting.functionTests.RunTest lang/arithmetic.sql</td>
-    </tr>
-  </tbody>
-</table>
-<br>
-<br>
-<h3><br>
-</h3>
-<br>
-<br>
-<h2>Notes</h2>
-<small><a name="Note1:"></a> Note1:<br>
-</small>
-<div style="margin-left: 40px;"><small>There is one more suite
-included: the j9derbynetmats
-suite is a modification of the derbynetmats suite. It is available to
-test
-the network server with the jvm available with IBM's WCTME (Workplace
-Client Technology, Micro Edition; formerly WSDD), and will be run at IBM</small><small>.
-Note that the setup for running the j9derbynetmats
-tests is very specific to the test harness, not even using the WCTME
-files in their normal location.</small><small> <br>
-The j9derbynetmats suite is included to serve as an
-example of splitting the network server process to run with a different
-jvm than the test client. The j9derbynetmats suite will run with
-another
-jvm
-as client (as defined in the suite properties), but start up
-network server with the 'j9' jvm files (the reference to 'j9' is based
-on the executable, j9.exe), based on the property 'serverJvm'. Running
-this suite requires providing the property&nbsp; bootcp,
-which is&nbsp; interpreted from the test harness class j9_13. See also
-section on adding a new <a href="#ov9%22">jvm setup</a>.
-</small><br>
-</div>
-<br>
-<small><a name="Note2:"></a>Note2:<br>
-</small>
-<div style="margin-left: 40px;"><small>setting
-RetrieveMessagesFromServerOnGetMessage to true
-for the test harness is purely for
-illustration, the test harness actually forces
-RetrieveMessagesFromServerOnGetMessage to true for the tests so the
-output is always as expected.</small><br>
-</div>
-<br>
-<small><a name="Note3:_"></a>Note3: <br>
-</small>
-<div style="margin-left: 40px;"><small>occasionally, cleanup is
-unsuccessful. This does not
-constitute a problem in any way, as the harness starts with a clean
-database, and clean copies of all files. However, you will see
-something like this in the output:</small><br>
-<small>Warning: Cleanup failed on baseDir:
-/local/myrun1/DerbyNet/supersimple</small><br>
-</div>
-<br>
-</body>
-</html>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+  <meta content="text/html; charset=ISO-8859-1"
+ http-equiv="content-type">
+  <title>readme.htm</title>
+</head>
+<body>
+<h1><a class="mozTocH1" name="mozTocId934928"></a>Derby Functional Tests<br>
+</h1>
+<h2><a class="mozTocH2" name="mozTocId504000"></a>Package:
+org.apache.derbyTesting<!--mozToc h1 1 h2 2 h3 3 h4 4 h5 5 h6 6--><br>
+</h2>
+<p>
+<small>created by myrna@golux.com<br>
+last updated on 12/02/2004 by: myrna@golux.com<br>
+</small>
+</p>
+<ul>
+  <li><a href="#intro">1. Introduction</a></li>
+  <li><a href="#quickstart">2. Quickstart</a></li>
+  <li style="margin-left: 40px;"><a
+ href="#2.1_running_with_derby_classes_">2.1 running tests<br>
+    </a></li>
+  <li style="margin-left: 40px;"><a
+ href="#building_derbyTesting__running_with">2.2 building
+derbyTesting package</a><br>
+  </li>
+  <li><a href="#run">3. More details on running the derby functional
+tests</a></li>
+  <li style="margin-left: 40px;"><a href="#run1">3.1 Running 1 test</a></li>
+  <li style="margin-left: 40px;"><a href="#run2">3.2 Running suites of
+tests</a></li>
+  <li><a href="#overview">4. Harness internals for developers</a> </li>
+  <li style="margin-left: 40px;"><a href="#ov1">4.1 Test types</a></li>
+  <li style="margin-left: 40px;"><a href="#ov2">4.2 Supporting files
+for tests</a></li>
+  <li style="margin-left: 40px;"><a href="#ov3">4.3
+&lt;testname&gt;_app.properties</a></li>
+  <li style="margin-left: 40px;"><a href="#ov4">4.4
+&lt;testname&gt;_derby.properties</a></li>
+  <li style="margin-left: 40px;"><a href="#ov5">4.5 tmp files, out
+files, master files, and canons</a></li>
+  <li style="margin-left: 40px;"><a href="#ov6">4.6 Masking and
+comparing</a></li>
+  <li style="margin-left: 40px;"><a href="#Adding_a_new_test">4.7
+Adding a new test</a></li>
+  <li style="margin-left: 40px;"><a
+ href="#4.8_Suites_and_Adding_a_new_suite">4.8 Suites and adding a
+new suite</a></li>
+  <li style="margin-left: 40px;"><a href="#ov9">4.9 Running with a new
+jvm</a></li>
+  <li style="margin-left: 40px;"><a href="#skipping">4.10 Skipping a
+test</a></li>
+  <li style="margin-left: 40px;"><a href="#frameworks">4.11 Frameworks</a></li>
+  <li style="margin-left: 40px;"><a href="#props">4.12 Some test
+harness properties</a> </li>
+</ul>
+<br>
+<h2>1. <a name="intro"></a>Introduction</h2>
+<p>
+This document describes functionality of the derby
+functional testing package org.apache.derbyTesting. This package is
+based on the functional tests in use at IBM for testing the Cloudscape
+product before its contribution to ASF.</p>
+<p>In the following, instructions are geared towards a unix
+environment. For other environments, some details may need to be
+adjusted. For instance, the document may
+refer to $ANT_HOME, for DOS, this would be %ANT_HOME%.<br>
+</p>
+<p>In the following the top
+directory under which the subversion tree is placed is referred to as
+${derby.source} - see also the
+derby <a href="http://incubator.apache.org/derby/BUILDING.html">BUILDING.txt</a>.<br>
+</p>
+<p>The version of the classes and supporting files of the derbyTesting
+package have to match the version of the classes of the derby package.
+Thus you either need to build all jars yourself, or get all jar files
+from the incubator site at the same time when available. <br>
+<br>
+</p>
+<span style="font-weight: bold;">
+</span>
+<h2><a class="mozTocH2" name="mozTocId191589"></a>2. <a
+ name="quickstart"></a>QuickStart<br>
+</h2>
+<h3><a name="2.1_running_with_derby_classes_"></a>2.1 running tests</h3>
+<p>
+The derbyTesting package enables you to run 1 test or a suite of tests.
+Before you can run, you need to setup your environment:<br>
+</p>
+<ul>
+  <li>Obtain a jdk or jre (based on jdk 1.3.1 specification or higher).
+Add the bin directory to your $PATH. Currently supported are:<br>
+  </li>
+</ul>
+<table
+ style="text-align: left; width: 497px; height: 32px; margin-left: 40px;"
+ border="1" cellpadding="2" cellspacing="2">
+  <tbody>
+    <tr>
+      <td style="vertical-align: top;"><small>&nbsp;&nbsp;&nbsp; jdk131
+- Sun
+HotSpot jdk1.3.1</small><br>
+      <small>&nbsp;&nbsp;&nbsp; jdk141 - Sun HotSpot jdk1.4.1</small><br>
+      <small>&nbsp;&nbsp;&nbsp; jdk142 - Sun HotSpot jdk1.4.2</small><br>
+      <small>&nbsp;&nbsp;&nbsp; jdk15 - Sun HotSpot jdk1.5</small><br>
+      <small>&nbsp;&nbsp;&nbsp; ibm131 - IBM Classic jdk1.3.1</small><br>
+      <small>&nbsp;&nbsp;&nbsp; ibm141 - IBM Classic jdk1.4.1</small><br>
+      <small>&nbsp;&nbsp;&nbsp; ibm142 - IBM Classic jdk1.4.2</small><br>
+      <small>&nbsp;&nbsp;&nbsp; j9_13 - WCTME jvm (available with IBM
+Websphere Client Technology Micro Edition) <br>
+      </small></td>
+    </tr>
+  </tbody>
+</table>
+<ul>
+  <li>set $CLASSPATH to include the following jars:</li>
+  <ul>
+    <li><small>jakarta-oro-2.0.8.jar</small></li>
+    <small>&nbsp;&nbsp;&nbsp; oromatcher, obtain from <a
+ href="http://jakarta.apache.org/oro/index.html">http://jakarta.apache.org/oro/index.html</a>,
+or follow this link for <a
+ href="http://apache.roweboat.net/jakarta/oro/source/jakarta-oro-2.0.8.zip">zip</a>
+file, or <a
+ href="http://apache.roweboat.net/jakarta/oro/source/jakarta-oro-2.0.8.tar.gz">tar</a>.gz)</small><li><small>derbyTesting.jar<br>
+      </small></li>
+  </ul>
+  <ul>
+    <small>&nbsp;&nbsp;&nbsp;&nbsp; test files and classes</small><li><small>derby.jar<br>
+      </small></li>
+    <small>&nbsp;&nbsp;&nbsp; main derby package classes</small><li><small>derbytools.jar<br>
+      </small></li>
+    <small>&nbsp;&nbsp;&nbsp; derby tools classes for tools like ij
+and dblook</small><li><small>derbynet.jar<br>
+      </small></li>
+    <small>&nbsp;&nbsp;&nbsp; derby network server classes</small><li><small>db2jcc.jar
+and db2jcc_license_c.jar <br>
+      </small></li>
+    <small>&nbsp;&nbsp;&nbsp; IBM Universal JDBC Driver classes. (See
+IBM <a href="http://www-106.ibm.com/developerworks/db2/downloads/jcc/">developerworks</a>
+for download)</small><br>
+    <li><small>derbyLocale_*.jar</small></li>
+    <small>&nbsp;&nbsp;&nbsp; locale files holding translated messages.</small><br>
+  </ul>
+</ul>
+<small></small>
+<ul>
+  <ul>
+  </ul>
+</ul>
+<p>
+For example:<br>
+</p>
+<div style="margin-left: 40px;">
+<table style="text-align: left; width: 484px; height: 32px;" border="1"
+ cellpadding="2" cellspacing="2">
+  <tbody>
+    <tr>
+      <td style="vertical-align: top;"><small>(note that $jardir is
+only a convenience variable and that the command below has carriage
+returns for formatting reasons):<br>
+      </small><small>set jardir=/local/derbyjar<br>
+set
+CLASSPATH="$jardir/derby.jar:$jardir/derbytools.jar:$jardir/derbynet.jar:$jardir/db2jcc.jar:<br>
+$jardir/db2jcc_license_c.jar:$jardir/derbyTesting.jar:/local/derby/tools/java/jakarta-oro-2.0.8.jar:<br>
+$jardir/derbyLocale_de_DE.jar:$jardir/derbyLocale_es.jar:$jardir/derbyLocale_fr.jar:<br>
+$jardir/derbyLocale_it.jar:$jardir/derbyLocale_ja_JP.jar:$jardir/derbyLocale_ko_KR.jar:<br>
+$jardir/derbyLocale_pt_BR.jar:$jardir/derbyLocale_zh_CN.jar:$jardir/derbyLocale_zh_TW.jar:<br>
+$CLASSPATH</small><br>
+      <small>set PATH=/local/jdk141/bin:$PATH</small><br>
+      </td>
+    </tr>
+  </tbody>
+</table>
+</div>
+<p>
+To run 1 test:
+</p>
+<table
+ style="text-align: left; width: 514px; height: 32px; margin-left: 40px;"
+ border="1" cellpadding="2" cellspacing="2">
+  <tbody>
+    <tr>
+      <td style="vertical-align: top;">syntax:<br>
+&nbsp;&nbsp;&nbsp; <small>java
+-D&lt;testproperty&gt;
+org.apache.derbyTesting.functionTests.harness.RunTest
+&lt;testdir&gt;/&lt;testname&gt;</small><br>
+      <small>where <br>
+      </small>
+      <ul>
+        <li><small>&nbsp;&nbsp; &lt;testproperty&gt; are test specific
+properties, such as
+'framework' for the RunTest class. </small></li>
+        <li><small>&nbsp;&nbsp; &lt;testdir&gt; is one of the
+directories under
+functionTests/tests where the actual test is located</small></li>
+        <li><small>&nbsp;&nbsp; &lt;testname&gt; is the actual name of
+the test</small></li>
+      </ul>
+      <small>examples:<br>
+to run the test supersimple against the embedded driver:<br>
+      </small>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <small>java
+org.apache.derbyTesting.functionTests.harness.RunTest
+lang/supersimple.sql<br>
+      <br>
+To run a test with network server, add -Dframework=DerbyNet to the run.
+The test harness will to start
+network server at port 1527 or connect to a running one, run the test,
+and stop network server thereafter.<br>
+for example:<br>
+&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; java </small><small>-Dframework=DerbyNet
+      </small><small>org.apache.derbyTesting.functionTests.harness.RunTest
+lang/supersimple.sql<br>
+      </small><small> </small></td>
+    </tr>
+  </tbody>
+</table>
+<p>
+A successful run will have a .pass file, and the output to the
+console will show no difference between expected and actual test
+result. A failed test run will have at least a .fail file and the
+output to the console will show the difference between expected and
+actual result.<br>
+</p>
+<p>
+To run a suite:
+</p>
+<table
+ style="text-align: left; width: 546px; height: 32px; margin-left: 40px;"
+ border="1" cellpadding="2" cellspacing="2">
+  <tbody>
+    <tr>
+      <td style="vertical-align: top;">syntax:<br>
+&nbsp; <small>java
+-D&lt;testproperty&gt;
+org.apache.derbyTesting.functionTests.harness.RunSuite&nbsp;
+&lt;testsuite&gt;</small><br>
+      <small>where <br>
+      </small>
+      <ul>
+        <li><small>&nbsp;&nbsp; &lt;testproperty&gt; are test specific
+properties, such as
+'verbose' for the RunSuite class. </small></li>
+        <li><small>&nbsp;&nbsp; &lt;testsuite&gt; is one of the suites
+under
+org/apache/derbyTesting/suites</small></li>
+      </ul>
+      <small>for example for running&nbsp; the suite derbylang:<br>
+      </small><small>&nbsp;&nbsp; java -Dverbose=true
+org.apache.derbyTesting.functionTests.harness.RunSuite derbylang</small><br>
+      </td>
+    </tr>
+  </tbody>
+</table>
+<p>
+Each suite run should be started in a clean directory. The test
+output directory will not be emptied out before testing is
+begun, although individual test files and result files will be cleaned
+out and overwritten.&nbsp;
+</p>
+<p>
+The suites provided are:
+</p>
+<ul>
+  <li>derbylang: <br>
+  </li>
+  <ul>
+    <li>basic functionality of&nbsp;
+language implementation in derby. <br>
+    </li>
+    <li>Mostly .sql type tests. <br>
+    </li>
+    <li>tested on a variety of hardware takes from 1.15m to 2.00 hours<br>
+    </li>
+  </ul>
+  <li>derbynetmats</li>
+  <ul>
+    <li>basic network server tests.</li>
+    <li>variety of tests, including some from derbylang suite</li>
+    <li>tested on a variety of hardware takes from 15 to 30 minutes</li>
+  </ul>
+  <li>storeall</li>
+  <ul>
+    <li>tests for storage area</li>
+    <li>includes:</li>
+    <ul>
+      <li>storemats: most basic quick verification tests.<br>
+      </li>
+      <li>storemore: more extensive storage tests</li>
+      <li>storetests: set of store tests grouped together because they
+do not each need to create a new database</li>
+    </ul>
+    <li>tested on a variety of hardware takes from 10 to 25 minutes<br>
+    </li>
+  </ul>
+  <li>xa</li>
+  <ul>
+    <li>tests the xa implementation. There is both a storage and
+language element to these tests</li>
+    <li>tested on a variety of hardware takes from 2 to 4 minutes<br>
+    </li>
+  </ul>
+  <li>derbytools</li>
+  <ul>
+    <li>currently only test included is for the dblook utility. <br>
+    </li>
+  </ul>
+  <li>derbyall</li>
+  <ul>
+    <li>contains all suites typically run by all developers<br>
+    </li>
+  </ul>
+  <ul>
+    <li>tested on a variety of hardware takes from 1.50 - 4.00 hours </li>
+  </ul>
+  <li><a href="#Note1:"><small>See Note1</small></a><br>
+  </li>
+</ul>
+<p>
+A successful run with all tests passing will have no *.fail files
+created, the &lt;testsuite&gt;_fail.txt file will be empty, and the
+&lt;testsuite&gt;_report.txt file will show no failures in the Summary
+results section.
+</p>
+<table
+ style="text-align: left; width: 556px; height: 32px; margin-left: 40px;"
+ border="1" cellpadding="2" cellspacing="2">
+  <tbody>
+    <tr>
+      <td style="vertical-align: top;"><small>-------snippet from
+derbylang_report.txt -----<br>
+-----------------------------------------------------------<br>
+Summary results:<br>
+      <br>
+Test Run Started: 2004-11-10 11:27:55.0<br>
+Test Run Duration: 00:04:09<br>
+      <br>
+129 Tests Run<br>
+100% Pass (129 tests passed)<br>
+&nbsp;0% Fail (0 tests failed)<br>
+0 Suites skipped</small><br>
+      </td>
+    </tr>
+  </tbody>
+</table>
+<br>
+<h3><a name="building_derbyTesting__running_with"></a>2.2 building
+derbyTesting package<br>
+</h3>
+<p>
+To build the derbyTesting package:<br>
+</p>
+<ul>
+  <li>follow all the steps in the derby <a
+ href="http://incubator.apache.org/derby/BUILDING.html">BUILDING.txt</a>.</li>
+</ul>
+<p>This is some typical
+output for the ant build process.<br>
+</p>
+<table
+ style="text-align: left; width: 516px; height: 32px; margin-left: 40px;"
+ border="1" cellpadding="2" cellspacing="2">
+  <tbody>
+    <tr>
+      <td style="vertical-align: top;"><small>&gt; cd
+/local/derby/java/testing<br>
+&gt; ant.ksh<br>
+Searching for build.xml ...<br>
+Buildfile: /local/derby/java/testing/build.xml<br>
+      <br>
+compile:<br>
+&nbsp;&nbsp;&nbsp; [javac] Compiling 30 source files to
+/local/derby/classes<br>
+...<br>
+&nbsp;&nbsp;&nbsp;&nbsp; [copy] Copying 1 file to
+/local/derby/classes/org/apache/derbyTesting/funct<br>
+ionTests<br>
+      <br>
+BUILD SUCCESSFUL<br>
+Total time: 10 minutes 3 seconds</small></td>
+    </tr>
+  </tbody>
+</table>
+<p>Once you have built the derbyTesting package built, you can make a
+derbyTesting.jar use the jar build target at the ${derby.source}level.
+</p>
+<p>
+This will look something like:
+</p>
+<table
+ style="text-align: left; width: 528px; height: 32px; margin-left: 40px;"
+ border="1" cellpadding="2" cellspacing="2">
+  <tbody>
+    <tr>
+      <td style="vertical-align: top;"><small>c:&gt; ant derbytestingjar<br>
+Searching for build.xml ...<br>
+Buildfile: C:\derby\build.xml<br>
+      <br>
+initjars:<br>
+&nbsp;&nbsp;&nbsp; [mkdir] Created dir: C:\derby\jars\<br>
+&nbsp;&nbsp;&nbsp; [mkdir] Created dir: C:\derby\jars\lists<br>
+&nbsp;&nbsp;&nbsp;&nbsp; [echo] Revision number set to exported<br>
+&nbsp;&nbsp;&nbsp;&nbsp; [echo] .<br>
+      <br>
+derbytestingjar:<br>
+&nbsp;&nbsp;&nbsp;&nbsp; [echo] Beginning derbytesting.jar build<br>
+.....<br>
+BUILD SUCCESSFULL<br>
+      </small></td>
+    </tr>
+  </tbody>
+</table>
+<br>
+<br>
+<h2><a class="mozTocH2" name="mozTocId582299"></a>3. <a name="run"></a>More
+details on running the derby functional tests</h2>
+<p>
+The functional tests are run using a class called 'RunTest'. This class
+calls a number of other classes. A group of tests, called a 'suite' is
+executed using a class called 'RunSuite'.<br>
+</p>
+<h3><a class="mozTocH3" name="mozTocId595945"></a>3.1 <a name="run1"></a>Running
+1 test</h3>
+<p>See section 2.1 for the basic steps to run 1 test.
+</p>
+<p>To pass on system level properties to the test harness, use the test
+harness property -DtestSpecialFlags. For
+example, to run a test forcing
+the message text to be retrieved from the network server:
+</p>
+<table
+ style="text-align: left; width: 558px; height: 32px; margin-left: 40px;"
+ border="1" cellpadding="2" cellspacing="2">
+  <tbody>
+    <tr>
+      <td style="vertical-align: top;"> <small>java
+-Dframework=DerbyNet
+-DtestSpecialFlags=RetrieveMessagesFromServerOnGetMessage=true&nbsp;
+org.apache.derbyTesting.functionTests.harness.RunTest
+lang/supersimple.sql</small></td>
+    </tr>
+  </tbody>
+</table>
+<p><br>
+Tests will be executed in the current directory. When
+running a test
+using the network server, i.e. -Dframework=DerbyNet, the test will run
+in a subdirectory (automatically created) 'DerbyNet'. <small> <br>
+<a href="#Note2:">See Note2</a>.<br>
+</small></p>
+<p>
+The test will normally create the following:<br>
+</p>
+<ul>
+  <li>a database. The default name is 'wombat'. However, the name may
+be different depending on certain properties passed in to the test
+harness.</li>
+  <li>a .out file: the final result file</li>
+  <li>a .tmp file; the initial result file, before any modification to
+prevent irrelevant differences has been applied (before 'masking').</li>
+  <li>a .diff file; the differences between the .out and the master
+file with expected output it is compared to.</li>
+  <li>a .pass or .fail file. This file lists the test if it passes
+under .pass, and under .fail if the output in .out is different from
+the expected output in the master.</li>
+</ul>
+<p>
+possibly created:<br>
+</p>
+<ul>
+  <li>additional files used in a specific test may get copied over to
+the test directory. These normally do not get cleaned up.</li>
+  <li>.tmpstr file is created for network server tests and is a
+possibly
+massaged copy of the master file the output needs to be compared with.</li>
+  <li>.err and .out files in network server database files for any
+additional error output.</li>
+</ul>
+<p>
+When the test is successful, cleanup will occur unless the test harness
+property -Dkeepfiles=true is used. Cleanup will attempt to cleanup all
+files except for .pass. <small><br>
+<a href="#Note3:_">See Note3.</a></small>
+</p>
+<p>
+A successful run (this example is from a dos environment) would
+look for instance like:
+</p>
+<table
+ style="text-align: left; width: 414px; height: 45px; margin-left: 80px;"
+ border="1" cellpadding="2" cellspacing="2">
+  <tbody>
+    <tr>
+      <td style="vertical-align: top;"><small>c:&gt;
+derbyTesting.functionTests.harness.RunTest lang/supersimple.sql<br>
+C:\derby\run2<br>
+supersimple<br>
+-- listing properties --<br>
+derby.locks.deadlockTimeout=3<br>
+derby.locks.waitTimeout=3<br>
+*** Start: supersimple jdk1.4.2_03 2004-11-10 16:51:02 ***<br>
+The test should be running...<br>
+MasterFileName = master/supersimple.out<br>
+*** End:&nbsp;&nbsp; supersimple jdk1.4.2_03 2004-11-10 16:51:25 ***<br>
+      </small></td>
+    </tr>
+  </tbody>
+</table>
+<br>
+<p>A Test Failure shows the diff, creates a .fail file, does not create
+a .pass file, and does not cleanup any files upon completion. The
+output might look like this:<br>
+</p>
+<table
+ style="text-align: left; width: 442px; height: 32px; margin-left: 80px;"
+ border="1" cellpadding="2" cellspacing="2">
+  <tbody>
+    <tr>
+      <td style="vertical-align: top;"><small>&nbsp;</small><small>c:&gt;
+derbyTesting.functionTests.harness.RunTest lang/supersimple.sql<br>
+C:\derby\run2</small><small><br>
+supersimple<br>
+-- listing properties --<br>
+derby.locks.deadlockTimeout=3<br>
+derby.locks.waitTimeout=3<br>
+*** Start: supersimple jdk1.4.2_03 2004-11-10 16:54:39 ***<br>
+The test should be running...<br>
+MasterFileName = master/supersimple.out<br>
+10 del<br>
+&lt; 10<br>
+10a10<br>
+&gt; 1<br>
+Test Failed.<br>
+*** End:&nbsp;&nbsp; supersimple jdk1.4.2_03 2004-11-10 16:55:02 ***</small><br>
+      </td>
+    </tr>
+  </tbody>
+</table>
+<br>
+<h3><a class="mozTocH3" name="mozTocId368566"></a>3.2 <a name="run2"></a>Running
+a suite of tests</h3>
+<p>
+See section 2.1 for a basic explanation on how to run a suite of tests.<br>
+</p>
+<p>
+Tests will be run in a subdirectory with the name of the test
+suite under the current directory. Eg. for derbylang suite, a directory
+derbylang will be created. While the tests are run, information about
+the run is inserted into a &lt;testsuite&gt;.sum file. When all tests
+have completed summary files are created &lt;testsuite&gt;_pass.txt,
+_fail.txt, and _diff.txt files are created as well as a
+&lt;testsuite&gt;_report.txt
+with additional details. Some of the information is duplicate. Also, a
+.skip file will be created holding a list of the tests that were
+skipped (for more details on this, see the section on <a
+ href="#skipping">skipping tests</a>).
+</p>
+<p>
+RunSuite does not empty the top level directory before running. Thus,
+if another suite was run in the same directory at an earlier time, the
+resulting summary files might contain results for more than the current
+run. Therefore it is important to run each suite in a clean directory.
+</p>
+<p>Sample output from RunSuite:<br>
+</p>
+<table
+ style="text-align: left; width: 471px; height: 32px; margin-left: 80px;"
+ border="1" cellpadding="2" cellspacing="2">
+  <tbody>
+    <tr>
+      <td style="vertical-align: top;"><small><small>c:&gt; $ java
+org.apache.derbyTesting.functionTests.harness.RunSuite derbylang<br>
+Top suite: derbylang<br>
+Suite to run: derbylang:derbylang<br>
+Now do RunList<br>
+Now run the suite's tests<br>
+Run the tests...<br>
+Execute command: java -DjavaCmd=java
+-Doutputdir=C:\derbyt1\derbylang\derbylang
+-Dtopsuitedir=C:\derbyt1\derbylang -Dtoprepo<br>
+rtdir=C:\derbyt1\derbylang -Drundir=C:\derbyt1
+-Dsuitename=derbylang:derbylang -Dtopsuitename=derbylang
+org.apache.derbyTesting.functionTests.harness.RunTest
+lang/altertable.sql<br>
+Execute command: java -DjavaCmd=java
+-Doutputdir=C:\derbyt1\derbylang\derbylang
+-Dtopsuitedir=C:\derbyt1\derbylang -Dtopreportdir=C:\derbyt1\derbylang
+-Drundir=C:\derbyt1 -Dsuitename=derbylang:derbylang
+-Dtopsuitename=derbylang
+org.apache.derbyTesting.functionTests.harness.RunTest
+lang/arithmetic.sql<br>
+...(.more tests)....<br>
+Generated report: derbylang_report.txt</small></small><small><br>
+      </small></td>
+    </tr>
+  </tbody>
+</table>
+<p>
+This output does not show whether the tests passed or failed. The
+Summary section in &lt;testsuite&gt;_report.txt shows the statistics of
+the passed vs. failed tests, the summary &lt;testsuite&gt;_*.txt files
+list the tests that passed and failed.
+</p>
+<br>
+<h2><a class="mozTocH2" name="mozTocId635355"></a>4. <a name="overview"></a>
+Harness internals for developers<br>
+</h2>
+<p>
+The following is intended for people who have the subversion tree
+available and want to add or modify tests.
+</p>
+<p>
+The test harness executing one test basically does the following in
+sequence:
+</p>
+<ul>
+  <li>identify test to run</li>
+  <li>identify properties to run with</li>
+  <li>copy needed support files</li>
+  <li>find the expected output</li>
+  <li>if network server, start network server</li>
+  <li>run the test, creating the database</li>
+  <li>if network server, shutdown the server</li>
+  <li>modify the output based on Sed class and _sed.properties file for
+the test</li>
+  <li>compare expected output with actual output</li>
+  <li>if pass, cleanup.</li>
+</ul>
+<br>
+<h3><a class="mozTocH3" name="mozTocId344499"></a>4.1 <a name="ov1"></a>Test
+types</h3>
+<p>
+The test harness recognizes, or will recognize tests with the following
+extensions:<br>
+</p>
+<ul>
+  <li>&nbsp;.java&nbsp;&nbsp;&nbsp; tests that run in a separate jvm.</li>
+  <li>&nbsp;.sql &nbsp;&nbsp;&nbsp; tests that run using ij</li>
+  <li>&nbsp;.sql2 &nbsp;&nbsp;&nbsp; related to .sql</li>
+  <li>&nbsp;.multi &nbsp;&nbsp;&nbsp; multi threaded tests. There are
+no
+multi threaded tests in the first contribution to apache, and the
+sections pertaining to such tests have been commented out</li>
+  <li>&nbsp;.unit &nbsp;&nbsp;&nbsp; unit tests. Currently there are no
+hooks for unit tests in the harness and no unit tests are contributed
+initially.</li>
+</ul>
+<br>
+<h3><a class="mozTocH3" name="mozTocId809770"></a>4.2 <a name="ov2"></a>Supporting
+files for tests</h3>
+<p>
+Various additional files may be used by a test, for instance, to create
+large data values, to test using of jar files and the like. Any files
+that need to be accessed by a particular test that are not accessed
+from the classpath need to be listed under supportfiles= in the
+&lt;testname&gt;_app.properties file.<br>
+Tests can refer to classes without being in the classpath, and sql
+tests can use the ij command 'run resource ' to execute additional .sql
+files without changes to the _app.properties files.
+</p>
+<p>For example, in the file
+(org/apache/derbyTesting/functionTests/tests/)tools/dblook_test_app.properties:<br>
+<small>&nbsp;&nbsp;&nbsp;
+supportfiles=tools/dblook_makeDB.sql,tools/dblook_test.jar</small><br>
+</p>
+<h3><a class="mozTocH3" name="mozTocId427577"></a>4.3 <a name="ov3"></a>&lt;testname&gt;_app.properties</h3>
+<p>
+Every test directory has a default_app.properties. This file is for
+system level properties generic to all the tests in that test
+directory. </p>
+<p>
+If a test requires different system level properties, a test specific
+properties file can be created to overwrite the defaults. The test
+specific properties file needs to have a name starting with the
+test file name, followed with _app.properties</p>
+<p>For example, for the test tools/dblook_test.java, there is a
+properties file called tools/dblook_test_app.properties<br>
+</p>
+<h3><a class="mozTocH3" name="mozTocId715566"></a>4.4 <a name="ov4"></a>&lt;testname&gt;_derby.properties</h3>
+<p>
+Every test directory has a default_derby.properties. This file is for
+derby specific properties common to all the tests in that test
+directory.<br>
+If a test requires different derby properties, a test specific
+properties file can be created to overwrite the defaults. The test
+specific properties file needs to have a name starting with the
+test file name, followed with _derby.properties<br>
+<br>
+</p>
+<h3><a class="mozTocH3" name="mozTocId874096"></a>4.5 <a name="ov5"></a>tmp
+files, out files, master files, and canons</h3>
+<p>
+The test's output will be put into a file testname.tmp. Then the output
+is modified if masking is required and the result is put into a .out
+file.<br>
+The expected output is found by examining the following directories,
+based on certain input<br>
+</p>
+<ul>
+  <li>functionTests/master/framework/jcc_version/jvmcode</li>
+  <li>functionTests/master/framework/jcc_version/earlier_jvmcode</li>
+  <li>functionTests/master/framework/jcc_version</li>
+  <li>functionTests/master/framework/jvmcode</li>
+  <li>functionTests/master/framework/earlier_jvmcode</li>
+  <li>functionTests/master/jvmcode</li>
+  <li>functionTests/master</li>
+</ul>
+<p>
+For example, if we are running a test and the flag -Dframework=DerbyNet
+is used and the jvm we are
+using is Sun's jdk 142, and the jcc version is 2.4 (not available at
+time of writing) then the search for the master to compare with
+starts in the functionTests/derbynet/jcc2.4/jdk14 directory. If a .out
+file with the same name as the test is found in that directory, that
+master is taken. If there is no such file in that directory, search
+continues in the directory functionTests/derbynet/jcc2.4/jdk13 if it
+exists.</p>
+<p>If there is no file there, nor for any other jcc directory, it will
+continue to derbynet/jdk14, and the search is continued for earlier jvm
+versions.<br>
+If we are not running network server, the DerbyNet and
+jcc_version directories are not traversed.<br>
+</p>
+<p>The version details do not go into the subversion level, i.e.
+running
+with jdk141 or jdk142 is expected to have the same behavior.
+</p>
+<p>
+This functionality supports dealing with minor differences in behavior
+caused by minor differences in behavior in the underlying jvms, jcc
+versions, differences between results returned through network server
+vs. embedded and minor differences between a debug and non debug (jar)
+build. </p>
+<p>
+However, having a large number of these files means a maintenance
+problem. Every time test output changes due to modifications to derby
+or to the test, all output files in all directories need to be updated
+accordingly. If at all possible, irrelevant differences should be
+masked out, or the test should be written so that the output does not
+reflect such items. </p>
+<p>
+Suggestions to minimize canons:
+</p>
+<ul>
+  <li>create test specific masking</li>
+  <li>ensure test data has a specific correct returned order; or an
+order by should be added to a query</li>
+  <li>when writing java tests, ensure only pertinent output is
+reflected.</li>
+</ul>
+<br>
+<h3><a class="mozTocH3" name="mozTocId68107"></a>4.6 <a name="ov6"></a>Masking
+and comparing</h3>
+<p>
+Tests often fail because of unimportant differences, such as process
+ids, statement ids, timestamps. The derby functional test harness
+provides for masking of these differences at 2 levels:<br>
+</p>
+<ol>
+  <li>overall level. Masking required in all, or many tests can be
+achieved using the class Sed in the test harness directory. This class
+can either delete a reference present in the .tmp file from the .out
+file, or replace it with a generic string. </li>
+  <li>test specific level. To make masking for only one test, a
+(testname)_sed.properties file can be created which allows to either
+remove a string from the output or to replace it.</li>
+</ol>
+<p>
+The diff is executed between the final resulting output and the master
+file found.<br>
+<br>
+</p>
+<h3><a name="Adding_a_new_test"></a>4.7<span style="font-weight: bold;">&nbsp;
+</span>Adding
+a new test</h3>
+<p>
+To add a new test:
+</p>
+<ul>
+  <li>create the test file (e.g. newfunctest.java or newfunctest.sql)
+in the appropriate tests subdirectory</li>
+  <li>list any files needed that are not .sql or .java files in a
+supportfiles entry in a test specific _app.properties file. e.g.
+newfunctest_app.properties:&nbsp; supportfiles=xyz.jar<br>
+  </li>
+  <li>list any specific derby properties in a test specific
+_derby.properties file.</li>
+  <li>add the properties files to the copyfiles.ant file in the test
+specific directory</li>
+  <li>run the test. The first time around, the test will fail because
+no master file will be found. </li>
+  <li>if the output is correct, copy it to the master directory. Note
+that there is no copyfiles.ant file needed for the master directory,
+all .out files are automatically copied.</li>
+  <li>run the test again. Investigate if any differences need to be
+masked out using a test specific sed.properties file (e.g.
+newfunctest_sed.properties). If so, ensure this is added to
+copyfiles.ant.</li>
+  <li>add the test to a specific suites/*.xml file, maintaining proper
+xml syntax. </li>
+  <li>run the suite, and correct any problems found.</li>
+</ul>
+<br>
+<h3><a name="4.8_Suites_and_Adding_a_new_suite"></a>4.8 Suites and
+Adding a new suite</h3>
+<p>
+A suite constitutes of a &lt;suitename&gt;.properties file and/or a
+&lt;suitename&gt;.runall file in the
+org/apache/derbyTesting/functionTests/suites directory. The .properties
+files hold references to other .properties files, or .runall files, the
+.runall files are the actual lists of tests.
+</p>
+<p>
+The lowest level suite always needs to have a .runall file.
+</p>
+<p>
+For example, the derbyall suite is only a derbyall.properties file that
+refers to other suites in the 'suites' property:
+</p>
+<table
+ style="text-align: left; width: 527px; height: 32px; margin-left: 40px;"
+ border="1" cellpadding="2" cellspacing="2">
+  <tbody>
+    <tr>
+      <td style="vertical-align: top;"><small>-----------------------derbyall.properties---------------<br>
+suites=derbylang derbynetmats storeall xa derbytools<br>
+derby.debug.true=enableBtreeConsistencyCheck<br>
+derby.stream.error.logSeverityLevel=0<br>
+      </small></td>
+    </tr>
+  </tbody>
+</table>
+<p>
+The derbylang suite is only a derbylang.runall, which lists the tests.
+The derbynetmats suite has both a .runall and a .properties file, so
+some additional properties can be specified that are true for all tests
+in that suite. </p>
+<table
+ style="text-align: left; width: 521px; height: 32px; margin-left: 40px;"
+ border="1" cellpadding="2" cellspacing="2">
+  <tbody>
+    <tr>
+      <td style="vertical-align: top;"><small>------------------derbynetmats.properties-----------------<br>
+framework=DerbyNet<br>
+suites=derbynetmats<br>
+jdk12test=true<br>
+runwithj9=false<br>
+timeout=60<br>
+      </small></td>
+    </tr>
+  </tbody>
+</table>
+<p>
+To add a suite, you need to create at least a &lt;suite&gt;.runall
+file, which lists the actual tests, or a properties file that refers to
+other suites that do have a .runall file. The suite should be added
+into the directory
+${derby.source}/java/testing/org/apache/derbyTesting/functionTests/suites.<br>
+<br>
+</p>
+<h3><a name="4.9_Running_with_a_new_jvm_"></a> <a name="ov9"></a>4.9
+Running
+with a new jvm<br>
+</h3>
+<p>Currently, the supported jvms are:
+</p>
+<table style="text-align: left; width: 497px; height: 32px;" border="1"
+ cellpadding="2" cellspacing="2">
+  <tbody>
+    <tr>
+      <td style="vertical-align: top;"><small>&nbsp;&nbsp;&nbsp; jdk131
+- Sun
+HotSpot jdk1.3.1 - class: jdk13</small><br>
+      <small>&nbsp;&nbsp;&nbsp; jdk141 - Sun HotSpot jdk1.4.1 - class
+jdk14</small><br>
+      <small>&nbsp;&nbsp;&nbsp; jdk142 - Sun HotSpot jdk1.4.2 - class
+jdk14</small><br>
+      <small>&nbsp;&nbsp;&nbsp; jdk15 - Sun HotSpot jdk1.5 - class jdk15</small><br>
+      <small>&nbsp;&nbsp;&nbsp; ibm131 - IBM Classic jdk1.3.1&nbsp; -
+class ibm13</small><br>
+      <small>&nbsp;&nbsp;&nbsp; ibm141 - IBM Classic jdk1.4.1 - class
+ibm14</small><br>
+      <small>&nbsp;&nbsp;&nbsp; ibm142 - IBM Classic jdk1.4.1 - class
+ibm14</small><br>
+      <small>&nbsp;&nbsp;&nbsp; j9_13 - WCTME jvm (available with IBM
+Websphere Client Technology Micro Edition) - class j9_13<br>
+      </small></td>
+    </tr>
+  </tbody>
+</table>
+<p>The classes above are subclasses of
+org.apache.derbyTesting.functionTests.harness.jvm. The name at the
+front is just a convention.<br>
+</p>
+<p>To run a test with a jvm that does not have a matching class under
+org.apache.derbyTesting.functionTests.harness, do the following:<br>
+</p>
+<ul>
+  <li>just run the tests as if there is a jvm class. The harness will
+default to using
+the jdk14 class. Unlikely, but possibly there are no differences<br>
+  </li>
+  <li>if there are failures showing that cannot be explained any other
+way but genuine, acceptable jvm differences, do the following:</li>
+  <ul>
+    <li>create a subclass of
+org.apache.derbyTesting.functionTests.harness.jvm. In this class,
+specify any jvm specific property settings required </li>
+    <li>compile the new jvm class and run the tests</li>
+    <li>create a new canon directory for any additional canons that
+need to be created.</li>
+    <li>in rare occasions, other harness changes may be required</li>
+    <li>for any tests that should not run with this environment, add a
+line in the testname_app.properties file indicating this. For instance
+to add a line for a jvm called jdk29, it would be like this:
+runwithjdk29=false. Note that the versioning does not currently extend
+past 2 digits.</li>
+    <li>Add code in RunTest.java to switch to the new jvm based on
+values for system and vendor properties</li>
+  </ul>
+</ul>
+<br>
+<h3><a name="skipping"></a>4.10 Skipping a test</h3>
+<p>
+Some tests are written to test specific functionality only available
+with for instance certain jvms, or, with network server, certain
+versions of the IBM Universal Driver. To control this, properties can
+be set for each test, for instance, if a test should not be run when
+using an ibm jvm, set runwithibmjvm=false. If a test should be run with
+Sun Hotspot jvm version 14, then set runwithjdk14=true.<br>
+The skip setting does not go into the subversion level, i.e. setting
+runwithjdk141=false has no effect, and setting runwithjdk14 affects
+runs with jdk141 as well as jdk142.<br>
+Other skip reasons are encryption protocols specific to a certain jvm. <br>
+</p>
+<br>
+<h3><a name="frameworks"></a>4.11 Frameworks</h3>
+<p>
+Currently, the only framework used is DerbyNet for network server. <br>
+Setting framework property setting will invoke the test harness class
+NetServer, which currently has configuration for connecting to DB2 via
+jcc (the IBM Universal Driver), and via the older db2 driver. But there
+are currently no tests to exercise these settings.<br>
+Setting this framework also causes the search for expected output to
+include DerbyNet and jcc version specific subdirectories under master.<br>
+</p>
+<br>
+<h3><a name="props"></a>4.12 Some test harness properties</h3>
+<p>
+For a complete set, refer to comments in RunTest.java, but here are
+some valuable test properties which can be passed to the RunTest class:
+</p>
+<table
+ style="text-align: left; margin-left: 40px; width: 601px; height: 252px;"
+ border="1" cellpadding="2" cellspacing="2">
+  <tbody>
+    <tr>
+      <td style="vertical-align: top;">runwith&lt;jvm&gt;<br>
+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; See above
+section <a href="#skipping">4.10</a><br>
+framework<br>
+&nbsp;&nbsp;&nbsp; specifies which framework to run with. For example:<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; java -Dframework=DerbyNet
+org.apache.derbyTesting.functionTests.RunTest <br>
+lang/supersimple.sql<br>
+verbose<br>
+&nbsp;&nbsp;&nbsp; Shows more detailed output. For example:<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; java -Dverbose=true
+org.apache.derbyTesting.functionTests.RunTest lang/arithmetic.sql<br>
+keepfiles<br>
+&nbsp; &nbsp; Indicates to not clean up any of the files if the test
+passed.<br>
+&nbsp;&nbsp; &nbsp; &nbsp;&nbsp; java -Dkeepfiles=true
+org.apache.derbyTesting.functionTests.RunTest lang/arithmetic.sql<br>
+TestSpecialFlags<br>
+&nbsp;&nbsp;&nbsp; sets additional properties.<br>
+&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; java
+-D=TestSpecialFlags=derby.infolog.append=true
+org.apache.derbyTesting.functionTests.RunTest lang/arithmetic.sql</td>
+    </tr>
+  </tbody>
+</table>
+<br>
+<br>
+<h3><br>
+</h3>
+<br>
+<br>
+<h2>Notes</h2>
+<small><a name="Note1:"></a> Note1:<br>
+</small>
+<div style="margin-left: 40px;"><small>There is one more suite
+included: the j9derbynetmats
+suite is a modification of the derbynetmats suite. It is available to
+test
+the network server with the jvm available with IBM's WCTME (Workplace
+Client Technology, Micro Edition; formerly WSDD), and will be run at IBM</small><small>.
+Note that the setup for running the j9derbynetmats
+tests is very specific to the test harness, not even using the WCTME
+files in their normal location.</small><small> <br>
+The j9derbynetmats suite is included to serve as an
+example of splitting the network server process to run with a different
+jvm than the test client. The j9derbynetmats suite will run with
+another
+jvm
+as client (as defined in the suite properties), but start up
+network server with the 'j9' jvm files (the reference to 'j9' is based
+on the executable, j9.exe), based on the property 'serverJvm'. Running
+this suite requires providing the property&nbsp; bootcp,
+which is&nbsp; interpreted from the test harness class j9_13. See also
+section on adding a new <a href="#ov9%22">jvm setup</a>.
+</small><br>
+</div>
+<br>
+<small><a name="Note2:"></a>Note2:<br>
+</small>
+<div style="margin-left: 40px;"><small>setting
+RetrieveMessagesFromServerOnGetMessage to true
+for the test harness is purely for
+illustration, the test harness actually forces
+RetrieveMessagesFromServerOnGetMessage to true for the tests so the
+output is always as expected.</small><br>
+</div>
+<br>
+<small><a name="Note3:_"></a>Note3: <br>
+</small>
+<div style="margin-left: 40px;"><small>occasionally, cleanup is
+unsuccessful. This does not
+constitute a problem in any way, as the harness starts with a clean
+database, and clean copies of all files. However, you will see
+something like this in the output:</small><br>
+<small>Warning: Cleanup failed on baseDir:
+/local/myrun1/DerbyNet/supersimple</small><br>
+</div>
+<br>
+</body>
+</html>

Modified: incubator/derby/code/trunk/java/testing/build.xml
Url: http://svn.apache.org/viewcvs/incubator/derby/code/trunk/java/testing/build.xml?view=diff&rev=122528&p1=incubator/derby/code/trunk/java/testing/build.xml&r1=122527&p2=incubator/derby/code/trunk/java/testing/build.xml&r2=122528
==============================================================================
--- incubator/derby/code/trunk/java/testing/build.xml	(original)
+++ incubator/derby/code/trunk/java/testing/build.xml	Wed Dec 15 22:20:35 2004
@@ -1,61 +1,61 @@
-<?xml version="1.0"?>
-
-<!-- ==================================================================== -->
-<!--                       Cloudscape build file                          -->
-<!-- ==================================================================== -->
-
-<project default="testing" basedir="../..">
-
-<!-- ==================================================================== -->
-<!--                           Set properties                             -->
-<!-- ==================================================================== -->
-
-  <property name="properties.dir" value="tools/ant/properties"/>
-
-  <!-- User settings -->
-  <property file="${user.home}/ant.properties"/>
-
-  <!-- Significant dirs -->
-  <property file="${properties.dir}/dirs.properties"/>
-  <property file="${properties.dir}/derbytesting.properties"/>
-
-  <!-- Compiler settings -->
-  <property file="${properties.dir}/defaultcompiler.properties"/>
-  <property file="${properties.dir}/${build.compiler}.properties"/>
-
-  <!-- Parser properties -->
-  <property file="${properties.dir}/parser.properties"/>
-
-  <!-- Compile-time classpath properties files -->
-  <property file="${properties.dir}/extrapath.properties"/>
-  <property file="${properties.dir}/compilepath.properties"/>
-  <property file="${user.home}/properties/derbytesting.properties"/>
-  <property file="${ant.home}/properties/derbytesting.properties"/>
-
-  <!-- Release and Version info -->
-  <property file="${properties.dir}/release.properties"/>
-
-<!--             ============ Begin Targets ==============                -->
- 
-  <target name="testing" 
-          description="Build Derby testing files">
-    <ant dir="${derby.testing.src.dir}/${derby.testing.functest.dir}/harness"/> 
-    <ant dir="${derby.testing.src.dir}/${derby.testing.functest.dir}/testData"/> 
-    <ant dir="${derby.testing.src.dir}/${derby.testing.functest.dir}/util"/> 
-    <ant dir="${derby.testing.src.dir}/${derby.testing.functest.dir}/tests/jdbcapi"/> 
-    <ant dir="${derby.testing.src.dir}/${derby.testing.functest.dir}/tests/lang"/> 
-    <ant dir="${derby.testing.src.dir}/${derby.testing.functest.dir}/tests/store"/> 
-    <ant dir="${derby.testing.src.dir}/${derby.testing.functest.dir}/tests/storetests"/> 
-    <ant dir="${derby.testing.src.dir}/${derby.testing.functest.dir}/tests/tools"/> 
-    <ant dir="${derby.testing.src.dir}/${derby.testing.functest.dir}/tests/derbynet"/> 
-    <ant dir="${derby.testing.src.dir}/${derby.testing.functest.dir}/master"/> 
-    <ant dir="${derby.testing.src.dir}/${derby.testing.suites.dir}"/> 
-  </target>
-
-
-<!--             ============= End Targets ==============                -->
-
-<!--             ============= End Project ==============                -->
-
-</project>
-
+<?xml version="1.0"?>
+
+<!-- ==================================================================== -->
+<!--                       Cloudscape build file                          -->
+<!-- ==================================================================== -->
+
+<project default="testing" basedir="../..">
+
+<!-- ==================================================================== -->
+<!--                           Set properties                             -->
+<!-- ==================================================================== -->
+
+  <property name="properties.dir" value="tools/ant/properties"/>
+
+  <!-- User settings -->
+  <property file="${user.home}/ant.properties"/>
+
+  <!-- Significant dirs -->
+  <property file="${properties.dir}/dirs.properties"/>
+  <property file="${properties.dir}/derbytesting.properties"/>
+
+  <!-- Compiler settings -->
+  <property file="${properties.dir}/defaultcompiler.properties"/>
+  <property file="${properties.dir}/${build.compiler}.properties"/>
+
+  <!-- Parser properties -->
+  <property file="${properties.dir}/parser.properties"/>
+
+  <!-- Compile-time classpath properties files -->
+  <property file="${properties.dir}/extrapath.properties"/>
+  <property file="${properties.dir}/compilepath.properties"/>
+  <property file="${user.home}/properties/derbytesting.properties"/>
+  <property file="${ant.home}/properties/derbytesting.properties"/>
+
+  <!-- Release and Version info -->
+  <property file="${properties.dir}/release.properties"/>
+
+<!--             ============ Begin Targets ==============                -->
+ 
+  <target name="testing" 
+          description="Build Derby testing files">
+    <ant dir="${derby.testing.src.dir}/${derby.testing.functest.dir}/harness"/> 
+    <ant dir="${derby.testing.src.dir}/${derby.testing.functest.dir}/testData"/> 
+    <ant dir="${derby.testing.src.dir}/${derby.testing.functest.dir}/util"/> 
+    <ant dir="${derby.testing.src.dir}/${derby.testing.functest.dir}/tests/jdbcapi"/> 
+    <ant dir="${derby.testing.src.dir}/${derby.testing.functest.dir}/tests/lang"/> 
+    <ant dir="${derby.testing.src.dir}/${derby.testing.functest.dir}/tests/store"/> 
+    <ant dir="${derby.testing.src.dir}/${derby.testing.functest.dir}/tests/storetests"/> 
+    <ant dir="${derby.testing.src.dir}/${derby.testing.functest.dir}/tests/tools"/> 
+    <ant dir="${derby.testing.src.dir}/${derby.testing.functest.dir}/tests/derbynet"/> 
+    <ant dir="${derby.testing.src.dir}/${derby.testing.functest.dir}/master"/> 
+    <ant dir="${derby.testing.src.dir}/${derby.testing.suites.dir}"/> 
+  </target>
+
+
+<!--             ============= End Targets ==============                -->
+
+<!--             ============= End Project ==============                -->
+
+</project>
+

Modified: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/BackgroundStreamDrainer.java
Url: http://svn.apache.org/viewcvs/incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/BackgroundStreamDrainer.java?view=diff&rev=122528&p1=incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/BackgroundStreamDrainer.java&r1=122527&p2=incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/BackgroundStreamDrainer.java&r2=122528
==============================================================================
--- incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/BackgroundStreamDrainer.java	(original)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/BackgroundStreamDrainer.java	Wed Dec 15 22:20:35 2004
@@ -1,130 +1,130 @@
-/*
-
-   Derby - Class org.apache.derbyTesting.functionTests.harness.BackgroundStreamDrainer
-
-   Copyright 1998, 2004 The Apache Software Foundation or its licensors, as applicable.
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-   You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
-
- */
-
-package org.apache.derbyTesting.functionTests.harness;
-
-import java.io.*;
-import java.sql.Timestamp;
-
-public class BackgroundStreamDrainer implements Runnable
-{
-
-	protected ByteArrayOutputStream data;
-	protected InputStream in;
-	protected boolean finished;
-	protected IOException ioe;
-	protected long startTime;
-	protected Thread myThread;
-	protected int timeout;
-
-	public BackgroundStreamDrainer(InputStream in, String timemin)
-	{
-		data = new ByteArrayOutputStream();
-		this.in = in;
-        this.startTime = System.currentTimeMillis();;
-        if (timemin != null)
-        {
-            Integer i = new Integer(timemin);
-            timeout = i.intValue();
-        }
-        else
-            timeout = 0;
-        //System.out.println("timeout set to: " + timeout);
-
-		myThread = new Thread(this, getClass().getName());
-		myThread.setPriority(Thread.MIN_PRIORITY);
-		myThread.start();
-	}
-
-	public void run()
-	{
-        if ( in == null )
-        {
-            System.out.println("The inputstream is null");
-            System.exit(1);
-        }
-
-		try
-		{
-			byte[] ca = new byte[1024];
-			int valid;
-			while ((valid = in.read(ca, 0, ca.length)) != -1)
-			{
-                if (timeout > 0)
-			    {
-					long millis = System.currentTimeMillis();
-
-					long diff = millis - startTime;
-
-					int mins = (int) (diff / (1000 * 60));
-
-					if (mins > timeout) {
-
-						System.out.println("kill stderr thread...");
-						synchronized (this)
-						{
-							finished = true;
-							break;
-						}
-					}
-			    }
-			    //System.out.println("Bytes read to write data: " + valid);
-				data.write(ca, 0, valid);
-			}
-		}
-		catch (IOException ioe)
-		{
-			this.ioe = ioe;
-			System.out.println(ioe.getMessage());
-		}
-
-		synchronized (this)
-		{
-			finished = true;
-			notifyAll();
-		}
-	}
-
-	public InputStream getData() throws IOException
-	{
-	    // FIXME: On Netware, the last read throws an IOException,
-	    // which prevents the test output from getting written
-		//if (ioe != null)
-		//{
-			//throw ioe;
-        //}
-
-		synchronized (this)
-		{
-			try
-			{
-				while (!finished)
-				{
-					wait();
-				}
-			} catch (InterruptedException ie)
-			{
-			    System.out.println("IOException: " + ie);
-				throw new IOException(ie.toString());
-			}
-		}
-		return new ByteArrayInputStream(data.toByteArray());
-	}
-}
+/*
+
+   Derby - Class org.apache.derbyTesting.functionTests.harness.BackgroundStreamDrainer
+
+   Copyright 1998, 2004 The Apache Software Foundation or its licensors, as applicable.
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+ */
+
+package org.apache.derbyTesting.functionTests.harness;
+
+import java.io.*;
+import java.sql.Timestamp;
+
+public class BackgroundStreamDrainer implements Runnable
+{
+
+	protected ByteArrayOutputStream data;
+	protected InputStream in;
+	protected boolean finished;
+	protected IOException ioe;
+	protected long startTime;
+	protected Thread myThread;
+	protected int timeout;
+
+	public BackgroundStreamDrainer(InputStream in, String timemin)
+	{
+		data = new ByteArrayOutputStream();
+		this.in = in;
+        this.startTime = System.currentTimeMillis();;
+        if (timemin != null)
+        {
+            Integer i = new Integer(timemin);
+            timeout = i.intValue();
+        }
+        else
+            timeout = 0;
+        //System.out.println("timeout set to: " + timeout);
+
+		myThread = new Thread(this, getClass().getName());
+		myThread.setPriority(Thread.MIN_PRIORITY);
+		myThread.start();
+	}
+
+	public void run()
+	{
+        if ( in == null )
+        {
+            System.out.println("The inputstream is null");
+            System.exit(1);
+        }
+
+		try
+		{
+			byte[] ca = new byte[1024];
+			int valid;
+			while ((valid = in.read(ca, 0, ca.length)) != -1)
+			{
+                if (timeout > 0)
+			    {
+					long millis = System.currentTimeMillis();
+
+					long diff = millis - startTime;
+
+					int mins = (int) (diff / (1000 * 60));
+
+					if (mins > timeout) {
+
+						System.out.println("kill stderr thread...");
+						synchronized (this)
+						{
+							finished = true;
+							break;
+						}
+					}
+			    }
+			    //System.out.println("Bytes read to write data: " + valid);
+				data.write(ca, 0, valid);
+			}
+		}
+		catch (IOException ioe)
+		{
+			this.ioe = ioe;
+			System.out.println(ioe.getMessage());
+		}
+
+		synchronized (this)
+		{
+			finished = true;
+			notifyAll();
+		}
+	}
+
+	public InputStream getData() throws IOException
+	{
+	    // FIXME: On Netware, the last read throws an IOException,
+	    // which prevents the test output from getting written
+		//if (ioe != null)
+		//{
+			//throw ioe;
+        //}
+
+		synchronized (this)
+		{
+			try
+			{
+				while (!finished)
+				{
+					wait();
+				}
+			} catch (InterruptedException ie)
+			{
+			    System.out.println("IOException: " + ie);
+				throw new IOException(ie.toString());
+			}
+		}
+		return new ByteArrayInputStream(data.toByteArray());
+	}
+}

Modified: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/BackgroundStreamSaver.java
Url: http://svn.apache.org/viewcvs/incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/BackgroundStreamSaver.java?view=diff&rev=122528&p1=incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/BackgroundStreamSaver.java&r1=122527&p2=incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/BackgroundStreamSaver.java&r2=122528
==============================================================================
--- incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/BackgroundStreamSaver.java	(original)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/BackgroundStreamSaver.java	Wed Dec 15 22:20:35 2004
@@ -1,87 +1,87 @@
-/*
-
-   Derby - Class org.apache.derbyTesting.functionTests.harness.BackgroundStreamSaver
-
-   Copyright 1998, 2004 The Apache Software Foundation or its licensors, as applicable.
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-   You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
-
- */
-
-package org.apache.derbyTesting.functionTests.harness;
-
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.io.IOException;
-
-public class BackgroundStreamSaver implements Runnable {
- 
-	protected InputStream in;
-	protected OutputStream out;
-	protected boolean finished;
-	protected IOException ioe;
-
-	public BackgroundStreamSaver(InputStream in, OutputStream out) 
-	{
-		this.in = in;
-		this.out = out;
-		
-		Thread myThread = new Thread(this, getClass().getName());
-		myThread.setPriority(Thread.MIN_PRIORITY);
-		myThread.start();
-	}
-
-	public void run() 
-	{
-		try 
-		{
-			byte[] ca = new byte[1024];
-			int valid;
-			while ((valid = in.read(ca, 0, ca.length)) != -1) 
-			{
-				out.write(ca, 0, valid);
-			}
-			out.flush();
-		} catch (IOException ioe) 
-		{
-			this.ioe = ioe;
-		}
-
-		synchronized (this) 
-		{
-			finished = true;
-			notifyAll();
-		}
-	}
-
-	public void finish() throws IOException 
-	{
-		if (ioe != null)
-			throw ioe;
-
-		synchronized (this) 
-		{
-			try 
-			{
-				while (!finished) 
-				{
-					wait();
-				}
-			} catch (InterruptedException ie) 
-			{
-				throw new IOException(ie.toString());
-			}
-			//out.close();
-		}
-	}
-}
+/*
+
+   Derby - Class org.apache.derbyTesting.functionTests.harness.BackgroundStreamSaver
+
+   Copyright 1998, 2004 The Apache Software Foundation or its licensors, as applicable.
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+ */
+
+package org.apache.derbyTesting.functionTests.harness;
+
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.io.IOException;
+
+public class BackgroundStreamSaver implements Runnable {
+ 
+	protected InputStream in;
+	protected OutputStream out;
+	protected boolean finished;
+	protected IOException ioe;
+
+	public BackgroundStreamSaver(InputStream in, OutputStream out) 
+	{
+		this.in = in;
+		this.out = out;
+		
+		Thread myThread = new Thread(this, getClass().getName());
+		myThread.setPriority(Thread.MIN_PRIORITY);
+		myThread.start();
+	}
+
+	public void run() 
+	{
+		try 
+		{
+			byte[] ca = new byte[1024];
+			int valid;
+			while ((valid = in.read(ca, 0, ca.length)) != -1) 
+			{
+				out.write(ca, 0, valid);
+			}
+			out.flush();
+		} catch (IOException ioe) 
+		{
+			this.ioe = ioe;
+		}
+
+		synchronized (this) 
+		{
+			finished = true;
+			notifyAll();
+		}
+	}
+
+	public void finish() throws IOException 
+	{
+		if (ioe != null)
+			throw ioe;
+
+		synchronized (this) 
+		{
+			try 
+			{
+				while (!finished) 
+				{
+					wait();
+				}
+			} catch (InterruptedException ie) 
+			{
+				throw new IOException(ie.toString());
+			}
+			//out.close();
+		}
+	}
+}

Modified: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/CopySuppFiles.java
Url: http://svn.apache.org/viewcvs/incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/CopySuppFiles.java?view=diff&rev=122528&p1=incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/CopySuppFiles.java&r1=122527&p2=incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/CopySuppFiles.java&r2=122528
==============================================================================
--- incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/CopySuppFiles.java	(original)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/CopySuppFiles.java	Wed Dec 15 22:20:35 2004
@@ -1,82 +1,82 @@
-/*
-
-   Derby - Class org.apache.derbyTesting.functionTests.harness.CopySuppFiles
-
-   Copyright 1999, 2004 The Apache Software Foundation or its licensors, as applicable.
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-   You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
-
- */
-
-package org.apache.derbyTesting.functionTests.harness;
-
-import java.io.*;
-import java.util.StringTokenizer;
-
-/**
-  For tests which require support files.
-  Copy them to the output directory for the test.
-  */
-public class CopySuppFiles
-{
-
-	public static void main(String[] args) throws Exception
-	{
-	}
-
-	public static void copyFiles(File outDir, String suppFiles)
-	    throws ClassNotFoundException, IOException
-	{
-	    // suppFiles is a comma separated list of the files
-	    StringTokenizer st = new StringTokenizer(suppFiles,",");
-	    String scriptName = ""; // example: test/math.sql
-	    InputStream is = null; // To be used for each support file
-        while (st.hasMoreTokens())
-        {
-            scriptName = st.nextToken();
-    	    File suppFile = null;
-    	    String fileName = "";
-    	    // Try to locate the file
-            is = RunTest.loadTestResource(scriptName); 
-    		if ( is == null )
-    			System.out.println("Could not locate: " + scriptName);
-    		else
-    		{
-    		    // Copy the support file so the test can use it
-    			int index = scriptName.lastIndexOf('/');
-    			fileName = scriptName.substring(index+1);
- //   			suppFile = new File((new File(outDir, fileName)).getCanonicalPath());
-
-		//these calls to getCanonicalPath catch IOExceptions as a workaround to
-		//a bug in the EPOC jvm. 
-    		try {suppFile = new File((new File(outDir, fileName)).getCanonicalPath());}
-		catch (IOException e) {
-		    File f = new File(outDir, fileName);
-		    FileWriter fw = new FileWriter(f);
-		    fw.close();
-		    suppFile = new File(f.getCanonicalPath());
-		}
-
-
-    			FileOutputStream fos = new FileOutputStream(suppFile);
-                byte[] data = new byte[4096];
-                int len;
-    			while ((len = is.read(data)) != -1)
-    			{
-    			    fos.write(data, 0, len);
-    			}
-    			fos.close();
-			}
-        }
-	}
-}
+/*
+
+   Derby - Class org.apache.derbyTesting.functionTests.harness.CopySuppFiles
+
+   Copyright 1999, 2004 The Apache Software Foundation or its licensors, as applicable.
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+ */
+
+package org.apache.derbyTesting.functionTests.harness;
+
+import java.io.*;
+import java.util.StringTokenizer;
+
+/**
+  For tests which require support files.
+  Copy them to the output directory for the test.
+  */
+public class CopySuppFiles
+{
+
+	public static void main(String[] args) throws Exception
+	{
+	}
+
+	public static void copyFiles(File outDir, String suppFiles)
+	    throws ClassNotFoundException, IOException
+	{
+	    // suppFiles is a comma separated list of the files
+	    StringTokenizer st = new StringTokenizer(suppFiles,",");
+	    String scriptName = ""; // example: test/math.sql
+	    InputStream is = null; // To be used for each support file
+        while (st.hasMoreTokens())
+        {
+            scriptName = st.nextToken();
+    	    File suppFile = null;
+    	    String fileName = "";
+    	    // Try to locate the file
+            is = RunTest.loadTestResource(scriptName); 
+    		if ( is == null )
+    			System.out.println("Could not locate: " + scriptName);
+    		else
+    		{
+    		    // Copy the support file so the test can use it
+    			int index = scriptName.lastIndexOf('/');
+    			fileName = scriptName.substring(index+1);
+ //   			suppFile = new File((new File(outDir, fileName)).getCanonicalPath());
+
+		//these calls to getCanonicalPath catch IOExceptions as a workaround to
+		//a bug in the EPOC jvm. 
+    		try {suppFile = new File((new File(outDir, fileName)).getCanonicalPath());}
+		catch (IOException e) {
+		    File f = new File(outDir, fileName);
+		    FileWriter fw = new FileWriter(f);
+		    fw.close();
+		    suppFile = new File(f.getCanonicalPath());
+		}
+
+
+    			FileOutputStream fos = new FileOutputStream(suppFile);
+                byte[] data = new byte[4096];
+                int len;
+    			while ((len = is.read(data)) != -1)
+    			{
+    			    fos.write(data, 0, len);
+    			}
+    			fos.close();
+			}
+        }
+	}
+}

Modified: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/CurrentTime.java
Url: http://svn.apache.org/viewcvs/incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/CurrentTime.java?view=diff&rev=122528&p1=incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/CurrentTime.java&r1=122527&p2=incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/CurrentTime.java&r2=122528
==============================================================================
--- incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/CurrentTime.java	(original)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/CurrentTime.java	Wed Dec 15 22:20:35 2004
@@ -1,45 +1,45 @@
-/*
-
-   Derby - Class org.apache.derbyTesting.functionTests.harness.CurrentTime
-
-   Copyright 1999, 2004 The Apache Software Foundation or its licensors, as applicable.
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-   You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
-
- */
-
-package org.apache.derbyTesting.functionTests.harness;
-
-import java.sql.Timestamp;
-import java.lang.String;
-
-/**
-  Return the current system time as a String
-  Used to print a timestamp for suite/test runs
-*/
-public class CurrentTime
-{
-
-	public static String getTime()
-	{
-        // Get the current time and convert to a String
-        long millis = System.currentTimeMillis();
-        Timestamp ts = new Timestamp(millis);
-        String s = ts.toString();
-        s = s.substring(0, s.lastIndexOf("."));
-        return s;
-	}
-
-	// no instances permitted.
-	private CurrentTime() {}
-}
+/*
+
+   Derby - Class org.apache.derbyTesting.functionTests.harness.CurrentTime
+
+   Copyright 1999, 2004 The Apache Software Foundation or its licensors, as applicable.
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+ */
+
+package org.apache.derbyTesting.functionTests.harness;
+
+import java.sql.Timestamp;
+import java.lang.String;
+
+/**
+  Return the current system time as a String
+  Used to print a timestamp for suite/test runs
+*/
+public class CurrentTime
+{
+
+	public static String getTime()
+	{
+        // Get the current time and convert to a String
+        long millis = System.currentTimeMillis();
+        Timestamp ts = new Timestamp(millis);
+        String s = ts.toString();
+        s = s.substring(0, s.lastIndexOf("."));
+        return s;
+	}
+
+	// no instances permitted.
+	private CurrentTime() {}
+}

Modified: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/FileCompare.java
Url: http://svn.apache.org/viewcvs/incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/FileCompare.java?view=diff&rev=122528&p1=incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/FileCompare.java&r1=122527&p2=incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/FileCompare.java&r2=122528
==============================================================================
--- incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/FileCompare.java	(original)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/FileCompare.java	Wed Dec 15 22:20:35 2004
@@ -1,432 +1,432 @@
-/*
-
-   Derby - Class org.apache.derbyTesting.functionTests.harness.FileCompare
-
-   Copyright 1999, 2004 The Apache Software Foundation or its licensors, as applicable.
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-   You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
-
- */
-
-package org.apache.derbyTesting.functionTests.harness;
-
-/***
- * FileCompare.java
- *
- * Compare two files using SimpleDiff
- * Purpose: simulate diff
- * Note: if usesysdiff=true, we execute the system's diff
- ***/
-
-import java.io.*;
-import java.lang.reflect.*;
-import java.util.StringTokenizer;
-import java.util.Properties;
-
-public class FileCompare
-{
-
-    private String testBase;
-    private String framework;
-    private String jvmName;
-    private String jvmString;
-    private String serverJvm;
-    private int iminor;
-    private boolean searchJdk12 = false;
-    private boolean searchJdk13 = false;
-    private boolean searchJdk14 = false;
-    private int jccMajor = 0;
-    private int jccMinor = 0;
-    private boolean searchFrame;
-    private boolean searchJCC;
-    private InputStream master = null;
-    private boolean verbose;
-    
-    public FileCompare()
-    {
-      verbose = Boolean.getBoolean("verbose");
-    }
-
-    // The arguments should be the names of the input and output files
-    public boolean exec(String outfile, File outDir, PrintWriter pwDiff,
-        String testBaseOrig, String framework, String jvmName,
-        int iminor, boolean useprocess, boolean usesysdiff, 
-        String canondir, String canonpath, String serverJvm)
-        throws IOException, ClassNotFoundException
-    {
-        testBase = testBaseOrig;
-        this.framework = framework;
-        this.jvmName = jvmName;
-        this.iminor = iminor;
-        this.jvmString = jvmName;
-        this.serverJvm = serverJvm;
-
-        BufferedReader outFile;
-        BufferedReader masterFile;
-        StringBuffer sb = new StringBuffer();
- 
-        // If framework is DerbyNet, we may need to check subdirs of the master canon dir
-        // for specific masters by version of JCC we're running against. So, get JCC version
-        // for later use if that is the case.
-        if (framework.equals("DerbyNet"))
-        {
-	  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();
-            if (framework.equals("DerbyNet")) searchJCC = true;
-	  } catch ( Exception e )
-	  {
-	    //if anything goes wrong, make sure the JCC version values are set to zero
-	    //forget about it.
-	   jccMinor = 0;
-	   jccMajor = 0;
-           searchJCC = false;
- 	  }
-        }
-        
-
-        // The outfile name is known -- outfile
-        // But the master canon needs to be located
-        // The user can set canondir (or it defaults to "master")
-        String topdir = "";
-        if ( (canondir != null) && (canondir.length()>0) )
-            topdir = canondir;
-        else {
-			// if this is using product jars, use product_master first
-			Class c = FileCompare.class; // get our class loader
-			InputStream is = c.getResourceAsStream("/org/apache/derby/info/DBMS.properties");
-			Properties dbprop = new Properties();
-			dbprop.load(is);
-			is.close();
-
-			String filename=dbprop.getProperty("derby.product.file");
-			if (filename != null) {
-				//looks like it might be one of our jars?
-				if (filename.startsWith("derby") && filename.endsWith(".jar")) {
-					canondir = "product_master"; // remember redirection
-                    topdir = "product_master";
-				}
-				else
-                    topdir = "master";
-			}
-			else
-                topdir = "master";
-		}
-
-        // There can be subdirs under the master for framework, jvm
-        String subdir = "";
-        boolean searchDefault = true; // if no framework or special jvm
-        boolean searchBoth = false;
-        boolean searchJvm = false;
-        if ( (framework != null) && (framework.length()>0) )
-        {
-            searchFrame = true;
-            subdir = framework;
-        }
-        if ( (jvmName != null) && (jvmName.length()>0)
-                & (!jvmName.equals("currentjvm")) )
-        {
-            searchJvm = true;
-            if (searchFrame)
-                searchBoth = true;
-            if ( iminor >= 2 ) // jdk12 or higher may use jdk12 masters
-                jvmString = "jdk12";
-	    if ( iminor >= 2 ) searchJdk12 = true;
-            if ( iminor >= 3 ) searchJdk13 = true;
-            if ( iminor >= 4 ) searchJdk14 = true;
-            subdir += jvmName;
-        }
-
-        if ( searchFrame || searchJvm || searchBoth )
-            searchDefault = false;
-       
-        sb.append(topdir);
-        if (subdir.length()>0)
-            sb.append(subdir + '/');
-        sb.append(testBase + ".out");
-        String masterfilename = sb.toString();
-	
-	InputStream is = null;
-        
-        // Now try to locate the master file
-	
-        if (is == null)
-	{
-	  searchCanondir(topdir);
-	  is = master;
-	}
-                
-        // If the master is still not found, print an error and return
-        if ( is == null )
-        {
-            System.out.println("No master file was found.");
-            pwDiff.println("No master file was found.");
-            pwDiff.flush();
-            return true;
-        }
-		// compress blanks in output columns to make up for column width differences
-		// for JCC output
-		if (NetServer.isJCCConnection(framework))
-		{
-            try
-            {
-		        Sed sed = new Sed();
-				File JCCOutFile = new File(outDir, testBase + ".tmpmstr");
-		        sed.execJCC(is, JCCOutFile);
-				is = new FileInputStream(JCCOutFile);
-		    }
-		    catch (ClassFormatError cfe)
-		    {
-		        System.out.println("SED Error: " + cfe.getMessage());
-		    }
-		}
-        
-        // Define the input and output files
-        outFile = new BufferedReader(new FileReader(outfile));
-        masterFile = new BufferedReader(new InputStreamReader(is));
-        
-        // Do the comparison (diff)
-        if (usesysdiff == true)
-            return doSysDiff(is, testBase, outfile, outDir, pwDiff);
-        else
-        {
-            return doDiff2(outFile,masterFile, pwDiff);
-        }
-    }
-
-    public boolean doDiff2(BufferedReader outFile, BufferedReader masterFile, PrintWriter pwDiff) throws IOException {
-		return ((new SimpleDiff()).doWork(masterFile,outFile,pwDiff));
-    }
-
-    public boolean doSysDiff(InputStream masterIS, String testBase, String outfile,
-        File outDir, PrintWriter pwDiff)
-        throws IOException
-    {
-        // Create a temp file to copy the master (located as an InputStream)
-        BufferedReader in =
-            new BufferedReader(new InputStreamReader(masterIS));
-        File tempMaster =
-            new File((new File(outDir,testBase + ".master")).getCanonicalPath());
-
-        // Create a PrintWriter for copying the master temporarily for the diff
-        PrintWriter pwMaster = new PrintWriter( new BufferedWriter
-            (new FileWriter(tempMaster.getPath()), 10000), true );
-        String str = "";
-        while ( (str = in.readLine()) != null )
-        {
-            pwMaster.println(str);
-        }
-        pwMaster.close();
-        pwMaster = null;
-        in = null;
-
-        String diffs = "0";
-        // Now create a process and do the system diff, capture to .out
-        Process pr = null;
-        try
-        {
-            StringBuffer sb = new StringBuffer();
-            sb.append("diff ");
-            sb.append(tempMaster.getCanonicalPath());
-            sb.append(" ");
-            sb.append(outfile);
-            String diffCmd = sb.toString();
-
-            //System.out.println("diffCmd = " + diffCmd);
-
-            pr = Runtime.getRuntime().exec(diffCmd);
-
-            // We need the process inputstream to capture into the diff file
-            //System.out.println("Capture the process InputStream...");
-            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(), pwDiff);
-            diffs = result.substring( result.lastIndexOf(',')+1 );
-            //System.out.println("diffs: " + diffs);
-            pr.destroy();
-            pr = null;
-        }
-        catch(Throwable t)
-        {
-            System.out.println("Process exception: " + t);
-            if (pr != null)
-            {
-                pr.destroy();
-                pr = null;
-            }
-        }
-        tempMaster.delete();
-        if ( diffs.equals("0") )
-            return false;
-        else
-            return true;
-    }
-
-    public boolean doDiff(BufferedReader outFile, BufferedReader masterFile, PrintWriter pwDiff) throws IOException {
-        String str1;
-        String str2;
-        boolean diff = false;
-
-        int line = 0;
-        int diffnum = 0;
-        int diffline = 0;
-        while ( (str1 = outFile.readLine()) != null )
-        {
-            line++;
-            str1 = str1.trim();
-            //System.out.println("Reading line: " + line);
-            // Read the line from the master file and compare
-            if ( (str2 = masterFile.readLine()) != null )
-            {
-                str2 = str2.trim();
-                if (!str1.equals(str2))
-                {
-                    // Some lines diff because of too many spaces
-                    StringBuffer sb1 = new StringBuffer();
-                    StringBuffer sb2 = new StringBuffer();
-                    StringTokenizer st1 = new StringTokenizer(str1);
-                    while (st1.hasMoreTokens())
-                    {
-                        sb1.append(st1.nextToken());
-                    }
-                    //System.out.println("Out line: " + sb1.toString());
-
-                    StringTokenizer st2 = new StringTokenizer(str2);
-                    while (st2.hasMoreTokens())
-                    {
-                        sb2.append(st2.nextToken());
-                    }
-                    //System.out.println("Master line: " + sb2.toString());
-
-                    if ( sb1.toString().equals(sb2.toString()) )
-                        diff = false;
-                    // If the two lines are dashes, but wrong #, just ignore
-                    else if ( (str1.startsWith("-----")) && (str1.endsWith("-----")) )
-                    {
-                        if ( (str2.startsWith("-----")) && (str2.endsWith("-----")) )
-                            diff = false;
-                    }
-                    else
-                    {
-                        diff = true;
-                        diffnum++;
-                        System.out.println("Diff occurred at line: " + line);
-                        pwDiff.println("Diff occurred  at line: " + line);
-                        pwDiff.flush();
-                        break;
-                    }
-                }
-                else
-                {
-                    diff = false;
-                }
-            }
-        } // end while
-        outFile.close();
-        masterFile.close();
-        return diff;
-    }// end exec
-
-    private void searchCanondir(String canondir)
-    {
-	String prefix = canondir + '/';
-	if (master == null && searchFrame) searchFramework(prefix);
-        if (master == null) searchJvm(prefix);
-	if (master == null && searchJCC) searchJCCVersion(prefix);
-	if (master == null) getmaster(prefix);
-	if (master == null && canondir != "master") searchCanondir("master");
-    }
-
-    private void searchJvm(String prefix)
-    {
-	// The JVM search follows the following pattern, with one exception:
-	// first search jvmName (to support unnamed/non-IBM or Sun JVMs)
-	// if vendor == IBM, search ibm+rev then jdk+rev, decrementing rev by one until rev=13,
-	// in each dir, search framework and jcc version if applicable.
-	// BUT, if it's j9, search j9_foundation then j9_13 if j9_foundation, or j9_13 for j9_13, then 	       // the normal ibm13 search pattern: ibm13 then jdk13.
-
-	String newprefix;
-	if (jvmName.startsWith("j9") || (serverJvm != null && serverJvm.startsWith("j9")))
-	{
-	    if (jvmName.startsWith("j9_foundation"))
-            {
-                newprefix = prefix + "j9_foundation" + '/';
-		if (master == null && searchJCC) searchJCCVersion(newprefix);
-		if (master == null) getmaster(newprefix);
-            }
-            newprefix = prefix + "j9_13" + '/';
-	    if (master == null && searchJCC) searchJCCVersion(newprefix);
-	    if (master == null) getmaster(newprefix);
-	    
-	}
-	for (int i = iminor; i >= 2; i--)
-	{
-	    if (jvmName.startsWith("ibm"))
-            {
-		newprefix = prefix + "ibm1" + i + '/';
-		if (master == null && searchJCC) searchJCCVersion(newprefix);
-		if (master == null) getmaster(newprefix);
-	    }
-	    newprefix = prefix + "jdk1" + i + '/';
-	    if (master == null && searchJCC) searchJCCVersion(newprefix);
-	    if (master == null) getmaster(newprefix);
-        } 
-    }
-
-    private void searchFramework(String prefix)
-    {
-        String newprefix;
-	newprefix = prefix + framework + '/';
-	if (master == null) searchJvm(newprefix);
-	if (master == null && searchJCC) searchJCCVersion(newprefix);
-	if (master == null) getmaster(newprefix);
-    }
-
-    private void searchJCCVersion(String prefix)
-    {
-	// It is not sufficient to simply search the current JCC version. 
-	// We must search down through the JCC versions to find the newest applicable master. 
-        
-	String newprefix;
-	
-	for (int j = ((jccMajor * 10) + jccMinor); j >= 10; j--)
-	{
-            newprefix = prefix + "jcc" + j / 10 + "." + j % 10 + '/';
-	    if (master == null) getmaster(newprefix); 
-        }
-    }
-
-    private void getmaster(String prefix)
-    {
-        String fullname = prefix + testBase + ".out";
-        master = RunTest.loadTestResource(fullname);
-        if (master != null)
-            if (verbose) System.out.println("MasterFileName = "+fullname);
-    }
-}
+/*
+
+   Derby - Class org.apache.derbyTesting.functionTests.harness.FileCompare
+
+   Copyright 1999, 2004 The Apache Software Foundation or its licensors, as applicable.
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+ */
+
+package org.apache.derbyTesting.functionTests.harness;
+
+/***
+ * FileCompare.java
+ *
+ * Compare two files using SimpleDiff
+ * Purpose: simulate diff
+ * Note: if usesysdiff=true, we execute the system's diff
+ ***/
+
+import java.io.*;
+import java.lang.reflect.*;
+import java.util.StringTokenizer;
+import java.util.Properties;
+
+public class FileCompare
+{
+
+    private String testBase;
+    private String framework;
+    private String jvmName;
+    private String jvmString;
+    private String serverJvm;
+    private int iminor;
+    private boolean searchJdk12 = false;
+    private boolean searchJdk13 = false;
+    private boolean searchJdk14 = false;
+    private int jccMajor = 0;
+    private int jccMinor = 0;
+    private boolean searchFrame;
+    private boolean searchJCC;
+    private InputStream master = null;
+    private boolean verbose;
+    
+    public FileCompare()
+    {
+      verbose = Boolean.getBoolean("verbose");
+    }
+
+    // The arguments should be the names of the input and output files
+    public boolean exec(String outfile, File outDir, PrintWriter pwDiff,
+        String testBaseOrig, String framework, String jvmName,
+        int iminor, boolean useprocess, boolean usesysdiff, 
+        String canondir, String canonpath, String serverJvm)
+        throws IOException, ClassNotFoundException
+    {
+        testBase = testBaseOrig;
+        this.framework = framework;
+        this.jvmName = jvmName;
+        this.iminor = iminor;
+        this.jvmString = jvmName;
+        this.serverJvm = serverJvm;
+
+        BufferedReader outFile;
+        BufferedReader masterFile;
+        StringBuffer sb = new StringBuffer();
+ 
+        // If framework is DerbyNet, we may need to check subdirs of the master canon dir
+        // for specific masters by version of JCC we're running against. So, get JCC version
+        // for later use if that is the case.
+        if (framework.equals("DerbyNet"))
+        {
+	  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();
+            if (framework.equals("DerbyNet")) searchJCC = true;
+	  } catch ( Exception e )
+	  {
+	    //if anything goes wrong, make sure the JCC version values are set to zero
+	    //forget about it.
+	   jccMinor = 0;
+	   jccMajor = 0;
+           searchJCC = false;
+ 	  }
+        }
+        
+
+        // The outfile name is known -- outfile
+        // But the master canon needs to be located
+        // The user can set canondir (or it defaults to "master")
+        String topdir = "";
+        if ( (canondir != null) && (canondir.length()>0) )
+            topdir = canondir;
+        else {
+			// if this is using product jars, use product_master first
+			Class c = FileCompare.class; // get our class loader
+			InputStream is = c.getResourceAsStream("/org/apache/derby/info/DBMS.properties");
+			Properties dbprop = new Properties();
+			dbprop.load(is);
+			is.close();
+
+			String filename=dbprop.getProperty("derby.product.file");
+			if (filename != null) {
+				//looks like it might be one of our jars?
+				if (filename.startsWith("derby") && filename.endsWith(".jar")) {
+					canondir = "product_master"; // remember redirection
+                    topdir = "product_master";
+				}
+				else
+                    topdir = "master";
+			}
+			else
+                topdir = "master";
+		}
+
+        // There can be subdirs under the master for framework, jvm
+        String subdir = "";
+        boolean searchDefault = true; // if no framework or special jvm
+        boolean searchBoth = false;
+        boolean searchJvm = false;
+        if ( (framework != null) && (framework.length()>0) )
+        {
+            searchFrame = true;
+            subdir = framework;
+        }
+        if ( (jvmName != null) && (jvmName.length()>0)
+                & (!jvmName.equals("currentjvm")) )
+        {
+            searchJvm = true;
+            if (searchFrame)
+                searchBoth = true;
+            if ( iminor >= 2 ) // jdk12 or higher may use jdk12 masters
+                jvmString = "jdk12";
+	    if ( iminor >= 2 ) searchJdk12 = true;
+            if ( iminor >= 3 ) searchJdk13 = true;
+            if ( iminor >= 4 ) searchJdk14 = true;
+            subdir += jvmName;
+        }
+
+        if ( searchFrame || searchJvm || searchBoth )
+            searchDefault = false;
+       
+        sb.append(topdir);
+        if (subdir.length()>0)
+            sb.append(subdir + '/');
+        sb.append(testBase + ".out");
+        String masterfilename = sb.toString();
+	
+	InputStream is = null;
+        
+        // Now try to locate the master file
+	
+        if (is == null)
+	{
+	  searchCanondir(topdir);
+	  is = master;
+	}
+                
+        // If the master is still not found, print an error and return
+        if ( is == null )
+        {
+            System.out.println("No master file was found.");
+            pwDiff.println("No master file was found.");
+            pwDiff.flush();
+            return true;
+        }
+		// compress blanks in output columns to make up for column width differences
+		// for JCC output
+		if (NetServer.isJCCConnection(framework))
+		{
+            try
+            {
+		        Sed sed = new Sed();
+				File JCCOutFile = new File(outDir, testBase + ".tmpmstr");
+		        sed.execJCC(is, JCCOutFile);
+				is = new FileInputStream(JCCOutFile);
+		    }
+		    catch (ClassFormatError cfe)
+		    {
+		        System.out.println("SED Error: " + cfe.getMessage());
+		    }
+		}
+        
+        // Define the input and output files
+        outFile = new BufferedReader(new FileReader(outfile));
+        masterFile = new BufferedReader(new InputStreamReader(is));
+        
+        // Do the comparison (diff)
+        if (usesysdiff == true)
+            return doSysDiff(is, testBase, outfile, outDir, pwDiff);
+        else
+        {
+            return doDiff2(outFile,masterFile, pwDiff);
+        }
+    }
+
+    public boolean doDiff2(BufferedReader outFile, BufferedReader masterFile, PrintWriter pwDiff) throws IOException {
+		return ((new SimpleDiff()).doWork(masterFile,outFile,pwDiff));
+    }
+
+    public boolean doSysDiff(InputStream masterIS, String testBase, String outfile,
+        File outDir, PrintWriter pwDiff)
+        throws IOException
+    {
+        // Create a temp file to copy the master (located as an InputStream)
+        BufferedReader in =
+            new BufferedReader(new InputStreamReader(masterIS));
+        File tempMaster =
+            new File((new File(outDir,testBase + ".master")).getCanonicalPath());
+
+        // Create a PrintWriter for copying the master temporarily for the diff
+        PrintWriter pwMaster = new PrintWriter( new BufferedWriter
+            (new FileWriter(tempMaster.getPath()), 10000), true );
+        String str = "";
+        while ( (str = in.readLine()) != null )
+        {
+            pwMaster.println(str);
+        }
+        pwMaster.close();
+        pwMaster = null;
+        in = null;
+
+        String diffs = "0";
+        // Now create a process and do the system diff, capture to .out
+        Process pr = null;
+        try
+        {
+            StringBuffer sb = new StringBuffer();
+            sb.append("diff ");
+            sb.append(tempMaster.getCanonicalPath());
+            sb.append(" ");
+            sb.append(outfile);
+            String diffCmd = sb.toString();
+
+            //System.out.println("diffCmd = " + diffCmd);
+
+            pr = Runtime.getRuntime().exec(diffCmd);
+
+            // We need the process inputstream to capture into the diff file
+            //System.out.println("Capture the process InputStream...");
+            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(), pwDiff);
+            diffs = result.substring( result.lastIndexOf(',')+1 );
+            //System.out.println("diffs: " + diffs);
+            pr.destroy();
+            pr = null;
+        }
+        catch(Throwable t)
+        {
+            System.out.println("Process exception: " + t);
+            if (pr != null)
+            {
+                pr.destroy();
+                pr = null;
+            }
+        }
+        tempMaster.delete();
+        if ( diffs.equals("0") )
+            return false;
+        else
+            return true;
+    }
+
+    public boolean doDiff(BufferedReader outFile, BufferedReader masterFile, PrintWriter pwDiff) throws IOException {
+        String str1;
+        String str2;
+        boolean diff = false;
+
+        int line = 0;
+        int diffnum = 0;
+        int diffline = 0;
+        while ( (str1 = outFile.readLine()) != null )
+        {
+            line++;
+            str1 = str1.trim();
+            //System.out.println("Reading line: " + line);
+            // Read the line from the master file and compare
+            if ( (str2 = masterFile.readLine()) != null )
+            {
+                str2 = str2.trim();
+                if (!str1.equals(str2))
+                {
+                    // Some lines diff because of too many spaces
+                    StringBuffer sb1 = new StringBuffer();
+                    StringBuffer sb2 = new StringBuffer();
+                    StringTokenizer st1 = new StringTokenizer(str1);
+                    while (st1.hasMoreTokens())
+                    {
+                        sb1.append(st1.nextToken());
+                    }
+                    //System.out.println("Out line: " + sb1.toString());
+
+                    StringTokenizer st2 = new StringTokenizer(str2);
+                    while (st2.hasMoreTokens())
+                    {
+                        sb2.append(st2.nextToken());
+                    }
+                    //System.out.println("Master line: " + sb2.toString());
+
+                    if ( sb1.toString().equals(sb2.toString()) )
+                        diff = false;
+                    // If the two lines are dashes, but wrong #, just ignore
+                    else if ( (str1.startsWith("-----")) && (str1.endsWith("-----")) )
+                    {
+                        if ( (str2.startsWith("-----")) && (str2.endsWith("-----")) )
+                            diff = false;
+                    }
+                    else
+                    {
+                        diff = true;
+                        diffnum++;
+                        System.out.println("Diff occurred at line: " + line);
+                        pwDiff.println("Diff occurred  at line: " + line);
+                        pwDiff.flush();
+                        break;
+                    }
+                }
+                else
+                {
+                    diff = false;
+                }
+            }
+        } // end while
+        outFile.close();
+        masterFile.close();
+        return diff;
+    }// end exec
+
+    private void searchCanondir(String canondir)
+    {
+	String prefix = canondir + '/';
+	if (master == null && searchFrame) searchFramework(prefix);
+        if (master == null) searchJvm(prefix);
+	if (master == null && searchJCC) searchJCCVersion(prefix);
+	if (master == null) getmaster(prefix);
+	if (master == null && canondir != "master") searchCanondir("master");
+    }
+
+    private void searchJvm(String prefix)
+    {
+	// The JVM search follows the following pattern, with one exception:
+	// first search jvmName (to support unnamed/non-IBM or Sun JVMs)
+	// if vendor == IBM, search ibm+rev then jdk+rev, decrementing rev by one until rev=13,
+	// in each dir, search framework and jcc version if applicable.
+	// BUT, if it's j9, search j9_foundation then j9_13 if j9_foundation, or j9_13 for j9_13, then 	       // the normal ibm13 search pattern: ibm13 then jdk13.
+
+	String newprefix;
+	if (jvmName.startsWith("j9") || (serverJvm != null && serverJvm.startsWith("j9")))
+	{
+	    if (jvmName.startsWith("j9_foundation"))
+            {
+                newprefix = prefix + "j9_foundation" + '/';
+		if (master == null && searchJCC) searchJCCVersion(newprefix);
+		if (master == null) getmaster(newprefix);
+            }
+            newprefix = prefix + "j9_13" + '/';
+	    if (master == null && searchJCC) searchJCCVersion(newprefix);
+	    if (master == null) getmaster(newprefix);
+	    
+	}
+	for (int i = iminor; i >= 2; i--)
+	{
+	    if (jvmName.startsWith("ibm"))
+            {
+		newprefix = prefix + "ibm1" + i + '/';
+		if (master == null && searchJCC) searchJCCVersion(newprefix);
+		if (master == null) getmaster(newprefix);
+	    }
+	    newprefix = prefix + "jdk1" + i + '/';
+	    if (master == null && searchJCC) searchJCCVersion(newprefix);
+	    if (master == null) getmaster(newprefix);
+        } 
+    }
+
+    private void searchFramework(String prefix)
+    {
+        String newprefix;
+	newprefix = prefix + framework + '/';
+	if (master == null) searchJvm(newprefix);
+	if (master == null && searchJCC) searchJCCVersion(newprefix);
+	if (master == null) getmaster(newprefix);
+    }
+
+    private void searchJCCVersion(String prefix)
+    {
+	// It is not sufficient to simply search the current JCC version. 
+	// We must search down through the JCC versions to find the newest applicable master. 
+        
+	String newprefix;
+	
+	for (int j = ((jccMajor * 10) + jccMinor); j >= 10; j--)
+	{
+            newprefix = prefix + "jcc" + j / 10 + "." + j % 10 + '/';
+	    if (master == null) getmaster(newprefix); 
+        }
+    }
+
+    private void getmaster(String prefix)
+    {
+        String fullname = prefix + testBase + ".out";
+        master = RunTest.loadTestResource(fullname);
+        if (master != null)
+            if (verbose) System.out.println("MasterFileName = "+fullname);
+    }
+}

Modified: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/GRFileFilter.java
Url: http://svn.apache.org/viewcvs/incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/GRFileFilter.java?view=diff&rev=122528&p1=incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/GRFileFilter.java&r1=122527&p2=incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/GRFileFilter.java&r2=122528
==============================================================================
--- incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/GRFileFilter.java	(original)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/GRFileFilter.java	Wed Dec 15 22:20:35 2004
@@ -1,53 +1,53 @@
-/* 
-
-   Derby - Class org.apache.derbyTesting.functionTests.harness.GRFileFilter
-
-   Copyright 1999, 2004 The Apache Software Foundation or its licensors, as applicable.
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-   You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
-
- */
-
-package org.apache.derbyTesting.functionTests.harness;
-
-import java.io.FilenameFilter;
-import java.io.File;
-
-/**
-	Filter to only accept interesting files
-	for generating reports.
- */
-class GRFileFilter implements FilenameFilter {
-
-	public boolean accept (File dir, String name) {
-	    if (name.endsWith(".skip")) return true;
-		if (name.endsWith(".pass")) return true;
-		if (name.endsWith(".fail")) {
-			// special case from rundtest script
-			if (name.equals("runall.fail")) return false;
-			return true;
-		}
-		if (name.endsWith(".diff")) {
-			// special case from rundtest script
-			if (name.equals("runall.diff")) return false;
-			if (name.equals("failures.diff")) return false;
-			return true;
-		}
-		File f = new File(dir,name);
-		if (f.isDirectory()) return true;
-		return false;
-	}
-
-	GRFileFilter() {}
-	
-}
+/* 
+
+   Derby - Class org.apache.derbyTesting.functionTests.harness.GRFileFilter
+
+   Copyright 1999, 2004 The Apache Software Foundation or its licensors, as applicable.
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+ */
+
+package org.apache.derbyTesting.functionTests.harness;
+
+import java.io.FilenameFilter;
+import java.io.File;
+
+/**
+	Filter to only accept interesting files
+	for generating reports.
+ */
+class GRFileFilter implements FilenameFilter {
+
+	public boolean accept (File dir, String name) {
+	    if (name.endsWith(".skip")) return true;
+		if (name.endsWith(".pass")) return true;
+		if (name.endsWith(".fail")) {
+			// special case from rundtest script
+			if (name.equals("runall.fail")) return false;
+			return true;
+		}
+		if (name.endsWith(".diff")) {
+			// special case from rundtest script
+			if (name.equals("runall.diff")) return false;
+			if (name.equals("failures.diff")) return false;
+			return true;
+		}
+		File f = new File(dir,name);
+		if (f.isDirectory()) return true;
+		return false;
+	}
+
+	GRFileFilter() {}
+	
+}

Modified: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/GenerateReport.java
Url: http://svn.apache.org/viewcvs/incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/GenerateReport.java?view=diff&rev=122528&p1=incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/GenerateReport.java&r1=122527&p2=incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/GenerateReport.java&r2=122528
==============================================================================
--- incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/GenerateReport.java	(original)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/GenerateReport.java	Wed Dec 15 22:20:35 2004
@@ -1,355 +1,355 @@
-/* 
-
-   Derby - Class org.apache.derbyTesting.functionTests.harness.GenerateReport
-
-   Copyright 1999, 2004 The Apache Software Foundation or its licensors, as applicable.
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-   You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
-
- */
-
-package org.apache.derbyTesting.functionTests.harness;
-
-import java.util.Properties;
-import java.util.Calendar;
-import java.util.GregorianCalendar;
-import java.io.File;
-import java.io.FileReader;
-import java.io.FilenameFilter;
-import java.io.FileWriter;
-import java.io.IOException;
-import java.io.BufferedReader;
-import java.io.PrintWriter;
-import java.sql.Date;
-import java.sql.Time;
-import java.sql.Timestamp;
-
-/**
-	Generate summary information from a RunSuite run.
-	Can be called separately, if given the suite name.
-	Will be called from RunSuite if System property genrep=true.
-
-	Condenses run information down, prints out result stats,
-	and shows details of failures (.diff files).
-
-	@author ames
-**/
-public class GenerateReport {
-
-	static void CollectProperties () {
-		Properties ps = System.getProperties();
-		char[] newline = {' '};
-		propFile.println(PropertyUtil.sortProperties(ps,newline));
-	}
-
-	static void CalculateRunLength () {
-	// read suite.sum for start/end timestamps, 
-	// report start date and full duration of run
-		String odn = System.getProperty("outputdir");
-		if (odn==null) odn = System.getProperty("user.dir");
-
-		BufferedReader sumFile = null;
-		String firstLine = null;
-		String lastLine = null;
-		try {
-			sumFile = new BufferedReader(new FileReader(new File(new File(odn),SuiteName+".sum")));
-			firstLine = sumFile.readLine();
-			String aLine = firstLine;
-			while (aLine!=null) {
-				lastLine = aLine;
-				aLine = sumFile.readLine();
-			}
-			sumFile.close();
-		} catch (IOException ioe) { 
-			ioe.printStackTrace(System.out);
-		}
-
-		// have firstLine and lastLine.
-		// format is: 
-		// ******* Start Suite: <suite> <timestamp> *******
-		// ******* End Suite: <suite> <timestamp> *******
-		int tsStart = 22+SuiteName.length();
-		int tsEnd = firstLine.length()-8;
-		TestStart = Timestamp.valueOf(firstLine.substring(tsStart,tsEnd));
-		// last line is two shorter
-		tsStart-=2; tsEnd-=2;
-		Timestamp testEnd = Timestamp.valueOf(lastLine.substring(tsStart,tsEnd));
-
-		long testLen = testEnd.getTime() - TestStart.getTime();
-		// Time isn't really a duration, so we have to set the fields
-		int sec = (int) (testLen / 1000);
-		int min = sec / 60;
-		int hr = min / 60;
-		sec = sec - (min*60); // adjust for part removed
-		min = min - (hr*60); // adjust for part removed
-		Calendar cal = new GregorianCalendar();
-		cal.set(Calendar.HOUR_OF_DAY,hr);
-		cal.set(Calendar.MINUTE,min);
-		cal.set(Calendar.SECOND,sec);
-		TestDuration = new Time(cal.getTime().getTime());
-	}
-
-	static void CollectPassFailStats () {
-		// need to ensure outputdir is set...
-		String odn = System.getProperty("outputdir");
-		if (odn==null) odn = System.getProperty("user.dir");
-		CollectPassFailStats(new File(odn),"");
-	}
-
-	static void addLines(PrintWriter outFile, File inFile, String relativeName) {
-		BufferedReader readFile = null;
-		try {
-		readFile = new BufferedReader(new FileReader(inFile));
-		String aLine = readFile.readLine();
-		while (aLine!=null) {
-			outFile.print(relativeName);
-			outFile.print(":");
-			outFile.println(aLine);
-			aLine = readFile.readLine();
-		}
-		readFile.close();
-		} catch (IOException ioe) { 
-			ioe.printStackTrace(System.out);
-		}
-
-	}
-
-	static void addDiff(PrintWriter outFile, File inFile, String relativeName) {
-		BufferedReader readFile = null;
-		try {
-		readFile = new BufferedReader(new FileReader(inFile));
-		outFile.print("********* Diff file ");
-		outFile.println(relativeName);
-		String aLine = readFile.readLine();
-		while (aLine!=null) {
-			outFile.println(aLine);
-			aLine = readFile.readLine();
-		}
-		readFile.close();
-		} catch (IOException ioe) { 
-			ioe.printStackTrace(System.out);
-		}
-	}
-
-	static void CollectPassFailStats (File dir,String relativeName) {
-		// starting in specified dir, 
-		String[] fileList = dir.list(fileFilter);
-		int l = fileList.length;
-		for (int i=0;i<l;i++) {
-			String fileName = fileList[i];
-			File file = new File(dir,fileName);
-
-			// collect all .pass files into suite_pass.txt (passFile)
-			if (fileName.endsWith(".pass")) {
-				addLines(passFile,file,relativeName+"/"+fileName);
-			}
-			// collect all .fail files into suite_fail.txt (failFile)
-			else if (fileName.endsWith(".fail")) {
-				addLines(failFile,file,relativeName+"/"+fileName);
-			}
-			// collect all .skip files into suite_skip.txt (skipFile)
-			else if (fileName.endsWith(".skip")) {
-				addLines(skipFile,file,relativeName+"/"+fileName);
-			}
-			// collect all .diff files into suite_diff.txt (diffFile)
-			else if (fileName.endsWith(".diff")) {
-				addDiff(diffFile,file,relativeName+"/"+fileName);
-			}
-
-			// recurse on all directories
-			else // it's a directory
-			{
-				String newDir;
-				if (relativeName.length()>0)
-					newDir = relativeName+"/"+fileName;
-				else newDir = fileName;
-				CollectPassFailStats(file, newDir);
-			}
-		}
-	}
-
-	static void CalculatePassFailStats() {
-		// total tests run
-		// #, % failures
-		// #, % passed
-		NumPass = CountLines (passFileName);
-		NumFail = CountLines (failFileName);
-		NumRun = NumPass+NumFail;
-		NumSkip = CountLines (skipFileName);
-		PercentPass = (int)Math.round(100* ((double)NumPass/(double)NumRun));
-		PercentFail = (int)Math.round(100* ((double)NumFail/(double)NumRun));
-	}
-
-	static int CountLines(String fileName) {
-		BufferedReader readFile = null;
-		int line = 0;
-		try {
-		readFile = new BufferedReader(new FileReader(fileName));
-		String aLine = readFile.readLine();
-		while (aLine!=null) {
-			line++;
-			aLine = readFile.readLine();
-		}
-		readFile.close();
-		} catch (IOException ioe) { 
-			ioe.printStackTrace(System.out);
-		}
-		return line;
-	}
-
-	static void OutputFile(String fileName) {
-		BufferedReader readFile = null;
-		try {
-		readFile = new BufferedReader(new FileReader(fileName));
-		String aLine = readFile.readLine();
-		while (aLine != null) {
-			reportFile.println(aLine);
-			aLine = readFile.readLine();
-		}
-		readFile.close();
-		} catch (IOException ioe) { 
-			ioe.printStackTrace(System.out);
-		}
-	}
-
-	static PrintWriter setupFile(String fn) {
-		File f = null;
-		PrintWriter pw = null;
-		try {
-		f = new File(fn);
-		if (f.exists()) {
-			System.out.println("WARNING: removing "+fn);
-			f.delete();
-		}
-		pw = new PrintWriter(new FileWriter(fn,true));
-		} catch (IOException ioe) { 
-			ioe.printStackTrace(System.out);
-		}
-		return pw;
-	}
-
-	public static void main(String[] args) {
-		SuiteName = args[0];
-		String jvmName = args[1];
-		String javaCmd = args[2];
-		String classpath = args[3];
-		String framework = args[4];
-		String processexec = args[5];
-		boolean useprocess = true;
-		if ( (processexec.toLowerCase()).startsWith("false") )
-		    useprocess = false;
-		String reportFileName = SuiteName+"_report.txt";
-		reportFile = setupFile(reportFileName);
-		reportFile.print("Generating report for RunSuite ");
-		for (int i=0;i<args.length;i++)
-			reportFile.print(args[i]+" ");
-		reportFile.println();
-		passFileName = SuiteName+"_pass.txt";
-		failFileName = SuiteName+"_fail.txt";
-		diffFileName = SuiteName+"_diff.txt";
-		skipFileName = SuiteName+"_skip.txt";
-		propFileName = SuiteName+"_prop.txt";
-		passFile = setupFile(passFileName);
-		failFile = setupFile(failFileName);
-		diffFile = setupFile(diffFileName);
-		skipFile = setupFile(skipFileName);
-		propFile = setupFile(propFileName);
-
-		// sysinfo printout
-		SysInfoLog sysLog = new SysInfoLog();
-		try
-		{
-		    sysLog.exec(jvmName, javaCmd, classpath, framework, reportFile, useprocess);
-		    //SysInfoMain.getMainInfo(reportFile,false,false);
-		}
-		catch (Exception e)
-		{
-		    System.out.println("SysInfoLog Exception: " + e.getMessage());
-		}
-	
-		reportFile.println("Test environment information:");
-		reportFile.print("COMMAND LINE STYLE: ");
-		String jvm = System.getProperty("jvm");
-		if (jvm == null) jvm="jdk13";
-		reportFile.println(jvm);
-		reportFile.print("TEST CANONS: ");
-		String canondir = System.getProperty("canondir");
-		if (canondir == null) canondir = "master";
-		reportFile.println(canondir);
-		reportFile.println(DASHLINE);
-
-		reportFile.println(DASHLINE);
-		reportFile.println("Summary results:");
-		CalculateRunLength();
-		CollectPassFailStats();
-		CollectProperties();
-		passFile.close();
-		failFile.close();
-		skipFile.close();
-		diffFile.close();
-		propFile.close();
-		CalculatePassFailStats();
-		reportFile.println();
-		reportFile.println("Test Run Started: "+TestStart);
-		reportFile.println("Test Run Duration: "+TestDuration);
-		reportFile.println();
-		reportFile.println(NumRun+" Tests Run");
-		if (PercentPass<10) reportFile.print(" ");
-		reportFile.println(PercentPass+"% Pass ("+NumPass+" tests passed)");
-		if (PercentFail<10) reportFile.print(" ");
-		reportFile.println(PercentFail+"% Fail ("+NumFail+" tests failed)");
-		reportFile.println(NumSkip + " Suites skipped");
-		reportFile.println(DASHLINE);
-
-		if (NumFail>0) {
-			reportFile.println("Failed tests in: "+failFileName);
-			reportFile.println(DASHLINE);
-		}
-
-		if (NumPass>0) {
-			reportFile.println("Passed tests in: "+passFileName);
-			reportFile.println(DASHLINE);
-		}
-
-		if (NumSkip>0) {
-			reportFile.println("Skipped suites in: "+skipFileName);
-			reportFile.println(DASHLINE);
-		}
-
-		reportFile.println("System properties in: "+propFileName);
-		reportFile.println(DASHLINE);
-
-		reportFile.println(DASHLINE);
-		if (NumFail>0) {
-			reportFile.println("Failure Details:");
-			// cat each .diff file with full test name
-			OutputFile(diffFileName);
-		}
-		else reportFile.println("No Failures.");
-		reportFile.println(DASHLINE);
-		reportFile.close();
-
-		System.out.println("Generated report: "+reportFileName);
-	}
-	
-	static final String DASHLINE="------------------------------------------------------";
-	static String passFileName, failFileName, diffFileName, skipFileName, propFileName;
-	static PrintWriter passFile, failFile, diffFile, skipFile, propFile;
-	static PrintWriter reportFile;
-	static FilenameFilter fileFilter = new GRFileFilter();
-	static int NumPass, NumFail, NumRun, NumSkip;
-	static int PercentPass, PercentFail;
-	static Timestamp TestStart;
-	static Time TestDuration;
-	static String SuiteName;
-}
+/* 
+
+   Derby - Class org.apache.derbyTesting.functionTests.harness.GenerateReport
+
+   Copyright 1999, 2004 The Apache Software Foundation or its licensors, as applicable.
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+ */
+
+package org.apache.derbyTesting.functionTests.harness;
+
+import java.util.Properties;
+import java.util.Calendar;
+import java.util.GregorianCalendar;
+import java.io.File;
+import java.io.FileReader;
+import java.io.FilenameFilter;
+import java.io.FileWriter;
+import java.io.IOException;
+import java.io.BufferedReader;
+import java.io.PrintWriter;
+import java.sql.Date;
+import java.sql.Time;
+import java.sql.Timestamp;
+
+/**
+	Generate summary information from a RunSuite run.
+	Can be called separately, if given the suite name.
+	Will be called from RunSuite if System property genrep=true.
+
+	Condenses run information down, prints out result stats,
+	and shows details of failures (.diff files).
+
+	@author ames
+**/
+public class GenerateReport {
+
+	static void CollectProperties () {
+		Properties ps = System.getProperties();
+		char[] newline = {' '};
+		propFile.println(PropertyUtil.sortProperties(ps,newline));
+	}
+
+	static void CalculateRunLength () {
+	// read suite.sum for start/end timestamps, 
+	// report start date and full duration of run
+		String odn = System.getProperty("outputdir");
+		if (odn==null) odn = System.getProperty("user.dir");
+
+		BufferedReader sumFile = null;
+		String firstLine = null;
+		String lastLine = null;
+		try {
+			sumFile = new BufferedReader(new FileReader(new File(new File(odn),SuiteName+".sum")));
+			firstLine = sumFile.readLine();
+			String aLine = firstLine;
+			while (aLine!=null) {
+				lastLine = aLine;
+				aLine = sumFile.readLine();
+			}
+			sumFile.close();
+		} catch (IOException ioe) { 
+			ioe.printStackTrace(System.out);
+		}
+
+		// have firstLine and lastLine.
+		// format is: 
+		// ******* Start Suite: <suite> <timestamp> *******
+		// ******* End Suite: <suite> <timestamp> *******
+		int tsStart = 22+SuiteName.length();
+		int tsEnd = firstLine.length()-8;
+		TestStart = Timestamp.valueOf(firstLine.substring(tsStart,tsEnd));
+		// last line is two shorter
+		tsStart-=2; tsEnd-=2;
+		Timestamp testEnd = Timestamp.valueOf(lastLine.substring(tsStart,tsEnd));
+
+		long testLen = testEnd.getTime() - TestStart.getTime();
+		// Time isn't really a duration, so we have to set the fields
+		int sec = (int) (testLen / 1000);
+		int min = sec / 60;
+		int hr = min / 60;
+		sec = sec - (min*60); // adjust for part removed
+		min = min - (hr*60); // adjust for part removed
+		Calendar cal = new GregorianCalendar();
+		cal.set(Calendar.HOUR_OF_DAY,hr);
+		cal.set(Calendar.MINUTE,min);
+		cal.set(Calendar.SECOND,sec);
+		TestDuration = new Time(cal.getTime().getTime());
+	}
+
+	static void CollectPassFailStats () {
+		// need to ensure outputdir is set...
+		String odn = System.getProperty("outputdir");
+		if (odn==null) odn = System.getProperty("user.dir");
+		CollectPassFailStats(new File(odn),"");
+	}
+
+	static void addLines(PrintWriter outFile, File inFile, String relativeName) {
+		BufferedReader readFile = null;
+		try {
+		readFile = new BufferedReader(new FileReader(inFile));
+		String aLine = readFile.readLine();
+		while (aLine!=null) {
+			outFile.print(relativeName);
+			outFile.print(":");
+			outFile.println(aLine);
+			aLine = readFile.readLine();
+		}
+		readFile.close();
+		} catch (IOException ioe) { 
+			ioe.printStackTrace(System.out);
+		}
+
+	}
+
+	static void addDiff(PrintWriter outFile, File inFile, String relativeName) {
+		BufferedReader readFile = null;
+		try {
+		readFile = new BufferedReader(new FileReader(inFile));
+		outFile.print("********* Diff file ");
+		outFile.println(relativeName);
+		String aLine = readFile.readLine();
+		while (aLine!=null) {
+			outFile.println(aLine);
+			aLine = readFile.readLine();
+		}
+		readFile.close();
+		} catch (IOException ioe) { 
+			ioe.printStackTrace(System.out);
+		}
+	}
+
+	static void CollectPassFailStats (File dir,String relativeName) {
+		// starting in specified dir, 
+		String[] fileList = dir.list(fileFilter);
+		int l = fileList.length;
+		for (int i=0;i<l;i++) {
+			String fileName = fileList[i];
+			File file = new File(dir,fileName);
+
+			// collect all .pass files into suite_pass.txt (passFile)
+			if (fileName.endsWith(".pass")) {
+				addLines(passFile,file,relativeName+"/"+fileName);
+			}
+			// collect all .fail files into suite_fail.txt (failFile)
+			else if (fileName.endsWith(".fail")) {
+				addLines(failFile,file,relativeName+"/"+fileName);
+			}
+			// collect all .skip files into suite_skip.txt (skipFile)
+			else if (fileName.endsWith(".skip")) {
+				addLines(skipFile,file,relativeName+"/"+fileName);
+			}
+			// collect all .diff files into suite_diff.txt (diffFile)
+			else if (fileName.endsWith(".diff")) {
+				addDiff(diffFile,file,relativeName+"/"+fileName);
+			}
+
+			// recurse on all directories
+			else // it's a directory
+			{
+				String newDir;
+				if (relativeName.length()>0)
+					newDir = relativeName+"/"+fileName;
+				else newDir = fileName;
+				CollectPassFailStats(file, newDir);
+			}
+		}
+	}
+
+	static void CalculatePassFailStats() {
+		// total tests run
+		// #, % failures
+		// #, % passed
+		NumPass = CountLines (passFileName);
+		NumFail = CountLines (failFileName);
+		NumRun = NumPass+NumFail;
+		NumSkip = CountLines (skipFileName);
+		PercentPass = (int)Math.round(100* ((double)NumPass/(double)NumRun));
+		PercentFail = (int)Math.round(100* ((double)NumFail/(double)NumRun));
+	}
+
+	static int CountLines(String fileName) {
+		BufferedReader readFile = null;
+		int line = 0;
+		try {
+		readFile = new BufferedReader(new FileReader(fileName));
+		String aLine = readFile.readLine();
+		while (aLine!=null) {
+			line++;
+			aLine = readFile.readLine();
+		}
+		readFile.close();
+		} catch (IOException ioe) { 
+			ioe.printStackTrace(System.out);
+		}
+		return line;
+	}
+
+	static void OutputFile(String fileName) {
+		BufferedReader readFile = null;
+		try {
+		readFile = new BufferedReader(new FileReader(fileName));
+		String aLine = readFile.readLine();
+		while (aLine != null) {
+			reportFile.println(aLine);
+			aLine = readFile.readLine();
+		}
+		readFile.close();
+		} catch (IOException ioe) { 
+			ioe.printStackTrace(System.out);
+		}
+	}
+
+	static PrintWriter setupFile(String fn) {
+		File f = null;
+		PrintWriter pw = null;
+		try {
+		f = new File(fn);
+		if (f.exists()) {
+			System.out.println("WARNING: removing "+fn);
+			f.delete();
+		}
+		pw = new PrintWriter(new FileWriter(fn,true));
+		} catch (IOException ioe) { 
+			ioe.printStackTrace(System.out);
+		}
+		return pw;
+	}
+
+	public static void main(String[] args) {
+		SuiteName = args[0];
+		String jvmName = args[1];
+		String javaCmd = args[2];
+		String classpath = args[3];
+		String framework = args[4];
+		String processexec = args[5];
+		boolean useprocess = true;
+		if ( (processexec.toLowerCase()).startsWith("false") )
+		    useprocess = false;
+		String reportFileName = SuiteName+"_report.txt";
+		reportFile = setupFile(reportFileName);
+		reportFile.print("Generating report for RunSuite ");
+		for (int i=0;i<args.length;i++)
+			reportFile.print(args[i]+" ");
+		reportFile.println();
+		passFileName = SuiteName+"_pass.txt";
+		failFileName = SuiteName+"_fail.txt";
+		diffFileName = SuiteName+"_diff.txt";
+		skipFileName = SuiteName+"_skip.txt";
+		propFileName = SuiteName+"_prop.txt";
+		passFile = setupFile(passFileName);
+		failFile = setupFile(failFileName);
+		diffFile = setupFile(diffFileName);
+		skipFile = setupFile(skipFileName);
+		propFile = setupFile(propFileName);
+
+		// sysinfo printout
+		SysInfoLog sysLog = new SysInfoLog();
+		try
+		{
+		    sysLog.exec(jvmName, javaCmd, classpath, framework, reportFile, useprocess);
+		    //SysInfoMain.getMainInfo(reportFile,false,false);
+		}
+		catch (Exception e)
+		{
+		    System.out.println("SysInfoLog Exception: " + e.getMessage());
+		}
+	
+		reportFile.println("Test environment information:");
+		reportFile.print("COMMAND LINE STYLE: ");
+		String jvm = System.getProperty("jvm");
+		if (jvm == null) jvm="jdk13";
+		reportFile.println(jvm);
+		reportFile.print("TEST CANONS: ");
+		String canondir = System.getProperty("canondir");
+		if (canondir == null) canondir = "master";
+		reportFile.println(canondir);
+		reportFile.println(DASHLINE);
+
+		reportFile.println(DASHLINE);
+		reportFile.println("Summary results:");
+		CalculateRunLength();
+		CollectPassFailStats();
+		CollectProperties();
+		passFile.close();
+		failFile.close();
+		skipFile.close();
+		diffFile.close();
+		propFile.close();
+		CalculatePassFailStats();
+		reportFile.println();
+		reportFile.println("Test Run Started: "+TestStart);
+		reportFile.println("Test Run Duration: "+TestDuration);
+		reportFile.println();
+		reportFile.println(NumRun+" Tests Run");
+		if (PercentPass<10) reportFile.print(" ");
+		reportFile.println(PercentPass+"% Pass ("+NumPass+" tests passed)");
+		if (PercentFail<10) reportFile.print(" ");
+		reportFile.println(PercentFail+"% Fail ("+NumFail+" tests failed)");
+		reportFile.println(NumSkip + " Suites skipped");
+		reportFile.println(DASHLINE);
+
+		if (NumFail>0) {
+			reportFile.println("Failed tests in: "+failFileName);
+			reportFile.println(DASHLINE);
+		}
+
+		if (NumPass>0) {
+			reportFile.println("Passed tests in: "+passFileName);
+			reportFile.println(DASHLINE);
+		}
+
+		if (NumSkip>0) {
+			reportFile.println("Skipped suites in: "+skipFileName);
+			reportFile.println(DASHLINE);
+		}
+
+		reportFile.println("System properties in: "+propFileName);
+		reportFile.println(DASHLINE);
+
+		reportFile.println(DASHLINE);
+		if (NumFail>0) {
+			reportFile.println("Failure Details:");
+			// cat each .diff file with full test name
+			OutputFile(diffFileName);
+		}
+		else reportFile.println("No Failures.");
+		reportFile.println(DASHLINE);
+		reportFile.close();
+
+		System.out.println("Generated report: "+reportFileName);
+	}
+	
+	static final String DASHLINE="------------------------------------------------------";
+	static String passFileName, failFileName, diffFileName, skipFileName, propFileName;
+	static PrintWriter passFile, failFile, diffFile, skipFile, propFile;
+	static PrintWriter reportFile;
+	static FilenameFilter fileFilter = new GRFileFilter();
+	static int NumPass, NumFail, NumRun, NumSkip;
+	static int PercentPass, PercentFail;
+	static Timestamp TestStart;
+	static Time TestDuration;
+	static String SuiteName;
+}

Modified: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/HandleResult.java
Url: http://svn.apache.org/viewcvs/incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/HandleResult.java?view=diff&rev=122528&p1=incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/HandleResult.java&r1=122527&p2=incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/HandleResult.java&r2=122528
==============================================================================
--- incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/HandleResult.java	(original)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/HandleResult.java	Wed Dec 15 22:20:35 2004
@@ -1,96 +1,96 @@
-/*
-
-   Derby - Class org.apache.derbyTesting.functionTests.harness.HandleResult
-
-   Copyright 1999, 2004 The Apache Software Foundation or its licensors, as applicable.
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-   You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
-
- */
-
-package org.apache.derbyTesting.functionTests.harness;
-
-import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.io.BufferedReader;
-import java.io.PrintWriter;
-import java.io.IOException;
-
-/**
-  Class: HandleResult
-  Purpose: To capture stdout & stderr to a file
-  (PrintWriter is used for writing the output)
-*/
-
-public class HandleResult
-{
-
-	public static void main(String[] args) throws Exception
-	{
-	}
-
-    public static String handleResult(int exitCode, InputStream stdout,
-        InputStream stderr, PrintWriter printWriter)
-        throws IOException
-    {
-		StringBuffer sb = new StringBuffer();
-
-		// only used for debugging
-		sb.append("exitcode=");
-		sb.append(exitCode);
-
-        if (stdout != null)
-        {
-    		// reader for stdout
-    		BufferedReader outReader = new BufferedReader(new InputStreamReader(stdout));
-
-            // Read each line and write to printWriter
-    		String s = null;
-    		int lines = 0;
-    		while ((s = outReader.readLine()) != null)
-    		{
-    		    lines++;
-    		    if (printWriter == null)
-    			    System.out.println(s);
-    			else
-    			    printWriter.println(s);
-    		}
-    		sb.append(",");
-    		sb.append(lines);
-    		outReader.close();
-    		printWriter.flush();
-        }
-
-        if (stderr != null)
-        {
-            // reader for stderr
-    		BufferedReader errReader = new BufferedReader(new InputStreamReader(stderr));
-
-    		String s = null;
-    		int lines = 0;
-    		while ((s = errReader.readLine()) != null)
-    		{
-    		    if (printWriter == null)
-    			    System.out.println(s);
-    			else
-    			    printWriter.println(s);
-    		}
-    		errReader.close();
-    		printWriter.flush();
-    	}
-
-		return sb.toString();
-	}
-}
-
-
+/*
+
+   Derby - Class org.apache.derbyTesting.functionTests.harness.HandleResult
+
+   Copyright 1999, 2004 The Apache Software Foundation or its licensors, as applicable.
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+ */
+
+package org.apache.derbyTesting.functionTests.harness;
+
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.BufferedReader;
+import java.io.PrintWriter;
+import java.io.IOException;
+
+/**
+  Class: HandleResult
+  Purpose: To capture stdout & stderr to a file
+  (PrintWriter is used for writing the output)
+*/
+
+public class HandleResult
+{
+
+	public static void main(String[] args) throws Exception
+	{
+	}
+
+    public static String handleResult(int exitCode, InputStream stdout,
+        InputStream stderr, PrintWriter printWriter)
+        throws IOException
+    {
+		StringBuffer sb = new StringBuffer();
+
+		// only used for debugging
+		sb.append("exitcode=");
+		sb.append(exitCode);
+
+        if (stdout != null)
+        {
+    		// reader for stdout
+    		BufferedReader outReader = new BufferedReader(new InputStreamReader(stdout));
+
+            // Read each line and write to printWriter
+    		String s = null;
+    		int lines = 0;
+    		while ((s = outReader.readLine()) != null)
+    		{
+    		    lines++;
+    		    if (printWriter == null)
+    			    System.out.println(s);
+    			else
+    			    printWriter.println(s);
+    		}
+    		sb.append(",");
+    		sb.append(lines);
+    		outReader.close();
+    		printWriter.flush();
+        }
+
+        if (stderr != null)
+        {
+            // reader for stderr
+    		BufferedReader errReader = new BufferedReader(new InputStreamReader(stderr));
+
+    		String s = null;
+    		int lines = 0;
+    		while ((s = errReader.readLine()) != null)
+    		{
+    		    if (printWriter == null)
+    			    System.out.println(s);
+    			else
+    			    printWriter.println(s);
+    		}
+    		errReader.close();
+    		printWriter.flush();
+    	}
+
+		return sb.toString();
+	}
+}
+
+

Modified: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/JavaVersionHolder.java
Url: http://svn.apache.org/viewcvs/incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/JavaVersionHolder.java?view=diff&rev=122528&p1=incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/JavaVersionHolder.java&r1=122527&p2=incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/JavaVersionHolder.java&r2=122528
==============================================================================
--- incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/JavaVersionHolder.java	(original)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/JavaVersionHolder.java	Wed Dec 15 22:20:35 2004
@@ -1,124 +1,124 @@
-/*
-
-   Derby - Class org.apache.derbyTesting.functionTests.harness.JavaVersionHolder
-
-   Copyright 2000, 2004 The Apache Software Foundation or its licensors, as applicable.
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-   You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
-
- */
-
-package org.apache.derbyTesting.functionTests.harness;
-
-import java.util.StringTokenizer;
-
-/**
-  To break down the java version into major and minor
-  Used by the test harness for special cases
-  */
-public class JavaVersionHolder
-{
- 
-    private String majorVersion;
-    private String minorVersion;
-    private int major;
-    private int minor;
-    
-    public JavaVersionHolder(String javaVersion)
-        throws java.lang.NumberFormatException
-    {
-		// check for jdk12 or higher
-		int i = javaVersion.indexOf('.');
-		int j = javaVersion.indexOf('.', i+1);
-		majorVersion = javaVersion.substring(0, i);
-		try
-	    {
-		    Integer imajor = new Integer(majorVersion);
-		    major = imajor.intValue();
-		    if (j != -1)
-		    {
-		        minorVersion = javaVersion.substring(i+1, j);
-		        Integer iminor = new Integer(minorVersion);
-		        minor = iminor.intValue();
-		    }
-		    else
-		    {
-		        minorVersion = javaVersion.substring(i+1);
-		        Integer iminor = new Integer(minorVersion);
-		        minor = iminor.intValue();
-		    }
-		}
-		catch (NumberFormatException nfe)
-		{
-		    // Cannot parse the version as an Integer
-		    // such as on HP: hack for this special case
-		    if (javaVersion.startsWith("HP"))
-		    {
-		        // attempt to get the version
-		        StringTokenizer st = new StringTokenizer(javaVersion,".");
-		        String tmp = st.nextToken();
-		        majorVersion = st.nextToken();
-		        if (majorVersion.equals("01"))
-		            majorVersion = "1";
-		        else if (majorVersion.equals("02"))
-		            majorVersion = "2";
-		        minorVersion = st.nextToken();
-		        if (minorVersion.startsWith("1"))
-		            minorVersion = "1";
-		        else if (minorVersion.startsWith("2"))
-		            minorVersion = "2";
-		        //System.out.println("majorVersion: " + majorVersion);
-		        //System.out.println("minorVersion: " + minorVersion);
-		        try
-	            {
-		            Integer imajor = new Integer(majorVersion);
-		            major = imajor.intValue();
-		            Integer iminor = new Integer(minorVersion);
-		            minor = iminor.intValue();
-		        }
-		        catch (NumberFormatException nfe2)
-		        {
-		            System.out.println("Could not parse version: " + nfe2);
-		            // Still couldn't parse the vesion
-		            // have to give up
-		        }
-            }
-            else
-            {
-                System.out.println("NumberFormatException thrown trying to parse the version.");
-                System.out.println("The test harness only handles the HP special case.");
-            }
-                
-        }
-    }
-
-    public String getMajorVersion()
-    {
-        return majorVersion;
-    }
-    
-    public String getMinorVersion()
-    {
-        return minorVersion;
-    }
-    
-    public int getMajorNumber()
-    {
-        return major;
-    }
-    
-    public int getMinorNumber()
-    {
-        return minor;
-    }
-}
+/*
+
+   Derby - Class org.apache.derbyTesting.functionTests.harness.JavaVersionHolder
+
+   Copyright 2000, 2004 The Apache Software Foundation or its licensors, as applicable.
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+ */
+
+package org.apache.derbyTesting.functionTests.harness;
+
+import java.util.StringTokenizer;
+
+/**
+  To break down the java version into major and minor
+  Used by the test harness for special cases
+  */
+public class JavaVersionHolder
+{
+ 
+    private String majorVersion;
+    private String minorVersion;
+    private int major;
+    private int minor;
+    
+    public JavaVersionHolder(String javaVersion)
+        throws java.lang.NumberFormatException
+    {
+		// check for jdk12 or higher
+		int i = javaVersion.indexOf('.');
+		int j = javaVersion.indexOf('.', i+1);
+		majorVersion = javaVersion.substring(0, i);
+		try
+	    {
+		    Integer imajor = new Integer(majorVersion);
+		    major = imajor.intValue();
+		    if (j != -1)
+		    {
+		        minorVersion = javaVersion.substring(i+1, j);
+		        Integer iminor = new Integer(minorVersion);
+		        minor = iminor.intValue();
+		    }
+		    else
+		    {
+		        minorVersion = javaVersion.substring(i+1);
+		        Integer iminor = new Integer(minorVersion);
+		        minor = iminor.intValue();
+		    }
+		}
+		catch (NumberFormatException nfe)
+		{
+		    // Cannot parse the version as an Integer
+		    // such as on HP: hack for this special case
+		    if (javaVersion.startsWith("HP"))
+		    {
+		        // attempt to get the version
+		        StringTokenizer st = new StringTokenizer(javaVersion,".");
+		        String tmp = st.nextToken();
+		        majorVersion = st.nextToken();
+		        if (majorVersion.equals("01"))
+		            majorVersion = "1";
+		        else if (majorVersion.equals("02"))
+		            majorVersion = "2";
+		        minorVersion = st.nextToken();
+		        if (minorVersion.startsWith("1"))
+		            minorVersion = "1";
+		        else if (minorVersion.startsWith("2"))
+		            minorVersion = "2";
+		        //System.out.println("majorVersion: " + majorVersion);
+		        //System.out.println("minorVersion: " + minorVersion);
+		        try
+	            {
+		            Integer imajor = new Integer(majorVersion);
+		            major = imajor.intValue();
+		            Integer iminor = new Integer(minorVersion);
+		            minor = iminor.intValue();
+		        }
+		        catch (NumberFormatException nfe2)
+		        {
+		            System.out.println("Could not parse version: " + nfe2);
+		            // Still couldn't parse the vesion
+		            // have to give up
+		        }
+            }
+            else
+            {
+                System.out.println("NumberFormatException thrown trying to parse the version.");
+                System.out.println("The test harness only handles the HP special case.");
+            }
+                
+        }
+    }
+
+    public String getMajorVersion()
+    {
+        return majorVersion;
+    }
+    
+    public String getMinorVersion()
+    {
+        return minorVersion;
+    }
+    
+    public int getMajorNumber()
+    {
+        return major;
+    }
+    
+    public int getMinorNumber()
+    {
+        return minor;
+    }
+}

Modified: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/ManageSysProps.java
Url: http://svn.apache.org/viewcvs/incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/ManageSysProps.java?view=diff&rev=122528&p1=incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/ManageSysProps.java&r1=122527&p2=incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/ManageSysProps.java&r2=122528
==============================================================================
--- incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/ManageSysProps.java	(original)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/ManageSysProps.java	Wed Dec 15 22:20:35 2004
@@ -1,60 +1,60 @@
-/* 
-
-   Derby - Class org.apache.derbyTesting.functionTests.harness.ManageSysProps
-
-   Copyright 2000, 2004 The Apache Software Foundation or its licensors, as applicable.
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-   You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
-
- */
-
-package org.apache.derbyTesting.functionTests.harness;
-
-import java.util.Enumeration;
-import java.util.Properties;
-
-/*
- **
- **	Keeps a copy of the system properties saved at a critical early
- **	point during the running of the test harness.  Uses this copy
- **	to create new copies which can then be mussed up and thrown
- **	away, as needed.
- */
-
-public class ManageSysProps
-{
-
-	private static Properties savedSysProps = null;
-
-	public static void saveSysProps() {
-		Properties sp = System.getProperties();
-		savedSysProps = new Properties();
-		String key = null;
-		for (Enumeration e = sp.propertyNames(); e.hasMoreElements();) {
-			key = (String)e.nextElement();
-			savedSysProps.put(key, sp.getProperty(key));
-		}
-	}
-
-	// reset the system properties to prevent confusion
-	// when running with java threads
-	public static void resetSysProps() {
-		String key = null;
-		Properties nup = new Properties();
-		for (Enumeration e = savedSysProps.propertyNames(); e.hasMoreElements();) {
-			key = (String)e.nextElement();
-			nup.put(key, savedSysProps.getProperty(key));
-		}
-		System.setProperties(nup);
-	}
-}
+/* 
+
+   Derby - Class org.apache.derbyTesting.functionTests.harness.ManageSysProps
+
+   Copyright 2000, 2004 The Apache Software Foundation or its licensors, as applicable.
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+ */
+
+package org.apache.derbyTesting.functionTests.harness;
+
+import java.util.Enumeration;
+import java.util.Properties;
+
+/*
+ **
+ **	Keeps a copy of the system properties saved at a critical early
+ **	point during the running of the test harness.  Uses this copy
+ **	to create new copies which can then be mussed up and thrown
+ **	away, as needed.
+ */
+
+public class ManageSysProps
+{
+
+	private static Properties savedSysProps = null;
+
+	public static void saveSysProps() {
+		Properties sp = System.getProperties();
+		savedSysProps = new Properties();
+		String key = null;
+		for (Enumeration e = sp.propertyNames(); e.hasMoreElements();) {
+			key = (String)e.nextElement();
+			savedSysProps.put(key, sp.getProperty(key));
+		}
+	}
+
+	// reset the system properties to prevent confusion
+	// when running with java threads
+	public static void resetSysProps() {
+		String key = null;
+		Properties nup = new Properties();
+		for (Enumeration e = savedSysProps.propertyNames(); e.hasMoreElements();) {
+			key = (String)e.nextElement();
+			nup.put(key, savedSysProps.getProperty(key));
+		}
+		System.setProperties(nup);
+	}
+}

Modified: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/NetServer.java
Url: http://svn.apache.org/viewcvs/incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/NetServer.java?view=diff&rev=122528&p1=incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/NetServer.java&r1=122527&p2=incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/NetServer.java&r2=122528
==============================================================================
--- incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/NetServer.java	(original)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/NetServer.java	Wed Dec 15 22:20:35 2004
@@ -1,413 +1,413 @@
-/*
-
-   Derby - Class org.apache.derbyTesting.functionTests.harness.NetServer
-
-   Copyright 2002, 2004 The Apache Software Foundation or its licensors, as applicable.
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-   You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
-
- */
-
-package org.apache.derbyTesting.functionTests.harness;
-
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileOutputStream;
-import java.util.Properties;
-import java.util.Vector;
-import java.util.Hashtable;
-import java.lang.reflect.Method;
-import java.lang.reflect.Constructor;
-import java.net.ConnectException;
-import java.net.Socket;
-
-public class NetServer
-{
-
-    File homeDir; // The server directory (usually the test directory)
-    String jvmName = "jdk13";
-    String clPath;
-    String javaCmd;
-    String jvmflags;
-    String framework;
-    
-    Object[] frameworkInfo;
-    int port;
-    Process pr;
-    BackgroundStreamSaver outSaver, errSaver;
-    FileOutputStream fosOut, fosErr;
-    private String java;
-
-	//  Variables for test connection
-    Object networkServer;   // Server needs to be created with reflection
-	Method pingMethod;
-
-	private static String NETWORK_SERVER_CLASS_NAME="org.apache.derby.drda.NetworkServerControl";
-    
-    public static Hashtable m;
-    public static int PREFIX_POS = 0;
-    public static int SUFFIX_POS = 1;
-    public static int DRIVER_POS = 2;
-    public static int PORT_POS = 3;
-    public static int START_CMD_POS = 4;
-    public static int STOP_CMD1_POS = 5;
-    public static int STOP_CMD2_POS = 6;
-
-    
-    static {
-	m =  new Hashtable();
-	// Hashtable is keyed on framework name and has 
-	// an array of the framework prefix, suffix, driver, port  and 
-	// String[] command arguments to start the server
-	// String[] Command arguments to stop the server
-	m.put("DerbyNet", new Object[]
-	    {"jdbc:derby:net://localhost:1527/",                 //prefix
-	     "",                                            // suffix
-	     "com.ibm.db2.jcc.DB2Driver",                   //driver
-	     "1527",                                        // port
-	     new String[] {NETWORK_SERVER_CLASS_NAME,  //start
-			   "start"},                        
-	     new String[] {NETWORK_SERVER_CLASS_NAME,  //shutdown
-			   "shutdown"},
-	     null});                                        //shutdown2
-
-	m.put("DB2jcc", new Object[]
-	    {"jdbc:db2://localhost:50000/",                //prefix
-	     "",                                            //suffix
-	     "com.ibm.db2.jcc.DB2Driver",                   //driver
-	     "50000",                                       //port
-	     null,                                          //start
-	     null,                                          
-	     null});
-
-	m.put("DB2app", new Object[]
-	    {"jdbc:db2:",
-	     "",
-	     "COM.ibm.db2.jdbc.app.DB2Driver",
-	     "0",
-	     null,
-	     null,
-	     null});
-    }
-
-    public NetServer(File homeDir, String jvmName, String clPath, String
-		     javaCmd, String jvmflags, String framework) 
-	throws Exception
-    {
-	this.homeDir = homeDir;
-        this.jvmName = jvmName;
-        this.clPath = clPath;
-        this.javaCmd = javaCmd;
-        this.jvmflags = jvmflags;
-	this.framework = framework;
-	frameworkInfo =  (Object[]) m.get(framework);
-	
-	this.port = Integer.parseInt((String) frameworkInfo[PORT_POS]);
-	
-	// System.out.println("framework: " + this.framework + "port: " + this.port);
-	
-    }
-    public void start() throws Exception
-    {
-	// Create the Server directory under the    server dir
-	(new File(homeDir, framework + "Server")).mkdir();
-	String[] startcmd = (String[]) frameworkInfo[START_CMD_POS];
-	// if we are just connecting to DB2 we return
-	if (startcmd == null) 
-	    return;
-	
-        // Build the command to run the WL server
-	String homeDirName = homeDir.getCanonicalPath();
-		jvm jvm = null; // to quiet the compiler
-		jvm = jvm.getJvm(jvmName);
-		if (jvmName.equals("jview"))
-		    jvm.setJavaCmd("jview");
-		else if (javaCmd != null)
-		    jvm.setJavaCmd(javaCmd);
-		
-		Vector jvmProps = new Vector();
-		if ( (clPath != null) && (clPath.length()>0) )
-		    jvm.setClasspath(clPath);
-
-        if ( (jvmflags != null) && (jvmflags.length()>0) )
-            jvm.setFlags(jvmflags);
-
-
-        if (!jvmName.equals("jview"))
-        {
-            jvm.setMs(16*1024*1024); // -ms16m
-            jvm.setMx(32*1024*1024); // -mx32m
-            jvm.setNoasyncgc(true); // -noasyncgc
-        }
-
-        jvmProps.addElement("derby.system.home=" + homeDirName);
-		jvm.setD(jvmProps);
-		jvm.setSecurityProps();
-        // For some platforms (like Mac) the process exec command
-        // must be a string array; so we build this with a Vector
-        // first because some strings (paths) could have spaces
-	Vector vCmd = jvm.getCommandLine();
-	for (int i = 0; i < startcmd.length; i++)
-	    vCmd.addElement(startcmd[i]);
-
-	String serverCmd[] = new String[vCmd.size()];
-	for (int i = 0; i < vCmd.size(); i++)
-	{
-	    serverCmd[i] = (String)vCmd.elementAt(i);
-	    System.out.print(serverCmd[i] + " ");
-	}
-	System.out.println("");
-        // Start a process to run the Server
-	pr = Runtime.getRuntime().exec(serverCmd);
-	
-        // Write the out and err files to the server directory also
-	File out = new File(homeDir, framework + ".out");
-	fosOut = new FileOutputStream(out);
-	outSaver = new BackgroundStreamSaver(pr.getInputStream(), fosOut);
-	File err = new File(homeDir, framework + ".err");
-	fosErr = new FileOutputStream(err);
-	errSaver = new BackgroundStreamSaver(pr.getErrorStream(), fosErr);
-	
-	for (int i = 0 ; i <= 120 ; i++)
-	{
-	    // No need to wait for DB2
-	    if (isDB2Connection(framework))
-		break;
-     
-	    try
-	    {
- 			if (isNetworkServerConnection(framework))
-			{
-				// adding a testconnection check 
-				// so that the test does not start before the server is up
- 				if (testNetworkServerConnection())
-					break;
- 			}
- 			else	
- 			{
- 				Socket s = new Socket("localhost", this.port);
- 				s.close();
-				break;
- 			}
-
-		}
-		catch (Exception e)
-	    {
-		// bail out if something has been written to stderr
-		if (err.length() > 0) {
-		    break;
-		} else {
-				// it's probably unnecessary to sleep, since the
-				// connection request generally takes a long time when
-				// the listener hasn't started yet, but what the heck ...
-		    Thread.sleep(1000);
-				// but here we iterate, and after 120 seconds, we stop
-				// waiting to connect.
-		} 
-		
-	    }
-	}
-    }
-    
-	public boolean  testNetworkServerConnection() throws Exception
-	{ 	
-	    Object[] testConnectionArg  = null;
-		if (networkServer == null)
-		{
-			Constructor serverConstructor;
-			Class serverClass = Class.forName(NETWORK_SERVER_CLASS_NAME);
-			serverConstructor = serverClass.getDeclaredConstructor(null);
-			networkServer = serverConstructor.newInstance(null);
-			pingMethod = networkServer.getClass().getMethod("ping",
-															 null);
-		}
-		pingMethod.invoke(networkServer,null);
-		return true;
-	}
-
-    // stop the Server
-	public void stop() throws Exception
-    {
-	jvm jvm = null; // to quiet the compiler
-	jvm = jvm.getJvm(jvmName);
-	Vector jvmCmd = jvm.getCommandLine();
-	
-	Vector connV = new Vector();
-	for (int i = 0; i < jvmCmd.size(); i++)
-	{
-	    connV.addElement((String)jvmCmd.elementAt(i));
-        }
-	
-	String[] stopcmd1 = (String[]) frameworkInfo[STOP_CMD1_POS];
-		if (stopcmd1 == null)
-		    return;
-		
-		for (int i = 0; i < stopcmd1.length; i++)
-		    connV.addElement(stopcmd1[i]);
-		
-		String[] connCmd = new String[connV.size()];
-		for (int i = 0; i < connV.size(); i++)
-		{
-		    connCmd[i] = (String)connV.elementAt(i);
-		}		    
-		
-		
-		Vector stopV = new Vector();
-		for (int i = 0; i < jvmCmd.size(); i++)
-		{
-		    stopV.addElement((String)jvmCmd.elementAt(i));
-		}
-		Process prconn = Runtime.getRuntime().exec(connCmd);
-		// Give the server sixty seconds to shutdown.
-		TimedProcess tp = new TimedProcess(prconn);
-		tp.waitFor(60);
-		
-		String[] stopcmd2 = (String[]) frameworkInfo[STOP_CMD2_POS];
-		if (stopcmd2 != null)
-		{
-		    for (int i = 0; i < stopcmd2.length; i++)
-			stopV.addElement(stopcmd2[i]);
-		    
-		    String[] stopCmd = new String[stopV.size()];
-		    for (int i = 0; i < stopV.size(); i++)
-		    {
-			stopCmd[i] = (String)stopV.elementAt(i);
-		    }
-		    
-		    Process prstop = Runtime.getRuntime().exec(stopCmd);
-		    prstop.waitFor();
-		}
-
-		// Try a TimedProcess as Phil did for the WLServer
-		tp = new TimedProcess(pr);
-		// In case the Server didn't shut down, force it to ...
-		tp.waitFor(60);
-		
-		// Finish and close the redirected out and err files
-		outSaver.finish();
-		errSaver.finish();
-	}
-    
-    public void printFramworkInfo(String framework)
-    {
-	System.out.println("PREFIX = " + frameworkInfo[PREFIX_POS]);
-	System.out.println("SUFFIX = " + frameworkInfo[SUFFIX_POS]);
-	System.out.println("DRIVER = " + frameworkInfo[DRIVER_POS]);
-	System.out.println("PORT = " + frameworkInfo[PORT_POS]);
-	
-	for (int index = START_CMD_POS; index <= STOP_CMD2_POS; index++)
-	{
-	    String cmdString = "";
-	    String[] cmdArray = (String[]) frameworkInfo[index] ;
-	    for (int i = 0; i < cmdArray.length; i++)
-	    {
-		cmdString += " " + cmdArray[i];
-	    }
-	    if (index == START_CMD_POS)
-		System.out.println("START_CMD =  " + cmdString);
-	    else
-		System.out.println("STOP_CMD = " + cmdString);
-	    
-	}
-    }
-    
-    // Get Framework Info
-    public static String getURLPrefix(String fm)
-		{
-		    Object[] info = (Object[]) m.get(fm);
-		    return (String) info[PREFIX_POS];
-		}
-    
-    public static String getURLSuffix(String fm)
-    {
-	Object[] info = (Object[]) m.get(fm);
-	return (String) info[SUFFIX_POS];
-    }
-    
-    public static String getDriverName(String fm)
-    {
-	Object[] info =  (Object[]) m.get(fm);
-	if (info != null)
-	    return (String) info[DRIVER_POS];
-	else 
-	    return null;
-    }
-    
-    public static  boolean isDB2Connection(String fm)
-    {
-	return (fm.equals("DB2app") ||
-		fm.equals("DB2jcc"));
-
-    }
-
-	public static boolean isNetworkServerConnection(String fm)
-	{
-		return (fm.equals("DerbyNet"));
-	}
-
-    public static boolean isJCCConnection(String fm)
-    {
-	return (fm.equals("DerbyNet") ||
-		fm.equals("DB2jcc"));
-    }
-
-    /**
-     * @param fm framework name. database url from properties file
-     * @return  
-     * altered url (i.e. attributes stripped for DB2 and DerbyNet)
-     */
-
-    public static String alterURL(String fm, String url)
-    {
-	String urlPrefix = "jdbc:derby:";
-	String newURLPrefix = getURLPrefix(fm);
-	String newURLSuffix = getURLSuffix(fm);
-	
-	// If we don't have a URL prefix for this framework
-	// just return
-	if (newURLPrefix == null)
-	    return url;
-
-	if (newURLSuffix == null)
-	    newURLSuffix = "";
-	
-	if (url.equals(urlPrefix)) // Replace embedded
-	    return newURLPrefix;
-
-	// If this is a DB2 connection we need to strip 
-	// the connection attributes
-	int attrOffset = url.indexOf(';');
-	if (NetServer.isDB2Connection(fm)  &&
-		attrOffset != -1)
-	    url = url.substring(0,attrOffset);
-	
-	
-	if (url.startsWith(urlPrefix))
-	{
-	    // replace jdbc:derby: with our url:
-	    url = newURLPrefix +
-		url.substring(urlPrefix.length()) +
-		newURLSuffix;
-	}
-	else
-	{
-	    if (! (url.startsWith("jdbc:")))
-	    {
-		url = newURLPrefix + url + newURLSuffix;
-	    }
-	}
-	return url;
-    }
-    
-
-}
+/*
+
+   Derby - Class org.apache.derbyTesting.functionTests.harness.NetServer
+
+   Copyright 2002, 2004 The Apache Software Foundation or its licensors, as applicable.
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+ */
+
+package org.apache.derbyTesting.functionTests.harness;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.util.Properties;
+import java.util.Vector;
+import java.util.Hashtable;
+import java.lang.reflect.Method;
+import java.lang.reflect.Constructor;
+import java.net.ConnectException;
+import java.net.Socket;
+
+public class NetServer
+{
+
+    File homeDir; // The server directory (usually the test directory)
+    String jvmName = "jdk13";
+    String clPath;
+    String javaCmd;
+    String jvmflags;
+    String framework;
+    
+    Object[] frameworkInfo;
+    int port;
+    Process pr;
+    BackgroundStreamSaver outSaver, errSaver;
+    FileOutputStream fosOut, fosErr;
+    private String java;
+
+	//  Variables for test connection
+    Object networkServer;   // Server needs to be created with reflection
+	Method pingMethod;
+
+	private static String NETWORK_SERVER_CLASS_NAME="org.apache.derby.drda.NetworkServerControl";
+    
+    public static Hashtable m;
+    public static int PREFIX_POS = 0;
+    public static int SUFFIX_POS = 1;
+    public static int DRIVER_POS = 2;
+    public static int PORT_POS = 3;
+    public static int START_CMD_POS = 4;
+    public static int STOP_CMD1_POS = 5;
+    public static int STOP_CMD2_POS = 6;
+
+    
+    static {
+	m =  new Hashtable();
+	// Hashtable is keyed on framework name and has 
+	// an array of the framework prefix, suffix, driver, port  and 
+	// String[] command arguments to start the server
+	// String[] Command arguments to stop the server
+	m.put("DerbyNet", new Object[]
+	    {"jdbc:derby:net://localhost:1527/",                 //prefix
+	     "",                                            // suffix
+	     "com.ibm.db2.jcc.DB2Driver",                   //driver
+	     "1527",                                        // port
+	     new String[] {NETWORK_SERVER_CLASS_NAME,  //start
+			   "start"},                        
+	     new String[] {NETWORK_SERVER_CLASS_NAME,  //shutdown
+			   "shutdown"},
+	     null});                                        //shutdown2
+
+	m.put("DB2jcc", new Object[]
+	    {"jdbc:db2://localhost:50000/",                //prefix
+	     "",                                            //suffix
+	     "com.ibm.db2.jcc.DB2Driver",                   //driver
+	     "50000",                                       //port
+	     null,                                          //start
+	     null,                                          
+	     null});
+
+	m.put("DB2app", new Object[]
+	    {"jdbc:db2:",
+	     "",
+	     "COM.ibm.db2.jdbc.app.DB2Driver",
+	     "0",
+	     null,
+	     null,
+	     null});
+    }
+
+    public NetServer(File homeDir, String jvmName, String clPath, String
+		     javaCmd, String jvmflags, String framework) 
+	throws Exception
+    {
+	this.homeDir = homeDir;
+        this.jvmName = jvmName;
+        this.clPath = clPath;
+        this.javaCmd = javaCmd;
+        this.jvmflags = jvmflags;
+	this.framework = framework;
+	frameworkInfo =  (Object[]) m.get(framework);
+	
+	this.port = Integer.parseInt((String) frameworkInfo[PORT_POS]);
+	
+	// System.out.println("framework: " + this.framework + "port: " + this.port);
+	
+    }
+    public void start() throws Exception
+    {
+	// Create the Server directory under the    server dir
+	(new File(homeDir, framework + "Server")).mkdir();
+	String[] startcmd = (String[]) frameworkInfo[START_CMD_POS];
+	// if we are just connecting to DB2 we return
+	if (startcmd == null) 
+	    return;
+	
+        // Build the command to run the WL server
+	String homeDirName = homeDir.getCanonicalPath();
+		jvm jvm = null; // to quiet the compiler
+		jvm = jvm.getJvm(jvmName);
+		if (jvmName.equals("jview"))
+		    jvm.setJavaCmd("jview");
+		else if (javaCmd != null)
+		    jvm.setJavaCmd(javaCmd);
+		
+		Vector jvmProps = new Vector();
+		if ( (clPath != null) && (clPath.length()>0) )
+		    jvm.setClasspath(clPath);
+
+        if ( (jvmflags != null) && (jvmflags.length()>0) )
+            jvm.setFlags(jvmflags);
+
+
+        if (!jvmName.equals("jview"))
+        {
+            jvm.setMs(16*1024*1024); // -ms16m
+            jvm.setMx(32*1024*1024); // -mx32m
+            jvm.setNoasyncgc(true); // -noasyncgc
+        }
+
+        jvmProps.addElement("derby.system.home=" + homeDirName);
+		jvm.setD(jvmProps);
+		jvm.setSecurityProps();
+        // For some platforms (like Mac) the process exec command
+        // must be a string array; so we build this with a Vector
+        // first because some strings (paths) could have spaces
+	Vector vCmd = jvm.getCommandLine();
+	for (int i = 0; i < startcmd.length; i++)
+	    vCmd.addElement(startcmd[i]);
+
+	String serverCmd[] = new String[vCmd.size()];
+	for (int i = 0; i < vCmd.size(); i++)
+	{
+	    serverCmd[i] = (String)vCmd.elementAt(i);
+	    System.out.print(serverCmd[i] + " ");
+	}
+	System.out.println("");
+        // Start a process to run the Server
+	pr = Runtime.getRuntime().exec(serverCmd);
+	
+        // Write the out and err files to the server directory also
+	File out = new File(homeDir, framework + ".out");
+	fosOut = new FileOutputStream(out);
+	outSaver = new BackgroundStreamSaver(pr.getInputStream(), fosOut);
+	File err = new File(homeDir, framework + ".err");
+	fosErr = new FileOutputStream(err);
+	errSaver = new BackgroundStreamSaver(pr.getErrorStream(), fosErr);
+	
+	for (int i = 0 ; i <= 120 ; i++)
+	{
+	    // No need to wait for DB2
+	    if (isDB2Connection(framework))
+		break;
+     
+	    try
+	    {
+ 			if (isNetworkServerConnection(framework))
+			{
+				// adding a testconnection check 
+				// so that the test does not start before the server is up
+ 				if (testNetworkServerConnection())
+					break;
+ 			}
+ 			else	
+ 			{
+ 				Socket s = new Socket("localhost", this.port);
+ 				s.close();
+				break;
+ 			}
+
+		}
+		catch (Exception e)
+	    {
+		// bail out if something has been written to stderr
+		if (err.length() > 0) {
+		    break;
+		} else {
+				// it's probably unnecessary to sleep, since the
+				// connection request generally takes a long time when
+				// the listener hasn't started yet, but what the heck ...
+		    Thread.sleep(1000);
+				// but here we iterate, and after 120 seconds, we stop
+				// waiting to connect.
+		} 
+		
+	    }
+	}
+    }
+    
+	public boolean  testNetworkServerConnection() throws Exception
+	{ 	
+	    Object[] testConnectionArg  = null;
+		if (networkServer == null)
+		{
+			Constructor serverConstructor;
+			Class serverClass = Class.forName(NETWORK_SERVER_CLASS_NAME);
+			serverConstructor = serverClass.getDeclaredConstructor(null);
+			networkServer = serverConstructor.newInstance(null);
+			pingMethod = networkServer.getClass().getMethod("ping",
+															 null);
+		}
+		pingMethod.invoke(networkServer,null);
+		return true;
+	}
+
+    // stop the Server
+	public void stop() throws Exception
+    {
+	jvm jvm = null; // to quiet the compiler
+	jvm = jvm.getJvm(jvmName);
+	Vector jvmCmd = jvm.getCommandLine();
+	
+	Vector connV = new Vector();
+	for (int i = 0; i < jvmCmd.size(); i++)
+	{
+	    connV.addElement((String)jvmCmd.elementAt(i));
+        }
+	
+	String[] stopcmd1 = (String[]) frameworkInfo[STOP_CMD1_POS];
+		if (stopcmd1 == null)
+		    return;
+		
+		for (int i = 0; i < stopcmd1.length; i++)
+		    connV.addElement(stopcmd1[i]);
+		
+		String[] connCmd = new String[connV.size()];
+		for (int i = 0; i < connV.size(); i++)
+		{
+		    connCmd[i] = (String)connV.elementAt(i);
+		}		    
+		
+		
+		Vector stopV = new Vector();
+		for (int i = 0; i < jvmCmd.size(); i++)
+		{
+		    stopV.addElement((String)jvmCmd.elementAt(i));
+		}
+		Process prconn = Runtime.getRuntime().exec(connCmd);
+		// Give the server sixty seconds to shutdown.
+		TimedProcess tp = new TimedProcess(prconn);
+		tp.waitFor(60);
+		
+		String[] stopcmd2 = (String[]) frameworkInfo[STOP_CMD2_POS];
+		if (stopcmd2 != null)
+		{
+		    for (int i = 0; i < stopcmd2.length; i++)
+			stopV.addElement(stopcmd2[i]);
+		    
+		    String[] stopCmd = new String[stopV.size()];
+		    for (int i = 0; i < stopV.size(); i++)
+		    {
+			stopCmd[i] = (String)stopV.elementAt(i);
+		    }
+		    
+		    Process prstop = Runtime.getRuntime().exec(stopCmd);
+		    prstop.waitFor();
+		}
+
+		// Try a TimedProcess as Phil did for the WLServer
+		tp = new TimedProcess(pr);
+		// In case the Server didn't shut down, force it to ...
+		tp.waitFor(60);
+		
+		// Finish and close the redirected out and err files
+		outSaver.finish();
+		errSaver.finish();
+	}
+    
+    public void printFramworkInfo(String framework)
+    {
+	System.out.println("PREFIX = " + frameworkInfo[PREFIX_POS]);
+	System.out.println("SUFFIX = " + frameworkInfo[SUFFIX_POS]);
+	System.out.println("DRIVER = " + frameworkInfo[DRIVER_POS]);
+	System.out.println("PORT = " + frameworkInfo[PORT_POS]);
+	
+	for (int index = START_CMD_POS; index <= STOP_CMD2_POS; index++)
+	{
+	    String cmdString = "";
+	    String[] cmdArray = (String[]) frameworkInfo[index] ;
+	    for (int i = 0; i < cmdArray.length; i++)
+	    {
+		cmdString += " " + cmdArray[i];
+	    }
+	    if (index == START_CMD_POS)
+		System.out.println("START_CMD =  " + cmdString);
+	    else
+		System.out.println("STOP_CMD = " + cmdString);
+	    
+	}
+    }
+    
+    // Get Framework Info
+    public static String getURLPrefix(String fm)
+		{
+		    Object[] info = (Object[]) m.get(fm);
+		    return (String) info[PREFIX_POS];
+		}
+    
+    public static String getURLSuffix(String fm)
+    {
+	Object[] info = (Object[]) m.get(fm);
+	return (String) info[SUFFIX_POS];
+    }
+    
+    public static String getDriverName(String fm)
+    {
+	Object[] info =  (Object[]) m.get(fm);
+	if (info != null)
+	    return (String) info[DRIVER_POS];
+	else 
+	    return null;
+    }
+    
+    public static  boolean isDB2Connection(String fm)
+    {
+	return (fm.equals("DB2app") ||
+		fm.equals("DB2jcc"));
+
+    }
+
+	public static boolean isNetworkServerConnection(String fm)
+	{
+		return (fm.equals("DerbyNet"));
+	}
+
+    public static boolean isJCCConnection(String fm)
+    {
+	return (fm.equals("DerbyNet") ||
+		fm.equals("DB2jcc"));
+    }
+
+    /**
+     * @param fm framework name. database url from properties file
+     * @return  
+     * altered url (i.e. attributes stripped for DB2 and DerbyNet)
+     */
+
+    public static String alterURL(String fm, String url)
+    {
+	String urlPrefix = "jdbc:derby:";
+	String newURLPrefix = getURLPrefix(fm);
+	String newURLSuffix = getURLSuffix(fm);
+	
+	// If we don't have a URL prefix for this framework
+	// just return
+	if (newURLPrefix == null)
+	    return url;
+
+	if (newURLSuffix == null)
+	    newURLSuffix = "";
+	
+	if (url.equals(urlPrefix)) // Replace embedded
+	    return newURLPrefix;
+
+	// If this is a DB2 connection we need to strip 
+	// the connection attributes
+	int attrOffset = url.indexOf(';');
+	if (NetServer.isDB2Connection(fm)  &&
+		attrOffset != -1)
+	    url = url.substring(0,attrOffset);
+	
+	
+	if (url.startsWith(urlPrefix))
+	{
+	    // replace jdbc:derby: with our url:
+	    url = newURLPrefix +
+		url.substring(urlPrefix.length()) +
+		newURLSuffix;
+	}
+	else
+	{
+	    if (! (url.startsWith("jdbc:")))
+	    {
+		url = newURLPrefix + url + newURLSuffix;
+	    }
+	}
+	return url;
+    }
+    
+
+}

Modified: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/ProcessStreamDrainer.java
Url: http://svn.apache.org/viewcvs/incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/ProcessStreamDrainer.java?view=diff&rev=122528&p1=incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/ProcessStreamDrainer.java&r1=122527&p2=incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/ProcessStreamDrainer.java&r2=122528
==============================================================================
--- incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/ProcessStreamDrainer.java	(original)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/ProcessStreamDrainer.java	Wed Dec 15 22:20:35 2004
@@ -1,102 +1,102 @@
-/*
-
-   Derby - Class org.apache.derbyTesting.functionTests.harness.ProcessStreamDrainer
-
-   Copyright 1999, 2004 The Apache Software Foundation or its licensors, as applicable.
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-   You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
-
- */
-
-package org.apache.derbyTesting.functionTests.harness;
-
-import java.io.*;
-
-
-public class ProcessStreamDrainer implements Runnable
-{
-
-	protected ByteArrayOutputStream data;
-	protected InputStream in;
-	protected FileOutputStream fos;
-	protected BufferedOutputStream bos;
-	protected boolean finished;
-	protected IOException ioe;
-
-	public ProcessStreamDrainer(InputStream in, File tmpOutFile)
-	    throws IOException, InterruptedException
-	{
-		data = new ByteArrayOutputStream();
-		this.in = in;
-        this.fos = new FileOutputStream(tmpOutFile);
-        this.bos = new BufferedOutputStream(fos, 4096);
-		Thread myThread = new Thread(this, getClass().getName());
-
-		myThread.setPriority(Thread.MIN_PRIORITY);
-		//System.out.println("ProcessStreamDrainer calling start...");
-		myThread.start();
-	}
-
-	public synchronized void run()
-	{
-        //System.out.println("Thread run...");
-        if ( in == null )
-        {
-            System.out.println("The inputstream is null");
-            System.exit(1);
-        }
-
-		try
-		{
-			byte[] ca = new byte[4096];
-			int valid;
-			while ((valid = in.read(ca, 0, ca.length)) != -1)
-			{
-			    //System.out.println(ca);
-    			bos.write(ca, 0, valid);
-    			bos.flush();
-			}
-			bos.flush();
-		}
-		catch (IOException ioe)
-		{
-			System.out.println(ioe);
-		}
-
-		synchronized (this)
-		{
-			finished = true;
-			notifyAll();
-		}
-	}
-
-	public void Wait() throws IOException
-	{
-	    synchronized(this)
-	    {
-	        try
-	        {
-	            while (!finished)
-	            {
-	                wait();
-	            }
-	        }
-	        catch (InterruptedException ie)
-	        {
-	            System.out.println("Interrupted: " + ie.toString());
-	        }
-	    }
-	    bos.close();
-	    return;
-	}
-}
+/*
+
+   Derby - Class org.apache.derbyTesting.functionTests.harness.ProcessStreamDrainer
+
+   Copyright 1999, 2004 The Apache Software Foundation or its licensors, as applicable.
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+ */
+
+package org.apache.derbyTesting.functionTests.harness;
+
+import java.io.*;
+
+
+public class ProcessStreamDrainer implements Runnable
+{
+
+	protected ByteArrayOutputStream data;
+	protected InputStream in;
+	protected FileOutputStream fos;
+	protected BufferedOutputStream bos;
+	protected boolean finished;
+	protected IOException ioe;
+
+	public ProcessStreamDrainer(InputStream in, File tmpOutFile)
+	    throws IOException, InterruptedException
+	{
+		data = new ByteArrayOutputStream();
+		this.in = in;
+        this.fos = new FileOutputStream(tmpOutFile);
+        this.bos = new BufferedOutputStream(fos, 4096);
+		Thread myThread = new Thread(this, getClass().getName());
+
+		myThread.setPriority(Thread.MIN_PRIORITY);
+		//System.out.println("ProcessStreamDrainer calling start...");
+		myThread.start();
+	}
+
+	public synchronized void run()
+	{
+        //System.out.println("Thread run...");
+        if ( in == null )
+        {
+            System.out.println("The inputstream is null");
+            System.exit(1);
+        }
+
+		try
+		{
+			byte[] ca = new byte[4096];
+			int valid;
+			while ((valid = in.read(ca, 0, ca.length)) != -1)
+			{
+			    //System.out.println(ca);
+    			bos.write(ca, 0, valid);
+    			bos.flush();
+			}
+			bos.flush();
+		}
+		catch (IOException ioe)
+		{
+			System.out.println(ioe);
+		}
+
+		synchronized (this)
+		{
+			finished = true;
+			notifyAll();
+		}
+	}
+
+	public void Wait() throws IOException
+	{
+	    synchronized(this)
+	    {
+	        try
+	        {
+	            while (!finished)
+	            {
+	                wait();
+	            }
+	        }
+	        catch (InterruptedException ie)
+	        {
+	            System.out.println("Interrupted: " + ie.toString());
+	        }
+	    }
+	    bos.close();
+	    return;
+	}
+}

Modified: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/ProcessStreamResult.java
Url: http://svn.apache.org/viewcvs/incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/ProcessStreamResult.java?view=diff&rev=122528&p1=incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/ProcessStreamResult.java&r1=122527&p2=incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/ProcessStreamResult.java&r2=122528
==============================================================================
--- incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/ProcessStreamResult.java	(original)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/ProcessStreamResult.java	Wed Dec 15 22:20:35 2004
@@ -1,140 +1,140 @@
-/*
-
-   Derby - Class org.apache.derbyTesting.functionTests.harness.ProcessStreamResult
-
-   Copyright 1999, 2004 The Apache Software Foundation or its licensors, as applicable.
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-   You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
-
- */
-
-package org.apache.derbyTesting.functionTests.harness;
-
-import java.io.*;
-import java.sql.Timestamp;
-
-
-public class ProcessStreamResult implements Runnable
-{
-
-	protected InputStream in;
-	protected BufferedOutputStream bos;
-	protected boolean finished;
-	protected IOException ioe;
-	protected Thread myThread;
-	protected long startTime;
-	protected boolean interrupted;
-	protected int timeout;
-
-	public ProcessStreamResult(InputStream in, BufferedOutputStream bos,
-	    String timemin) throws IOException, InterruptedException
-	{
-		this.in = in;
-        this.bos = bos;
-        this.startTime = System.currentTimeMillis();
-        if (timemin != null)
-        {
-            Integer i = new Integer(timemin);
-            timeout = i.intValue();
-        }
-        else
-            timeout = 0;
-		myThread = new Thread(this);
-		myThread.setPriority(Thread.MIN_PRIORITY);
-		myThread.start();
-	}
-
-	public void run()
-	{
-        //System.out.println("Thread run... " + tname);
-        if ( in == null )
-        {
-            System.out.println("The inputstream is null");
-            System.exit(1);
-        }
-        
-		try
-		{
-			byte[] ba = new byte[1024];
-			int valid;
-			interrupted = false;
-			while ((valid = in.read(ba, 0, ba.length)) != -1)
-			{
-			    //System.out.println("Still reading thread: " + tname);
-/*				if (timeout > 0) {
-					long millis = System.currentTimeMillis();
-
-					long diff = millis - startTime;
-
-					int mins = (int) (diff / (1000 * 60));
-
-					if (mins > timeout) {
-						System.out.println("Timeout, kill the thread... ");
-						//myThread.dumpStack();
-						synchronized (this)
-						{
-							interrupted = true;
-							finished = true;
-							notifyAll();
-							return;
-						}
-					}
-			    }
-*/    			bos.write(ba, 0, valid);
-    			bos.flush();
-			}
-		}
-		catch (IOException ioe)
-		{
-			//System.out.println(ioe);
-			//ioe.printStackTrace();
-		}
-
-		synchronized (this)
-		{
-			finished = true;
-			notifyAll();
-		}
-	}
-
-	public boolean Wait() throws IOException
-	{
-	    synchronized(this)
-	    {
-			if (timeout > 0) {
-				long millis = System.currentTimeMillis();
-
-				long diff = millis - startTime;
-
-				int mins = (int) (diff / (1000 * 60));
-
-				if (mins > timeout)
-				{
-					return interrupted;
-				}
-			}
-			try
-			{
-				while (!finished && !interrupted)
-				{
-					wait();
-				}
-			}
-			catch (InterruptedException ie)
-			{
-				System.out.println("Interrupted: " + ie.toString());
-			}
-	    }
-	    return interrupted;
-	}
-}
+/*
+
+   Derby - Class org.apache.derbyTesting.functionTests.harness.ProcessStreamResult
+
+   Copyright 1999, 2004 The Apache Software Foundation or its licensors, as applicable.
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+ */
+
+package org.apache.derbyTesting.functionTests.harness;
+
+import java.io.*;
+import java.sql.Timestamp;
+
+
+public class ProcessStreamResult implements Runnable
+{
+
+	protected InputStream in;
+	protected BufferedOutputStream bos;
+	protected boolean finished;
+	protected IOException ioe;
+	protected Thread myThread;
+	protected long startTime;
+	protected boolean interrupted;
+	protected int timeout;
+
+	public ProcessStreamResult(InputStream in, BufferedOutputStream bos,
+	    String timemin) throws IOException, InterruptedException
+	{
+		this.in = in;
+        this.bos = bos;
+        this.startTime = System.currentTimeMillis();
+        if (timemin != null)
+        {
+            Integer i = new Integer(timemin);
+            timeout = i.intValue();
+        }
+        else
+            timeout = 0;
+		myThread = new Thread(this);
+		myThread.setPriority(Thread.MIN_PRIORITY);
+		myThread.start();
+	}
+
+	public void run()
+	{
+        //System.out.println("Thread run... " + tname);
+        if ( in == null )
+        {
+            System.out.println("The inputstream is null");
+            System.exit(1);
+        }
+        
+		try
+		{
+			byte[] ba = new byte[1024];
+			int valid;
+			interrupted = false;
+			while ((valid = in.read(ba, 0, ba.length)) != -1)
+			{
+			    //System.out.println("Still reading thread: " + tname);
+/*				if (timeout > 0) {
+					long millis = System.currentTimeMillis();
+
+					long diff = millis - startTime;
+
+					int mins = (int) (diff / (1000 * 60));
+
+					if (mins > timeout) {
+						System.out.println("Timeout, kill the thread... ");
+						//myThread.dumpStack();
+						synchronized (this)
+						{
+							interrupted = true;
+							finished = true;
+							notifyAll();
+							return;
+						}
+					}
+			    }
+*/    			bos.write(ba, 0, valid);
+    			bos.flush();
+			}
+		}
+		catch (IOException ioe)
+		{
+			//System.out.println(ioe);
+			//ioe.printStackTrace();
+		}
+
+		synchronized (this)
+		{
+			finished = true;
+			notifyAll();
+		}
+	}
+
+	public boolean Wait() throws IOException
+	{
+	    synchronized(this)
+	    {
+			if (timeout > 0) {
+				long millis = System.currentTimeMillis();
+
+				long diff = millis - startTime;
+
+				int mins = (int) (diff / (1000 * 60));
+
+				if (mins > timeout)
+				{
+					return interrupted;
+				}
+			}
+			try
+			{
+				while (!finished && !interrupted)
+				{
+					wait();
+				}
+			}
+			catch (InterruptedException ie)
+			{
+				System.out.println("Interrupted: " + ie.toString());
+			}
+	    }
+	    return interrupted;
+	}
+}

Modified: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/PropertyUtil.java
Url: http://svn.apache.org/viewcvs/incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/PropertyUtil.java?view=diff&rev=122528&p1=incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/PropertyUtil.java&r1=122527&p2=incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/PropertyUtil.java&r2=122528
==============================================================================
--- incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/PropertyUtil.java	(original)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/PropertyUtil.java	Wed Dec 15 22:20:35 2004
@@ -1,150 +1,150 @@
-/* 
-
-   Derby - Class org.apache.derbyTesting.functionTests.harness.PropertyUtil
-
-   Copyright 1999, 2004 The Apache Software Foundation or its licensors, as applicable.
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-   You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
-
- */
-
-package org.apache.derbyTesting.functionTests.harness;
-
-import java.util.Properties;
-import java.util.Enumeration;
-
-public class PropertyUtil {  
-
-
-	//////////////////////////////////////////////////////////////////////////////
-	//
-	//	SORTS A PROPERTY LIST AND STRINGIFIES THE SORTED PROPERTIES
-	//
-	/////////////////////////////////////////////////////////////////////////////
-
-	/**
-	  *	Sorts a property list and turns the sorted list into a string.
-	  *
-	  *	@param	list	property list to sort
-	  *
-	  *	@return	a string version of the sorted list
-	  */
-	public	static	String	sortProperties( Properties list )
-	{
-		// stringify them with no indentation
-		return sortProperties(list, null);
-	}
-
-	/**
-	 * Sorts property list and print out each key=value pair prepended with 
-	 * specific indentation.  If indent is null, do not prepend with
-	 * indentation. 
-	 *
-	 * The output string shows up in two styles, style 1 looks like
-	 * { key1=value1, key2=value2, key3=value3 }
-	 *
-	 * style 2 looks like
-	 *		key1=value1
-	 *		key2=value2
-	 *		key3=value3
-	 * where indent goes between the new line and the keys
-	 *
-	 * To get style 1, pass in a null indent
-	 * To get sytle 2, pass in non-null indent (whatever you want to go before
-	 * the key value)
-	 */
-	public	static	String	sortProperties( Properties list, char[] indent )
-	{
-		int				size = list == null ? 0 : list.size();
-		int				count = 0;
-		String[]		array = new String[size];
-		String			key;
-		String			value;
-		StringBuffer	buffer;
-
-		// Calculate the number of properties in the property list and
-		// build an array of all the property names.
-		// We need to go thru the enumeration because Properties has a
-		// recursive list of defaults.
-		if (list != null)
-		{
-			for (Enumeration propertyNames = list.propertyNames();
-				 propertyNames.hasMoreElements(); )
-			{
-				if (count == size)
-				{
-					// need to expand the array
-					size = size*2;
-					String[] expandedArray = new String[size];
-					System.arraycopy(array, 0, expandedArray, 0, count);
-					array = expandedArray;
-				}
-				key = (String) propertyNames.nextElement();
-				array[ count++ ] = key;
-			}
-			// now sort the array
-			java.util.Arrays.sort( array, 0, count );
-		}
-
-
-		// now stringify the array
-		buffer = new StringBuffer();
-		if (indent == null)
-			buffer.append( "{ " );
-
-		for ( int ictr = 0; ictr < count; ictr++ )
-		{
-			if ( ictr > 0 && indent == null)
-				buffer.append( ", " );
-
-			key = array[ ictr ];
-
-			if (indent != null)
-				buffer.append( indent );
-
-			buffer.append( key ); buffer.append( "=" );
-
-			value = list.getProperty( key, "MISSING_VALUE" );
-			buffer.append( value );
-
-			if (indent != null)
-				buffer.append( "\n" );
-
-		}
-		if (indent == null)
-			buffer.append( " }" );
-
-		return	buffer.toString();
-	}
-
-    /**
-     * Copy a set of properties from one Property to another.
-     * <p>
-     *
-	 * @return The identifier to be used to open the conglomerate later.
-     *
-     * @param src_prop  Source set of properties to copy from.
-     * @param dest_prop Dest Properties to copy into.
-     *
-     **/
-    public static void copyProperties(Properties src_prop, Properties dest_prop)
-    {
-        for (Enumeration propertyNames = src_prop.propertyNames();
-             propertyNames.hasMoreElements(); )
-        {
-            String key = (String) propertyNames.nextElement();
-            dest_prop.put(key, src_prop.getProperty(key));
-        }
-    }
-}
-
+/* 
+
+   Derby - Class org.apache.derbyTesting.functionTests.harness.PropertyUtil
+
+   Copyright 1999, 2004 The Apache Software Foundation or its licensors, as applicable.
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+ */
+
+package org.apache.derbyTesting.functionTests.harness;
+
+import java.util.Properties;
+import java.util.Enumeration;
+
+public class PropertyUtil {  
+
+
+	//////////////////////////////////////////////////////////////////////////////
+	//
+	//	SORTS A PROPERTY LIST AND STRINGIFIES THE SORTED PROPERTIES
+	//
+	/////////////////////////////////////////////////////////////////////////////
+
+	/**
+	  *	Sorts a property list and turns the sorted list into a string.
+	  *
+	  *	@param	list	property list to sort
+	  *
+	  *	@return	a string version of the sorted list
+	  */
+	public	static	String	sortProperties( Properties list )
+	{
+		// stringify them with no indentation
+		return sortProperties(list, null);
+	}
+
+	/**
+	 * Sorts property list and print out each key=value pair prepended with 
+	 * specific indentation.  If indent is null, do not prepend with
+	 * indentation. 
+	 *
+	 * The output string shows up in two styles, style 1 looks like
+	 * { key1=value1, key2=value2, key3=value3 }
+	 *
+	 * style 2 looks like
+	 *		key1=value1
+	 *		key2=value2
+	 *		key3=value3
+	 * where indent goes between the new line and the keys
+	 *
+	 * To get style 1, pass in a null indent
+	 * To get sytle 2, pass in non-null indent (whatever you want to go before
+	 * the key value)
+	 */
+	public	static	String	sortProperties( Properties list, char[] indent )
+	{
+		int				size = list == null ? 0 : list.size();
+		int				count = 0;
+		String[]		array = new String[size];
+		String			key;
+		String			value;
+		StringBuffer	buffer;
+
+		// Calculate the number of properties in the property list and
+		// build an array of all the property names.
+		// We need to go thru the enumeration because Properties has a
+		// recursive list of defaults.
+		if (list != null)
+		{
+			for (Enumeration propertyNames = list.propertyNames();
+				 propertyNames.hasMoreElements(); )
+			{
+				if (count == size)
+				{
+					// need to expand the array
+					size = size*2;
+					String[] expandedArray = new String[size];
+					System.arraycopy(array, 0, expandedArray, 0, count);
+					array = expandedArray;
+				}
+				key = (String) propertyNames.nextElement();
+				array[ count++ ] = key;
+			}
+			// now sort the array
+			java.util.Arrays.sort( array, 0, count );
+		}
+
+
+		// now stringify the array
+		buffer = new StringBuffer();
+		if (indent == null)
+			buffer.append( "{ " );
+
+		for ( int ictr = 0; ictr < count; ictr++ )
+		{
+			if ( ictr > 0 && indent == null)
+				buffer.append( ", " );
+
+			key = array[ ictr ];
+
+			if (indent != null)
+				buffer.append( indent );
+
+			buffer.append( key ); buffer.append( "=" );
+
+			value = list.getProperty( key, "MISSING_VALUE" );
+			buffer.append( value );
+
+			if (indent != null)
+				buffer.append( "\n" );
+
+		}
+		if (indent == null)
+			buffer.append( " }" );
+
+		return	buffer.toString();
+	}
+
+    /**
+     * Copy a set of properties from one Property to another.
+     * <p>
+     *
+	 * @return The identifier to be used to open the conglomerate later.
+     *
+     * @param src_prop  Source set of properties to copy from.
+     * @param dest_prop Dest Properties to copy into.
+     *
+     **/
+    public static void copyProperties(Properties src_prop, Properties dest_prop)
+    {
+        for (Enumeration propertyNames = src_prop.propertyNames();
+             propertyNames.hasMoreElements(); )
+        {
+            String key = (String) propertyNames.nextElement();
+            dest_prop.put(key, src_prop.getProperty(key));
+        }
+    }
+}
+

Modified: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/RunClass.java
Url: http://svn.apache.org/viewcvs/incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/RunClass.java?view=diff&rev=122528&p1=incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/RunClass.java&r1=122527&p2=incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/RunClass.java&r2=122528
==============================================================================
--- incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/RunClass.java	(original)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/RunClass.java	Wed Dec 15 22:20:35 2004
@@ -1,69 +1,69 @@
-/*
-
-   Derby - Class org.apache.derbyTesting.functionTests.harness.RunClass
-
-   Copyright 2000, 2004 The Apache Software Foundation or its licensors, as applicable.
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-   You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
-
- */
-
-package org.apache.derbyTesting.functionTests.harness;
-
-import java.lang.reflect.Method;
-
-
-// the purpose of this class is to run Java-based test cases in a separate thread
-public class RunClass implements Runnable
-{
-
-	/**
-		param args the arguments to pass into ij
-	*/
-	public RunClass(Class theClass, Method methodToCall, Object args[])
-	{
-		mainMethod = methodToCall;
-		arguments=args;	
-		testClass = theClass;
-	}
-
-	Object arguments[];
-	Method mainMethod;
-	Class testClass;
-
-	public void run()
-	{
-        synchronized (this)
-        {
-		    try
-		    {
-			    mainMethod.invoke(testClass.newInstance(), arguments);				
-		    }
-		    catch (InstantiationException ie)
-		    {
-		        System.out.println("Class could not be instantiated: " + ie);
-		        System.exit(1);
-		    }
-		    catch (IllegalAccessException iae)
-		    {
-		        System.out.println("RunClass: " + iae + " make sure the test class is public.");
-		        System.exit(1);
-		    }
-		    catch (Exception e)
-		    {
-			    System.out.println("RunClass --> " + e);
-			    e.printStackTrace();
-		    }
-		}
-	}
-}
+/*
+
+   Derby - Class org.apache.derbyTesting.functionTests.harness.RunClass
+
+   Copyright 2000, 2004 The Apache Software Foundation or its licensors, as applicable.
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+ */
+
+package org.apache.derbyTesting.functionTests.harness;
+
+import java.lang.reflect.Method;
+
+
+// the purpose of this class is to run Java-based test cases in a separate thread
+public class RunClass implements Runnable
+{
+
+	/**
+		param args the arguments to pass into ij
+	*/
+	public RunClass(Class theClass, Method methodToCall, Object args[])
+	{
+		mainMethod = methodToCall;
+		arguments=args;	
+		testClass = theClass;
+	}
+
+	Object arguments[];
+	Method mainMethod;
+	Class testClass;
+
+	public void run()
+	{
+        synchronized (this)
+        {
+		    try
+		    {
+			    mainMethod.invoke(testClass.newInstance(), arguments);				
+		    }
+		    catch (InstantiationException ie)
+		    {
+		        System.out.println("Class could not be instantiated: " + ie);
+		        System.exit(1);
+		    }
+		    catch (IllegalAccessException iae)
+		    {
+		        System.out.println("RunClass: " + iae + " make sure the test class is public.");
+		        System.exit(1);
+		    }
+		    catch (Exception e)
+		    {
+			    System.out.println("RunClass --> " + e);
+			    e.printStackTrace();
+		    }
+		}
+	}
+}

Modified: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/RunIJ.java
Url: http://svn.apache.org/viewcvs/incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/RunIJ.java?view=diff&rev=122528&p1=incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/RunIJ.java&r1=122527&p2=incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/RunIJ.java&r2=122528
==============================================================================
--- incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/RunIJ.java	(original)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/RunIJ.java	Wed Dec 15 22:20:35 2004
@@ -1,53 +1,53 @@
-/*
-
-   Derby - Class org.apache.derbyTesting.functionTests.harness.RunIJ
-
-   Copyright 2000, 2004 The Apache Software Foundation or its licensors, as applicable.
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-   You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
-
- */
-
-package org.apache.derbyTesting.functionTests.harness;
-
-
-// the purpose of this class is to run IJ in a separate thread
-public class RunIJ implements Runnable
-{
-
-	/**
-		param args the arguments to pass into ij
-	*/
-	public RunIJ(String args[])
-	{
-		ijArgs=args;	
-	}
-
-	String ijArgs[];
-
-	public void run()
-	{
-	    synchronized (this)
-	    {
-		    try
-		    {
-			    org.apache.derby.tools.ij.main(ijArgs);
-		    }
-		    catch (Exception e)
-		    {
-			    System.out.println("RunIJ --> " + e);
-			    e.printStackTrace();
-		    }
-		}
-	}
-}
+/*
+
+   Derby - Class org.apache.derbyTesting.functionTests.harness.RunIJ
+
+   Copyright 2000, 2004 The Apache Software Foundation or its licensors, as applicable.
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+ */
+
+package org.apache.derbyTesting.functionTests.harness;
+
+
+// the purpose of this class is to run IJ in a separate thread
+public class RunIJ implements Runnable
+{
+
+	/**
+		param args the arguments to pass into ij
+	*/
+	public RunIJ(String args[])
+	{
+		ijArgs=args;	
+	}
+
+	String ijArgs[];
+
+	public void run()
+	{
+	    synchronized (this)
+	    {
+		    try
+		    {
+			    org.apache.derby.tools.ij.main(ijArgs);
+		    }
+		    catch (Exception e)
+		    {
+			    System.out.println("RunIJ --> " + e);
+			    e.printStackTrace();
+		    }
+		}
+	}
+}

Modified: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/RunList.java
Url: http://svn.apache.org/viewcvs/incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/RunList.java?view=diff&rev=122528&p1=incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/RunList.java&r1=122527&p2=incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/RunList.java&r2=122528
==============================================================================
--- incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/RunList.java	(original)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/RunList.java	Wed Dec 15 22:20:35 2004
@@ -1,1209 +1,1209 @@
-/* 
-
-   Derby - Class org.apache.derbyTesting.functionTests.harness.RunList
-
-   Copyright 1999, 2004 The Apache Software Foundation or its licensors, as applicable.
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-   You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
-
- */
-
-package org.apache.derbyTesting.functionTests.harness;
-
-//import org.apache.derby.tools.sysinfo;
-import java.io.File;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.io.BufferedReader;
-import java.io.FileReader;
-import java.io.FileWriter;
-import java.io.FileInputStream;
-import java.io.FileOutputStream;
-import java.io.BufferedOutputStream;
-import java.io.BufferedWriter;
-import java.io.FileWriter;
-import java.io.PrintWriter;
-import java.io.PrintStream;
-import java.io.IOException;
-import java.io.FileNotFoundException;
-import java.lang.ClassNotFoundException;
-import java.lang.reflect.Method;
-import java.util.Enumeration;
-import java.util.Properties;
-import java.util.Vector;
-import java.util.StringTokenizer;
-
-public class RunList
-{
-
-	static String jvmName = "currentjvm";
-	static String javaCmd = "java";
-	static String javaArgs;
-	static jvm jvm;
-	static String javaVersion; // System.getProperty("java.version")
-	static String majorVersion;
-	static String minorVersion;
-	static String jversion; // to pass jvm to RunTest as -Djvm=1.2 etc.
-	static int iminor;
-	static int imajor;
-	static boolean skip = false;
-	static boolean driverNotFound = false;
-	static boolean needSync = false;
-	static boolean needJdk12 = false;
-	static boolean needJdk12ext = false;
-	static boolean excludedFromJCC = false;
-	static Boolean needIBMjvm = null;
-	static boolean needJdk14 = false;
-        static boolean needEncryption = false;
-	static String jvmflags;
-	static String testJavaFlags;
-	static String classpath;
-	static String classpathServer;
-    static String framework;
-    static String usesystem;
-    static String upgradetest;
-    static String jarfile;
-    static String useoutput;
-	static String keepfiles = "false";
-	static String encryption;
-	static String testEncryptionProvider;
-	static String jdk12test;
-	static String jdk12exttest;
-	static String jdk14test;
-	static String runwithibmjvm = null;
-	static String runwithj9;
-	static String runwithjvm;
-	static String excludeJCC;
-	static boolean useprocess = true;
-	static String skipsed = "false";
-	static boolean fw_set = false;
-	static String systemdiff = "false";
-	static String suiteName = "";
-	static String fullsuiteName = "";
-	static String topSuiteName = ""; // The very top suite creating RunLists
-	static String topParentSuite = ""; // The "subparent" of the very top suite
-	static String topSpecialProps = ""; // special properties at the top suite
-	static String otherSpecialProps = ""; // special properties (individual suite)
-	static String ijdefaultResourcePackage; // for ij tests, the package resource
-	static String outcopy; // cases where copyfiles should go to outDir
-	static String userdir; // current user directory
-	static String mtestdir; // required by multi tests
-	static boolean verbose = false; // for debug output
-	static String reportstderr;
-	static String timeout;
-	static String shutdownurl;
-    static PrintWriter pwOut; // for writing suite output
-	static String outputdir; // location of output (default is userdir)
-	static String topsuitedir; // for nested suites, need top output location
-	static String topreportdir; // where to place the .pass and .fail files
-	static String canondir; // location of masters (default is master)
-	static String bootcp; // for j9 bootclasspath
-	static String serverJvm; // for starting another jvm for networkserver, j9 only for now.
-    static File outDir; // test out dir
-    static File outFile; // suite output file
-    static File runDir; // location of suite.runall (list of tests)
-	static File runFile; // suite.runall file
-	static Properties suiteProperties;
-	static Properties specialProperties; // for testSpecialProps
-	static BufferedReader runlistFile;
-
-    public RunList()
-    {
-    }
-
-    /**
-    * RunList
-    * suitesToRun: a Vector of suites from RunSuite
-    * outDir: The output directory for the suite(s)
-    * pwOut: The output for writing suite and test results
-    * suiteProperties: From RunSuite for the top suite
-    * (individual suites in the vector may have their own
-    * properties which must also be located and applied)
-    */
-
-    public RunList(Vector suitesToRun, 
-        File runDir, File outDir, PrintWriter pwOut,
-        Properties suiteProperties, 
-        Properties specialProperties, 
-        String topParentSuite)
-        throws ClassNotFoundException, IOException, Exception
-    {
-        this.runDir = runDir;
-        this.outDir = outDir;
-        this.pwOut = pwOut;
-        this.suiteProperties = suiteProperties; // usual suite props
-        this.specialProperties = specialProperties; // for special test Flags
-        this.topSuiteName = suiteProperties.getProperty("suitename");
-        //System.out.println("----------------------------------------");
-        //System.out.println("RunList topSuiteName= " + topSuiteName);
-        this.topParentSuite = topParentSuite;
-        //System.out.println("topParentSuite= " + topParentSuite);
-        
-        // Run the suites
-        runSuites(suitesToRun);
-    }
-
-    private static void runSuites(Vector suitesToRun)
-        throws ClassNotFoundException,
-        FileNotFoundException, IOException, Exception
-    {
-        // For each suite, locate its properties and runall files
-        // which should be in the "suites" dir or user.dir
-        String suiteName = "";
-        userdir = System.getProperty("user.dir");
-        //System.out.println("Number of suites in list = " + suitesToRun.size());
-        Properties p = null;
-        
-        // First get the top level suiteProperties since some
-        // special properties might need to be used by all sub-suites
-        setTopSuiteProperties();
-        // Now set the properties for the topParentSuite (a sub-parent of the top)
-        Properties topParentSuiteProps = 
-            locateSuiteProperties(topParentSuite, suiteProperties, true, true);
-        setSuiteProperties(topParentSuiteProps, topParentSuite, suiteProperties, true, true);
-            
-        // Now handle the list of child suites under this parent
-        for (int i = 0; i < suitesToRun.size(); i++)
-        {
-            /* Note: nesting of suites can be complex, especially if the
-             subsuites of the top suite also contain subsuites; we must take
-             care in setting of special properties like framework which may
-             need to propagate to its subsuites, but not back to the very top
-            */
-            Properties subProps = null;
-            fullsuiteName = (String)suitesToRun.elementAt(i);
-            //System.out.println("fullsuiteName: " + fullsuiteName);
-            String subSuite = fullsuiteName.substring(0,fullsuiteName.lastIndexOf(":"));
-            //System.out.println("subSuite: " + subSuite);
-            if ( !subSuite.equals(topParentSuite) )
-            {
-                subProps = locateSuiteProperties(subSuite, topParentSuiteProps, true, false);
-            }
-            else
-            {
-                // reset in case a previous subsuite had set framework, etc
-                subProps = topParentSuiteProps;
-            }
-            setSuiteProperties(subProps, subSuite, topParentSuiteProps, true, false);
-            
-            // Now handle the child suite of this subSuite
-            suiteName = fullsuiteName.substring(fullsuiteName.lastIndexOf(":")+1);
-            //System.out.println("child suiteName: " + suiteName);
-                
-            p = locateSuiteProperties(suiteName, subProps, false, false);
-            setSuiteProperties(p, suiteName, subProps, false, false);
-
-            // Now locate the suite runall file containing the tests
-            String runfile = "suites" + '/' + suiteName + ".runall";
-
-            InputStream is =  org.apache.derbyTesting.functionTests.harness.RunTest.loadTestResource(runfile);
-            if (is == null)
-            {
-                // Look in userdir
-                is = org.apache.derbyTesting.functionTests.harness.RunTest.loadTestResource(userdir + '/' + suiteName + ".runall");
-            }
-            if (is == null)
-            {
-                System.out.println("Suite runall file not found for " + suiteName);
-                continue;
-            }
-
-            // Create a BufferedReader to read the list of tests to run
-            runlistFile = new BufferedReader(new InputStreamReader(is));
-            if (runlistFile == null)
-            {
-                System.out.println("The suite runall file could not be read.");
-            }
-            else
-            {
-                String startTime = CurrentTime.getTime();
-                pwOut.println("**** Start SubSuite: " + fullsuiteName +
-                    " jdk" + javaVersion +
-                    " " + startTime + " ****");
-                if ( (framework != null) && (framework.length()>0) )
-                {
-                    pwOut.println("Framework: " + framework);
-                }
-                else
-                    pwOut.println("Framework: No special framework.");
-                
-                // Create the file to list the suites that get skipped
-	            File f = new File(outDir, topSuiteName);
-	            File skipFile = new File(f, topSuiteName+".skip");
-
-		    //we catch an IOException here to work around a jvm bug on the Psion.
-		    PrintStream ps = null;
-		    try { ps = new PrintStream
-		            ( new FileOutputStream(skipFile.getCanonicalPath(),true) ); }
-		    catch (IOException e) {
-			FileWriter fw = new FileWriter(skipFile);
-			fw.close();
-			ps = new PrintStream
-			    ( new FileOutputStream(skipFile.getCanonicalPath(),true) );
-		    }
-
-                System.out.println("Now run the suite's tests");
-                //System.out.println("shutdownurl: " + shutdownurl);
-                
-                if (skip) // Skip a suite under certain environments
-				{
-				    addToSkipFile(topSuiteName+":"+fullsuiteName, ps);
-					if(driverNotFound)
-                    	pwOut.println("Cannot run the suite, framework driver not found");
-					else if(needSync)
-                    	pwOut.println("Cannot run the suite, sync product not found");
-					else if(needJdk12ext)
-                    	pwOut.println("Cannot run the suite, requires jdk12 or higher with extensions");
-					else if(needJdk12)
-                    	pwOut.println("Cannot run the suite, requires jdk12 or higher, have jdk" + javaVersion);
-					else if(needJdk14)
-                    	pwOut.println("Cannot run the suite, requires jdk14 or higher, have jdk" + javaVersion);
-					else if(needJdk14)
-                    	pwOut.println("Cannot run the suite, requires jdk14 or higher, have jdk" + javaVersion);
-					else if(excludedFromJCC)
-                    	pwOut.println("Cannot run the suite on JCC version " + excludeJCC + " or lower.");                                     
-                                        else if((needIBMjvm == null || needIBMjvm.booleanValue() == false))
-                    	pwOut.println("Cannot run the suite, requires IBM jvm, jvm vendor is " + System.getProperty("java.vendor"));
-					else
-                    	pwOut.println("Cannot run the suite, have jdk" + javaVersion);
-				 }
-                else
-                {
-                    System.out.println("Run the tests...");
-                    // Unjar any jarfile define for an upgrade suite
-                    //System.out.println("jarfile: " + jarfile);
-                    if (jarfile != null)
-                    {
-                        //System.out.println("unjar jar file...");
-                        UnJar uj = new UnJar();
-                        uj.unjar(jarfile, outDir.getCanonicalPath(), true);
-                        if ( (upgradetest.equals("true")) && (suiteName.startsWith("convert")) )
-                        {
-                            // need to rename the directory
-                            // such as kimono -- rename to convertKimono
-			    String tmpname = jarfile.substring(0, jarfile.indexOf("JAR"));
-                            File tmp = new File(outDir, tmpname);
-			    File convert = new File(outDir, usesystem);
-                            boolean renamed = tmp.renameTo(convert);
-                            //System.out.println("renamed: " + renamed);
-                        }
-                    }
-                    
-                    // Run the tests for this suite
-                    runTests(p, fullsuiteName);
-                }
-                
-                String endTime = CurrentTime.getTime();
-                pwOut.println("**** End SubSuite: " + fullsuiteName +
-                    " jdk" + javaVersion +
-                    " " + endTime + " ****");
-                //System.out.println("--------------------------------------");
-                ps.close();
-            }
-        }
-    }
-
-
-    private static void runTests(Properties suiteProps, String suite)
-        throws IOException, Exception
-    {
-	    // save a copy of the system properties at this point; when runing with
-	    // java threads we need to reset the system properties to this list;
-	    // otherwise we start to accumulate extraneous properties from
-	    // individual tests (does not happen with exec (useprocess==true)
-	    // because each test case has its own fresh VM
-	    ManageSysProps.saveSysProps();
-
-        // Build command string for RunTest()
-        StringBuffer sb = new StringBuffer();
-	    jvm = jvm.getJvm(jvmName);
-	    Vector jvmProps = new Vector();
-	    if ((javaCmd.length()>0) )
-	    {
-	        jvm.setJavaCmd(javaCmd);
-	        jvmProps.addElement("javaCmd=" + javaCmd);
-	    }
-        if ( (testJavaFlags != null) && (testJavaFlags.length()>0) )
-            jvmProps.addElement("testJavaFlags=" + testJavaFlags);
-	    if (classpath != null)
-	        jvmProps.addElement("classpath=" + classpath);
-	    if (classpathServer != null)
-	        jvmProps.addElement("classpathServer=" + classpathServer);
-	    if (jversion != null)
-	        jvmProps.addElement("jvm=" + jversion);
-        if (framework != null)
-            jvmProps.addElement("framework=" + framework);
-        if (usesystem != null)
-            jvmProps.addElement("usesystem=" + usesystem);
-        if (shutdownurl != null)
-            jvmProps.addElement("shutdownurl=" + shutdownurl);
-        if (upgradetest != null)
-            jvmProps.addElement("upgradetest=" + upgradetest);       
-        if (outcopy != null)
-            jvmProps.addElement("outcopy=" + outcopy);
-        if (useoutput != null)
-            jvmProps.addElement("useoutput=" + useoutput);
-        if (verbose == true)
-            jvmProps.addElement("verbose=true");
-        if ( (reportstderr != null) && (reportstderr.length()>0) )
-            jvmProps.addElement("reportstderr=" + reportstderr);
-        
-        if ( (jvmflags != null) && (jvmflags.length()>0) )
-        {
-            // We want to pass this down to RunTest so it will
-            // run an individual test with jvmflags like -nojit
-            jvmProps.addElement("jvmflags=" + '"' + jvmflags + '"');
-        }
-        
-        if ( (timeout != null) && (timeout.length()>0) )
-        {
-            if (useprocess)
-			{
-                jvmProps.addElement("timeout=" + timeout);            
-            }
-            else
-            {
-                org.apache.derbyTesting.functionTests.harness.RunTest.timeoutStr = timeout;
-            }
-        }
-		if (Boolean.getBoolean("listOnly"))
-			jvmProps.addElement("listOnly=true");
-
-        if (encryption != null)
-            jvmProps.addElement("encryption=" + encryption);
-        if (testEncryptionProvider != null)
-            jvmProps.addElement("testEncryptionProvider=" + testEncryptionProvider);
-        if (jdk12test != null)
-            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 ( 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);
-
-        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");
-            // 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("foun")) 
-				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";
-        
-        JavaVersionHolder jvh = new JavaVersionHolder(javaVersion);
-        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;
-		}
-		
-		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");
-		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);
-    	if ( jvmflags != null )
-    		p.put("jvmflags", jvmflags);
-    	if ( classpath != null )
-    		p.put("classpath", classpath);
-    	if ( classpathServer != null )
-    		p.put("classpathServer", classpathServer);
-        if ( systemdiff != null )
-            p.put("systemdiff", systemdiff);
-        if ( verbose == true )
-            p.put("verbose", "true");
-        if ( bootcp != null )
-            p.put("bootcp", "bootcp");
-        if ( canondir != null )
-            p.put("canondir", canondir);
-            
-		if ( (outputdir == null) || (outputdir.length() == 0) )
-		{
-		    outputdir = p.getProperty("outputdir");
-		    if (outputdir == null)
-		        outputdir = userdir;
-		}
-
-	    // framework may be set at the top, or just
-	    // set for individual suites
-	    if ( parentProperties.getProperty("framework") != null )
-		    p.put("framework", framework);
-		else
-            framework = p.getProperty("framework");
-
-		// same for serverJvm 
-        if ( parentProperties.getProperty("serverJvm") != null )
-            p.put("serverJvm", serverJvm);
-		else
-            serverJvm = p.getProperty("serverJvm");
-
-        // Encryption may be set at the top or just for a subsuite
-	    if ( parentProperties.getProperty("encryption") != null )
-		    p.put("encryption", encryption);
-		else
-            encryption = p.getProperty("encryption");
-        
-	// Encryption provider may be set at the top or just for a subsuite
-	    if ( parentProperties.getProperty("testEncryptionProvider") != null )
-		    p.put("testEncryptionProvider", testEncryptionProvider);
-		else
-            testEncryptionProvider = p.getProperty("testEncryptionProvider");
-        
-        // jdk12test may be set at the top or just for a subsuite
-	    if ( parentProperties.getProperty("jdk12test") != null )
-		    p.put("jdk12test", jdk12test);
-		else
-            jdk12test = p.getProperty("jdk12test");
-       
-        // jdk12exttest may be set at the top or just for a subsuite
-	    if ( parentProperties.getProperty("jdk12exttest") != null )
-		    p.put("jdk12exttest", jdk12exttest);
-		else
-            jdk12exttest = p.getProperty("jdk12exttest");
-        
-        // jdk14test may be set at the top or just for a subsuite
-	    if ( parentProperties.getProperty("jdk14test") != null )
-		    p.put("jdk14test", jdk14test);
-		else
-            jdk14test = p.getProperty("jdk14test");
-       
-        // runwithibmjvm may be set at the top or just for a subsuite
-	    if ( parentProperties.getProperty("runwithibmjvm") != null )
-		    p.put("runwithibmjvm", runwithibmjvm);
-		else
-            runwithibmjvm = p.getProperty("runwithibmjvm");
-       
-        // runwithjvm may be set at the top or just for a subsuite
-	    String testJVM = (jvmName.startsWith("j9") ? "j9" : jvmName);
-	    if ( parentProperties.getProperty("runwith" + testJVM) != null )
-		    p.put("runwith" + testJVM, runwithjvm);
-		else
-            runwithjvm = p.getProperty("runwith" + testJVM);
-
-        // runwithj9 may be set at the top or just for a subsuite
-	    if ( parentProperties.getProperty("runwithj9") != null )
-		    p.put("runwithj9", runwithj9);
-		else
-            runwithj9 = p.getProperty("runwithj9");
-
-        // excludeJCC may be set at the top or just for a subsuite
-	    if ( parentProperties.getProperty("excludeJCC") != null )
-		    p.put("excludeJCC", excludeJCC);
-		else
-            excludeJCC = p.getProperty("excludeJCC");
-       
-        // useprocess may be set at the top or just for a subsuite
-        String upr = parentProperties.getProperty("useprocess");
-	    if ( upr != null )
-		    p.put("useprocess", upr);
-		else
-		{
-            upr = p.getProperty("useprocess");
-            if ( upr == null)
-                useprocess = true;
-            else if (upr.equals("false"))
-                useprocess = false;
-            else
-                useprocess = true;
-        }
-		// properties specific to a single suite
-		usesystem = p.getProperty("usesystem");
-		shutdownurl = p.getProperty("shutdownurl");
-        upgradetest = p.getProperty("upgradetest");
-        jarfile = p.getProperty("jarfile");
-        skipsed = p.getProperty("skipsed");
-        if (skipsed == null)
-            skipsed = "false";
-		if ( "true".equals(keepfiles) )
-		    p.put("keepfiles", keepfiles);
-            
-        // testJavaFlags should get appended
-        
-        String testflags = p.getProperty("testJavaFlags");
-        if ( parentProperties.getProperty("testJavaFlags") != null )
-        {
-            if ( (testflags != null) && (!testflags.equals(testJavaFlags)) )
-            {
-                testJavaFlags = testJavaFlags + "^" + testflags;
-            }
-            p.put("testJavaFlags", testJavaFlags);
-        }
-        else
-            testJavaFlags = p.getProperty("testJavaFlags");
-            
-		// The following could change between suites or
-		// may be set for the whole set of suites
-
-        if ( parentProperties.getProperty("reportstderr") != null )
-            p.put("reportstderr", reportstderr);
-        else
-            reportstderr = p.getProperty("reportstderr");
-            
-        if ( parentProperties.getProperty("timeout") != null )
-            p.put("timeout", timeout);
-        else
-            timeout = p.getProperty("timeout");
-                   
-        // outcopy is very specific to a single suite
-        outcopy = p.getProperty("outcopy");
-        
-		// useoutput is very specific to a single suite
-		useoutput = p.getProperty("useoutput");
-
-
-        // mtestdir is very specific to a multi suite
-        mtestdir = p.getProperty("mtestdir");
-
-        // ijdefaultResourcePackage is specific for a suite
-        ijdefaultResourcePackage = p.getProperty("ij.defaultResourcePackage");
-
-		if ( topSuiteName == null )
-		    topSuiteName = p.getProperty("suitename");
-		else
-		    p.put("suitename", topSuiteName);
-
-		skip = shouldSkipTest();
-		    
-        // Set the suite subdir under top outputdir
-        setSuiteDir(suiteName, isParent, isTop);
-        
-        // This individual suite may also have special flags
-        // Reset otherSpecialProps in case another suite had any set
-        otherSpecialProps = "";
-        Properties specialProps = SpecialFlags.getSpecialProperties(p);
-        if ( (specialProps != null) && (!specialProps.isEmpty()) )
-            // Add any special properties to suiteJavaFlags string
-            setSpecialProps(specialProps, false);
-    }
-
-	/**
-		Determine if a test should be skipped or not.
-		These are ad-hoc rules, see comments within for details.
-		Examples of what is checked: JVM version, framework,
-		encryption, jdk12test, 
-		Sets some global variables so that skip reporting is clearer.
-
-		@return true if test should not be run.
-    */
-    private static boolean shouldSkipTest()
-    {
-	boolean result = false;
-
-	// figure out if suite should be skipped ... adhoc rules
-	boolean isRmiJdbc = false;
-	boolean isIBridge = false;
-	boolean isJdk12 = false; // really now 'isJdk12orHigher'
-	boolean isJdk14 = false;
-	boolean isJdk118 = false;
-	boolean isJdk117 = false;
-	boolean isEncryption = false;
-	boolean isJdk12Test = false;
-	boolean isJdk12ExtTest = false;
-	boolean isJdk14Test = false;
-	boolean isSyncTest = false;
-	boolean isSyncProduct = false;
-	boolean isExcludeJCC = false;
-	// runwithibmjvm is really tri-state. null = run-anywhere,
-	// true = only ibm jvms, false = only non-IBM jvms.
-
-	// reset skip reason parameters
-	driverNotFound = false;
-	needSync = false;
-	needJdk12 = false;
-	needJdk12ext = false;
-	needJdk14 = false;
-	excludedFromJCC = false;
-	needIBMjvm = null;
-        
-	// Determine if this is jdk12 or higher (with or without extensions)
-        if (iminor >= 2) isJdk12 = true;
-	if ( System.getProperty("java.version").startsWith("1.1.8") ) isJdk118 = true;
-        if ( System.getProperty("java.version").startsWith("1.1.7") ) isJdk117 = true;
-        if ( System.getProperty("java.version").startsWith("1.4.") ) isJdk14 = true;
-
-        if ( (framework != null) && (framework.length()>0) )
-	{
-            if (framework.equals("RmiJdbc"))
-	    { 
-		try {
-			Class.forName("org.objectweb.rmijdbc.Driver");
-		} catch (ClassNotFoundException cnfe) {
-			driverNotFound = true;
-			result = true;
-		}
-            }
-            else if (framework.equals("DerbyNet"))
-	    {
-		try {
-			Class.forName("org.apache.derby.drda.NetworkServerControl");
-		} catch (ClassNotFoundException cnfe) {
-			driverNotFound = true;
-			result = true;
-		}
-	    }
-	}
-
-	if (result) return true; // stop looking once know should skip
-
-        if ( (encryption != null) && (encryption.length()>0) )
-            if ("true".equalsIgnoreCase(encryption)) isEncryption = true;
-        if ( (jdk12test != null) && (jdk12test.length()>0) )
-            if ("true".equalsIgnoreCase(jdk12test)) isJdk12Test = true;		
-        if ( (jdk12exttest != null) && (jdk12exttest.length()>0) )
-            if ("true".equalsIgnoreCase(jdk12exttest)) isJdk12ExtTest = true;
-        if ( (jdk14test != null) && (jdk14test.length()>0) )
-            if ("true".equalsIgnoreCase(jdk14test)) isJdk14Test = true;		
-
-        // Skip any suite if jvm is not jdk12 or higher for encryption, jdk12test or jdk12exttest
-        if (!isJdk12)
-        {
-            if ( (isEncryption) || (isJdk12Test) || (isJdk12ExtTest) )
-            {
-                needJdk12 = true;
-                result = true; // Can't run in this combination
-            }
-	    if (result) return true; // stop looking once know should skip
- 	}		
-
-        // Skip any suite if jvm is not jdk14 or higher for jdk14test
-        if (!isJdk14 &&  isJdk14Test)
-	{
-		needJdk14 = true;
-  		return true;
-        }
-	
-        // Also require jdk12 extensions for encryption and jdk12exttest
-	if ( (isEncryption) || (isJdk12ExtTest) )
-	{
-	    needJdk12ext = true;
-            // Check for extensions
-            try
-            {
-                Class jtaClass = Class.forName("javax.transaction.xa.Xid");
-                Class jdbcClass = Class.forName("javax.sql.RowSet");
-            } 
-            catch (ClassNotFoundException cnfe)
-            {
-                // at least one of the extension classes was not found
-                result = true; // skip this test
-            }			
-	    if (result) return true; // stop looking once know should skip
-        }
-
-        if (isEncryption)  // make sure encryption classes are available
-        {
-            needEncryption = true;
-            try 
-            {
-                Class jceClass = Class.forName("javax.crypto.Cipher");
-            }
-            catch (ClassNotFoundException cnfe)
-            {
-                result = true;
-            }
-            if (result) return true;
-        }
-
-	// if a test needs an ibm jvm, skip if runwithibmjvm is true.
-	// if a test needs to not run in an ibm jvm, skip if runwithibmjvm is false.
-	// if null, continue in all cases.
-	if (runwithibmjvm != null) 
-	{ 
-	    if (runwithibmjvm.equals("")) { needIBMjvm = null; }
-	    else { needIBMjvm = new Boolean(runwithibmjvm); }
-	}
-	if (runwithibmjvm == null) { needIBMjvm = null; }
-	if (needIBMjvm != null)
-	{
-	    boolean needsibm = needIBMjvm.booleanValue();
-	    boolean ibmjvm = false;
-	    String vendor = System.getProperty("java.vendor");
-	    if (vendor.startsWith("IBM")) { ibmjvm = true; }
-	    if (!needsibm && ibmjvm) { return true; }
-	    if (needsibm && !ibmjvm) { return true; }
-	}
-
-	if (runwithjvm != null && runwithjvm.equals("false"))
-	{
-	    return true;
-	}
-	if (runwithj9 != null && runwithj9.equals("false"))
-	{
-	    return false ;
-	}
-
-	if (excludeJCC != null)
-	{
-	    Class c = null;
-	    Method m = null;
-	    Object o = null;
-	    Integer i = null;
-	    int jccMajor = 0;
-	    int jccMinor = 0;
-	    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 (Exception e) {
-	        if (verbose) System.out.println("Exception in shouldSkipTest: " + e);
-            }
-
-	    if (excludeJCC != null) {
-		int excludeMajor = 0;
-		int excludeMinor = 0;
-		try 
-		{
-		    excludeMajor = Integer.parseInt(excludeJCC.substring(0,excludeJCC.indexOf(".")));
-		    excludeMinor = Integer.parseInt(excludeJCC.substring(excludeJCC.indexOf(".")+1));
-		} catch (NumberFormatException nfe) {
-		    System.out.println("excludeJCC property poorly formatted: " + excludeJCC);
-		} catch (NullPointerException npe) {
-		    System.out.println("excludeJCC property poorly formatted: " + excludeJCC);
-		}
-		if (excludeMajor >= jccMajor && excludeMinor >= jccMinor)
-		{
-		    excludedFromJCC = true;
-		    return true;
-		}
-	    }
-	} 
-
-	return result; // last test result is returned
-    }
-
-    
-    public static void setSuiteDir(String suiteName, boolean isParent, boolean isTop)
-        throws IOException
-    {
-        if (isTop) // This is the very top suite for this RunList
-        {
-            // Here we want to set the topsuitedir
-		    if ( (topsuitedir == null) || (topsuitedir.length() == 0) )
-		    {
-		        topsuitedir = userdir;
-		        outputdir = topsuitedir;
-		    }
-		    else
-		        outputdir = topsuitedir;
-		    
-		    // Create the topsuite directory under the outputdir
-		    File topdir = new File(outputdir, topSuiteName);
-		    topdir.mkdir();
-		    if (!topParentSuite.equals(topSuiteName))
-		    {
-		        File topparent = new File(topdir, topParentSuite);
-                topparent.mkdir();
-                outputdir = topparent.getCanonicalPath();
-            }
-            else
-                outputdir = topdir.getCanonicalPath();
-            topreportdir = outputdir;
-            //System.out.println("RunList topsuitedir: " + outputdir);
-            //System.out.println("RunList outputdir: " + outputdir);
-            //System.out.println("RunList topreportdir: " + topreportdir);
-            
-            // Modify outputdir for special framework
-            if ( (framework != null) && (framework.length()>0) )
-            {
-                File f = new File(outputdir, framework);
-                f.mkdir();
-                outputdir =  f.getCanonicalPath();
-		        fw_set = true; // framework dir set at top level
-                //System.out.println("RunList for framework outputdir: " + outputdir);
-            }
-		    topsuitedir = outputdir; 	
-		}
-		else if (isParent) // reset outputdir to topsuitedir for a new parent
-		{
-		    outputdir = topsuitedir;
-		    //System.out.println("outputdir reset for parent: " + outputdir);
-		    if (!suiteName.equals(topParentSuite))
-		    {
-                File suitedir = new File(outputdir, suiteName);
-                suitedir.mkdir();
-                outputdir = suitedir.getCanonicalPath();
-            }
-            // Modify outputdir for special framework (if not already set)
-            if (!fw_set)
-            {
-                if ( (framework != null) && (framework.length()>0) )
-                {
-                    File f = new File(outputdir, framework);
-                    f.mkdir();
-                    outputdir =  f.getCanonicalPath();
-                }
-            }
-        }
-        
-		else if ( upgradetest == null ) // this is a child suite of a parent
-		{
-            File suitedir = new File(outputdir, suiteName);
-            suitedir.mkdir();
-            outputdir = suitedir.getCanonicalPath();
-            //System.out.println("Child outputdir: " + outputdir);
-        }
-    }
-    
-	private static void setSpecialProps(Properties p, boolean isTop)
-	{
-        // Just build  string for RunTest to parse (^ is the separator)
-        // and determine which special flags are for ij or for server
-        // These special flags come from specialProperties, not from
-        // the usual properties (RunSuite will give these for the top suite)
-        String tmp = "";
-		for (Enumeration e = p.propertyNames(); e.hasMoreElements(); )
-		{
-			String key = (String)e.nextElement();
-			// Note: RunSuite will already have excluded
-			// suites, useoutput, usesystem,keepfiles from these
-			tmp += key + "=" + p.getProperty(key) + "^";
-		}
-		if (tmp.length()>0)
-		{
-		    if ( isTop == true ) // This is the top level suite
-		        topSpecialProps = tmp.substring(0, tmp.lastIndexOf('^'));
-		    else // This is a nested suite, do not apply to all the suites
-		        otherSpecialProps = tmp.substring(0, tmp.lastIndexOf('^'));
-		}
-	}
-	
-	static void addToSkipFile(String suiteName, PrintStream ps) throws IOException
-	{
-		ps.println(suiteName);
-		ps.flush();
-    }
-	
-}
+/* 
+
+   Derby - Class org.apache.derbyTesting.functionTests.harness.RunList
+
+   Copyright 1999, 2004 The Apache Software Foundation or its licensors, as applicable.
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+ */
+
+package org.apache.derbyTesting.functionTests.harness;
+
+//import org.apache.derby.tools.sysinfo;
+import java.io.File;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.BufferedReader;
+import java.io.FileReader;
+import java.io.FileWriter;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.BufferedOutputStream;
+import java.io.BufferedWriter;
+import java.io.FileWriter;
+import java.io.PrintWriter;
+import java.io.PrintStream;
+import java.io.IOException;
+import java.io.FileNotFoundException;
+import java.lang.ClassNotFoundException;
+import java.lang.reflect.Method;
+import java.util.Enumeration;
+import java.util.Properties;
+import java.util.Vector;
+import java.util.StringTokenizer;
+
+public class RunList
+{
+
+	static String jvmName = "currentjvm";
+	static String javaCmd = "java";
+	static String javaArgs;
+	static jvm jvm;
+	static String javaVersion; // System.getProperty("java.version")
+	static String majorVersion;
+	static String minorVersion;
+	static String jversion; // to pass jvm to RunTest as -Djvm=1.2 etc.
+	static int iminor;
+	static int imajor;
+	static boolean skip = false;
+	static boolean driverNotFound = false;
+	static boolean needSync = false;
+	static boolean needJdk12 = false;
+	static boolean needJdk12ext = false;
+	static boolean excludedFromJCC = false;
+	static Boolean needIBMjvm = null;
+	static boolean needJdk14 = false;
+        static boolean needEncryption = false;
+	static String jvmflags;
+	static String testJavaFlags;
+	static String classpath;
+	static String classpathServer;
+    static String framework;
+    static String usesystem;
+    static String upgradetest;
+    static String jarfile;
+    static String useoutput;
+	static String keepfiles = "false";
+	static String encryption;
+	static String testEncryptionProvider;
+	static String jdk12test;
+	static String jdk12exttest;
+	static String jdk14test;
+	static String runwithibmjvm = null;
+	static String runwithj9;
+	static String runwithjvm;
+	static String excludeJCC;
+	static boolean useprocess = true;
+	static String skipsed = "false";
+	static boolean fw_set = false;
+	static String systemdiff = "false";
+	static String suiteName = "";
+	static String fullsuiteName = "";
+	static String topSuiteName = ""; // The very top suite creating RunLists
+	static String topParentSuite = ""; // The "subparent" of the very top suite
+	static String topSpecialProps = ""; // special properties at the top suite
+	static String otherSpecialProps = ""; // special properties (individual suite)
+	static String ijdefaultResourcePackage; // for ij tests, the package resource
+	static String outcopy; // cases where copyfiles should go to outDir
+	static String userdir; // current user directory
+	static String mtestdir; // required by multi tests
+	static boolean verbose = false; // for debug output
+	static String reportstderr;
+	static String timeout;
+	static String shutdownurl;
+    static PrintWriter pwOut; // for writing suite output
+	static String outputdir; // location of output (default is userdir)
+	static String topsuitedir; // for nested suites, need top output location
+	static String topreportdir; // where to place the .pass and .fail files
+	static String canondir; // location of masters (default is master)
+	static String bootcp; // for j9 bootclasspath
+	static String serverJvm; // for starting another jvm for networkserver, j9 only for now.
+    static File outDir; // test out dir
+    static File outFile; // suite output file
+    static File runDir; // location of suite.runall (list of tests)
+	static File runFile; // suite.runall file
+	static Properties suiteProperties;
+	static Properties specialProperties; // for testSpecialProps
+	static BufferedReader runlistFile;
+
+    public RunList()
+    {
+    }
+
+    /**
+    * RunList
+    * suitesToRun: a Vector of suites from RunSuite
+    * outDir: The output directory for the suite(s)
+    * pwOut: The output for writing suite and test results
+    * suiteProperties: From RunSuite for the top suite
+    * (individual suites in the vector may have their own
+    * properties which must also be located and applied)
+    */
+
+    public RunList(Vector suitesToRun, 
+        File runDir, File outDir, PrintWriter pwOut,
+        Properties suiteProperties, 
+        Properties specialProperties, 
+        String topParentSuite)
+        throws ClassNotFoundException, IOException, Exception
+    {
+        this.runDir = runDir;
+        this.outDir = outDir;
+        this.pwOut = pwOut;
+        this.suiteProperties = suiteProperties; // usual suite props
+        this.specialProperties = specialProperties; // for special test Flags
+        this.topSuiteName = suiteProperties.getProperty("suitename");
+        //System.out.println("----------------------------------------");
+        //System.out.println("RunList topSuiteName= " + topSuiteName);
+        this.topParentSuite = topParentSuite;
+        //System.out.println("topParentSuite= " + topParentSuite);
+        
+        // Run the suites
+        runSuites(suitesToRun);
+    }
+
+    private static void runSuites(Vector suitesToRun)
+        throws ClassNotFoundException,
+        FileNotFoundException, IOException, Exception
+    {
+        // For each suite, locate its properties and runall files
+        // which should be in the "suites" dir or user.dir
+        String suiteName = "";
+        userdir = System.getProperty("user.dir");
+        //System.out.println("Number of suites in list = " + suitesToRun.size());
+        Properties p = null;
+        
+        // First get the top level suiteProperties since some
+        // special properties might need to be used by all sub-suites
+        setTopSuiteProperties();
+        // Now set the properties for the topParentSuite (a sub-parent of the top)
+        Properties topParentSuiteProps = 
+            locateSuiteProperties(topParentSuite, suiteProperties, true, true);
+        setSuiteProperties(topParentSuiteProps, topParentSuite, suiteProperties, true, true);
+            
+        // Now handle the list of child suites under this parent
+        for (int i = 0; i < suitesToRun.size(); i++)
+        {
+            /* Note: nesting of suites can be complex, especially if the
+             subsuites of the top suite also contain subsuites; we must take
+             care in setting of special properties like framework which may
+             need to propagate to its subsuites, but not back to the very top
+            */
+            Properties subProps = null;
+            fullsuiteName = (String)suitesToRun.elementAt(i);
+            //System.out.println("fullsuiteName: " + fullsuiteName);
+            String subSuite = fullsuiteName.substring(0,fullsuiteName.lastIndexOf(":"));
+            //System.out.println("subSuite: " + subSuite);
+            if ( !subSuite.equals(topParentSuite) )
+            {
+                subProps = locateSuiteProperties(subSuite, topParentSuiteProps, true, false);
+            }
+            else
+            {
+                // reset in case a previous subsuite had set framework, etc
+                subProps = topParentSuiteProps;
+            }
+            setSuiteProperties(subProps, subSuite, topParentSuiteProps, true, false);
+            
+            // Now handle the child suite of this subSuite
+            suiteName = fullsuiteName.substring(fullsuiteName.lastIndexOf(":")+1);
+            //System.out.println("child suiteName: " + suiteName);
+                
+            p = locateSuiteProperties(suiteName, subProps, false, false);
+            setSuiteProperties(p, suiteName, subProps, false, false);
+
+            // Now locate the suite runall file containing the tests
+            String runfile = "suites" + '/' + suiteName + ".runall";
+
+            InputStream is =  org.apache.derbyTesting.functionTests.harness.RunTest.loadTestResource(runfile);
+            if (is == null)
+            {
+                // Look in userdir
+                is = org.apache.derbyTesting.functionTests.harness.RunTest.loadTestResource(userdir + '/' + suiteName + ".runall");
+            }
+            if (is == null)
+            {
+                System.out.println("Suite runall file not found for " + suiteName);
+                continue;
+            }
+
+            // Create a BufferedReader to read the list of tests to run
+            runlistFile = new BufferedReader(new InputStreamReader(is));
+            if (runlistFile == null)
+            {
+                System.out.println("The suite runall file could not be read.");
+            }
+            else
+            {
+                String startTime = CurrentTime.getTime();
+                pwOut.println("**** Start SubSuite: " + fullsuiteName +
+                    " jdk" + javaVersion +
+                    " " + startTime + " ****");
+                if ( (framework != null) && (framework.length()>0) )
+                {
+                    pwOut.println("Framework: " + framework);
+                }
+                else
+                    pwOut.println("Framework: No special framework.");
+                
+                // Create the file to list the suites that get skipped
+	            File f = new File(outDir, topSuiteName);
+	            File skipFile = new File(f, topSuiteName+".skip");
+
+		    //we catch an IOException here to work around a jvm bug on the Psion.
+		    PrintStream ps = null;
+		    try { ps = new PrintStream
+		            ( new FileOutputStream(skipFile.getCanonicalPath(),true) ); }
+		    catch (IOException e) {
+			FileWriter fw = new FileWriter(skipFile);
+			fw.close();
+			ps = new PrintStream
+			    ( new FileOutputStream(skipFile.getCanonicalPath(),true) );
+		    }
+
+                System.out.println("Now run the suite's tests");
+                //System.out.println("shutdownurl: " + shutdownurl);
+                
+                if (skip) // Skip a suite under certain environments
+				{
+				    addToSkipFile(topSuiteName+":"+fullsuiteName, ps);
+					if(driverNotFound)
+                    	pwOut.println("Cannot run the suite, framework driver not found");
+					else if(needSync)
+                    	pwOut.println("Cannot run the suite, sync product not found");
+					else if(needJdk12ext)
+                    	pwOut.println("Cannot run the suite, requires jdk12 or higher with extensions");
+					else if(needJdk12)
+                    	pwOut.println("Cannot run the suite, requires jdk12 or higher, have jdk" + javaVersion);
+					else if(needJdk14)
+                    	pwOut.println("Cannot run the suite, requires jdk14 or higher, have jdk" + javaVersion);
+					else if(needJdk14)
+                    	pwOut.println("Cannot run the suite, requires jdk14 or higher, have jdk" + javaVersion);
+					else if(excludedFromJCC)
+                    	pwOut.println("Cannot run the suite on JCC version " + excludeJCC + " or lower.");                                     
+                                        else if((needIBMjvm == null || needIBMjvm.booleanValue() == false))
+                    	pwOut.println("Cannot run the suite, requires IBM jvm, jvm vendor is " + System.getProperty("java.vendor"));
+					else
+                    	pwOut.println("Cannot run the suite, have jdk" + javaVersion);
+				 }
+                else
+                {
+                    System.out.println("Run the tests...");
+                    // Unjar any jarfile define for an upgrade suite
+                    //System.out.println("jarfile: " + jarfile);
+                    if (jarfile != null)
+                    {
+                        //System.out.println("unjar jar file...");
+                        UnJar uj = new UnJar();
+                        uj.unjar(jarfile, outDir.getCanonicalPath(), true);
+                        if ( (upgradetest.equals("true")) && (suiteName.startsWith("convert")) )
+                        {
+                            // need to rename the directory
+                            // such as kimono -- rename to convertKimono
+			    String tmpname = jarfile.substring(0, jarfile.indexOf("JAR"));
+                            File tmp = new File(outDir, tmpname);
+			    File convert = new File(outDir, usesystem);
+                            boolean renamed = tmp.renameTo(convert);
+                            //System.out.println("renamed: " + renamed);
+                        }
+                    }
+                    
+                    // Run the tests for this suite
+                    runTests(p, fullsuiteName);
+                }
+                
+                String endTime = CurrentTime.getTime();
+                pwOut.println("**** End SubSuite: " + fullsuiteName +
+                    " jdk" + javaVersion +
+                    " " + endTime + " ****");
+                //System.out.println("--------------------------------------");
+                ps.close();
+            }
+        }
+    }
+
+
+    private static void runTests(Properties suiteProps, String suite)
+        throws IOException, Exception
+    {
+	    // save a copy of the system properties at this point; when runing with
+	    // java threads we need to reset the system properties to this list;
+	    // otherwise we start to accumulate extraneous properties from
+	    // individual tests (does not happen with exec (useprocess==true)
+	    // because each test case has its own fresh VM
+	    ManageSysProps.saveSysProps();
+
+        // Build command string for RunTest()
+        StringBuffer sb = new StringBuffer();
+	    jvm = jvm.getJvm(jvmName);
+	    Vector jvmProps = new Vector();
+	    if ((javaCmd.length()>0) )
+	    {
+	        jvm.setJavaCmd(javaCmd);
+	        jvmProps.addElement("javaCmd=" + javaCmd);
+	    }
+        if ( (testJavaFlags != null) && (testJavaFlags.length()>0) )
+            jvmProps.addElement("testJavaFlags=" + testJavaFlags);
+	    if (classpath != null)
+	        jvmProps.addElement("classpath=" + classpath);
+	    if (classpathServer != null)
+	        jvmProps.addElement("classpathServer=" + classpathServer);
+	    if (jversion != null)
+	        jvmProps.addElement("jvm=" + jversion);
+        if (framework != null)
+            jvmProps.addElement("framework=" + framework);
+        if (usesystem != null)
+            jvmProps.addElement("usesystem=" + usesystem);
+        if (shutdownurl != null)
+            jvmProps.addElement("shutdownurl=" + shutdownurl);
+        if (upgradetest != null)
+            jvmProps.addElement("upgradetest=" + upgradetest);       
+        if (outcopy != null)
+            jvmProps.addElement("outcopy=" + outcopy);
+        if (useoutput != null)
+            jvmProps.addElement("useoutput=" + useoutput);
+        if (verbose == true)
+            jvmProps.addElement("verbose=true");
+        if ( (reportstderr != null) && (reportstderr.length()>0) )
+            jvmProps.addElement("reportstderr=" + reportstderr);
+        
+        if ( (jvmflags != null) && (jvmflags.length()>0) )
+        {
+            // We want to pass this down to RunTest so it will
+            // run an individual test with jvmflags like -nojit
+            jvmProps.addElement("jvmflags=" + '"' + jvmflags + '"');
+        }
+        
+        if ( (timeout != null) && (timeout.length()>0) )
+        {
+            if (useprocess)
+			{
+                jvmProps.addElement("timeout=" + timeout);            
+            }
+            else
+            {
+                org.apache.derbyTesting.functionTests.harness.RunTest.timeoutStr = timeout;
+            }
+        }
+		if (Boolean.getBoolean("listOnly"))
+			jvmProps.addElement("listOnly=true");
+
+        if (encryption != null)
+            jvmProps.addElement("encryption=" + encryption);
+        if (testEncryptionProvider != null)
+            jvmProps.addElement("testEncryptionProvider=" + testEncryptionProvider);
+        if (jdk12test != null)
+            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 ( 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);
+
+        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");
+            // 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("foun")) 
+				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";
+        
+        JavaVersionHolder jvh = new JavaVersionHolder(javaVersion);
+        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;
+		}
+		
+		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");
+		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);
+    	if ( jvmflags != null )
+    		p.put("jvmflags", jvmflags);
+    	if ( classpath != null )
+    		p.put("classpath", classpath);
+    	if ( classpathServer != null )
+    		p.put("classpathServer", classpathServer);
+        if ( systemdiff != null )
+            p.put("systemdiff", systemdiff);
+        if ( verbose == true )
+            p.put("verbose", "true");
+        if ( bootcp != null )
+            p.put("bootcp", "bootcp");
+        if ( canondir != null )
+            p.put("canondir", canondir);
+            
+		if ( (outputdir == null) || (outputdir.length() == 0) )
+		{
+		    outputdir = p.getProperty("outputdir");
+		    if (outputdir == null)
+		        outputdir = userdir;
+		}
+
+	    // framework may be set at the top, or just
+	    // set for individual suites
+	    if ( parentProperties.getProperty("framework") != null )
+		    p.put("framework", framework);
+		else
+            framework = p.getProperty("framework");
+
+		// same for serverJvm 
+        if ( parentProperties.getProperty("serverJvm") != null )
+            p.put("serverJvm", serverJvm);
+		else
+            serverJvm = p.getProperty("serverJvm");
+
+        // Encryption may be set at the top or just for a subsuite
+	    if ( parentProperties.getProperty("encryption") != null )
+		    p.put("encryption", encryption);
+		else
+            encryption = p.getProperty("encryption");
+        
+	// Encryption provider may be set at the top or just for a subsuite
+	    if ( parentProperties.getProperty("testEncryptionProvider") != null )
+		    p.put("testEncryptionProvider", testEncryptionProvider);
+		else
+            testEncryptionProvider = p.getProperty("testEncryptionProvider");
+        
+        // jdk12test may be set at the top or just for a subsuite
+	    if ( parentProperties.getProperty("jdk12test") != null )
+		    p.put("jdk12test", jdk12test);
+		else
+            jdk12test = p.getProperty("jdk12test");
+       
+        // jdk12exttest may be set at the top or just for a subsuite
+	    if ( parentProperties.getProperty("jdk12exttest") != null )
+		    p.put("jdk12exttest", jdk12exttest);
+		else
+            jdk12exttest = p.getProperty("jdk12exttest");
+        
+        // jdk14test may be set at the top or just for a subsuite
+	    if ( parentProperties.getProperty("jdk14test") != null )
+		    p.put("jdk14test", jdk14test);
+		else
+            jdk14test = p.getProperty("jdk14test");
+       
+        // runwithibmjvm may be set at the top or just for a subsuite
+	    if ( parentProperties.getProperty("runwithibmjvm") != null )
+		    p.put("runwithibmjvm", runwithibmjvm);
+		else
+            runwithibmjvm = p.getProperty("runwithibmjvm");
+       
+        // runwithjvm may be set at the top or just for a subsuite
+	    String testJVM = (jvmName.startsWith("j9") ? "j9" : jvmName);
+	    if ( parentProperties.getProperty("runwith" + testJVM) != null )
+		    p.put("runwith" + testJVM, runwithjvm);
+		else
+            runwithjvm = p.getProperty("runwith" + testJVM);
+
+        // runwithj9 may be set at the top or just for a subsuite
+	    if ( parentProperties.getProperty("runwithj9") != null )
+		    p.put("runwithj9", runwithj9);
+		else
+            runwithj9 = p.getProperty("runwithj9");
+
+        // excludeJCC may be set at the top or just for a subsuite
+	    if ( parentProperties.getProperty("excludeJCC") != null )
+		    p.put("excludeJCC", excludeJCC);
+		else
+            excludeJCC = p.getProperty("excludeJCC");
+       
+        // useprocess may be set at the top or just for a subsuite
+        String upr = parentProperties.getProperty("useprocess");
+	    if ( upr != null )
+		    p.put("useprocess", upr);
+		else
+		{
+            upr = p.getProperty("useprocess");
+            if ( upr == null)
+                useprocess = true;
+            else if (upr.equals("false"))
+                useprocess = false;
+            else
+                useprocess = true;
+        }
+		// properties specific to a single suite
+		usesystem = p.getProperty("usesystem");
+		shutdownurl = p.getProperty("shutdownurl");
+        upgradetest = p.getProperty("upgradetest");
+        jarfile = p.getProperty("jarfile");
+        skipsed = p.getProperty("skipsed");
+        if (skipsed == null)
+            skipsed = "false";
+		if ( "true".equals(keepfiles) )
+		    p.put("keepfiles", keepfiles);
+            
+        // testJavaFlags should get appended
+        
+        String testflags = p.getProperty("testJavaFlags");
+        if ( parentProperties.getProperty("testJavaFlags") != null )
+        {
+            if ( (testflags != null) && (!testflags.equals(testJavaFlags)) )
+            {
+                testJavaFlags = testJavaFlags + "^" + testflags;
+            }
+            p.put("testJavaFlags", testJavaFlags);
+        }
+        else
+            testJavaFlags = p.getProperty("testJavaFlags");
+            
+		// The following could change between suites or
+		// may be set for the whole set of suites
+
+        if ( parentProperties.getProperty("reportstderr") != null )
+            p.put("reportstderr", reportstderr);
+        else
+            reportstderr = p.getProperty("reportstderr");
+            
+        if ( parentProperties.getProperty("timeout") != null )
+            p.put("timeout", timeout);
+        else
+            timeout = p.getProperty("timeout");
+                   
+        // outcopy is very specific to a single suite
+        outcopy = p.getProperty("outcopy");
+        
+		// useoutput is very specific to a single suite
+		useoutput = p.getProperty("useoutput");
+
+
+        // mtestdir is very specific to a multi suite
+        mtestdir = p.getProperty("mtestdir");
+
+        // ijdefaultResourcePackage is specific for a suite
+        ijdefaultResourcePackage = p.getProperty("ij.defaultResourcePackage");
+
+		if ( topSuiteName == null )
+		    topSuiteName = p.getProperty("suitename");
+		else
+		    p.put("suitename", topSuiteName);
+
+		skip = shouldSkipTest();
+		    
+        // Set the suite subdir under top outputdir
+        setSuiteDir(suiteName, isParent, isTop);
+        
+        // This individual suite may also have special flags
+        // Reset otherSpecialProps in case another suite had any set
+        otherSpecialProps = "";
+        Properties specialProps = SpecialFlags.getSpecialProperties(p);
+        if ( (specialProps != null) && (!specialProps.isEmpty()) )
+            // Add any special properties to suiteJavaFlags string
+            setSpecialProps(specialProps, false);
+    }
+
+	/**
+		Determine if a test should be skipped or not.
+		These are ad-hoc rules, see comments within for details.
+		Examples of what is checked: JVM version, framework,
+		encryption, jdk12test, 
+		Sets some global variables so that skip reporting is clearer.
+
+		@return true if test should not be run.
+    */
+    private static boolean shouldSkipTest()
+    {
+	boolean result = false;
+
+	// figure out if suite should be skipped ... adhoc rules
+	boolean isRmiJdbc = false;
+	boolean isIBridge = false;
+	boolean isJdk12 = false; // really now 'isJdk12orHigher'
+	boolean isJdk14 = false;
+	boolean isJdk118 = false;
+	boolean isJdk117 = false;
+	boolean isEncryption = false;
+	boolean isJdk12Test = false;
+	boolean isJdk12ExtTest = false;
+	boolean isJdk14Test = false;
+	boolean isSyncTest = false;
+	boolean isSyncProduct = false;
+	boolean isExcludeJCC = false;
+	// runwithibmjvm is really tri-state. null = run-anywhere,
+	// true = only ibm jvms, false = only non-IBM jvms.
+
+	// reset skip reason parameters
+	driverNotFound = false;
+	needSync = false;
+	needJdk12 = false;
+	needJdk12ext = false;
+	needJdk14 = false;
+	excludedFromJCC = false;
+	needIBMjvm = null;
+        
+	// Determine if this is jdk12 or higher (with or without extensions)
+        if (iminor >= 2) isJdk12 = true;
+	if ( System.getProperty("java.version").startsWith("1.1.8") ) isJdk118 = true;
+        if ( System.getProperty("java.version").startsWith("1.1.7") ) isJdk117 = true;
+        if ( System.getProperty("java.version").startsWith("1.4.") ) isJdk14 = true;
+
+        if ( (framework != null) && (framework.length()>0) )
+	{
+            if (framework.equals("RmiJdbc"))
+	    { 
+		try {
+			Class.forName("org.objectweb.rmijdbc.Driver");
+		} catch (ClassNotFoundException cnfe) {
+			driverNotFound = true;
+			result = true;
+		}
+            }
+            else if (framework.equals("DerbyNet"))
+	    {
+		try {
+			Class.forName("org.apache.derby.drda.NetworkServerControl");
+		} catch (ClassNotFoundException cnfe) {
+			driverNotFound = true;
+			result = true;
+		}
+	    }
+	}
+
+	if (result) return true; // stop looking once know should skip
+
+        if ( (encryption != null) && (encryption.length()>0) )
+            if ("true".equalsIgnoreCase(encryption)) isEncryption = true;
+        if ( (jdk12test != null) && (jdk12test.length()>0) )
+            if ("true".equalsIgnoreCase(jdk12test)) isJdk12Test = true;		
+        if ( (jdk12exttest != null) && (jdk12exttest.length()>0) )
+            if ("true".equalsIgnoreCase(jdk12exttest)) isJdk12ExtTest = true;
+        if ( (jdk14test != null) && (jdk14test.length()>0) )
+            if ("true".equalsIgnoreCase(jdk14test)) isJdk14Test = true;		
+
+        // Skip any suite if jvm is not jdk12 or higher for encryption, jdk12test or jdk12exttest
+        if (!isJdk12)
+        {
+            if ( (isEncryption) || (isJdk12Test) || (isJdk12ExtTest) )
+            {
+                needJdk12 = true;
+                result = true; // Can't run in this combination
+            }
+	    if (result) return true; // stop looking once know should skip
+ 	}		
+
+        // Skip any suite if jvm is not jdk14 or higher for jdk14test
+        if (!isJdk14 &&  isJdk14Test)
+	{
+		needJdk14 = true;
+  		return true;
+        }
+	
+        // Also require jdk12 extensions for encryption and jdk12exttest
+	if ( (isEncryption) || (isJdk12ExtTest) )
+	{
+	    needJdk12ext = true;
+            // Check for extensions
+            try
+            {
+                Class jtaClass = Class.forName("javax.transaction.xa.Xid");
+                Class jdbcClass = Class.forName("javax.sql.RowSet");
+            } 
+            catch (ClassNotFoundException cnfe)
+            {
+                // at least one of the extension classes was not found
+                result = true; // skip this test
+            }			
+	    if (result) return true; // stop looking once know should skip
+        }
+
+        if (isEncryption)  // make sure encryption classes are available
+        {
+            needEncryption = true;
+            try 
+            {
+                Class jceClass = Class.forName("javax.crypto.Cipher");
+            }
+            catch (ClassNotFoundException cnfe)
+            {
+                result = true;
+            }
+            if (result) return true;
+        }
+
+	// if a test needs an ibm jvm, skip if runwithibmjvm is true.
+	// if a test needs to not run in an ibm jvm, skip if runwithibmjvm is false.
+	// if null, continue in all cases.
+	if (runwithibmjvm != null) 
+	{ 
+	    if (runwithibmjvm.equals("")) { needIBMjvm = null; }
+	    else { needIBMjvm = new Boolean(runwithibmjvm); }
+	}
+	if (runwithibmjvm == null) { needIBMjvm = null; }
+	if (needIBMjvm != null)
+	{
+	    boolean needsibm = needIBMjvm.booleanValue();
+	    boolean ibmjvm = false;
+	    String vendor = System.getProperty("java.vendor");
+	    if (vendor.startsWith("IBM")) { ibmjvm = true; }
+	    if (!needsibm && ibmjvm) { return true; }
+	    if (needsibm && !ibmjvm) { return true; }
+	}
+
+	if (runwithjvm != null && runwithjvm.equals("false"))
+	{
+	    return true;
+	}
+	if (runwithj9 != null && runwithj9.equals("false"))
+	{
+	    return false ;
+	}
+
+	if (excludeJCC != null)
+	{
+	    Class c = null;
+	    Method m = null;
+	    Object o = null;
+	    Integer i = null;
+	    int jccMajor = 0;
+	    int jccMinor = 0;
+	    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 (Exception e) {
+	        if (verbose) System.out.println("Exception in shouldSkipTest: " + e);
+            }
+
+	    if (excludeJCC != null) {
+		int excludeMajor = 0;
+		int excludeMinor = 0;
+		try 
+		{
+		    excludeMajor = Integer.parseInt(excludeJCC.substring(0,excludeJCC.indexOf(".")));
+		    excludeMinor = Integer.parseInt(excludeJCC.substring(excludeJCC.indexOf(".")+1));
+		} catch (NumberFormatException nfe) {
+		    System.out.println("excludeJCC property poorly formatted: " + excludeJCC);
+		} catch (NullPointerException npe) {
+		    System.out.println("excludeJCC property poorly formatted: " + excludeJCC);
+		}
+		if (excludeMajor >= jccMajor && excludeMinor >= jccMinor)
+		{
+		    excludedFromJCC = true;
+		    return true;
+		}
+	    }
+	} 
+
+	return result; // last test result is returned
+    }
+
+    
+    public static void setSuiteDir(String suiteName, boolean isParent, boolean isTop)
+        throws IOException
+    {
+        if (isTop) // This is the very top suite for this RunList
+        {
+            // Here we want to set the topsuitedir
+		    if ( (topsuitedir == null) || (topsuitedir.length() == 0) )
+		    {
+		        topsuitedir = userdir;
+		        outputdir = topsuitedir;
+		    }
+		    else
+		        outputdir = topsuitedir;
+		    
+		    // Create the topsuite directory under the outputdir
+		    File topdir = new File(outputdir, topSuiteName);
+		    topdir.mkdir();
+		    if (!topParentSuite.equals(topSuiteName))
+		    {
+		        File topparent = new File(topdir, topParentSuite);
+                topparent.mkdir();
+                outputdir = topparent.getCanonicalPath();
+            }
+            else
+                outputdir = topdir.getCanonicalPath();
+            topreportdir = outputdir;
+            //System.out.println("RunList topsuitedir: " + outputdir);
+            //System.out.println("RunList outputdir: " + outputdir);
+            //System.out.println("RunList topreportdir: " + topreportdir);
+            
+            // Modify outputdir for special framework
+            if ( (framework != null) && (framework.length()>0) )
+            {
+                File f = new File(outputdir, framework);
+                f.mkdir();
+                outputdir =  f.getCanonicalPath();
+		        fw_set = true; // framework dir set at top level
+                //System.out.println("RunList for framework outputdir: " + outputdir);
+            }
+		    topsuitedir = outputdir; 	
+		}
+		else if (isParent) // reset outputdir to topsuitedir for a new parent
+		{
+		    outputdir = topsuitedir;
+		    //System.out.println("outputdir reset for parent: " + outputdir);
+		    if (!suiteName.equals(topParentSuite))
+		    {
+                File suitedir = new File(outputdir, suiteName);
+                suitedir.mkdir();
+                outputdir = suitedir.getCanonicalPath();
+            }
+            // Modify outputdir for special framework (if not already set)
+            if (!fw_set)
+            {
+                if ( (framework != null) && (framework.length()>0) )
+                {
+                    File f = new File(outputdir, framework);
+                    f.mkdir();
+                    outputdir =  f.getCanonicalPath();
+                }
+            }
+        }
+        
+		else if ( upgradetest == null ) // this is a child suite of a parent
+		{
+            File suitedir = new File(outputdir, suiteName);
+            suitedir.mkdir();
+            outputdir = suitedir.getCanonicalPath();
+            //System.out.println("Child outputdir: " + outputdir);
+        }
+    }
+    
+	private static void setSpecialProps(Properties p, boolean isTop)
+	{
+        // Just build  string for RunTest to parse (^ is the separator)
+        // and determine which special flags are for ij or for server
+        // These special flags come from specialProperties, not from
+        // the usual properties (RunSuite will give these for the top suite)
+        String tmp = "";
+		for (Enumeration e = p.propertyNames(); e.hasMoreElements(); )
+		{
+			String key = (String)e.nextElement();
+			// Note: RunSuite will already have excluded
+			// suites, useoutput, usesystem,keepfiles from these
+			tmp += key + "=" + p.getProperty(key) + "^";
+		}
+		if (tmp.length()>0)
+		{
+		    if ( isTop == true ) // This is the top level suite
+		        topSpecialProps = tmp.substring(0, tmp.lastIndexOf('^'));
+		    else // This is a nested suite, do not apply to all the suites
+		        otherSpecialProps = tmp.substring(0, tmp.lastIndexOf('^'));
+		}
+	}
+	
+	static void addToSkipFile(String suiteName, PrintStream ps) throws IOException
+	{
+		ps.println(suiteName);
+		ps.flush();
+    }
+	
+}

Modified: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/RunSuite.java
Url: http://svn.apache.org/viewcvs/incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/RunSuite.java?view=diff&rev=122528&p1=incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/RunSuite.java&r1=122527&p2=incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/RunSuite.java&r2=122528
==============================================================================
--- incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/RunSuite.java	(original)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/RunSuite.java	Wed Dec 15 22:20:35 2004
@@ -1,558 +1,558 @@
-/* 
-
-   Derby - Class org.apache.derbyTesting.functionTests.harness.RunSuite
-
-   Copyright 1999, 2004 The Apache Software Foundation or its licensors, as applicable.
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-   You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
-
- */
-
-package org.apache.derbyTesting.functionTests.harness;
-
-import org.apache.derby.tools.sysinfo;
-import java.io.File;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.io.BufferedReader;
-import java.io.FileReader;
-import java.io.FileInputStream;
-import java.io.FileOutputStream;
-import java.io.BufferedOutputStream;
-import java.io.BufferedWriter;
-import java.io.FileWriter;
-import java.io.PrintWriter;
-import java.io.IOException;
-import java.io.FileNotFoundException;
-import java.lang.ClassNotFoundException;
-import java.sql.Timestamp;
-import java.util.Enumeration;
-import java.util.Properties;
-import java.util.Vector;
-import java.util.StringTokenizer;
-
-public class RunSuite
-{
-
-    static final boolean verbose=true;
-
-    static String suites; // list of subsuites in this suite
-    static Vector suitesToRun; // Vector of suites to run
-
-    // Properties which may be specified
-	static String jvmName = "";
-	static String javaCmd = "java";
-	static String jvmflags = ""; // jvm flags as one string
-	static String javaVersion;
-	static String classpath;
-	static String classpathServer;
-	static String testJavaFlags = ""; // formerly systest_javaflags
-	static String userdir;
-	static String framework;
-	static String runwithibmjvm;
-	static String excludeJCC;
-	static boolean useprocess = true;
-	static boolean skipsed = false;
-	static String systemdiff = "false";
-	static String topSuiteName = "";
-	static String outputdir; // location of output (default is userdir)
-	static String outcopy = "false"; // true if support files should go to outDir
-	static String canondir; // location of master dir (default is master)
-	static String bootcp; //  path for j9 bootclasspath setting
-	static String serverJvm; //  path for j9 bootclasspath setting
-	static String ijdefaultResourcePackage; // for ij tests only
-	static String debug; // for setting verbose mode to pass down to RunTest
-    static String timeout; // to allow killing a hanging test
-    static String shutdownurl; //used mainly by useprocess=false tests
-	static String reportstderr; // can set to disable (to turn off JIT errors, etc.)
-	static Properties suiteProperties;
-	static Properties specialProperties;
-
-	// Output variables
-    static PrintWriter pwOut = null; // for writing suite output
-    static File outDir; // test out dir
-    static File runDir; // where the suite/tests are run
-    static File outFile; // suite output file
-
-	public static void main(String[] args) throws Exception
-	{
-		if ((System.getProperty("java.vm.name") != null) && System.getProperty("java.vm.name").equals("J9"))
-		{
-		 		javaCmd = "j9";
-				String javaHome = System.getProperty("java.home");
-				//jvmflags = "-Xiss16k -Xss512k -Xmso16k -Xmx392388k";
-		}
-		String j9config = System.getProperty("com.ibm.oti.configuration");
-		if (j9config != null) 
-			if (j9config.equals("foun")) 
-				jvmName="j9_foundation";
-			else if (j9config.equals("max"))
-				jvmName="j9_13";
-
-	    String suiteName = args[0];
-	    if ( suiteName == null )
-	    {
-	        System.out.println("No suite name argument.");
-	        System.exit(1);
-	    }
-	    topSuiteName = suiteName;
-	    System.out.println("Top suite: " + suiteName);
-
-	    // suiteName may be one suite or a list of suites
-        suitesToRun = new Vector();
-
-        // Get properties set in the suite's properties file
-		suiteProperties = getSuiteProperties(suiteName, true);
-
-		// There may be system properties which will override
-		// the suiteProperties. This will make it easier when you
-		// do not want to edit the suite props for a special case
-		getSystemProperties();
-
-        // Get any special properties that are not the usual
-        // expected properties (we separate these from suiteProperties
-        // to avoid conflicts)
-        specialProperties =
-            SpecialFlags.getSpecialProperties(suiteProperties);
-
-        // Setup the initial output
-        setOutput(suiteName);
-
-        // Get the current time to write a timestamp
-        String startTime = CurrentTime.getTime();
-
-        pwOut.println("******* Start Suite: " + suiteName +
-            " " + startTime + " *******");
-
-        // Write sysinfo to the output file
-        if (useprocess) // doesn't work on Mac
-        {
-            SysInfoLog sysLog= new SysInfoLog();
-            sysLog.exec(jvmName, javaCmd, classpath, framework, pwOut, useprocess);
-        }
-            
-        getSuitesList(suiteName, true);
-        
-        // Get the current time to write a timestamp
-        String endTime = CurrentTime.getTime();
-        pwOut.println("******* End Suite: " + suiteName +
-            " " + endTime + " *******");
-        pwOut.close();
-        
-		String genrep = System.getProperty("genrep");
-		boolean isGenrep = true;
-		if (genrep!=null) isGenrep = "true".equalsIgnoreCase(genrep);
-		if (isGenrep) 
-		{
-		    String[] genargs = new String[6];
-		    genargs[0] = args[0];
-		    genargs[1] = jvmName;
-		    genargs[2] = javaCmd;
-		    genargs[3] = classpath;
-		    genargs[4] = framework;
-		    if (useprocess)
-		        genargs[5] = "true";
-		    else
-		        genargs[5] = "false";
-		    GenerateReport.main(genargs);
-		}
-	}
-
-    static void getSuitesList(String topparent, boolean isTop)
-        throws Exception, ClassNotFoundException, IOException
-    {
-		// Get the suite properties if it exists
-        Properties p;
-        if ( (suites == null) || (suites.length()==0) )
-        {
-            // There is a single suite, not a list, just add it
-            if (verbose) System.out.println("Suite to run: " + topparent+":"+topparent);
-            suitesToRun.addElement(topparent+":"+topparent);
-            // Use RunList class to issue the RunTest commands
-            if (verbose) System.out.println("Now do RunList");
-            //System.out.println("skipsed: " + skipsed);
-            RunList rl = new RunList(suitesToRun, runDir, outDir, pwOut,
-                suiteProperties, specialProperties, topparent);
-            suitesToRun.removeAllElements();
-        }
-        else
-        {
-            isTop = false;
-            // Build the Vector from suites string
-	        StringTokenizer st = new StringTokenizer(suites);
-	        String subparent = "";
-            while (st.hasMoreTokens())
-            {
-                subparent = st.nextToken();
-                p = getSuiteProperties(subparent, isTop);
-                if ( (p.getProperty("suites") == null) || (subparent.equals(topparent)) )
-                {
-                    suitesToRun.addElement(topparent+":"+subparent);
-                    //System.out.println("Add to suitesToRun: " + topparent+":"+subparent);
-                    // Use RunList class to issue the RunTest commands
-                    if (verbose) System.out.println("Now do RunList");
-                    //System.out.println("skipsed: " + skipsed);
-                    RunList rl = new RunList(suitesToRun, runDir, outDir, pwOut,
-                        suiteProperties, specialProperties, topparent);
-                    suitesToRun.removeAllElements();
-                }
-                else // This suite also has nested suites
-                {
-                    String sublist = p.getProperty("suites");
-                    //System.out.println("list for this SubSuite= " + sublist);
-                    BuildSuitesVector(subparent, sublist);
-                    // Use RunList class to issue the RunTest commands
-                    if (verbose) System.out.println("Now do RunList");
-                    //System.out.println("skipsed: " + skipsed);
-                    RunList rl = new RunList(suitesToRun, runDir, outDir, pwOut,
-                        suiteProperties, specialProperties, subparent);
-                    suitesToRun.removeAllElements();                    
-                }
-            }
-        }
-    }
-    
-    static void BuildSuitesVector(String parent, String subsuites)
-        throws ClassNotFoundException, IOException
-    {
-        Properties p;
-        StringTokenizer st = new StringTokenizer(subsuites);
-        String child = "";
-        while (st.hasMoreTokens())
-        {
-            child = st.nextToken();
-            if (child.equals(parent))
-            {
-                suitesToRun.addElement(parent+":"+child);
-                //System.out.println("Add this: " + parent+":"+child);
-            }
-            else
-            {
-                p = getSuiteProperties(child, false);
-                if ( p.getProperty("suites") == null )
-                {
-                    suitesToRun.addElement(parent+":"+child);
-                    //System.out.println("Add this: " + parent+":"+child);
-                }
-                else
-                {
-                    String moresuites = p.getProperty("suites");
-                    BuildSuitesVector(child, moresuites);
-                }
-            }
-        }
-    }
-            
-    
-    static Properties getSuiteProperties(String suiteName, boolean isTop)
-        throws ClassNotFoundException, IOException
-    {
-        // Locate the suite's config file and get the properties
-        // The file should be in the harness dir or user.dir
-        String suiteProps = "suites" + '/' + suiteName + ".properties";
-        userdir = System.getProperty("user.dir");
-
-        InputStream is = RunTest.loadTestResource(suiteProps);
-        if (is == null)
-        {
-            // Look in userdir
-            suiteProps = userdir + '/' + suiteName + ".properties";
-            is = RunTest.loadTestResource(suiteProps);
-        }
-        Properties p = new Properties();
-        if (is == null)
-            return p;
-
-        p.load(is);
-        // The top level suite may have special properties
-        // which get propagated to any subsuites
-        if (isTop == true)
-        {
-			String tmpjvmName=jvmName;	
-            jvmName = p.getProperty("jvm");
-		    if ( (jvmName == null) || (jvmName.length()==0) )
-		    {
-		        javaVersion = System.getProperty("java.version");
-		    }
-		    else
-		        javaVersion = jvmName;
-    		    
-		    JavaVersionHolder jvh = new JavaVersionHolder(javaVersion);
-		    String majorVersion = jvh.getMajorVersion();
-		    String minorVersion = jvh.getMinorVersion();
-            int iminor = jvh.getMinorNumber();
-            int imajor = jvh.getMajorNumber();
-    		
-		    if ( (iminor < 2) && (imajor < 2) )
-		        jvmName = "currentjvm";
-		    else
-		        jvmName = "jdk" + majorVersion + minorVersion;
-		if ( tmpjvmName != null)
-			jvmName= tmpjvmName;
-            javaCmd = p.getProperty("javaCmd");
-            jvmflags = p.getProperty("jvmflags");
-            testJavaFlags = p.getProperty("testJavaFlags");
-            classpath = p.getProperty("classpath");
-            classpathServer = p.getProperty("classpathServer");
-            framework = p.getProperty("framework");
-		    String usepr = p.getProperty("useprocess");
-		    if (usepr != null)
-		    {
-		        usepr = usepr.toLowerCase();
-		        if (usepr.equals("false"))
-		            useprocess = false;
-		        else
-		            useprocess = true;
-		    }
-		    else
-		        useprocess = true;
-
-            String nosed = p.getProperty("skipsed");
-            if (nosed != null)
-            {
-                nosed = nosed.toLowerCase();
-                if (nosed.equals("true"))
-                    skipsed = true;
-                else
-                    skipsed = false;
-            }
-            else
-                skipsed = false;
-                
-            outputdir = p.getProperty("outputdir");
-            canondir = p.getProperty("canondir");
-            bootcp = p.getProperty("bootcp");
-            serverJvm = p.getProperty("serverJvm");
-            systemdiff = p.getProperty("systemdiff");
-            ijdefaultResourcePackage = p.getProperty("ij.defaultResourcePackage");
-            outcopy = p.getProperty("outcopy");
-            debug = p.getProperty("verbose");
-            reportstderr = p.getProperty("reportstderr");
-            timeout = p.getProperty("timeout");
-            shutdownurl = p.getProperty("shutdownurl");
-        }
-        suites = p.getProperty("suites");
-		return p;
-    }
-
-    private static void getSystemProperties()
-    {
-        // Get any properties specified on the command line
-        // which may not have been specified in the suite prop file
-        Properties sp = System.getProperties();
-        String searchCP = sp.getProperty("ij.searchClassPath");
-        if (searchCP != null)
-            suiteProperties.put("ij.searchClassPath", searchCP);
-		String frm = sp.getProperty("framework");
-		if ( (frm != null) && (!frm.equals("embedded")) )
-		{
-		    framework = frm;
-		    suiteProperties.put("framework", framework);
-		}
-		String j = sp.getProperty("jvm");
-		if (j != null)
-		    suiteProperties.put("jversion", j);
-		
-		String jcmd = sp.getProperty("javaCmd");
-		if ((System.getProperty("java.vm.name") != null) && System.getProperty("java.vm.name").equals("J9"))
-			jcmd = "j9";
-		if (jcmd != null)
-		{
-		    javaCmd = jcmd;
-		    suiteProperties.put("javaCmd", javaCmd);
-		}
-		String jflags = sp.getProperty("jvmflags");
-		if (jflags != null)
-		{
-		    jvmflags = jflags;
-		    suiteProperties.put("jvmflags", jvmflags);
-		}
-		String testflags = sp.getProperty("testJavaFlags");
-		if (testflags != null)
-		{
-		    if (testJavaFlags == null)
-		        testJavaFlags = testflags;
-		    else // add to testJavaFlags
-		        testJavaFlags = testJavaFlags + "^" + testflags;
-		    suiteProperties.put("testJavaFlags", testJavaFlags);
-		}
-		String clpth = sp.getProperty("classpath");
-		if (clpth != null)
-		{
-		    classpath = clpth;
-		    suiteProperties.put("classpath", classpath);
-		}
-		String clsrv = sp.getProperty("classpathServer");
-		if ( (clsrv != null) && (!clsrv.startsWith("${")) )
-		{
-		    classpathServer = clsrv;
-		    suiteProperties.put("classpathServer", clsrv);
-		}
-		String usesys = sp.getProperty("usesystem");
-		if (usesys != null)
-		    suiteProperties.put("usesystem", usesys);
-		String jarf = sp.getProperty("jarfile");
-		if (jarf != null)
-		    suiteProperties.put("jarfile", jarf);
-		String upgtest = sp.getProperty("upgradetest");
-		if (upgtest != null)
-		    suiteProperties.put("upgradetest", upgtest);
-		String rep = sp.getProperty("replication");
-		if (rep != null)
-		    suiteProperties.put("replication", rep);
-		String encrypt = sp.getProperty("encryption");
-		if (encrypt != null)
-		    suiteProperties.put("encryption", encrypt);
-		String jdk12test = sp.getProperty("jdk12test");
-		if (jdk12test != null)
-		    suiteProperties.put("jdk12test", jdk12test);
-		String jdk12ex = sp.getProperty("jdk12exttest");
-		if (jdk12ex != null)
-		    suiteProperties.put("jdk12exttest", jdk12ex);
-		String runwithibmjvm = sp.getProperty("runwithibmjvm");
-		if (runwithibmjvm != null)
-		    suiteProperties.put("runwithibmjvm", runwithibmjvm);
-		String excludeJCC = sp.getProperty("excludeJCC");
-		if (excludeJCC != null)
-		    suiteProperties.put("excludeJCC", excludeJCC);
-		String keep = sp.getProperty("keepfiles");
-		if (keep != null)
-		    suiteProperties.put("keepfiles", keep);
-		String outd = sp.getProperty("outputdir");
-		if (outd != null)
-		{
-		    outputdir = outd;
-		    suiteProperties.put("outputdir", outputdir);
-		}
-		String canond = sp.getProperty("canondir");
-		if (canond != null)
-		{
-		    canondir = canond;
-		    suiteProperties.put("canondir", canondir);
-		}
-		String j9bootcp = sp.getProperty("bootcp");
-		if (j9bootcp != null)
-		{
-		    bootcp = j9bootcp;
-		    suiteProperties.put("bootcp", bootcp);
-		}
-		String serverJvm = sp.getProperty("serverJvm");
-		if (serverJvm != null)
-		    suiteProperties.put("serverJvm", serverJvm);
-		String testout = sp.getProperty("testoutname");
-		if (testout != null)
-		    suiteProperties.put("testoutname", testout); // toursDemo
-		String mtdir = sp.getProperty("mtestdir"); // used by multi tests
-		if (mtdir != null)
-		    suiteProperties.put("mtestdir", mtdir);
-		String usepr = sp.getProperty("useprocess");
-		if (usepr != null)
-		{
-		    // Some platforms cannot handle process exec
-		    usepr = usepr.toLowerCase();
-		    if (usepr.equals("false"))
-		    {
-		        useprocess = false;
-		        suiteProperties.put("useprocess", usepr);
-		    }
-		}
-		
-        String nosed = sp.getProperty("skipsed");
-        if (nosed != null)
-        {
-            // in some cases (like locales, we may want to skip the Sed)
-            nosed = nosed.toLowerCase();
-            if (nosed.equals("true"))
-            {
-                skipsed = true;
-                suiteProperties.put("skipsed", nosed);
-            }
-        }
-		
-		String sysdiff = sp.getProperty("systemdiff");
-		if (sysdiff != null)
-		{
-		    // Use system diff if set to true
-		    sysdiff = sysdiff.toLowerCase();
-		    if (sysdiff.equals("true"))
-		        suiteProperties.put("systemdiff", "true");
-		}
-		String defrespckg = sp.getProperty("ij.defaultResourcePackage");
-		if (defrespckg != null)
-		    suiteProperties.put("ij.defaultResourcePackage", defrespckg);
-		String outcpy = sp.getProperty("outcopy");
-		if (outcpy != null)
-		    suiteProperties.put("outcopy", outcpy);
-		String topsuite = sp.getProperty("suitename");
-		if (topsuite != null)
-		    suiteProperties.put("suitename", topsuite);
-		else
-		    suiteProperties.put("suitename", topSuiteName);
-        String dbug = sp.getProperty("verbose");
-		if (dbug != null)
-		    suiteProperties.put("verbose", dbug);
-		String reporterr = sp.getProperty("reportstderr");
-		if (reporterr != null)
-		    suiteProperties.put("reportstderr", reporterr);
-		String tout = sp.getProperty("timeout");
-		if (tout != null)
-		    suiteProperties.put("timeout", tout);
-    }
-
-    private static void setOutput(String suiteName)
-        throws ClassNotFoundException, FileNotFoundException, IOException
-    {
-        boolean status = false;
-        // Use the defined output directory or user.dir by default
-        File tmpoutDir;
-        if ( (outputdir == null) || (outputdir.length()==0) )
-        {
-            tmpoutDir =
-		        new File((new File(userdir)).getCanonicalPath());
-		}
-        else
-        {
-            tmpoutDir =
-                new File((new File(outputdir)).getCanonicalPath());
-		}
-        outDir = tmpoutDir;
-        outDir.mkdir();
-        
-		// runDir is where the suites/tests are run and where
-		// any support files or scripts will be expected to live
-		runDir =
-		    new File((new File(userdir)).getCanonicalPath());
-		    
-        // Set the suite property outputdir
-        suiteProperties.put("outputdir", outDir.getCanonicalPath());
-
-        // Define the final suite summary file file
-        outFile = new File(outDir, suiteName + ".sum");
-        if (outFile.exists())
-            status = outFile.delete();
- 
-        // Define the suite.pass file
-        File passFile = new File(outDir, suiteName + ".pass");
-        if (passFile.exists())
-            status = passFile.delete();
-
-        // Define the suite.fail file
-        File failFile = new File(outDir, suiteName + ".fail");
-        if (failFile.exists())
-            status = failFile.delete();
-
-        // Create a PrintWriter for writing env and test info to the diff file
-        pwOut = new PrintWriter
-            (new BufferedWriter(new FileWriter(outFile.getPath()), 4096), true);
-    }
-}
+/* 
+
+   Derby - Class org.apache.derbyTesting.functionTests.harness.RunSuite
+
+   Copyright 1999, 2004 The Apache Software Foundation or its licensors, as applicable.
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+ */
+
+package org.apache.derbyTesting.functionTests.harness;
+
+import org.apache.derby.tools.sysinfo;
+import java.io.File;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.BufferedReader;
+import java.io.FileReader;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.BufferedOutputStream;
+import java.io.BufferedWriter;
+import java.io.FileWriter;
+import java.io.PrintWriter;
+import java.io.IOException;
+import java.io.FileNotFoundException;
+import java.lang.ClassNotFoundException;
+import java.sql.Timestamp;
+import java.util.Enumeration;
+import java.util.Properties;
+import java.util.Vector;
+import java.util.StringTokenizer;
+
+public class RunSuite
+{
+
+    static final boolean verbose=true;
+
+    static String suites; // list of subsuites in this suite
+    static Vector suitesToRun; // Vector of suites to run
+
+    // Properties which may be specified
+	static String jvmName = "";
+	static String javaCmd = "java";
+	static String jvmflags = ""; // jvm flags as one string
+	static String javaVersion;
+	static String classpath;
+	static String classpathServer;
+	static String testJavaFlags = ""; // formerly systest_javaflags
+	static String userdir;
+	static String framework;
+	static String runwithibmjvm;
+	static String excludeJCC;
+	static boolean useprocess = true;
+	static boolean skipsed = false;
+	static String systemdiff = "false";
+	static String topSuiteName = "";
+	static String outputdir; // location of output (default is userdir)
+	static String outcopy = "false"; // true if support files should go to outDir
+	static String canondir; // location of master dir (default is master)
+	static String bootcp; //  path for j9 bootclasspath setting
+	static String serverJvm; //  path for j9 bootclasspath setting
+	static String ijdefaultResourcePackage; // for ij tests only
+	static String debug; // for setting verbose mode to pass down to RunTest
+    static String timeout; // to allow killing a hanging test
+    static String shutdownurl; //used mainly by useprocess=false tests
+	static String reportstderr; // can set to disable (to turn off JIT errors, etc.)
+	static Properties suiteProperties;
+	static Properties specialProperties;
+
+	// Output variables
+    static PrintWriter pwOut = null; // for writing suite output
+    static File outDir; // test out dir
+    static File runDir; // where the suite/tests are run
+    static File outFile; // suite output file
+
+	public static void main(String[] args) throws Exception
+	{
+		if ((System.getProperty("java.vm.name") != null) && System.getProperty("java.vm.name").equals("J9"))
+		{
+		 		javaCmd = "j9";
+				String javaHome = System.getProperty("java.home");
+				//jvmflags = "-Xiss16k -Xss512k -Xmso16k -Xmx392388k";
+		}
+		String j9config = System.getProperty("com.ibm.oti.configuration");
+		if (j9config != null) 
+			if (j9config.equals("foun")) 
+				jvmName="j9_foundation";
+			else if (j9config.equals("max"))
+				jvmName="j9_13";
+
+	    String suiteName = args[0];
+	    if ( suiteName == null )
+	    {
+	        System.out.println("No suite name argument.");
+	        System.exit(1);
+	    }
+	    topSuiteName = suiteName;
+	    System.out.println("Top suite: " + suiteName);
+
+	    // suiteName may be one suite or a list of suites
+        suitesToRun = new Vector();
+
+        // Get properties set in the suite's properties file
+		suiteProperties = getSuiteProperties(suiteName, true);
+
+		// There may be system properties which will override
+		// the suiteProperties. This will make it easier when you
+		// do not want to edit the suite props for a special case
+		getSystemProperties();
+
+        // Get any special properties that are not the usual
+        // expected properties (we separate these from suiteProperties
+        // to avoid conflicts)
+        specialProperties =
+            SpecialFlags.getSpecialProperties(suiteProperties);
+
+        // Setup the initial output
+        setOutput(suiteName);
+
+        // Get the current time to write a timestamp
+        String startTime = CurrentTime.getTime();
+
+        pwOut.println("******* Start Suite: " + suiteName +
+            " " + startTime + " *******");
+
+        // Write sysinfo to the output file
+        if (useprocess) // doesn't work on Mac
+        {
+            SysInfoLog sysLog= new SysInfoLog();
+            sysLog.exec(jvmName, javaCmd, classpath, framework, pwOut, useprocess);
+        }
+            
+        getSuitesList(suiteName, true);
+        
+        // Get the current time to write a timestamp
+        String endTime = CurrentTime.getTime();
+        pwOut.println("******* End Suite: " + suiteName +
+            " " + endTime + " *******");
+        pwOut.close();
+        
+		String genrep = System.getProperty("genrep");
+		boolean isGenrep = true;
+		if (genrep!=null) isGenrep = "true".equalsIgnoreCase(genrep);
+		if (isGenrep) 
+		{
+		    String[] genargs = new String[6];
+		    genargs[0] = args[0];
+		    genargs[1] = jvmName;
+		    genargs[2] = javaCmd;
+		    genargs[3] = classpath;
+		    genargs[4] = framework;
+		    if (useprocess)
+		        genargs[5] = "true";
+		    else
+		        genargs[5] = "false";
+		    GenerateReport.main(genargs);
+		}
+	}
+
+    static void getSuitesList(String topparent, boolean isTop)
+        throws Exception, ClassNotFoundException, IOException
+    {
+		// Get the suite properties if it exists
+        Properties p;
+        if ( (suites == null) || (suites.length()==0) )
+        {
+            // There is a single suite, not a list, just add it
+            if (verbose) System.out.println("Suite to run: " + topparent+":"+topparent);
+            suitesToRun.addElement(topparent+":"+topparent);
+            // Use RunList class to issue the RunTest commands
+            if (verbose) System.out.println("Now do RunList");
+            //System.out.println("skipsed: " + skipsed);
+            RunList rl = new RunList(suitesToRun, runDir, outDir, pwOut,
+                suiteProperties, specialProperties, topparent);
+            suitesToRun.removeAllElements();
+        }
+        else
+        {
+            isTop = false;
+            // Build the Vector from suites string
+	        StringTokenizer st = new StringTokenizer(suites);
+	        String subparent = "";
+            while (st.hasMoreTokens())
+            {
+                subparent = st.nextToken();
+                p = getSuiteProperties(subparent, isTop);
+                if ( (p.getProperty("suites") == null) || (subparent.equals(topparent)) )
+                {
+                    suitesToRun.addElement(topparent+":"+subparent);
+                    //System.out.println("Add to suitesToRun: " + topparent+":"+subparent);
+                    // Use RunList class to issue the RunTest commands
+                    if (verbose) System.out.println("Now do RunList");
+                    //System.out.println("skipsed: " + skipsed);
+                    RunList rl = new RunList(suitesToRun, runDir, outDir, pwOut,
+                        suiteProperties, specialProperties, topparent);
+                    suitesToRun.removeAllElements();
+                }
+                else // This suite also has nested suites
+                {
+                    String sublist = p.getProperty("suites");
+                    //System.out.println("list for this SubSuite= " + sublist);
+                    BuildSuitesVector(subparent, sublist);
+                    // Use RunList class to issue the RunTest commands
+                    if (verbose) System.out.println("Now do RunList");
+                    //System.out.println("skipsed: " + skipsed);
+                    RunList rl = new RunList(suitesToRun, runDir, outDir, pwOut,
+                        suiteProperties, specialProperties, subparent);
+                    suitesToRun.removeAllElements();                    
+                }
+            }
+        }
+    }
+    
+    static void BuildSuitesVector(String parent, String subsuites)
+        throws ClassNotFoundException, IOException
+    {
+        Properties p;
+        StringTokenizer st = new StringTokenizer(subsuites);
+        String child = "";
+        while (st.hasMoreTokens())
+        {
+            child = st.nextToken();
+            if (child.equals(parent))
+            {
+                suitesToRun.addElement(parent+":"+child);
+                //System.out.println("Add this: " + parent+":"+child);
+            }
+            else
+            {
+                p = getSuiteProperties(child, false);
+                if ( p.getProperty("suites") == null )
+                {
+                    suitesToRun.addElement(parent+":"+child);
+                    //System.out.println("Add this: " + parent+":"+child);
+                }
+                else
+                {
+                    String moresuites = p.getProperty("suites");
+                    BuildSuitesVector(child, moresuites);
+                }
+            }
+        }
+    }
+            
+    
+    static Properties getSuiteProperties(String suiteName, boolean isTop)
+        throws ClassNotFoundException, IOException
+    {
+        // Locate the suite's config file and get the properties
+        // The file should be in the harness dir or user.dir
+        String suiteProps = "suites" + '/' + suiteName + ".properties";
+        userdir = System.getProperty("user.dir");
+
+        InputStream is = RunTest.loadTestResource(suiteProps);
+        if (is == null)
+        {
+            // Look in userdir
+            suiteProps = userdir + '/' + suiteName + ".properties";
+            is = RunTest.loadTestResource(suiteProps);
+        }
+        Properties p = new Properties();
+        if (is == null)
+            return p;
+
+        p.load(is);
+        // The top level suite may have special properties
+        // which get propagated to any subsuites
+        if (isTop == true)
+        {
+			String tmpjvmName=jvmName;	
+            jvmName = p.getProperty("jvm");
+		    if ( (jvmName == null) || (jvmName.length()==0) )
+		    {
+		        javaVersion = System.getProperty("java.version");
+		    }
+		    else
+		        javaVersion = jvmName;
+    		    
+		    JavaVersionHolder jvh = new JavaVersionHolder(javaVersion);
+		    String majorVersion = jvh.getMajorVersion();
+		    String minorVersion = jvh.getMinorVersion();
+            int iminor = jvh.getMinorNumber();
+            int imajor = jvh.getMajorNumber();
+    		
+		    if ( (iminor < 2) && (imajor < 2) )
+		        jvmName = "currentjvm";
+		    else
+		        jvmName = "jdk" + majorVersion + minorVersion;
+		if ( tmpjvmName != null)
+			jvmName= tmpjvmName;
+            javaCmd = p.getProperty("javaCmd");
+            jvmflags = p.getProperty("jvmflags");
+            testJavaFlags = p.getProperty("testJavaFlags");
+            classpath = p.getProperty("classpath");
+            classpathServer = p.getProperty("classpathServer");
+            framework = p.getProperty("framework");
+		    String usepr = p.getProperty("useprocess");
+		    if (usepr != null)
+		    {
+		        usepr = usepr.toLowerCase();
+		        if (usepr.equals("false"))
+		            useprocess = false;
+		        else
+		            useprocess = true;
+		    }
+		    else
+		        useprocess = true;
+
+            String nosed = p.getProperty("skipsed");
+            if (nosed != null)
+            {
+                nosed = nosed.toLowerCase();
+                if (nosed.equals("true"))
+                    skipsed = true;
+                else
+                    skipsed = false;
+            }
+            else
+                skipsed = false;
+                
+            outputdir = p.getProperty("outputdir");
+            canondir = p.getProperty("canondir");
+            bootcp = p.getProperty("bootcp");
+            serverJvm = p.getProperty("serverJvm");
+            systemdiff = p.getProperty("systemdiff");
+            ijdefaultResourcePackage = p.getProperty("ij.defaultResourcePackage");
+            outcopy = p.getProperty("outcopy");
+            debug = p.getProperty("verbose");
+            reportstderr = p.getProperty("reportstderr");
+            timeout = p.getProperty("timeout");
+            shutdownurl = p.getProperty("shutdownurl");
+        }
+        suites = p.getProperty("suites");
+		return p;
+    }
+
+    private static void getSystemProperties()
+    {
+        // Get any properties specified on the command line
+        // which may not have been specified in the suite prop file
+        Properties sp = System.getProperties();
+        String searchCP = sp.getProperty("ij.searchClassPath");
+        if (searchCP != null)
+            suiteProperties.put("ij.searchClassPath", searchCP);
+		String frm = sp.getProperty("framework");
+		if ( (frm != null) && (!frm.equals("embedded")) )
+		{
+		    framework = frm;
+		    suiteProperties.put("framework", framework);
+		}
+		String j = sp.getProperty("jvm");
+		if (j != null)
+		    suiteProperties.put("jversion", j);
+		
+		String jcmd = sp.getProperty("javaCmd");
+		if ((System.getProperty("java.vm.name") != null) && System.getProperty("java.vm.name").equals("J9"))
+			jcmd = "j9";
+		if (jcmd != null)
+		{
+		    javaCmd = jcmd;
+		    suiteProperties.put("javaCmd", javaCmd);
+		}
+		String jflags = sp.getProperty("jvmflags");
+		if (jflags != null)
+		{
+		    jvmflags = jflags;
+		    suiteProperties.put("jvmflags", jvmflags);
+		}
+		String testflags = sp.getProperty("testJavaFlags");
+		if (testflags != null)
+		{
+		    if (testJavaFlags == null)
+		        testJavaFlags = testflags;
+		    else // add to testJavaFlags
+		        testJavaFlags = testJavaFlags + "^" + testflags;
+		    suiteProperties.put("testJavaFlags", testJavaFlags);
+		}
+		String clpth = sp.getProperty("classpath");
+		if (clpth != null)
+		{
+		    classpath = clpth;
+		    suiteProperties.put("classpath", classpath);
+		}
+		String clsrv = sp.getProperty("classpathServer");
+		if ( (clsrv != null) && (!clsrv.startsWith("${")) )
+		{
+		    classpathServer = clsrv;
+		    suiteProperties.put("classpathServer", clsrv);
+		}
+		String usesys = sp.getProperty("usesystem");
+		if (usesys != null)
+		    suiteProperties.put("usesystem", usesys);
+		String jarf = sp.getProperty("jarfile");
+		if (jarf != null)
+		    suiteProperties.put("jarfile", jarf);
+		String upgtest = sp.getProperty("upgradetest");
+		if (upgtest != null)
+		    suiteProperties.put("upgradetest", upgtest);
+		String rep = sp.getProperty("replication");
+		if (rep != null)
+		    suiteProperties.put("replication", rep);
+		String encrypt = sp.getProperty("encryption");
+		if (encrypt != null)
+		    suiteProperties.put("encryption", encrypt);
+		String jdk12test = sp.getProperty("jdk12test");
+		if (jdk12test != null)
+		    suiteProperties.put("jdk12test", jdk12test);
+		String jdk12ex = sp.getProperty("jdk12exttest");
+		if (jdk12ex != null)
+		    suiteProperties.put("jdk12exttest", jdk12ex);
+		String runwithibmjvm = sp.getProperty("runwithibmjvm");
+		if (runwithibmjvm != null)
+		    suiteProperties.put("runwithibmjvm", runwithibmjvm);
+		String excludeJCC = sp.getProperty("excludeJCC");
+		if (excludeJCC != null)
+		    suiteProperties.put("excludeJCC", excludeJCC);
+		String keep = sp.getProperty("keepfiles");
+		if (keep != null)
+		    suiteProperties.put("keepfiles", keep);
+		String outd = sp.getProperty("outputdir");
+		if (outd != null)
+		{
+		    outputdir = outd;
+		    suiteProperties.put("outputdir", outputdir);
+		}
+		String canond = sp.getProperty("canondir");
+		if (canond != null)
+		{
+		    canondir = canond;
+		    suiteProperties.put("canondir", canondir);
+		}
+		String j9bootcp = sp.getProperty("bootcp");
+		if (j9bootcp != null)
+		{
+		    bootcp = j9bootcp;
+		    suiteProperties.put("bootcp", bootcp);
+		}
+		String serverJvm = sp.getProperty("serverJvm");
+		if (serverJvm != null)
+		    suiteProperties.put("serverJvm", serverJvm);
+		String testout = sp.getProperty("testoutname");
+		if (testout != null)
+		    suiteProperties.put("testoutname", testout); // toursDemo
+		String mtdir = sp.getProperty("mtestdir"); // used by multi tests
+		if (mtdir != null)
+		    suiteProperties.put("mtestdir", mtdir);
+		String usepr = sp.getProperty("useprocess");
+		if (usepr != null)
+		{
+		    // Some platforms cannot handle process exec
+		    usepr = usepr.toLowerCase();
+		    if (usepr.equals("false"))
+		    {
+		        useprocess = false;
+		        suiteProperties.put("useprocess", usepr);
+		    }
+		}
+		
+        String nosed = sp.getProperty("skipsed");
+        if (nosed != null)
+        {
+            // in some cases (like locales, we may want to skip the Sed)
+            nosed = nosed.toLowerCase();
+            if (nosed.equals("true"))
+            {
+                skipsed = true;
+                suiteProperties.put("skipsed", nosed);
+            }
+        }
+		
+		String sysdiff = sp.getProperty("systemdiff");
+		if (sysdiff != null)
+		{
+		    // Use system diff if set to true
+		    sysdiff = sysdiff.toLowerCase();
+		    if (sysdiff.equals("true"))
+		        suiteProperties.put("systemdiff", "true");
+		}
+		String defrespckg = sp.getProperty("ij.defaultResourcePackage");
+		if (defrespckg != null)
+		    suiteProperties.put("ij.defaultResourcePackage", defrespckg);
+		String outcpy = sp.getProperty("outcopy");
+		if (outcpy != null)
+		    suiteProperties.put("outcopy", outcpy);
+		String topsuite = sp.getProperty("suitename");
+		if (topsuite != null)
+		    suiteProperties.put("suitename", topsuite);
+		else
+		    suiteProperties.put("suitename", topSuiteName);
+        String dbug = sp.getProperty("verbose");
+		if (dbug != null)
+		    suiteProperties.put("verbose", dbug);
+		String reporterr = sp.getProperty("reportstderr");
+		if (reporterr != null)
+		    suiteProperties.put("reportstderr", reporterr);
+		String tout = sp.getProperty("timeout");
+		if (tout != null)
+		    suiteProperties.put("timeout", tout);
+    }
+
+    private static void setOutput(String suiteName)
+        throws ClassNotFoundException, FileNotFoundException, IOException
+    {
+        boolean status = false;
+        // Use the defined output directory or user.dir by default
+        File tmpoutDir;
+        if ( (outputdir == null) || (outputdir.length()==0) )
+        {
+            tmpoutDir =
+		        new File((new File(userdir)).getCanonicalPath());
+		}
+        else
+        {
+            tmpoutDir =
+                new File((new File(outputdir)).getCanonicalPath());
+		}
+        outDir = tmpoutDir;
+        outDir.mkdir();
+        
+		// runDir is where the suites/tests are run and where
+		// any support files or scripts will be expected to live
+		runDir =
+		    new File((new File(userdir)).getCanonicalPath());
+		    
+        // Set the suite property outputdir
+        suiteProperties.put("outputdir", outDir.getCanonicalPath());
+
+        // Define the final suite summary file file
+        outFile = new File(outDir, suiteName + ".sum");
+        if (outFile.exists())
+            status = outFile.delete();
+ 
+        // Define the suite.pass file
+        File passFile = new File(outDir, suiteName + ".pass");
+        if (passFile.exists())
+            status = passFile.delete();
+
+        // Define the suite.fail file
+        File failFile = new File(outDir, suiteName + ".fail");
+        if (failFile.exists())
+            status = failFile.delete();
+
+        // Create a PrintWriter for writing env and test info to the diff file
+        pwOut = new PrintWriter
+            (new BufferedWriter(new FileWriter(outFile.getPath()), 4096), true);
+    }
+}

Modified: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/RunTest.java
Url: http://svn.apache.org/viewcvs/incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/RunTest.java?view=diff&rev=122528&p1=incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/RunTest.java&r1=122527&p2=incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/RunTest.java&r2=122528
==============================================================================
--- incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/RunTest.java	(original)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/RunTest.java	Wed Dec 15 22:20:35 2004
@@ -1,2288 +1,2288 @@
-/*
-
-   Derby - Class org.apache.derbyTesting.functionTests.harness.RunTest
-
-   Copyright 1999, 2004 The Apache Software Foundation or its licensors, as applicable.
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-   You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
-
- */
-
-package org.apache.derbyTesting.functionTests.harness;
-
-import org.apache.derby.tools.sysinfo;
-import org.apache.derby.tools.ij;
-import org.apache.derby.iapi.reference.Attribute;
-
-import java.io.File;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.io.ByteArrayInputStream;
-import java.io.BufferedReader;
-import java.io.FileReader;
-import java.io.FileWriter;
-import java.io.FileInputStream;
-import java.io.FileOutputStream;
-import java.io.BufferedOutputStream;
-import java.io.BufferedWriter;
-import java.io.FileWriter;
-import java.io.PrintWriter;
-import java.io.PrintStream;
-import java.io.IOException;
-import java.io.FileNotFoundException;
-import java.lang.ClassNotFoundException;
-import java.lang.ClassFormatError;
-import java.lang.Thread;
-import java.lang.reflect.Method;
-import java.util.Enumeration;
-import java.util.Vector;
-import java.sql.Timestamp;
-import java.sql.Connection;
-import java.sql.SQLException;
-import java.sql.DriverManager;
-import java.util.Properties;
-import java.util.StringTokenizer;
-import java.net.URL;
-
-public class RunTest
-{
-
-    // For printing debug info
-    static boolean verbose=false;
-    // Under some circumstances, we may need to skip the test
-    static boolean skiptest = false;
-    static StringBuffer skiptestReason = new StringBuffer();
-    
-    //java requires / to look into jars, irrespective of OS
-    static final String testResourceHome = "/org/apache/derbyTesting/functionTests/";
-    
-    // Framework support
-    static String[] validFrameworks = {"embedded","",
-				       "DerbyNet","DB2jcc",
-				       "DB2app"};
-    static NetServer ns;
-    static boolean frameworkInitialized = false;
-    static boolean j9net = false;
-    static String driverName;
-    static String dbName;
-
-    // Test properties
-	static String jvmName = "currentjvm";
-	static String javaCmd;
-	static String javaVersion; // System.getProperty("java.version")
-	static String majorVersion;
-	static String minorVersion;
-	static int jccMajor;
-	static int jccMinor;
-	static int imajor;
-	static int iminor;
-	static boolean isjdk12test = false;
-	static String classpath = "";
-	static String classpathServer = "";
-    static String framework = "embedded";
-    public static String J9_STATEMENTCACHESIZE = "20";
-
-    static String usesystem = "";
-    static String searchCP = "";
-    static boolean useCommonDB = false;
-	static boolean keepfiles = false;
-	static boolean useprocess = true;
-	static boolean systemdiff = false; // can set true if there is a system diff
-	static boolean upgradetest = false;
-	static boolean encryption = false; // requires jdk12ext plus encryptionProtocol
-	static boolean jdk12exttest = false; // requires jdk12ext
-	static String runningdir = ""; // where the tests are run and suppfiles placed
-	static String outputdir = ""; // user can specify as a property (optional)
-	static String canondir; // optional (to specify other than "master")
-	static String bootcp; // for j9 bootclasspath
-	static String canonpath; // special full path (will be platform dependent)
-	//static String mtestdir = ""; // for MultiTest user must specify testdir
-	static String testSpecialProps = ""; // any special suite properties
-	static String testJavaFlags = ""; // special command line flags
-	static String jvmflags; // java special flags
-	static boolean reportstderr = true;
-	static int timeout = -1; // in case tests are hanging
-	public static String timeoutStr;
-	static String jarfile; // some tests have jar files (like upgrade)
-	static boolean skipsed = false;
-	static String commonDBHome = "testCSHome";
-	static boolean dbIsNew = true;
-	static String runwithjvm="true";
-
-	// Other test variables for directories, files, output
-	static String scriptName = ""; // testname as passed in
-	static String scriptFileName; // testname with extension
-	static String testDirName = ""; // test directory name
-        static String defaultPackageName = "/org/apache/derbyTesting/";
-        static String javaPath = "org.apache.derbyTesting."; // for java tests
-	static String testType; // sql, java, unit, etc.
-	static String testBase; // testname without extension
-	static String testOutName; // output name without path or extension (optional)
-	static String passFileName; // file listing passed tests
-	static String failFileName; // file listing failed tests
-	static String JCCOutName; //file name for JCC corrected master
-    static File passFile;
-    static File failFile;
-	static String shutdownurl = "";
-    static boolean useOutput; // use output or assume .tmp file is produced?
-    static boolean outcopy; // copy support files to outDir rather than runDir
-	static String userdir; // current user directory
-	static char fileSep; // file separator for the system
-    static PrintWriter printWriter = null; // used to write test output to .tmp
-    static PrintWriter pwDiff = null; // for writing test output and info
-    static File script; // The file created for test files other than java tests
-    static File baseDir; // the DB base system dir
-    static boolean deleteBaseDir; // the DB base system dir
-    static File outDir; // test out dir
-    static File runDir; // where test is run and where support files are expected
-    static File canonDir; // allows setting master dir other than default
-    static File tmpOutFile; // tmp output file (before sed)
-    static File JCCOutFile; // master file processed for JCC
-    static File stdOutFile; // for tests with useoutput false
-    static File finalOutFile; // final output file (after sed)
-    static File appPropFile; // testname_app.properties or default
-    static File clPropFile; // testname_derby.properties or default
-    static File diffFile; // To indicate diffs
-    static File tsuiteDir; // Final output dir for suite(s)
-    static File rsuiteDir; // Where to report .pass and .fail for suite(s)
-	static File extInDir;    //Where all external test input files exist.
-	static File extOutDir;    //Where all external test input files exist.
-	static File extInOutDir;    //Where all external test input files exist.
-
-    // This test may be part of a suite
-    // (RunTest may need to know this is a suite to avoid dup output like sysinfo)
-    static String topsuitedir = ""; // in case of nested suites
-    static String topsuiteName = "";
-    static String topreportdir = "";
-    static String suiteName = "";
-    static boolean isSuiteRun = false;
-    static boolean lastTestFailed = false;
-
-    static InputStream isSed = null; // For test_sed.properties // Cliff
-
-	public static void main(String[] args)
-		throws Exception
-	{
-		skiptestReason.setLength(0); // 0 out for useprocess
-		// Determine the test type
-		if (args.length == 0)
-		{
-			// No script name provided
-			System.out.println("no test name provided");
-			System.exit(1);
-		}
-		scriptName = args[0];
-
-		if (Boolean.getBoolean("listOnly")) 
-		{
-			System.out.println("LISTONLY :" + scriptName);
-			return;
-		}
-
-		if ( (scriptName == null) || (scriptName.equals("")) )
-		{
-		    System.out.println("Null or blank test script name.");
-		    System.exit(1);
-		}
-		if (args.length == 6)
-		{
-		    defaultPackageName = args[1];
-		    usesystem = args[2];
-		    useprocess = false;
-		    shutdownurl = args[4];
-		    isSuiteRun = true;
-		    suiteName = args[5];
-		    //System.out.println("suiteName: " + suiteName);
-		}
-		
-		testType = scriptName.substring(scriptName.lastIndexOf(".") + 1);
-
-		verifyTestType();
-
-        // Get the properties for the test
-		Properties sp = System.getProperties();
-
-		// For useprocess=false, some system wide properties need to be reset
-		if (useprocess == false)
-		{
-		    sp.put("useprocess", "false");
-            // Reset maximumDisplayWidth because some tests set this in app properties
-            // and when running in same process, can cause extra long lines and diffs
-            if ( sp.getProperty("maximumDisplayWidth") == null )
-                sp.put("maximumDisplayWidth", "128");
-            if ( sp.getProperty("ij.defaultResourcePackage") != null )
-                sp.put("ij.defaultResourcePackage", defaultPackageName);
-            System.setProperties(sp);
-        }
-        
-        getProperties(sp);
-        // Setup the directories for the test and test output
-        setDirectories(scriptName,sp);
-
-        // Check for properties files, including derby.properties
-        // and if needed, build the -p string to pass to the test
-        String propString = createPropString();
-
-        if ( (isSuiteRun == false) && (useprocess) )
-        {
-            SysInfoLog sysLog = new SysInfoLog();
-            sysLog.exec(jvmName, javaCmd, classpath, framework, pwDiff, useprocess);
-        }
-
-	    String startTime = CurrentTime.getTime();
-	    StringBuffer sb = new StringBuffer();
-	    sb.append("*** Start: " + testBase + " jdk" + javaVersion + " ");
-	    if ( (framework.length()>0) && (!framework.startsWith("embedded")) )
-	        sb.append(framework + " ");
-	    if ( (suiteName != null) && (suiteName.length()>0) )
-	        sb.append(suiteName + " ");
-	    sb.append(startTime + " ***");
-	    System.out.println(sb.toString());
-	    pwDiff.println(sb.toString());
-        
-        // Run the Server if needed
-	    if ((driverName != null) && (!skiptest) )
-	    {
-            System.out.println("Initialize for framework: "+ framework );
-            if (j9net && (framework.equals("DerbyNet"))) 
-			    ns = new NetServer(baseDir, "j9_13", classpathServer, null, jvmflags,framework);
-            else
-			    ns = new NetServer(baseDir, jvmName, classpathServer, javaCmd, jvmflags,framework);
-		    ns.start();
-		    frameworkInitialized = true;
-	    }
-		
-        // If the test has a jar file (such as upgrade) unjar it
-        if (jarfile != null)
-        {
-            UnJar uj = new UnJar();
-            uj.unjar(jarfile, outDir.getCanonicalPath(), true);
-        }
-        
-        // Run the actual test (unless skiptest was set to true)
-        if (skiptest == false)
-        {
-            testRun(propString, sp);
-        }
-        else
-        {
-			if (skiptestReason.length() == 0)
-				addSkiptestReason("Test skipped: skiptest set without setting skiptestReason, please fix RunTest.java...");
-		    pwDiff.println(skiptestReason);
-		    System.out.println(skiptestReason);
-            doCleanup(javaVersion);
-            return;
-        }
-            
-        // Stop the Network server if necessary
-		if (frameworkInitialized)
-		{
-		    System.out.println("Attempt to shutdown framework: " 
-				       + framework);
-		    ns.stop();
-		}
-
-		// Do "sed" to strip some unwanted stuff from the output file
-		// unless flag skipsed is set to true (for special cases)
-		
-		String outName = finalOutFile.getPath();
-
-        if (skipsed)
-        {
-            tmpOutFile.renameTo(finalOutFile);
-        }
-        else
-        {
-                    try
-                    {
-                        Sed sed = new Sed();
-                        sed.exec(tmpOutFile,finalOutFile, isSed, 
-                                        NetServer.isJCCConnection(framework));
-		    }
-		    catch (ClassFormatError cfe)
-		    {
-		        if (verbose) System.out.println("SED Error: " + cfe.getMessage());
-		    }
-        }
-        // Now do a diff between the out and the master files
-    	// Use the system's diff if systemdiff is true
-    	String frameworkMaster = framework;
-    	if (framework.startsWith("embedded"))
-    	    frameworkMaster = "";
-    	FileCompare diff = new FileCompare();
-
-        if (verbose)
-        {
-            System.out.println(
-                "About to execute: diff.exec(" + 
-                " outName = "           + outName +
-                ",outDir = "            + outDir  +
-                ",pwDiff = "            + pwDiff  +
-                ",testOutName = "       + testOutName +
-                ",frameworkMaster = "   + frameworkMaster +
-                ",jvmName = "           + jvmName +
-                ",iminor = "            + iminor  +
-                ",useprocess = "        + useprocess +
-                ",systemdiff = "        + systemdiff +
-                ",canondir = "          + canondir +
-                ",canonpath = "         + canonpath +
-                ")\n");
-        }
-
-    	boolean status;
-
-    	// only with j9 may the serverJvm be different from jvmName
-    	if (j9net)
-    	    status = diff.exec(outName, outDir, pwDiff, testOutName,
-    		    frameworkMaster, jvmName, iminor, useprocess, systemdiff, canondir, 
-			    canonpath, "j9_13");
-    	else
-      	    status = diff.exec(outName, outDir, pwDiff, testOutName,
-    		    frameworkMaster, jvmName, iminor, useprocess, systemdiff, canondir, 
-			    canonpath, null);
-
-    	if (status == true)
-    	{
-    		lastTestFailed = true;
-    		pwDiff.println("Test Failed.");
-    		System.out.println("Test Failed.");
-    		keepfiles = true;
-		    addToFailures(scriptName);
-		    if (useCommonDB) {
-	    		status = baseDir.delete();
-//System.out.println("basedir delete status: " + status );
-    		}
-        }
-        else
-    	{
-			addToSuccesses(scriptName);
-    		pwDiff.flush();
-        }
-
-		// Cleanup files
-		doCleanup(javaVersion);
-
-	}
-
-    private static void testRun(String propString, Properties sysProp)
-        throws FileNotFoundException, IOException, Exception
-    {
-        String systemHome = baseDir.getPath();
-        String scriptPath = null;
-        if (testType.startsWith("sql"))
-            scriptPath = script.getPath();
-                
-        // Build the test command
-        String[] testCmd = 
-    		buildTestCommand(propString, systemHome, scriptPath);
-        
-	    // cleanup for all tests that re-use standard testCSHome/wombat database
-	    if (useCommonDB == true 
-	    	&& (usesystem == null || usesystem == "")
-	    	&& (testType.equals("sql") || testType.equals("java")
-			|| testType.equals("sql2"))) {
-	        dbcleanup.doit(dbIsNew);
-	    }
-	
-
-        // Create a process to execute the command unless useprocess is false
-        if ( useprocess )
-		{
-            execTestProcess(testCmd);
-		}
-        else
-		{
-            execTestNoProcess(sysProp, systemHome, propString, scriptPath);
-		}
-    }
-
-    /** This is the method which created directories and looks for script file,
-     * need to make OS specific paths here.
-     *
-     */
-    private static void setDirectories(String scriptName, Properties sp)
-        throws ClassNotFoundException, FileNotFoundException, IOException
-    {
-        // Get the current userdir
-        userdir = sp.getProperty("user.dir");
-        
-        // reset defaultPackageName (for useprocess=false)
-        //if (useprocess == false)
-        //defaultPackageName = "/org/apache/derbyTesting/";
-            
-        // reset defaultPackageName (for useprocess=false)
-        if (useCommonDB == true)
-        {
-            defaultPackageName = "/org/apache/derbyTesting/";
-        }
-            
-        // Set the resourceName from the default
-        // If not set by user, the default is used
-        String resourceName = defaultPackageName + "functionTests/tests/";
-        // scriptName could be of these two formats:
-        // testdir/test.testtype (testtype is sql, java, etc.)
-        // test.testtype (where the defaultPackageName includes the testdir)
-        int index = scriptName.lastIndexOf('/');
-        if (index == -1) // no test directory was specified
-        {
-            if ( (!testType.equals("sql")) && (!testType.equals("java")) )
-            {
-                System.out.println("Test argument should be of the form: <dir>/<test>.<ext>");
-                System.exit(1);
-            }
-            else
-            {
-                scriptFileName = scriptName; // such as my.sql
-                resourceName += scriptName; // build the full resource name
-            }
-        }
-        else // the testdir was specified 
-        {
-            testDirName = (index==0)?"":scriptName.substring(0,index);
-            //System.out.println("testDirName: " + testDirName);
-            scriptFileName = scriptName.substring(index+1, scriptName.length());
-            //System.out.println("scriptFileName: " + scriptFileName);
-            defaultPackageName = defaultPackageName + "functionTests/tests/" + testDirName + "/";
-            //System.out.println("defaultPackage: " + defaultPackageName);
-            resourceName = defaultPackageName + scriptFileName;
-            //System.out.println("resource: " + resourceName);
-        }
-
-
-        // Get the test name without the extension
-        testBase = scriptFileName.substring(0, scriptFileName.lastIndexOf("."+testType));
-
-		if (testType.equals("java"))
-		{
-                    //get the javaPath
-		    String tmp = defaultPackageName.replace('/', '.');
-                    int tl = tmp.length()-1;
-		    javaPath = (tl==0)?"":tmp.substring(1, tl);
-		}
-
-        // Check for runDir
-        if ( (runningdir != null) && (runningdir.length()>0) )
-        {
-            if (File.separatorChar == '\\')
-            {
-                //need to replace / in path with \ for windows
-                String runningdirWin = convertPathForWin(runningdir);
-                runDir = new File((new File(runningdirWin)).getCanonicalPath());
-            }
-            else
-            {
-                runDir = new File((new File(runningdir)).getCanonicalPath());
-            }
-        }
-
-        // Define the outDir if not already defined from properties
-        File tmpoutDir;
-        String userdirWin = null;
-        if ( (outputdir == null) || (outputdir.length()==0) )
-        {
-            if (File.separatorChar == '\\')
-            {
-                //need to replace / in path with \ for windows
-                userdirWin = convertPathForWin(userdir);
-                tmpoutDir = new File((new File(userdirWin)).getCanonicalPath());
-            }
-            else
-            {
-                tmpoutDir =
-		        new File((new File(userdir)).getCanonicalPath());
-            }
-        }
-        else
-        {
-            if (File.separatorChar == '\\')
-            {
-                String outputdirWin = convertPathForWin(outputdir);
-                tmpoutDir =
-                        new File((new File(outputdirWin)).getCanonicalPath());
-            }
-            else
-            {
-                tmpoutDir =
-                        new File((new File(outputdir)).getCanonicalPath());
-            }
-        }
-
-        // If this is a suite run in a framework, outdir
-        // would already be defined to be a framework subdir
-        // But for RunTest, we must create the framework subdir
-        //if ( (!isSuiteRun) && (framework != null) && (framework.length()>0) )
-        if ( (!isSuiteRun) && (!framework.startsWith("embedded")) )
-        {
-            runDir = tmpoutDir;
-		    outDir = new File(tmpoutDir, framework);
-		    outDir.mkdir();
-		}
-		else // This is a Suite Run
-		{
-		    outDir = tmpoutDir;
-		    outDir.mkdir();
-		    if ( (topsuitedir != null) && (topsuitedir.length()>0) )
-                    {
-                        if (File.separatorChar == '\\')
-                        {
-                            String topsuitedirWin = convertPathForWin(topsuitedir);
-                            tsuiteDir = 
-                                new File((new File(topsuitedirWin)).getCanonicalPath());
-                        }
-                        else
-                        {
-                            tsuiteDir = new File((new File(topsuitedir)).getCanonicalPath());
-                        }
-                    }
-		    else
-                    {
-		        tsuiteDir = outDir;
-                    }
-		    tsuiteDir.mkdir();
-		    if ( (topreportdir != null) && (topreportdir.length()>0) )
-                    {
-                        if (File.separatorChar == '\\')
-                        {
-                            String topreportdirWin = convertPathForWin(topreportdir);
-                            rsuiteDir = 
-                                new File((new File(topreportdirWin)).getCanonicalPath());
-                        }
-                        else
-                        {
-                            rsuiteDir = 
-                                new File((new File(topreportdir)).getCanonicalPath());
-                        }
-                    }
-		    else
-                    {
-		        rsuiteDir = outDir;
-                    }
-		    rsuiteDir.mkdir();		    
-		}
-		        
-	    fileSep = File.separatorChar;
-
-        // for now, only addressing java and sql tests; other possible test 
-        // contributions will be unittests and multithreaded tests.
-
-        // For certain test types, locate script file based on scriptName
-        // Then determine the actual test name and directory
-        if ( (!testType.equals("java")) ) 
-        {
-            // NOTE: cannot use getResource because the urls returned
-            // are not the same between different java environments
-            InputStream is =
-                loadTestResource("tests/" + testDirName + "/" + scriptFileName); 
-
-			if (is == null)
-			{
-			    System.out.println("Could not locate " + scriptName);
-			    addToFailures(scriptName);
-				throw new FileNotFoundException(resourceName);
-			}
-
-            // Read the test file and copy it to the outDir
-            // except for multi tests (for multi we just need to locate it)
-            BufferedReader in = new BufferedReader(new InputStreamReader(is));
-            if (upgradetest)
-		
-                //these calls to getCanonicalPath catch IOExceptions as a workaround to
-                //a bug in the EPOC jvm. 
-                try { script = new File((new File(userdir, scriptFileName)).getCanonicalPath()); }
-                catch (IOException e) {
-                    File f = new File(userdir, scriptFileName);
-        		    FileWriter fw = new FileWriter(f);
-                    fw.close();
-                    script = new File(f.getCanonicalPath());
-                }
-			// else is probably only multi test, not contributed at this point
-            else
-                try { script = new File((new File(outDir, scriptFileName)).getCanonicalPath()); } 
-                catch (IOException e) {
-                    File f = new File(outDir, scriptFileName);
-                    FileWriter fw = new FileWriter(f);
-                    fw.close();
-                    script = new File(f.getCanonicalPath());
-                }
-
-            PrintWriter pw = null;
-            pw = new PrintWriter( new BufferedWriter
-                (new FileWriter(script.getPath()), 10000), true );
-                
-            String str = "";
-            while ( (str = in.readLine()) != null )
-            {
-                pw.println(str);
-            }
-            pw.close();
-            pw = null;
-            in = null;
-        }
-
-        // This is the base directory for creating a database (under the outDir)
-        baseDir = null;
-
-    	if (useCommonDB == true)
-        {
-            if (File.separatorChar == '\\')
-            {
-                String commonDBHomeWin = convertPathForWin(commonDBHome);
-                baseDir = new File(userdirWin, commonDBHomeWin);
-            }
-            else
-            {
-    		baseDir = new File(userdir, commonDBHome);
-            }
-        }
-        else if ( (usesystem != null) && (usesystem.length()>0) )
-        {
-            if (File.separatorChar == '\\')
-            {
-                String usesystemWin = convertPathForWin(usesystem);
-                if (upgradetest == true)
-                    baseDir = new File(userdirWin, usesystemWin);
-                else
-                    baseDir = new File(outDir, usesystemWin);
-            }
-            else
-            {
-                if (upgradetest == true)
-                    baseDir = new File(userdir, usesystem);
-                else
-                    baseDir = new File(outDir, usesystem);
-            }
-        }
-        else
-        {
-            if (File.separatorChar == '\\')
-            {
-                String testBaseWin = convertPathForWin(testBase);
-                baseDir = new File(outDir, testBaseWin);
-            }
-            else
-            {
-                baseDir = new File(outDir, testBase);
-            }
-        }
-
-        // clean up old db dirs
-        // (except for special cases such as nist, commonDB).
-        // In the case of useCommonDB == true, the baseDir (commonDBHome) only gets
-        // cleaned up if the last test was a failure.  Further refinements may
-        // follow, since many test failures probably do not require such drastic
-        // action.
-        if (baseDir.exists())
-        {
-            if (useCommonDB == false || lastTestFailed == true) {
-                cleanupBaseDir(baseDir);
-                lastTestFailed = false;
-            }
-            else if (useCommonDB == true) 
-                dbIsNew = false; // dbcleanup may be needed
-        }
-        else {
-            
-            boolean created = baseDir.mkdir();
-            dbIsNew = true; // dbcleanup not needed on new database
-        }
-
-        // 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");
-		if (NetServer.isJCCConnection(framework))
-		{
-			JCCOutName = 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();
-		if (NetServer.isJCCConnection(framework))
-		{
-        	JCCOutFile = new File(outDir, JCCOutName);
-        	if (JCCOutFile.exists())
-            	status = JCCOutFile.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 = "no" + framework + ".runall";
-
-		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;
-
-		JavaVersionHolder jvh = new JavaVersionHolder(javaVersion);
-		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("foun"))
-                            jvmName = "j9_foundation";
-                        else
-                            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("DB2") && (! 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");
-			if (excludeJcc != null) {
-				int excludeMajor = 0;
-				int excludeMinor = 0;
-				try {
-					excludeMajor = Integer.parseInt(excludeJcc.substring(0,excludeJcc.indexOf(".")));
-					excludeMinor = Integer.parseInt(excludeJcc.substring(excludeJcc.indexOf(".")+1));
-				} catch (NumberFormatException nfe) {
-					System.out.println("excludeJCC property poorly formatted: " + excludeJcc);
-				} catch (NullPointerException npe) {
-					System.out.println("excludeJCC property poorly formatted: " + excludeJcc);
-				}
-				if (excludeMajor >= jccMajor && excludeMinor >= jccMinor)
-				{
-					skiptest = true;
-		    		addSkiptestReason("This test is excluded from running with JCC versions " + excludeJcc + " and below");
-		  		}
-			}
-		}
-			
-		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) )
-		{
-		    suiteName = sp.getProperty("suitename");
-		    if ( (suiteName != null) && (suiteName.length()>0) )
-		    {
-		        // This is a suite run
-		        isSuiteRun = true;
-		        // If a suite, it could be part of a top suite
-		        topsuiteName = sp.getProperty("topsuitename");
-		        topsuitedir = sp.getProperty("topsuitedir");
-		        topreportdir = sp.getProperty("topreportdir");
-		    }
-		}
-		String uscdb = sp.getProperty("useCommonDB");
-		if (uscdb != null && uscdb.equals("true"))
-			useCommonDB = true;
-    }
-
-    private static String createPropString()
-        throws ClassNotFoundException, FileNotFoundException, IOException
-    {
-        // Check for existence of app properties and/or derby.properties files
-        // Copy the derby.properties to the db base directory
-        // Then create the -p string for the test
-		String propString = "";
-		
-		// General purpose variables
-		BufferedReader in = null;
-		BufferedOutputStream bos = null;
-		BufferedOutputStream bos2 = null;
-		String str = "";
-		
-		// InputStreams for all possible properties files
-		InputStream isCl = null; // For test_derby.properties
-		InputStream isClDef = null; // For default_derby.properties
-		InputStream isAp = null; // For test_app.properties
-		InputStream isApDef = null; // For default_app.properties
-
-		// Resource names for locating the various properties files
-		String clDefProp = "tests/" + testDirName + "/" + "default_derby.properties";
-		String apDefProp = null;
-		if (useCommonDB)
-		    apDefProp = "tests/" + testDirName + "/" + "commonDB_app.properties";
-		else
-		    apDefProp = "tests/" + testDirName + "/" + "default_app.properties" ;
-
-		// Properties
-		Properties clp = new Properties();
-		Properties ap = new Properties();
-		Properties sdp = new Properties();
-
-        // If there are special flags for ij or server, load these
-        // into properties to be merged with app and/or derby props
-        Properties ijProps = new Properties();
-        Properties srvProps = new Properties();
-		if ( (testSpecialProps != null) && (testSpecialProps.length()>0))
-		{
-		    SpecialFlags.parse(testSpecialProps, ijProps, srvProps);
-		}
-
-        /* If there are more than one derby.properties, the rule is to
-           load either the test_derby.properties or the default one,
-        */
-        
-        // Check for default_derby.properties
-        isClDef = loadTestResource(clDefProp);
-		// Check for test specific props 
-        isCl = loadTestResource("tests/" + testDirName + "/" + testBase + "_derby.properties");
-//System.out.println("**************");
-//System.out.println("isCl = " + isCl);
-//System.out.println(defaultPackageName + testBase + "_derby.properties");
-//System.out.println("**************");
-        
-        // Now load and merge the properties based on above rules
-		if (isCl != null) // In case there exists a test_derby.properties
-		{
-		    clp.load(isCl);
-clp.list(System.out);
-		}
-		// Try the default_derby.properties instead
-		else if (isClDef != null)
-		{
-		    clp.load(isClDef);
-		}
-
-        // j9 will run out of memory with the default cache size (100), so
-        // forcing it lower unless set in _derby.properties file for a specific test
-        if (jvmName.startsWith("j9"))
-        {
-            if (clp.getProperty("derby.language.statementCacheSize")==null)
-                clp.put("derby.language.statementCacheSize", J9_STATEMENTCACHESIZE);
-        }
-
-        // Now merge any special server props if they exist
-        // But if clp is still empty, try using the special server props
-        if ( clp.isEmpty() )
-        {
-            // Check for srvProps from testSpecialProps
-            if ( !srvProps.isEmpty() )
-                clp = srvProps;
-        }
-        else
-        {
-            // merge any special properties from testSpecialProps
-            if ( !srvProps.isEmpty() )
-            {
-                for (Enumeration e = srvProps.propertyNames(); e.hasMoreElements();)
-                {
-                    String key = (String)e.nextElement();
-                    String value = srvProps.getProperty(key);
-                    if (key.equals("derby.debug.true")) // Add to existing prop
-                    {
-                        String cval = clp.getProperty("derby.debug.true");
-                        // If this property exists, edit to prepend the srvProp
-                        // but if the original property is null, just put the srvProp
-                        if (cval != null)
-                        {
-			                if (cval.length() != 0) {
-                                // debug property exists, so edit it
-                                value = value + "," + cval;
-                            } else {
-                                // if new debug property is not null, but is zero length, 
-                                // assume the intention was to override the debug property.
-                                value = "";
-                            }
-                        }
-                    }
-                    clp.put(key,value);
-                }
-            }
-        }
-
-        if ( !clp.isEmpty() )
-        {
-            // Create and load the file
-
-            // This call to getCanonicalPath catches IOExceptions as a workaround to
-            // a bug in the EPOC jvm. 
-      	    try { clPropFile = new File((new File(baseDir, "derby.properties")).getCanonicalPath()); }
-    	    catch (IOException e) {
-    		    File f = new File(baseDir, "derby.properties");
-    		    FileWriter fw = new FileWriter(f);
-    		    fw.close();
-    		    clPropFile = new File(f.getCanonicalPath());
-    	    }
-
-//System.out.println("clPropFile: " + clPropFile.getPath());
-            bos = new BufferedOutputStream(new FileOutputStream(clPropFile));
-            clp.save(bos, "Derby Properties");
-        	bos.close();
-        }
-
-		// --------------------------------- 
-        // Check for existence of sed properties file (test_sed.properties)
-        // See jdbc_sed.properties
-        //  Multiple patterns for DELETE: comma separated
-        //    delete=pattern1,pattern2,...,patternn
-        //  No commas can be allowed in the patterns.
-        // 
-        //  Multiple patterns for SUBSTITUTE: comma separated <pattern;substitute> pair
-        //    substitute=pattern1;substitute1,pattern2;substitute2,...,patternn;substituten
-        //  No commas or semicolons can be allowed in the patterns/subsitutes.  //
-        isSed = loadTestResource("tests/" + testDirName + "/" + testBase + "_sed.properties");
-//System.out.println("**************");
-//System.out.println("isSed = " + isSed);
-//System.out.println(defaultPackageName + testBase + "_sed.properties");
-//System.out.println("**************");
-		// --------------------------------- 
-
-        // Check for existence of app properties file
-        // If there is an test_app, use it to overwrite default_app
-        // Then create the -p string for the test
-        Properties dp = new Properties();
-	    String testPropName = null;
-	    String testPropSDName = null; // name for shutdown properties file if needed
-	    if (useCommonDB) testPropName = "CDB" + testBase + "_app.properties";
-	    else testPropName = testBase + "_app.properties";
-
-        // Check for default_app.properties
-        isApDef = loadTestResource(apDefProp);
-
-        // Check for test_app.properties
-        isAp = loadTestResource("tests/" + testDirName + "/" + testBase + "_app.properties");
-//System.out.println("**************");
-//System.out.println("isAp = " + isAp);
-//System.out.println(defaultPackageName + testBase + "_app.properties");
-//System.out.println("**************");
-
-        // Try loading the ap and def properties if they exist
-        // Merge only if the test's app properties has usedefaults property
-        if ( isAp != null )
-        {
-            ap.load(isAp);
-            // Check for a property usedefaults; if true merge in default props
-		    for (Enumeration e = ap.propertyNames(); e.hasMoreElements(); )
-		    {
-			    String key = (String)e.nextElement();
-			    String value = ap.getProperty(key);
-			    if ( (key.equals("usedefaults")) && (value.equals("true")) )
-			    {
-			        // merge in the default properties
-                    if ( isApDef != null )
-                    {
-                        dp.load(isApDef);
-                        mergeProps(ap, dp);
-                        break;
-                    }
-                }
-            }
-        }
-        else
-        {
-            // Just use the default props
-            if ( isApDef != null )
-                ap.load(isApDef);
-        }
-
-        // If app props are still empty, check for any special testSpecialFlags
-        if ( ap.isEmpty() )
-        {
-            if ( !ijProps.isEmpty() )
-                ap = ijProps;
-        }
-        else
-        {
-            // merge any special properties from testSpecialFlags
-            if ( !ijProps.isEmpty() )
-            {
-                for (Enumeration e = ijProps.propertyNames(); e.hasMoreElements();)
-                {
-                    String key = (String)e.nextElement();
-                    String value = ijProps.getProperty(key);
-                    ap.put(key,value);
-                }
-            }
-        }
-
-        if ( !ap.isEmpty() )
-        {
-                // Create the file and load the properties
-	        // This call to getCanonicalPath catches IOExceptions as a workaround to
-	        // a bug in the EPOC jvm. 
-            try 
-            { 
-                appPropFile = new File((new File(baseDir, testPropName)).getCanonicalPath());                 
-            }
-	        catch (IOException e) 
-	        {
-		        File f = new File(baseDir, testPropName);
-		        FileWriter fw = new FileWriter(f);
-		        fw.close();
-		        appPropFile = new File(f.getCanonicalPath());		        
-	        }
-
-			// For IBM14 the console encoding is different from the platform
-			// encoding on windows.  We want it to be the same for our
-			// test output like the other JDK's.
-			String conEnc = System.getProperty("console.encoding");
-			String fileEnc = System.getProperty("file.encoding");
-		
-			if ((conEnc != null) &&  (fileEnc != null )  &&
-				(ap.getProperty("derby.ui.codeset") == null) &&
-				conEnc.startsWith("Cp850"))
-			{
-				ap.put("derby.ui.codeset",fileEnc);
-			}
-			if (verbose)
-				System.out.println("console.encoding:" + conEnc + 
-								   " file.encoding:" + fileEnc +
-							   " derby.ui.codeset: " + ap.getProperty("derby.ui.codeset"));
-
-//System.out.println("appPropFile: " + appPropFile.getPath());
-            bos = new BufferedOutputStream(new FileOutputStream(appPropFile));
-            ap.save(bos, "App Properties");
-            bos.close();
-
-            // Depending on the framework, the app prop file may need editing
-            if ( (framework.length()>0) || (encryption) )
-            {
-                try
-                {
-                    if (!framework.equals("") && 
-                        !framework.equals("embedded"))
-                        frameworkProtocol(ap);
-                    else if (encryption)
-                        encryptionProtocol(ap);
-                }
-                catch(Exception e)
-                {
-                    System.out.println("Exception: " + e.getMessage());
-                    e.printStackTrace();
-                }
-		
-                // write the new properties to the appPropFile
-        		appPropFile = new File(baseDir, testBase + "_app.properties");
-        		try
-        		{
-            		bos = new BufferedOutputStream(new FileOutputStream(appPropFile));
-            		ap.save(bos, "Test Properties");
-            		bos.close();
-                }
-            	catch(IOException ioe)
-            	{
-            		System.out.println("IOException creating prop file: " + ioe.getMessage());
-            	}
-            }
-        }
-
-    	if ( (appPropFile != null) && (appPropFile.exists()) )
-    	{
-    	    // Create the properties string for the test
-    		propString = appPropFile.getPath();
-    		
-    		// Check for shutdown url
-    		shutdownurl = ap.getProperty("shutdown");
-    		
-    		// Check for jdk12test set to true
-	        String jdk12test = ap.getProperty("jdk12test");
-	        //System.out.println("jdk12test: " + jdk12test);
-	        //System.out.println("jvmName: " + jvmName);
-	        if (jdk12test != null)
-	        {
-	            if (jdk12test.toLowerCase().equals("true"))
-	            {
-	                isjdk12test = true;
-	                //System.out.println("isjdk12test " + isjdk12test);
-	                if (jvmName.equals("currentjvm")) { // This is not at least jdk12
-	                    skiptest = true;
-						addSkiptestReason("Test skipped: test needs jdk12, jvm is reporting currentjvm; skipping test: " + scriptFileName);
-					}
-	            }
-	        }
-
-            String srvJvm = System.getProperty("serverJvm");
-            if ((srvJvm !=null) && ((srvJvm.toUpperCase().startsWith("J9")) || (srvJvm.equalsIgnoreCase("wsdd5.6"))))
-                j9net = true;
-
-            String excludeJcc = ap.getProperty("excludeJCC");
-            if ( framework.startsWith("DB2") )
-            {	
-                if (excludeJcc != null) {
-                    int excludeMajor = 0;
-                    int excludeMinor = 0;
-                    try {
-                        excludeMajor = Integer.parseInt(excludeJcc.substring(0,excludeJcc.indexOf(".")));
-                        excludeMinor = Integer.parseInt(excludeJcc.substring(excludeJcc.indexOf(".")+1));
-                    } catch (NumberFormatException nfe) {
-                        System.out.println("excludeJCC property poorly formatted: " + excludeJcc);
-                    } catch (NullPointerException npe) {
-  	                    System.out.println("excludeJCC property poorly formatted: " + excludeJcc);
-                    }
-                    if (excludeMajor >= jccMajor && excludeMinor >= jccMinor)
-                    {
-                        skiptest = true;
-                        addSkiptestReason("This test is excluded from running with JCC versions " + excludeJcc + " and below");
-                    }
-                }
-            }
-		
-
-            // for now we want just want to have a single property
-            // for all j9 versions; use j9_13 for the jvmname
-            String testJVM = (jvmName.startsWith("j9") ? "j9" : jvmName);
-            runwithjvm = ap.getProperty("runwith" + testJVM);
-            if  ((runwithjvm != null) && (runwithjvm.equalsIgnoreCase("false")))
-            {
-				skiptest = true;
-				addSkiptestReason("Test skipped: test cannot run with jvm: " +
-								  jvmName + ".  " + scriptFileName);
-			}
-
-	        // Check for jvmflags (like "-nojit -ms32M -mx32M")
-	        // These may have been set as a system property already
-	        if (jvmflags == null)
-	        {
-	            jvmflags = ap.getProperty("jvmflags");
-	            // If set in app props to up the memory, this
-	            // is only meant to be applied to 11x vms
-	            if ( (jvmflags != null) && (!jvmName.equals("currentjvm")) )
-	            {
-	                if (jvmflags.startsWith("-ms"))
-	                    jvmflags = "";
-	            }
-	        }	        
-	        
-    		// Also check for supportfiles
-    		String suppFiles = ap.getProperty("supportfiles");
-			boolean copySupportFiles = ((suppFiles != null) && (suppFiles.length()>0));
-			boolean createExtDirs= new Boolean(ap.getProperty("useextdirs","false")).booleanValue();
-			
-    		if (copySupportFiles || createExtDirs)
-    		{
-				File copyOutDir = null;
-
-    		    if (testType.equals("sql2"))
-    		    {
-    		        if ( (isSuiteRun) || (framework.length()>0) )
-						copyOutDir = outDir;
-    		        else if ( (runDir != null) && (runDir.exists()) )
-						copyOutDir = runDir;
-    		        else
-						copyOutDir = outDir;
-    		    }
-    		    //else if ( testType.equals("multi") )
-    		    //{
-    		    //    if ( (isSuiteRun) || (mtestdir == null) || (mtestdir.length()==0) )
-    		    //    {
-				//		copyOutDir = outDir;
-    		    //    }
-    		    //    else
-    		    //    {
-    		    //        File multiDir = new File(mtestdir);
-				//		copyOutDir = multiDir;
-    		    //    }
-    		    //}
-                else if ( outcopy == true )
-                    copyOutDir = outDir;
-                else if ( (runDir != null) && (runDir.exists()) )
-                {
-                    if (jvmName.startsWith("j9")&&  testType.equals("java"))
-                    {
-                        // for some reason, not picking up from rundir
-                        copyOutDir = outDir;
-                    }else
-					    copyOutDir = runDir;
-                }
-                else
-                    copyOutDir = outDir;
-
-				if(createExtDirs)
-				{
-					extInDir = copyOutDir;
-					//create the support file directory for input files
-					extInDir = new File(copyOutDir , "extin");
-					if(!extInDir.exists())
-						extInDir.mkdirs();
-					//create the support file directory for output files.
-					extOutDir = new File(copyOutDir , "extout");
-					if(!extOutDir.exists())
-						extOutDir.mkdirs();
-					//create the support file directory for input output files.
-					extInOutDir = new File(copyOutDir , "extinout");
-					if(!extInOutDir.exists())
-						extInOutDir.mkdirs();
-					copyOutDir = extInDir;
-				}
-				if(copySupportFiles)
-				   CopySuppFiles.copyFiles(copyOutDir, suppFiles);
-    		}
-			
-    	}
-        return propString;
-    }
-
-    public static String setTestJavaFlags(String tflags)
-    {
-        StringBuffer sb = new StringBuffer();
-	    if (verbose) System.out.println("testJavaflags: " + tflags);
-	    String dintro = "-D";
-        try
-        {
-            dintro = jvm.getJvm(jvmName).getDintro();
-        }
-        catch (Exception e)
-        {
-            System.out.println("Problem getting jvm "+jvmName+" Dintro: ");
-            e.printStackTrace(System.out);
-		    System.exit(1);
-        }
-	    // Parse because there could be a list of flags
-	    StringTokenizer st = new StringTokenizer(tflags,"^");
-        while (st.hasMoreTokens())
-        {
-	        String token = st.nextToken();
-            if ( ! (token.startsWith("-D") || token.startsWith("-X"))) { sb.append(dintro); }
-            sb.append(token);
-            sb.append(" ");
-        }
-        if (verbose) System.out.println("setTestJavaFlags returning: " + sb.toString());
-        return sb.toString();
-    }
-
-	private static void loadProps(Properties p, File f) throws Exception
-	{
-		if (f.canRead())
-		{
-			FileInputStream fis = new FileInputStream(f);
-			p.load(fis);
-			fis.close();
-		}
-	}
-
-	private static void mergeProps(Properties to, Properties from)
-	{
-		for (Enumeration e = from.propertyNames(); e.hasMoreElements(); )
-		{
-			String key = (String)e.nextElement();
-			to.put(key, from.getProperty(key));
-		}
-	}
-
-
-
-    private static void frameworkProtocol(Properties p) throws Exception
-    {
-
-        if (p == null)
-        {
-            // No properties
-            return;
-        }
-		for (Enumeration e = p.propertyNames(); e.hasMoreElements(); )
-		{
-			String key = (String)e.nextElement();
-			String value = p.getProperty(key);
-
-			if (key.equals("driver") || key.equals("ij.driver") || key.equals("jdbc.drivers"))
-			{
-			    p.put(key, driverName);
-			}
-			else if (key.startsWith("ij.protocol") || key.equals("protocol"))
-			{
-			    value = NetServer.alterURL(framework,value);
-			    p.put(key, value);
-			}
-			else if (key.equals("database") || key.equals("ij.database") || key.startsWith("ij.connection") || key.equals("jdbc.url"))
-			{
-			    dbName = value.substring(value.lastIndexOf(':') + 1 ,
-						     value.length());
-			    value = NetServer.alterURL(framework,value);
-			    p.put(key, value);
-			}
-			// force messages to show
-			else if ((!key.equals("retrieveMessagesFromServerOnGetMessage")) &&
-				(!key.equals("ij.retrieveMessagesFromServerOnGetMessage")))
-			{
-				p.put("ij.retrieveMessagesFromServerOnGetMessage","true");	
-				p.put("retrieveMessagesFromServerOnGetMessage","true");	
-			}
-			else // for any other properties, just copy them
-			    p.put(key, value);
-			
-		}
-		// Temporary until jcc supports null userid
-		if (NetServer.isJCCConnection(framework))
-		{
-			String user = System.getProperty("ij.user");
-			String password = System.getProperty("ij.password");
-			if (user == null) user = "APP";
-			if (password == null) password = "APP";
-
-		    p.put("ij.user",user);
-		    p.put("ij.password",password);
-		}
-
-		// If this is not a known protocol for ij we
-		// need to set the driver
-		if (driverName != null)
-		    p.put("ij.driver",driverName);
-	}
-	
-
-	private static void encryptionProtocol(Properties p) throws Exception
-	{
-        String encryptUrl = "dataEncryption=true;bootPassword=Thursday";
-
-        if (p == null)
-        {
-            // No properties
-            return;
-        }
-
-        // add encryption algorithm and provider to database creation URL
-        String v = p.getProperty("testEncryptionAlgorithm");
-        if (v != null)
-            encryptUrl += ";" + Attribute.CRYPTO_ALGORITHM + "=" + v;
-        v = p.getProperty("testEncryptionProvider");
-        if (v != null)
-            encryptUrl += ";" + Attribute.CRYPTO_PROVIDER + "=" + v;
-
-		for (Enumeration e = p.propertyNames(); e.hasMoreElements(); )
-		{
-			String key = (String)e.nextElement();
-			String value = p.getProperty(key);
-
-			if (key.equals("database") || key.equals("ij.database") || key.startsWith("ij.connection") || key.equals("jdbc.url"))
-			{
-				// edit the url if necessary
-				int index = value.indexOf(encryptUrl);
-				if ( index == -1)
-				{
-				    value = value + ";" + encryptUrl;
-			    }
-				p.put(key, value);
-			}
-            else if (key.equals("testEncryptionAlgorithm") || key.equals("testEncryptionProvider"))
-                {} // ignore, do not copy
-			else // for any other properties, just copy them
-			    p.put(key, value);
-		}
-	}
-
-    private static void cleanupBaseDir(File baseDir)
-    {
-        // Some tests rely on no cleanup being done on the baseDir
-        boolean okToDelete = false;
-
-        if ( (usesystem == null) || (usesystem.length()==0) )
-            okToDelete = true;
-        else if (usesystem.equals("nist"))
-        {
-            if (testBase.equals("schema1"))
-                okToDelete = true;
-        }
-        else if (usesystem.equals("puzzles"))
-        {
-            if (testBase.equals("puzzleschema"))
-                okToDelete = true;
-        }
-
-        if (useCommonDB) okToDelete = false;
-
-        if (okToDelete == true)
-        {
-           //System.out.println("Should be deleting the baseDir for a clean run");
-           deleteFile(baseDir);
-           if (baseDir.exists())
-               System.out.println("baseDir did not get deleted which could cause test failures");
-           else
-               baseDir.mkdir();
-        }
-    }
-
-    private static void doCleanup(String javaVersion)
-        throws IOException
-    {
-        boolean status = true;
-        // The output files cannot be deleted if there
-        // is still a reference to them -- even doing
-        // this is not a guarantee that they will be deleted
-        // It seems to depend on the Java environment
-        //printWriter.close();
-        //printWriter = null;
-
-        //Always cleanup the script files
-        if ( !(script == null) && (script.exists()) )
-        {
-            status = script.delete();
-            //System.out.println("Status was: " + status);
-        }
-
-	    String endTime = CurrentTime.getTime();
-	    StringBuffer sbend = new StringBuffer();
-	    sbend.append("*** End:   " + testBase + " jdk" + javaVersion + " ");
-	    if ( (framework.length()>0) && (!framework.startsWith("embedded")) )
-	        sbend.append(framework + " ");
-	    if ( (suiteName != null) && (suiteName.length()>0) )
-	        sbend.append(suiteName + " ");
-	    sbend.append(endTime + " ***");
-	    System.out.println(sbend.toString());
-	    pwDiff.println(sbend.toString());
-        pwDiff.flush();
-        pwDiff.close();
-        pwDiff = null;
-
-        // This could be true if set by user or there were diffs
-        if (keepfiles == false)
-        {
-            // Delete the out and diff files
-            status = tmpOutFile.delete();
-            if (status == false)
-                tmpOutFile = null;
-            status = finalOutFile.delete();
-            if (skiptest == false)
-                status = diffFile.delete();
-			// delete JCC filtered master file
-			if (NetServer.isJCCConnection(framework))
-			{
-        		JCCOutFile = new File(outDir, JCCOutName);
-            	status = JCCOutFile.delete();
-			}
-            if (deleteBaseDir)
-            {
-                if (useCommonDB == false) 
-                {
-                	//System.out.println("Should delete the baseDir: " + baseDir.getPath());
-                	deleteFile(baseDir);
-		        }
-		        else 
-		        {
-			        status = appPropFile.delete();
-			        //no permission in Java to drop derby.log
-			        //File logfile = new File(baseDir, "derby.log");
-			        //System.out.println("delete derby.log ");
-			        //System.out.println(logfile.getPath());
-			        //status = logfile.delete();
-		        }
-            }
-
-			//delete the directories where external input/output files were created
-			if(extInDir!=null)
-				deleteFile(extInDir);
-			if(extOutDir!=null)
-				deleteFile(extOutDir);
-			if(extInDir!=null)
-				deleteFile(extInOutDir);
-        }
-	    // reset for next test
-	    // the next line is a bug fix to get cleanup working correctly when
-	    // useprocess==false;  without this the first failing test causes all
-	    // subsequent tests not to clean up, since keepfiles is static; a
-	    // more general solution is to make the variable non-static, and to
-	    // set the default in the initializer; I(john) have not done this
-	    // because the same reasoning probably applies to many of the static
-	    // variables, and the whole subject should probably be approached in
-	    // a coordinated way when someone has the time for it.
-	    keepfiles = false;
-
-    }
-
-    /*
-     * For recursively deleting a directory
-     *
-     */
-	public static void deleteFile(File f)
-	{
-	    boolean status = true;
-        if (f == null)
-        {
-            System.out.println(f.getName() + " is null");
-            return;
-        }
-        //System.out.println("Trying to delete: " + f.getPath());
-	    status = f.delete();
-
-	    if (status == true)
-	        return;
-	    else
-	    {
-	        // Could not delete; this could be a non-empty directory
-	        //System.out.println("Recursively delete...");
-	        String[] files = f.list();
-	        for (int i = 0; i < files.length; i++)
-	        {
-	            File sub = new File(f.getPath(), files[i]);
-	            if (sub == null)
-	                continue;
-	            //System.out.println("Try to delete: " + sub.getPath());
-	            status = sub.delete();
-	            if (status != true)
-	            {
-	                // Could not delete; it may be a non-empty dir
-	                if ( sub.isDirectory() )
-	                {
-	                    //System.out.println("Recursing again ... ");
-	                    deleteFile(sub);
-	                    // It should be empty now; try again
-	                    status = sub.delete();
-	                    //System.out.println("Recurse delete status: " + status);
-	                }
-	                // The file delete failed
-	                //System.out.println("Failed to clean up file: " + sub.getPath());
-	            }
-	        }
-	    }
-	    //Should be able to delete the top directory now
-	    status = f.delete();
-	    if (status == false)
-	    {
-	        System.out.println("Warning: Cleanup failed on baseDir: " + f.getPath());
-	    }
-	}
-
-	static void addToFailures(String testName) throws IOException
-	{
-		if (failFileName==null)
-		{
-			if (isSuiteRun) failFileName = suiteName+".fail";
-			else failFileName=testBase+".fail";
-        }
-		addToListFile(failFileName,testName);
-	}
-
-	static void addToSuccesses(String testName) throws IOException
-	{
-		if (passFileName==null)
-		{
-			if (isSuiteRun) passFileName = suiteName+".pass";
-			else passFileName=testBase+".pass";
-        }
-		addToListFile(passFileName,testName);
-    }
-
-	static void addToListFile(String fileName, String testName) throws IOException
-	{
-	    File f;
-	    if (isSuiteRun)
-	        f = new File(rsuiteDir,fileName);
-	    else
-	        f = new File(outDir,fileName);
-		PrintStream ps = null;
-
-		// This call to getCanonicalPath catches IOExceptions as a workaround to
-		// a bug in the EPOC jvm. 
-		try { ps = new PrintStream( new FileOutputStream(f.getCanonicalPath(),true) ); }
-		catch (IOException e) {
-		    FileWriter fw = new FileWriter(f);
-		    fw.close();
-		    ps = new PrintStream( new FileOutputStream(f.getCanonicalPath(),true) ); 
-		}
-
-		ps.println(testName);
-		ps.flush();
-		ps.close();
-    }
-
-    static void appendStderr(BufferedOutputStream bos, InputStream is)
-        throws IOException
-    {
-        PrintWriter tmpPw = new PrintWriter(bos);
-        // reader for stderr
-        BufferedReader errReader = new BufferedReader(new InputStreamReader(is));
-        String s = null;
-        int lines = 0;
-        while ((s = errReader.readLine()) != null)
-        {
-           tmpPw.println(s);
-        }
-        errReader.close();
-        tmpPw.flush();
-    }
-
-    static void verifyTestType()
-        throws ClassNotFoundException, FileNotFoundException, IOException
-    {
-        //java requires '/' as separator to look into jar, irrespective of OS
-        InputStream is =
-            loadTestResource("harness/testtypes.properties");
-		Properties p = new Properties();
-		p.load(is);
-        String testtypes = p.getProperty("testtypes");
-	    StringTokenizer st = new StringTokenizer(testtypes,",");
-	    String ttype = "";
-        while (st.hasMoreTokens())
-        {
-            ttype = st.nextToken();
-            if ( testType.equals(ttype) )
-                return;
-        }
-        // Not a known test type
-        System.out.println("Unknown test type: " + testType);
-        System.exit(1);
-    }
-
-	public static void
-	addStandardTestJvmProps(Vector testJvmProps,String derbySystemHome,
-							String userDirName, jvm jvm)
-	{
-		if (derbySystemHome==null || derbySystemHome.length() == 0)
-			derbySystemHome = userDirName;
-		testJvmProps.addElement("derby.system.home=" + derbySystemHome);
-		testJvmProps.addElement("derby.infolog.append=true ");
-		// Why is this being done here
-		//if (jvm != null)
-		    //testJvmProps.addElement("jvm="+jvm.getName());
-		testJvmProps.addElement("user.dir="+userDirName);
-	}
-	
-	private static String[] buildTestCommand(String propString,
-	    String systemHome, String scriptPath)
-	    throws FileNotFoundException, IOException, Exception
-	{
-	    //System.out.println("testType: " + testType);
-	    String ij = "";
-        // Create the test command line
-        if (testType.equals("sql"))
-            ij = "ij";
-		jvm jvm = null; // to quiet compiler
-		jvm = jvm.getJvm(jvmName);
-        if (javaCmd != null)
-            jvm.setJavaCmd(javaCmd);
-
-        if ( (classpath != null) && (classpath.length()>0) )
-            jvm.setClasspath(classpath);
-
-		Vector jvmProps = new Vector();
-		if ( testType.equals("java") || testType.equals("demo") )
-		    addStandardTestJvmProps(jvmProps,systemHome,
-			    outDir.getCanonicalPath(),null);		    
-        else if ( (runDir != null) && (runDir.exists()) )
-		    addStandardTestJvmProps(jvmProps,systemHome,
-			    runDir.getCanonicalPath(),jvm);
-        else
-			addStandardTestJvmProps(jvmProps,systemHome,
-				outDir.getCanonicalPath(),jvm);
-		
-        if ( (testJavaFlags != null) && (testJavaFlags.length()>0) )
-        {
-	    String parsedFlags = setTestJavaFlags(testJavaFlags);
-            StringTokenizer st = new StringTokenizer(parsedFlags," ");
-            while (st.hasMoreTokens())
-            {
-                jvmflags = (jvmflags==null?"":jvmflags) + " " + st.nextToken();
-            }
-        }
-        
-        if ( ij.startsWith("ij") )
-            jvmProps.addElement("ij.defaultResourcePackage=" +
-                defaultPackageName);
-        
-        if ( (framework != null) )
-            jvmProps.addElement("framework=" + framework);
-            
-        if ( (jvmflags != null) && (jvmflags.length()>0) )
-        {
-            jvm.setFlags(jvmflags);
-        }
-        
-        jvm.setD(jvmProps);
-        
-        if (testType.equals("multi"))
-        {
-            if ( (jvmflags != null) && (jvmflags.indexOf("mx") == -1) )
-                jvm.setMx(64*1024*1024); // -mx64m
-        }
-            
-        Vector v = jvm.getCommandLine();
-        if ( ij.startsWith("ij") )
-        {
-            // as of cn1411-20030930, the system takes the default console encoding
-            // which in the US, on windows, is Cp437.
-            // Sun on the other hand, always forces a console encoding of 1252.
-            // To get the same result for ibm141 & jdk14*, we need to force 
-            // the console encoding to Cp1252 for ij tests.
-            // see beetle 5475.
-            v.addElement("-Dconsole.encoding=Cp1252" );
-            v.addElement("org.apache.derby.tools." + ij);
-            if (ij.equals("ij"))
-            {
-                v.addElement("-fr");
-                v.addElement(scriptFileName);
-            }
-            v.addElement("-p");
-            v.addElement(propString);
-        }
-        else if ( testType.equals("java") )
-        {
-            if (javaPath.length() > 0)
-                v.addElement(javaPath + "." + testBase);
-            else
-                v.addElement(testBase);
-            if ( (propString.length() > 0) && (usesystem == null))
-            {
-                v.addElement("-p");
-                v.addElement(propString);
-            }
-        }
-        // here would be placed calls to and set properties for e.g. unittests and multithreaded tests methods
-            
-        // Now convert the vector into a string array
-        String[] sCmd = new String[v.size()];
-        for (int i = 0; i < v.size(); i++)
-        {
-            sCmd[i] = (String)v.elementAt(i);
-        }
-
-        return sCmd;
-    }
-
-    private static void execTestProcess(String[] testCmd)
-        throws Exception
-    {
-        
-        // Execute the process and handle the results
-    	Process pr = null;
-    	try
-    	{
-            // We need the process inputstream and errorstream
-            ProcessStreamResult prout = null;
-            ProcessStreamResult prerr = null;
-            FileOutputStream fos = null;
-            BufferedOutputStream bos = null;
-            
-            StringBuffer sb = new StringBuffer();
-            
-            for (int i = 0; i < testCmd.length; i++)
-            {
-                sb.append(testCmd[i] + " ");                    
-            }
-            if (verbose) System.out.println(sb.toString());
-            pr = Runtime.getRuntime().exec(testCmd);
-
-            if (useOutput)
-            {
-                fos = new FileOutputStream(tmpOutFile);
-                bos = new BufferedOutputStream(fos, 1024);
-                prout = 
-                    new ProcessStreamResult(pr.getInputStream(), bos, timeoutStr);
-            }
-            else
-            {
-                fos = new FileOutputStream(stdOutFile);
-                bos = new BufferedOutputStream(fos, 1024);
-                prout = 
-                    new ProcessStreamResult(pr.getInputStream(), bos, timeoutStr);
-            }
-            prerr =
-                new ProcessStreamResult(pr.getErrorStream(), bos, timeoutStr);
-    
-            if (framework != null && ! framework.equals(""))
-                if (verbose) System.out.println("The test should be running...");
-
-			if (timeout != -1) {
-				TimedProcess tp = new TimedProcess(pr);
-				tp.waitFor(timeout*60);
-				pr = null;
-			}
-
-            // determine if the process is done or was interrupted
-            boolean outInterrupt = prout.Wait();
-            boolean errInterrupt = prerr.Wait();                
-                
-            if ( (errInterrupt) || (outInterrupt) )
-            {
-                pwDiff.println("The test timed out...");
-                System.out.println("Test timed out...");
-                pr.destroy();
-                pr = null;
-            }
-
-            fos.close();
-            bos.close();
-            //printWriter.flush();
-            //printWriter.close();
-            if (pr != null)
-            {
-                pr.destroy();
-                pr = null;
-            }
-        }
-        catch(IOException ioe)
-        {
-            System.out.println("IOException: " + ioe.getMessage());
-        }
-        catch(Throwable t)
-        {
-            pwDiff.println("Process exception: " + t);
-            System.out.println("Process exception: " + t.getMessage());
-            t.printStackTrace();
-            if (pr != null)
-            {
-                pr.destroy();
-                pr = null;
-            }
-        }
-    }
-    
-    private static void execTestNoProcess(Properties sysProp,
-        String systemHome, String propString, String scriptPath)
-        throws Exception
-    {
-        // For platforms where executing a process is failing
-        String olduserdir = (String)sysProp.get("user.dir");
-        Properties ptmp = System.getProperties();
-        ptmp.put("derby.system.home", systemHome);
-        ptmp.put("derby.infolog.append", "true");
-        System.setProperties(ptmp);
-    	PrintStream stdout = System.out;
-    	PrintStream stderr = System.err;
-
-	    String pathStr = "";
-
-	    //these calls to getCanonicalPath catch IOExceptions as a workaround to
-	    //a bug in the EPOC jvm. 
-	    try 
-	    { 
-	        pathStr = tmpOutFile.getCanonicalPath().replace(File.separatorChar,fileSep); 
-	    }
-	    catch (IOException e) 
-	    {
-	        FileWriter fw = new FileWriter(tmpOutFile);
-	        fw.close();
-	        pathStr = tmpOutFile.getCanonicalPath().replace(File.separatorChar,fileSep);
-	    }
-
-    	PrintStream ps = new PrintStream(new FileOutputStream(pathStr), true);
-    	System.setOut(ps);
-    	System.setErr(ps);
-    	if (testType.equals("sql"))
-    	{
-    	    String[] ijarg = new String[3];
-            ijarg[0] = "-p";
-            ijarg[1] = propString;
-            ijarg[2] = scriptPath;
-			RunIJ ij = new RunIJ(ijarg);
-			Thread ijThread = new Thread(ij);
-			try
-			{
-				ijThread.start();
-				if (timeout < 0)
-				{
-					ijThread.join();
-				}
-				else
-				{
-				    ijThread.join(timeout * 60 * 1000);
-				}
-			}
-			catch (Exception e)
-			{
-				System.out.println("Aiiie! Got some kind of exception " + e);
-			}
-
-			// Now make sure a shutdown is complete if necessary
-			if (shutdownurl != null)
-			{
-			    String[] sdargs = new String[2];
-			    sdargs[0] = systemHome;
-			    sdargs[1] = shutdownurl;
-			    shutdown.main(sdargs);
-			}
-			// Reset ij.defaultResourcePackage
-			ptmp = System.getProperties();
-                        ptmp.put("ij.defaultResourcePackage", "/org/apache/derbyTesting/");
-			ptmp.put("usesystem", "");
-			System.setProperties(ptmp);
-        }
-        else if (testType.equals("java"))
-        {
-            sysProp.put("user.dir", outDir.getCanonicalPath());
-            javaPath = "org.apache.derbyTesting." + testDirName;
-            String[] args = new String[2];
-            args[0] = "-p";
-            args[1] = propString;
-            Class[] classArray = new Class[1];
-            classArray[0] = args.getClass();
-            String testName = javaPath + "." + testBase;
-            Class JavaTest = Class.forName(testName);
-            // Get the tests's main method and invoke it
-            Method testMain = JavaTest.getMethod("main", classArray);
-            Object[] argObj = new Object[1];
-            argObj[0] = args;
-			RunClass testObject = new RunClass(JavaTest, testMain, argObj);
-			Thread testThread = new Thread(testObject);
-			try
-			{
-				testThread.start();
-				if (timeout < 0)
-				{
-					testThread.join();
-				}
-				else
-				{
-					testThread.join(timeout * 1000);
-				}
-			}
-			catch(Exception e)
-			{
-				System.out.println("Exception upon invoking test..." + e);
-				e.printStackTrace();
-			}
-
-			try 
-			{
-				java.sql.DriverManager.getConnection("jdbc:derby:;shutdown=true");
-			} 
-			catch (java.sql.SQLException e) 
-			{
-				// ignore the errors, they are expected.
-			}
-    		sysProp.put("user.dir", olduserdir);
-        }
-        // here would be placed messages re unittests and multithreaded tests not working with useprocess false
-        ps.close();
-        // Reset System.out and System.err
-        System.setOut(stdout);
-        System.setErr(stderr);
-    }
-
-    static void addSkiptestReason(String reason) {
-		if (skiptestReason.length() > 0)
-			skiptestReason.append(System.getProperty("line.separator","\n"));
-		skiptestReason.append(reason);
-    }
-
-    static boolean verifyFramework (String framework) {
-    	String validFmString = "";
-    	for (int i = 0 ; i < validFrameworks.length; i++)
-    	{
-    	    validFmString   += " " + validFrameworks[i];
-    	    if (validFrameworks[i].equals(framework))
-        		return true;
-	    }
-    	System.err.println("Invalid framework: " + framework);
-	
-    	System.err.println("Valid frameworks are: " + 
-			   validFmString);
-    	return false;
-	
-    }
-
-    /*
-     * method for loading a resource relative to testResourceHome.
-     * @param loc location of file relative to testResourceHome (e.g. master/cast.out)
-     * @return InputStream for the resource
-     */
-    public static InputStream loadTestResource(String loc) {
-        return new Object().getClass().getResourceAsStream(testResourceHome + loc); 
-    }
-    
-    /*
-     * This method replaces the / in the path string with \ for windows
-     * @param path the path string to convert
-     * @return String the new path
-     */
-    private static String convertPathForWin(String path)
-    {
-        String tmp = "a" + path +"a";
-        int i = tmp.indexOf('/');
-        while (i != -1)
-        {
-            //replace the \\ with .
-            tmp = tmp.substring(0, i) + "\\\\" + tmp.substring(i+1);
-            i = tmp.indexOf('/');
-        }
-        //lets remove the a we added
-        tmp = tmp.substring(1, tmp.length()-1);
-        //System.out.println(tmp);
-        
-        return tmp;
-    }
-
-}
-
-
+/*
+
+   Derby - Class org.apache.derbyTesting.functionTests.harness.RunTest
+
+   Copyright 1999, 2004 The Apache Software Foundation or its licensors, as applicable.
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+ */
+
+package org.apache.derbyTesting.functionTests.harness;
+
+import org.apache.derby.tools.sysinfo;
+import org.apache.derby.tools.ij;
+import org.apache.derby.iapi.reference.Attribute;
+
+import java.io.File;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.ByteArrayInputStream;
+import java.io.BufferedReader;
+import java.io.FileReader;
+import java.io.FileWriter;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.BufferedOutputStream;
+import java.io.BufferedWriter;
+import java.io.FileWriter;
+import java.io.PrintWriter;
+import java.io.PrintStream;
+import java.io.IOException;
+import java.io.FileNotFoundException;
+import java.lang.ClassNotFoundException;
+import java.lang.ClassFormatError;
+import java.lang.Thread;
+import java.lang.reflect.Method;
+import java.util.Enumeration;
+import java.util.Vector;
+import java.sql.Timestamp;
+import java.sql.Connection;
+import java.sql.SQLException;
+import java.sql.DriverManager;
+import java.util.Properties;
+import java.util.StringTokenizer;
+import java.net.URL;
+
+public class RunTest
+{
+
+    // For printing debug info
+    static boolean verbose=false;
+    // Under some circumstances, we may need to skip the test
+    static boolean skiptest = false;
+    static StringBuffer skiptestReason = new StringBuffer();
+    
+    //java requires / to look into jars, irrespective of OS
+    static final String testResourceHome = "/org/apache/derbyTesting/functionTests/";
+    
+    // Framework support
+    static String[] validFrameworks = {"embedded","",
+				       "DerbyNet","DB2jcc",
+				       "DB2app"};
+    static NetServer ns;
+    static boolean frameworkInitialized = false;
+    static boolean j9net = false;
+    static String driverName;
+    static String dbName;
+
+    // Test properties
+	static String jvmName = "currentjvm";
+	static String javaCmd;
+	static String javaVersion; // System.getProperty("java.version")
+	static String majorVersion;
+	static String minorVersion;
+	static int jccMajor;
+	static int jccMinor;
+	static int imajor;
+	static int iminor;
+	static boolean isjdk12test = false;
+	static String classpath = "";
+	static String classpathServer = "";
+    static String framework = "embedded";
+    public static String J9_STATEMENTCACHESIZE = "20";
+
+    static String usesystem = "";
+    static String searchCP = "";
+    static boolean useCommonDB = false;
+	static boolean keepfiles = false;
+	static boolean useprocess = true;
+	static boolean systemdiff = false; // can set true if there is a system diff
+	static boolean upgradetest = false;
+	static boolean encryption = false; // requires jdk12ext plus encryptionProtocol
+	static boolean jdk12exttest = false; // requires jdk12ext
+	static String runningdir = ""; // where the tests are run and suppfiles placed
+	static String outputdir = ""; // user can specify as a property (optional)
+	static String canondir; // optional (to specify other than "master")
+	static String bootcp; // for j9 bootclasspath
+	static String canonpath; // special full path (will be platform dependent)
+	//static String mtestdir = ""; // for MultiTest user must specify testdir
+	static String testSpecialProps = ""; // any special suite properties
+	static String testJavaFlags = ""; // special command line flags
+	static String jvmflags; // java special flags
+	static boolean reportstderr = true;
+	static int timeout = -1; // in case tests are hanging
+	public static String timeoutStr;
+	static String jarfile; // some tests have jar files (like upgrade)
+	static boolean skipsed = false;
+	static String commonDBHome = "testCSHome";
+	static boolean dbIsNew = true;
+	static String runwithjvm="true";
+
+	// Other test variables for directories, files, output
+	static String scriptName = ""; // testname as passed in
+	static String scriptFileName; // testname with extension
+	static String testDirName = ""; // test directory name
+        static String defaultPackageName = "/org/apache/derbyTesting/";
+        static String javaPath = "org.apache.derbyTesting."; // for java tests
+	static String testType; // sql, java, unit, etc.
+	static String testBase; // testname without extension
+	static String testOutName; // output name without path or extension (optional)
+	static String passFileName; // file listing passed tests
+	static String failFileName; // file listing failed tests
+	static String JCCOutName; //file name for JCC corrected master
+    static File passFile;
+    static File failFile;
+	static String shutdownurl = "";
+    static boolean useOutput; // use output or assume .tmp file is produced?
+    static boolean outcopy; // copy support files to outDir rather than runDir
+	static String userdir; // current user directory
+	static char fileSep; // file separator for the system
+    static PrintWriter printWriter = null; // used to write test output to .tmp
+    static PrintWriter pwDiff = null; // for writing test output and info
+    static File script; // The file created for test files other than java tests
+    static File baseDir; // the DB base system dir
+    static boolean deleteBaseDir; // the DB base system dir
+    static File outDir; // test out dir
+    static File runDir; // where test is run and where support files are expected
+    static File canonDir; // allows setting master dir other than default
+    static File tmpOutFile; // tmp output file (before sed)
+    static File JCCOutFile; // master file processed for JCC
+    static File stdOutFile; // for tests with useoutput false
+    static File finalOutFile; // final output file (after sed)
+    static File appPropFile; // testname_app.properties or default
+    static File clPropFile; // testname_derby.properties or default
+    static File diffFile; // To indicate diffs
+    static File tsuiteDir; // Final output dir for suite(s)
+    static File rsuiteDir; // Where to report .pass and .fail for suite(s)
+	static File extInDir;    //Where all external test input files exist.
+	static File extOutDir;    //Where all external test input files exist.
+	static File extInOutDir;    //Where all external test input files exist.
+
+    // This test may be part of a suite
+    // (RunTest may need to know this is a suite to avoid dup output like sysinfo)
+    static String topsuitedir = ""; // in case of nested suites
+    static String topsuiteName = "";
+    static String topreportdir = "";
+    static String suiteName = "";
+    static boolean isSuiteRun = false;
+    static boolean lastTestFailed = false;
+
+    static InputStream isSed = null; // For test_sed.properties // Cliff
+
+	public static void main(String[] args)
+		throws Exception
+	{
+		skiptestReason.setLength(0); // 0 out for useprocess
+		// Determine the test type
+		if (args.length == 0)
+		{
+			// No script name provided
+			System.out.println("no test name provided");
+			System.exit(1);
+		}
+		scriptName = args[0];
+
+		if (Boolean.getBoolean("listOnly")) 
+		{
+			System.out.println("LISTONLY :" + scriptName);
+			return;
+		}
+
+		if ( (scriptName == null) || (scriptName.equals("")) )
+		{
+		    System.out.println("Null or blank test script name.");
+		    System.exit(1);
+		}
+		if (args.length == 6)
+		{
+		    defaultPackageName = args[1];
+		    usesystem = args[2];
+		    useprocess = false;
+		    shutdownurl = args[4];
+		    isSuiteRun = true;
+		    suiteName = args[5];
+		    //System.out.println("suiteName: " + suiteName);
+		}
+		
+		testType = scriptName.substring(scriptName.lastIndexOf(".") + 1);
+
+		verifyTestType();
+
+        // Get the properties for the test
+		Properties sp = System.getProperties();
+
+		// For useprocess=false, some system wide properties need to be reset
+		if (useprocess == false)
+		{
+		    sp.put("useprocess", "false");
+            // Reset maximumDisplayWidth because some tests set this in app properties
+            // and when running in same process, can cause extra long lines and diffs
+            if ( sp.getProperty("maximumDisplayWidth") == null )
+                sp.put("maximumDisplayWidth", "128");
+            if ( sp.getProperty("ij.defaultResourcePackage") != null )
+                sp.put("ij.defaultResourcePackage", defaultPackageName);
+            System.setProperties(sp);
+        }
+        
+        getProperties(sp);
+        // Setup the directories for the test and test output
+        setDirectories(scriptName,sp);
+
+        // Check for properties files, including derby.properties
+        // and if needed, build the -p string to pass to the test
+        String propString = createPropString();
+
+        if ( (isSuiteRun == false) && (useprocess) )
+        {
+            SysInfoLog sysLog = new SysInfoLog();
+            sysLog.exec(jvmName, javaCmd, classpath, framework, pwDiff, useprocess);
+        }
+
+	    String startTime = CurrentTime.getTime();
+	    StringBuffer sb = new StringBuffer();
+	    sb.append("*** Start: " + testBase + " jdk" + javaVersion + " ");
+	    if ( (framework.length()>0) && (!framework.startsWith("embedded")) )
+	        sb.append(framework + " ");
+	    if ( (suiteName != null) && (suiteName.length()>0) )
+	        sb.append(suiteName + " ");
+	    sb.append(startTime + " ***");
+	    System.out.println(sb.toString());
+	    pwDiff.println(sb.toString());
+        
+        // Run the Server if needed
+	    if ((driverName != null) && (!skiptest) )
+	    {
+            System.out.println("Initialize for framework: "+ framework );
+            if (j9net && (framework.equals("DerbyNet"))) 
+			    ns = new NetServer(baseDir, "j9_13", classpathServer, null, jvmflags,framework);
+            else
+			    ns = new NetServer(baseDir, jvmName, classpathServer, javaCmd, jvmflags,framework);
+		    ns.start();
+		    frameworkInitialized = true;
+	    }
+		
+        // If the test has a jar file (such as upgrade) unjar it
+        if (jarfile != null)
+        {
+            UnJar uj = new UnJar();
+            uj.unjar(jarfile, outDir.getCanonicalPath(), true);
+        }
+        
+        // Run the actual test (unless skiptest was set to true)
+        if (skiptest == false)
+        {
+            testRun(propString, sp);
+        }
+        else
+        {
+			if (skiptestReason.length() == 0)
+				addSkiptestReason("Test skipped: skiptest set without setting skiptestReason, please fix RunTest.java...");
+		    pwDiff.println(skiptestReason);
+		    System.out.println(skiptestReason);
+            doCleanup(javaVersion);
+            return;
+        }
+            
+        // Stop the Network server if necessary
+		if (frameworkInitialized)
+		{
+		    System.out.println("Attempt to shutdown framework: " 
+				       + framework);
+		    ns.stop();
+		}
+
+		// Do "sed" to strip some unwanted stuff from the output file
+		// unless flag skipsed is set to true (for special cases)
+		
+		String outName = finalOutFile.getPath();
+
+        if (skipsed)
+        {
+            tmpOutFile.renameTo(finalOutFile);
+        }
+        else
+        {
+                    try
+                    {
+                        Sed sed = new Sed();
+                        sed.exec(tmpOutFile,finalOutFile, isSed, 
+                                        NetServer.isJCCConnection(framework));
+		    }
+		    catch (ClassFormatError cfe)
+		    {
+		        if (verbose) System.out.println("SED Error: " + cfe.getMessage());
+		    }
+        }
+        // Now do a diff between the out and the master files
+    	// Use the system's diff if systemdiff is true
+    	String frameworkMaster = framework;
+    	if (framework.startsWith("embedded"))
+    	    frameworkMaster = "";
+    	FileCompare diff = new FileCompare();
+
+        if (verbose)
+        {
+            System.out.println(
+                "About to execute: diff.exec(" + 
+                " outName = "           + outName +
+                ",outDir = "            + outDir  +
+                ",pwDiff = "            + pwDiff  +
+                ",testOutName = "       + testOutName +
+                ",frameworkMaster = "   + frameworkMaster +
+                ",jvmName = "           + jvmName +
+                ",iminor = "            + iminor  +
+                ",useprocess = "        + useprocess +
+                ",systemdiff = "        + systemdiff +
+                ",canondir = "          + canondir +
+                ",canonpath = "         + canonpath +
+                ")\n");
+        }
+
+    	boolean status;
+
+    	// only with j9 may the serverJvm be different from jvmName
+    	if (j9net)
+    	    status = diff.exec(outName, outDir, pwDiff, testOutName,
+    		    frameworkMaster, jvmName, iminor, useprocess, systemdiff, canondir, 
+			    canonpath, "j9_13");
+    	else
+      	    status = diff.exec(outName, outDir, pwDiff, testOutName,
+    		    frameworkMaster, jvmName, iminor, useprocess, systemdiff, canondir, 
+			    canonpath, null);
+
+    	if (status == true)
+    	{
+    		lastTestFailed = true;
+    		pwDiff.println("Test Failed.");
+    		System.out.println("Test Failed.");
+    		keepfiles = true;
+		    addToFailures(scriptName);
+		    if (useCommonDB) {
+	    		status = baseDir.delete();
+//System.out.println("basedir delete status: " + status );
+    		}
+        }
+        else
+    	{
+			addToSuccesses(scriptName);
+    		pwDiff.flush();
+        }
+
+		// Cleanup files
+		doCleanup(javaVersion);
+
+	}
+
+    private static void testRun(String propString, Properties sysProp)
+        throws FileNotFoundException, IOException, Exception
+    {
+        String systemHome = baseDir.getPath();
+        String scriptPath = null;
+        if (testType.startsWith("sql"))
+            scriptPath = script.getPath();
+                
+        // Build the test command
+        String[] testCmd = 
+    		buildTestCommand(propString, systemHome, scriptPath);
+        
+	    // cleanup for all tests that re-use standard testCSHome/wombat database
+	    if (useCommonDB == true 
+	    	&& (usesystem == null || usesystem == "")
+	    	&& (testType.equals("sql") || testType.equals("java")
+			|| testType.equals("sql2"))) {
+	        dbcleanup.doit(dbIsNew);
+	    }
+	
+
+        // Create a process to execute the command unless useprocess is false
+        if ( useprocess )
+		{
+            execTestProcess(testCmd);
+		}
+        else
+		{
+            execTestNoProcess(sysProp, systemHome, propString, scriptPath);
+		}
+    }
+
+    /** This is the method which created directories and looks for script file,
+     * need to make OS specific paths here.
+     *
+     */
+    private static void setDirectories(String scriptName, Properties sp)
+        throws ClassNotFoundException, FileNotFoundException, IOException
+    {
+        // Get the current userdir
+        userdir = sp.getProperty("user.dir");
+        
+        // reset defaultPackageName (for useprocess=false)
+        //if (useprocess == false)
+        //defaultPackageName = "/org/apache/derbyTesting/";
+            
+        // reset defaultPackageName (for useprocess=false)
+        if (useCommonDB == true)
+        {
+            defaultPackageName = "/org/apache/derbyTesting/";
+        }
+            
+        // Set the resourceName from the default
+        // If not set by user, the default is used
+        String resourceName = defaultPackageName + "functionTests/tests/";
+        // scriptName could be of these two formats:
+        // testdir/test.testtype (testtype is sql, java, etc.)
+        // test.testtype (where the defaultPackageName includes the testdir)
+        int index = scriptName.lastIndexOf('/');
+        if (index == -1) // no test directory was specified
+        {
+            if ( (!testType.equals("sql")) && (!testType.equals("java")) )
+            {
+                System.out.println("Test argument should be of the form: <dir>/<test>.<ext>");
+                System.exit(1);
+            }
+            else
+            {
+                scriptFileName = scriptName; // such as my.sql
+                resourceName += scriptName; // build the full resource name
+            }
+        }
+        else // the testdir was specified 
+        {
+            testDirName = (index==0)?"":scriptName.substring(0,index);
+            //System.out.println("testDirName: " + testDirName);
+            scriptFileName = scriptName.substring(index+1, scriptName.length());
+            //System.out.println("scriptFileName: " + scriptFileName);
+            defaultPackageName = defaultPackageName + "functionTests/tests/" + testDirName + "/";
+            //System.out.println("defaultPackage: " + defaultPackageName);
+            resourceName = defaultPackageName + scriptFileName;
+            //System.out.println("resource: " + resourceName);
+        }
+
+
+        // Get the test name without the extension
+        testBase = scriptFileName.substring(0, scriptFileName.lastIndexOf("."+testType));
+
+		if (testType.equals("java"))
+		{
+                    //get the javaPath
+		    String tmp = defaultPackageName.replace('/', '.');
+                    int tl = tmp.length()-1;
+		    javaPath = (tl==0)?"":tmp.substring(1, tl);
+		}
+
+        // Check for runDir
+        if ( (runningdir != null) && (runningdir.length()>0) )
+        {
+            if (File.separatorChar == '\\')
+            {
+                //need to replace / in path with \ for windows
+                String runningdirWin = convertPathForWin(runningdir);
+                runDir = new File((new File(runningdirWin)).getCanonicalPath());
+            }
+            else
+            {
+                runDir = new File((new File(runningdir)).getCanonicalPath());
+            }
+        }
+
+        // Define the outDir if not already defined from properties
+        File tmpoutDir;
+        String userdirWin = null;
+        if ( (outputdir == null) || (outputdir.length()==0) )
+        {
+            if (File.separatorChar == '\\')
+            {
+                //need to replace / in path with \ for windows
+                userdirWin = convertPathForWin(userdir);
+                tmpoutDir = new File((new File(userdirWin)).getCanonicalPath());
+            }
+            else
+            {
+                tmpoutDir =
+		        new File((new File(userdir)).getCanonicalPath());
+            }
+        }
+        else
+        {
+            if (File.separatorChar == '\\')
+            {
+                String outputdirWin = convertPathForWin(outputdir);
+                tmpoutDir =
+                        new File((new File(outputdirWin)).getCanonicalPath());
+            }
+            else
+            {
+                tmpoutDir =
+                        new File((new File(outputdir)).getCanonicalPath());
+            }
+        }
+
+        // If this is a suite run in a framework, outdir
+        // would already be defined to be a framework subdir
+        // But for RunTest, we must create the framework subdir
+        //if ( (!isSuiteRun) && (framework != null) && (framework.length()>0) )
+        if ( (!isSuiteRun) && (!framework.startsWith("embedded")) )
+        {
+            runDir = tmpoutDir;
+		    outDir = new File(tmpoutDir, framework);
+		    outDir.mkdir();
+		}
+		else // This is a Suite Run
+		{
+		    outDir = tmpoutDir;
+		    outDir.mkdir();
+		    if ( (topsuitedir != null) && (topsuitedir.length()>0) )
+                    {
+                        if (File.separatorChar == '\\')
+                        {
+                            String topsuitedirWin = convertPathForWin(topsuitedir);
+                            tsuiteDir = 
+                                new File((new File(topsuitedirWin)).getCanonicalPath());
+                        }
+                        else
+                        {
+                            tsuiteDir = new File((new File(topsuitedir)).getCanonicalPath());
+                        }
+                    }
+		    else
+                    {
+		        tsuiteDir = outDir;
+                    }
+		    tsuiteDir.mkdir();
+		    if ( (topreportdir != null) && (topreportdir.length()>0) )
+                    {
+                        if (File.separatorChar == '\\')
+                        {
+                            String topreportdirWin = convertPathForWin(topreportdir);
+                            rsuiteDir = 
+                                new File((new File(topreportdirWin)).getCanonicalPath());
+                        }
+                        else
+                        {
+                            rsuiteDir = 
+                                new File((new File(topreportdir)).getCanonicalPath());
+                        }
+                    }
+		    else
+                    {
+		        rsuiteDir = outDir;
+                    }
+		    rsuiteDir.mkdir();		    
+		}
+		        
+	    fileSep = File.separatorChar;
+
+        // for now, only addressing java and sql tests; other possible test 
+        // contributions will be unittests and multithreaded tests.
+
+        // For certain test types, locate script file based on scriptName
+        // Then determine the actual test name and directory
+        if ( (!testType.equals("java")) ) 
+        {
+            // NOTE: cannot use getResource because the urls returned
+            // are not the same between different java environments
+            InputStream is =
+                loadTestResource("tests/" + testDirName + "/" + scriptFileName); 
+
+			if (is == null)
+			{
+			    System.out.println("Could not locate " + scriptName);
+			    addToFailures(scriptName);
+				throw new FileNotFoundException(resourceName);
+			}
+
+            // Read the test file and copy it to the outDir
+            // except for multi tests (for multi we just need to locate it)
+            BufferedReader in = new BufferedReader(new InputStreamReader(is));
+            if (upgradetest)
+		
+                //these calls to getCanonicalPath catch IOExceptions as a workaround to
+                //a bug in the EPOC jvm. 
+                try { script = new File((new File(userdir, scriptFileName)).getCanonicalPath()); }
+                catch (IOException e) {
+                    File f = new File(userdir, scriptFileName);
+        		    FileWriter fw = new FileWriter(f);
+                    fw.close();
+                    script = new File(f.getCanonicalPath());
+                }
+			// else is probably only multi test, not contributed at this point
+            else
+                try { script = new File((new File(outDir, scriptFileName)).getCanonicalPath()); } 
+                catch (IOException e) {
+                    File f = new File(outDir, scriptFileName);
+                    FileWriter fw = new FileWriter(f);
+                    fw.close();
+                    script = new File(f.getCanonicalPath());
+                }
+
+            PrintWriter pw = null;
+            pw = new PrintWriter( new BufferedWriter
+                (new FileWriter(script.getPath()), 10000), true );
+                
+            String str = "";
+            while ( (str = in.readLine()) != null )
+            {
+                pw.println(str);
+            }
+            pw.close();
+            pw = null;
+            in = null;
+        }
+
+        // This is the base directory for creating a database (under the outDir)
+        baseDir = null;
+
+    	if (useCommonDB == true)
+        {
+            if (File.separatorChar == '\\')
+            {
+                String commonDBHomeWin = convertPathForWin(commonDBHome);
+                baseDir = new File(userdirWin, commonDBHomeWin);
+            }
+            else
+            {
+    		baseDir = new File(userdir, commonDBHome);
+            }
+        }
+        else if ( (usesystem != null) && (usesystem.length()>0) )
+        {
+            if (File.separatorChar == '\\')
+            {
+                String usesystemWin = convertPathForWin(usesystem);
+                if (upgradetest == true)
+                    baseDir = new File(userdirWin, usesystemWin);
+                else
+                    baseDir = new File(outDir, usesystemWin);
+            }
+            else
+            {
+                if (upgradetest == true)
+                    baseDir = new File(userdir, usesystem);
+                else
+                    baseDir = new File(outDir, usesystem);
+            }
+        }
+        else
+        {
+            if (File.separatorChar == '\\')
+            {
+                String testBaseWin = convertPathForWin(testBase);
+                baseDir = new File(outDir, testBaseWin);
+            }
+            else
+            {
+                baseDir = new File(outDir, testBase);
+            }
+        }
+
+        // clean up old db dirs
+        // (except for special cases such as nist, commonDB).
+        // In the case of useCommonDB == true, the baseDir (commonDBHome) only gets
+        // cleaned up if the last test was a failure.  Further refinements may
+        // follow, since many test failures probably do not require such drastic
+        // action.
+        if (baseDir.exists())
+        {
+            if (useCommonDB == false || lastTestFailed == true) {
+                cleanupBaseDir(baseDir);
+                lastTestFailed = false;
+            }
+            else if (useCommonDB == true) 
+                dbIsNew = false; // dbcleanup may be needed
+        }
+        else {
+            
+            boolean created = baseDir.mkdir();
+            dbIsNew = true; // dbcleanup not needed on new database
+        }
+
+        // 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");
+		if (NetServer.isJCCConnection(framework))
+		{
+			JCCOutName = 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();
+		if (NetServer.isJCCConnection(framework))
+		{
+        	JCCOutFile = new File(outDir, JCCOutName);
+        	if (JCCOutFile.exists())
+            	status = JCCOutFile.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 = "no" + framework + ".runall";
+
+		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;
+
+		JavaVersionHolder jvh = new JavaVersionHolder(javaVersion);
+		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("foun"))
+                            jvmName = "j9_foundation";
+                        else
+                            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("DB2") && (! 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");
+			if (excludeJcc != null) {
+				int excludeMajor = 0;
+				int excludeMinor = 0;
+				try {
+					excludeMajor = Integer.parseInt(excludeJcc.substring(0,excludeJcc.indexOf(".")));
+					excludeMinor = Integer.parseInt(excludeJcc.substring(excludeJcc.indexOf(".")+1));
+				} catch (NumberFormatException nfe) {
+					System.out.println("excludeJCC property poorly formatted: " + excludeJcc);
+				} catch (NullPointerException npe) {
+					System.out.println("excludeJCC property poorly formatted: " + excludeJcc);
+				}
+				if (excludeMajor >= jccMajor && excludeMinor >= jccMinor)
+				{
+					skiptest = true;
+		    		addSkiptestReason("This test is excluded from running with JCC versions " + excludeJcc + " and below");
+		  		}
+			}
+		}
+			
+		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) )
+		{
+		    suiteName = sp.getProperty("suitename");
+		    if ( (suiteName != null) && (suiteName.length()>0) )
+		    {
+		        // This is a suite run
+		        isSuiteRun = true;
+		        // If a suite, it could be part of a top suite
+		        topsuiteName = sp.getProperty("topsuitename");
+		        topsuitedir = sp.getProperty("topsuitedir");
+		        topreportdir = sp.getProperty("topreportdir");
+		    }
+		}
+		String uscdb = sp.getProperty("useCommonDB");
+		if (uscdb != null && uscdb.equals("true"))
+			useCommonDB = true;
+    }
+
+    private static String createPropString()
+        throws ClassNotFoundException, FileNotFoundException, IOException
+    {
+        // Check for existence of app properties and/or derby.properties files
+        // Copy the derby.properties to the db base directory
+        // Then create the -p string for the test
+		String propString = "";
+		
+		// General purpose variables
+		BufferedReader in = null;
+		BufferedOutputStream bos = null;
+		BufferedOutputStream bos2 = null;
+		String str = "";
+		
+		// InputStreams for all possible properties files
+		InputStream isCl = null; // For test_derby.properties
+		InputStream isClDef = null; // For default_derby.properties
+		InputStream isAp = null; // For test_app.properties
+		InputStream isApDef = null; // For default_app.properties
+
+		// Resource names for locating the various properties files
+		String clDefProp = "tests/" + testDirName + "/" + "default_derby.properties";
+		String apDefProp = null;
+		if (useCommonDB)
+		    apDefProp = "tests/" + testDirName + "/" + "commonDB_app.properties";
+		else
+		    apDefProp = "tests/" + testDirName + "/" + "default_app.properties" ;
+
+		// Properties
+		Properties clp = new Properties();
+		Properties ap = new Properties();
+		Properties sdp = new Properties();
+
+        // If there are special flags for ij or server, load these
+        // into properties to be merged with app and/or derby props
+        Properties ijProps = new Properties();
+        Properties srvProps = new Properties();
+		if ( (testSpecialProps != null) && (testSpecialProps.length()>0))
+		{
+		    SpecialFlags.parse(testSpecialProps, ijProps, srvProps);
+		}
+
+        /* If there are more than one derby.properties, the rule is to
+           load either the test_derby.properties or the default one,
+        */
+        
+        // Check for default_derby.properties
+        isClDef = loadTestResource(clDefProp);
+		// Check for test specific props 
+        isCl = loadTestResource("tests/" + testDirName + "/" + testBase + "_derby.properties");
+//System.out.println("**************");
+//System.out.println("isCl = " + isCl);
+//System.out.println(defaultPackageName + testBase + "_derby.properties");
+//System.out.println("**************");
+        
+        // Now load and merge the properties based on above rules
+		if (isCl != null) // In case there exists a test_derby.properties
+		{
+		    clp.load(isCl);
+clp.list(System.out);
+		}
+		// Try the default_derby.properties instead
+		else if (isClDef != null)
+		{
+		    clp.load(isClDef);
+		}
+
+        // j9 will run out of memory with the default cache size (100), so
+        // forcing it lower unless set in _derby.properties file for a specific test
+        if (jvmName.startsWith("j9"))
+        {
+            if (clp.getProperty("derby.language.statementCacheSize")==null)
+                clp.put("derby.language.statementCacheSize", J9_STATEMENTCACHESIZE);
+        }
+
+        // Now merge any special server props if they exist
+        // But if clp is still empty, try using the special server props
+        if ( clp.isEmpty() )
+        {
+            // Check for srvProps from testSpecialProps
+            if ( !srvProps.isEmpty() )
+                clp = srvProps;
+        }
+        else
+        {
+            // merge any special properties from testSpecialProps
+            if ( !srvProps.isEmpty() )
+            {
+                for (Enumeration e = srvProps.propertyNames(); e.hasMoreElements();)
+                {
+                    String key = (String)e.nextElement();
+                    String value = srvProps.getProperty(key);
+                    if (key.equals("derby.debug.true")) // Add to existing prop
+                    {
+                        String cval = clp.getProperty("derby.debug.true");
+                        // If this property exists, edit to prepend the srvProp
+                        // but if the original property is null, just put the srvProp
+                        if (cval != null)
+                        {
+			                if (cval.length() != 0) {
+                                // debug property exists, so edit it
+                                value = value + "," + cval;
+                            } else {
+                                // if new debug property is not null, but is zero length, 
+                                // assume the intention was to override the debug property.
+                                value = "";
+                            }
+                        }
+                    }
+                    clp.put(key,value);
+                }
+            }
+        }
+
+        if ( !clp.isEmpty() )
+        {
+            // Create and load the file
+
+            // This call to getCanonicalPath catches IOExceptions as a workaround to
+            // a bug in the EPOC jvm. 
+      	    try { clPropFile = new File((new File(baseDir, "derby.properties")).getCanonicalPath()); }
+    	    catch (IOException e) {
+    		    File f = new File(baseDir, "derby.properties");
+    		    FileWriter fw = new FileWriter(f);
+    		    fw.close();
+    		    clPropFile = new File(f.getCanonicalPath());
+    	    }
+
+//System.out.println("clPropFile: " + clPropFile.getPath());
+            bos = new BufferedOutputStream(new FileOutputStream(clPropFile));
+            clp.save(bos, "Derby Properties");
+        	bos.close();
+        }
+
+		// --------------------------------- 
+        // Check for existence of sed properties file (test_sed.properties)
+        // See jdbc_sed.properties
+        //  Multiple patterns for DELETE: comma separated
+        //    delete=pattern1,pattern2,...,patternn
+        //  No commas can be allowed in the patterns.
+        // 
+        //  Multiple patterns for SUBSTITUTE: comma separated <pattern;substitute> pair
+        //    substitute=pattern1;substitute1,pattern2;substitute2,...,patternn;substituten
+        //  No commas or semicolons can be allowed in the patterns/subsitutes.  //
+        isSed = loadTestResource("tests/" + testDirName + "/" + testBase + "_sed.properties");
+//System.out.println("**************");
+//System.out.println("isSed = " + isSed);
+//System.out.println(defaultPackageName + testBase + "_sed.properties");
+//System.out.println("**************");
+		// --------------------------------- 
+
+        // Check for existence of app properties file
+        // If there is an test_app, use it to overwrite default_app
+        // Then create the -p string for the test
+        Properties dp = new Properties();
+	    String testPropName = null;
+	    String testPropSDName = null; // name for shutdown properties file if needed
+	    if (useCommonDB) testPropName = "CDB" + testBase + "_app.properties";
+	    else testPropName = testBase + "_app.properties";
+
+        // Check for default_app.properties
+        isApDef = loadTestResource(apDefProp);
+
+        // Check for test_app.properties
+        isAp = loadTestResource("tests/" + testDirName + "/" + testBase + "_app.properties");
+//System.out.println("**************");
+//System.out.println("isAp = " + isAp);
+//System.out.println(defaultPackageName + testBase + "_app.properties");
+//System.out.println("**************");
+
+        // Try loading the ap and def properties if they exist
+        // Merge only if the test's app properties has usedefaults property
+        if ( isAp != null )
+        {
+            ap.load(isAp);
+            // Check for a property usedefaults; if true merge in default props
+		    for (Enumeration e = ap.propertyNames(); e.hasMoreElements(); )
+		    {
+			    String key = (String)e.nextElement();
+			    String value = ap.getProperty(key);
+			    if ( (key.equals("usedefaults")) && (value.equals("true")) )
+			    {
+			        // merge in the default properties
+                    if ( isApDef != null )
+                    {
+                        dp.load(isApDef);
+                        mergeProps(ap, dp);
+                        break;
+                    }
+                }
+            }
+        }
+        else
+        {
+            // Just use the default props
+            if ( isApDef != null )
+                ap.load(isApDef);
+        }
+
+        // If app props are still empty, check for any special testSpecialFlags
+        if ( ap.isEmpty() )
+        {
+            if ( !ijProps.isEmpty() )
+                ap = ijProps;
+        }
+        else
+        {
+            // merge any special properties from testSpecialFlags
+            if ( !ijProps.isEmpty() )
+            {
+                for (Enumeration e = ijProps.propertyNames(); e.hasMoreElements();)
+                {
+                    String key = (String)e.nextElement();
+                    String value = ijProps.getProperty(key);
+                    ap.put(key,value);
+                }
+            }
+        }
+
+        if ( !ap.isEmpty() )
+        {
+                // Create the file and load the properties
+	        // This call to getCanonicalPath catches IOExceptions as a workaround to
+	        // a bug in the EPOC jvm. 
+            try 
+            { 
+                appPropFile = new File((new File(baseDir, testPropName)).getCanonicalPath());                 
+            }
+	        catch (IOException e) 
+	        {
+		        File f = new File(baseDir, testPropName);
+		        FileWriter fw = new FileWriter(f);
+		        fw.close();
+		        appPropFile = new File(f.getCanonicalPath());		        
+	        }
+
+			// For IBM14 the console encoding is different from the platform
+			// encoding on windows.  We want it to be the same for our
+			// test output like the other JDK's.
+			String conEnc = System.getProperty("console.encoding");
+			String fileEnc = System.getProperty("file.encoding");
+		
+			if ((conEnc != null) &&  (fileEnc != null )  &&
+				(ap.getProperty("derby.ui.codeset") == null) &&
+				conEnc.startsWith("Cp850"))
+			{
+				ap.put("derby.ui.codeset",fileEnc);
+			}
+			if (verbose)
+				System.out.println("console.encoding:" + conEnc + 
+								   " file.encoding:" + fileEnc +
+							   " derby.ui.codeset: " + ap.getProperty("derby.ui.codeset"));
+
+//System.out.println("appPropFile: " + appPropFile.getPath());
+            bos = new BufferedOutputStream(new FileOutputStream(appPropFile));
+            ap.save(bos, "App Properties");
+            bos.close();
+
+            // Depending on the framework, the app prop file may need editing
+            if ( (framework.length()>0) || (encryption) )
+            {
+                try
+                {
+                    if (!framework.equals("") && 
+                        !framework.equals("embedded"))
+                        frameworkProtocol(ap);
+                    else if (encryption)
+                        encryptionProtocol(ap);
+                }
+                catch(Exception e)
+                {
+                    System.out.println("Exception: " + e.getMessage());
+                    e.printStackTrace();
+                }
+		
+                // write the new properties to the appPropFile
+        		appPropFile = new File(baseDir, testBase + "_app.properties");
+        		try
+        		{
+            		bos = new BufferedOutputStream(new FileOutputStream(appPropFile));
+            		ap.save(bos, "Test Properties");
+            		bos.close();
+                }
+            	catch(IOException ioe)
+            	{
+            		System.out.println("IOException creating prop file: " + ioe.getMessage());
+            	}
+            }
+        }
+
+    	if ( (appPropFile != null) && (appPropFile.exists()) )
+    	{
+    	    // Create the properties string for the test
+    		propString = appPropFile.getPath();
+    		
+    		// Check for shutdown url
+    		shutdownurl = ap.getProperty("shutdown");
+    		
+    		// Check for jdk12test set to true
+	        String jdk12test = ap.getProperty("jdk12test");
+	        //System.out.println("jdk12test: " + jdk12test);
+	        //System.out.println("jvmName: " + jvmName);
+	        if (jdk12test != null)
+	        {
+	            if (jdk12test.toLowerCase().equals("true"))
+	            {
+	                isjdk12test = true;
+	                //System.out.println("isjdk12test " + isjdk12test);
+	                if (jvmName.equals("currentjvm")) { // This is not at least jdk12
+	                    skiptest = true;
+						addSkiptestReason("Test skipped: test needs jdk12, jvm is reporting currentjvm; skipping test: " + scriptFileName);
+					}
+	            }
+	        }
+
+            String srvJvm = System.getProperty("serverJvm");
+            if ((srvJvm !=null) && ((srvJvm.toUpperCase().startsWith("J9")) || (srvJvm.equalsIgnoreCase("wsdd5.6"))))
+                j9net = true;
+
+            String excludeJcc = ap.getProperty("excludeJCC");
+            if ( framework.startsWith("DB2") )
+            {	
+                if (excludeJcc != null) {
+                    int excludeMajor = 0;
+                    int excludeMinor = 0;
+                    try {
+                        excludeMajor = Integer.parseInt(excludeJcc.substring(0,excludeJcc.indexOf(".")));
+                        excludeMinor = Integer.parseInt(excludeJcc.substring(excludeJcc.indexOf(".")+1));
+                    } catch (NumberFormatException nfe) {
+                        System.out.println("excludeJCC property poorly formatted: " + excludeJcc);
+                    } catch (NullPointerException npe) {
+  	                    System.out.println("excludeJCC property poorly formatted: " + excludeJcc);
+                    }
+                    if (excludeMajor >= jccMajor && excludeMinor >= jccMinor)
+                    {
+                        skiptest = true;
+                        addSkiptestReason("This test is excluded from running with JCC versions " + excludeJcc + " and below");
+                    }
+                }
+            }
+		
+
+            // for now we want just want to have a single property
+            // for all j9 versions; use j9_13 for the jvmname
+            String testJVM = (jvmName.startsWith("j9") ? "j9" : jvmName);
+            runwithjvm = ap.getProperty("runwith" + testJVM);
+            if  ((runwithjvm != null) && (runwithjvm.equalsIgnoreCase("false")))
+            {
+				skiptest = true;
+				addSkiptestReason("Test skipped: test cannot run with jvm: " +
+								  jvmName + ".  " + scriptFileName);
+			}
+
+	        // Check for jvmflags (like "-nojit -ms32M -mx32M")
+	        // These may have been set as a system property already
+	        if (jvmflags == null)
+	        {
+	            jvmflags = ap.getProperty("jvmflags");
+	            // If set in app props to up the memory, this
+	            // is only meant to be applied to 11x vms
+	            if ( (jvmflags != null) && (!jvmName.equals("currentjvm")) )
+	            {
+	                if (jvmflags.startsWith("-ms"))
+	                    jvmflags = "";
+	            }
+	        }	        
+	        
+    		// Also check for supportfiles
+    		String suppFiles = ap.getProperty("supportfiles");
+			boolean copySupportFiles = ((suppFiles != null) && (suppFiles.length()>0));
+			boolean createExtDirs= new Boolean(ap.getProperty("useextdirs","false")).booleanValue();
+			
+    		if (copySupportFiles || createExtDirs)
+    		{
+				File copyOutDir = null;
+
+    		    if (testType.equals("sql2"))
+    		    {
+    		        if ( (isSuiteRun) || (framework.length()>0) )
+						copyOutDir = outDir;
+    		        else if ( (runDir != null) && (runDir.exists()) )
+						copyOutDir = runDir;
+    		        else
+						copyOutDir = outDir;
+    		    }
+    		    //else if ( testType.equals("multi") )
+    		    //{
+    		    //    if ( (isSuiteRun) || (mtestdir == null) || (mtestdir.length()==0) )
+    		    //    {
+				//		copyOutDir = outDir;
+    		    //    }
+    		    //    else
+    		    //    {
+    		    //        File multiDir = new File(mtestdir);
+				//		copyOutDir = multiDir;
+    		    //    }
+    		    //}
+                else if ( outcopy == true )
+                    copyOutDir = outDir;
+                else if ( (runDir != null) && (runDir.exists()) )
+                {
+                    if (jvmName.startsWith("j9")&&  testType.equals("java"))
+                    {
+                        // for some reason, not picking up from rundir
+                        copyOutDir = outDir;
+                    }else
+					    copyOutDir = runDir;
+                }
+                else
+                    copyOutDir = outDir;
+
+				if(createExtDirs)
+				{
+					extInDir = copyOutDir;
+					//create the support file directory for input files
+					extInDir = new File(copyOutDir , "extin");
+					if(!extInDir.exists())
+						extInDir.mkdirs();
+					//create the support file directory for output files.
+					extOutDir = new File(copyOutDir , "extout");
+					if(!extOutDir.exists())
+						extOutDir.mkdirs();
+					//create the support file directory for input output files.
+					extInOutDir = new File(copyOutDir , "extinout");
+					if(!extInOutDir.exists())
+						extInOutDir.mkdirs();
+					copyOutDir = extInDir;
+				}
+				if(copySupportFiles)
+				   CopySuppFiles.copyFiles(copyOutDir, suppFiles);
+    		}
+			
+    	}
+        return propString;
+    }
+
+    public static String setTestJavaFlags(String tflags)
+    {
+        StringBuffer sb = new StringBuffer();
+	    if (verbose) System.out.println("testJavaflags: " + tflags);
+	    String dintro = "-D";
+        try
+        {
+            dintro = jvm.getJvm(jvmName).getDintro();
+        }
+        catch (Exception e)
+        {
+            System.out.println("Problem getting jvm "+jvmName+" Dintro: ");
+            e.printStackTrace(System.out);
+		    System.exit(1);
+        }
+	    // Parse because there could be a list of flags
+	    StringTokenizer st = new StringTokenizer(tflags,"^");
+        while (st.hasMoreTokens())
+        {
+	        String token = st.nextToken();
+            if ( ! (token.startsWith("-D") || token.startsWith("-X"))) { sb.append(dintro); }
+            sb.append(token);
+            sb.append(" ");
+        }
+        if (verbose) System.out.println("setTestJavaFlags returning: " + sb.toString());
+        return sb.toString();
+    }
+
+	private static void loadProps(Properties p, File f) throws Exception
+	{
+		if (f.canRead())
+		{
+			FileInputStream fis = new FileInputStream(f);
+			p.load(fis);
+			fis.close();
+		}
+	}
+
+	private static void mergeProps(Properties to, Properties from)
+	{
+		for (Enumeration e = from.propertyNames(); e.hasMoreElements(); )
+		{
+			String key = (String)e.nextElement();
+			to.put(key, from.getProperty(key));
+		}
+	}
+
+
+
+    private static void frameworkProtocol(Properties p) throws Exception
+    {
+
+        if (p == null)
+        {
+            // No properties
+            return;
+        }
+		for (Enumeration e = p.propertyNames(); e.hasMoreElements(); )
+		{
+			String key = (String)e.nextElement();
+			String value = p.getProperty(key);
+
+			if (key.equals("driver") || key.equals("ij.driver") || key.equals("jdbc.drivers"))
+			{
+			    p.put(key, driverName);
+			}
+			else if (key.startsWith("ij.protocol") || key.equals("protocol"))
+			{
+			    value = NetServer.alterURL(framework,value);
+			    p.put(key, value);
+			}
+			else if (key.equals("database") || key.equals("ij.database") || key.startsWith("ij.connection") || key.equals("jdbc.url"))
+			{
+			    dbName = value.substring(value.lastIndexOf(':') + 1 ,
+						     value.length());
+			    value = NetServer.alterURL(framework,value);
+			    p.put(key, value);
+			}
+			// force messages to show
+			else if ((!key.equals("retrieveMessagesFromServerOnGetMessage")) &&
+				(!key.equals("ij.retrieveMessagesFromServerOnGetMessage")))
+			{
+				p.put("ij.retrieveMessagesFromServerOnGetMessage","true");	
+				p.put("retrieveMessagesFromServerOnGetMessage","true");	
+			}
+			else // for any other properties, just copy them
+			    p.put(key, value);
+			
+		}
+		// Temporary until jcc supports null userid
+		if (NetServer.isJCCConnection(framework))
+		{
+			String user = System.getProperty("ij.user");
+			String password = System.getProperty("ij.password");
+			if (user == null) user = "APP";
+			if (password == null) password = "APP";
+
+		    p.put("ij.user",user);
+		    p.put("ij.password",password);
+		}
+
+		// If this is not a known protocol for ij we
+		// need to set the driver
+		if (driverName != null)
+		    p.put("ij.driver",driverName);
+	}
+	
+
+	private static void encryptionProtocol(Properties p) throws Exception
+	{
+        String encryptUrl = "dataEncryption=true;bootPassword=Thursday";
+
+        if (p == null)
+        {
+            // No properties
+            return;
+        }
+
+        // add encryption algorithm and provider to database creation URL
+        String v = p.getProperty("testEncryptionAlgorithm");
+        if (v != null)
+            encryptUrl += ";" + Attribute.CRYPTO_ALGORITHM + "=" + v;
+        v = p.getProperty("testEncryptionProvider");
+        if (v != null)
+            encryptUrl += ";" + Attribute.CRYPTO_PROVIDER + "=" + v;
+
+		for (Enumeration e = p.propertyNames(); e.hasMoreElements(); )
+		{
+			String key = (String)e.nextElement();
+			String value = p.getProperty(key);
+
+			if (key.equals("database") || key.equals("ij.database") || key.startsWith("ij.connection") || key.equals("jdbc.url"))
+			{
+				// edit the url if necessary
+				int index = value.indexOf(encryptUrl);
+				if ( index == -1)
+				{
+				    value = value + ";" + encryptUrl;
+			    }
+				p.put(key, value);
+			}
+            else if (key.equals("testEncryptionAlgorithm") || key.equals("testEncryptionProvider"))
+                {} // ignore, do not copy
+			else // for any other properties, just copy them
+			    p.put(key, value);
+		}
+	}
+
+    private static void cleanupBaseDir(File baseDir)
+    {
+        // Some tests rely on no cleanup being done on the baseDir
+        boolean okToDelete = false;
+
+        if ( (usesystem == null) || (usesystem.length()==0) )
+            okToDelete = true;
+        else if (usesystem.equals("nist"))
+        {
+            if (testBase.equals("schema1"))
+                okToDelete = true;
+        }
+        else if (usesystem.equals("puzzles"))
+        {
+            if (testBase.equals("puzzleschema"))
+                okToDelete = true;
+        }
+
+        if (useCommonDB) okToDelete = false;
+
+        if (okToDelete == true)
+        {
+           //System.out.println("Should be deleting the baseDir for a clean run");
+           deleteFile(baseDir);
+           if (baseDir.exists())
+               System.out.println("baseDir did not get deleted which could cause test failures");
+           else
+               baseDir.mkdir();
+        }
+    }
+
+    private static void doCleanup(String javaVersion)
+        throws IOException
+    {
+        boolean status = true;
+        // The output files cannot be deleted if there
+        // is still a reference to them -- even doing
+        // this is not a guarantee that they will be deleted
+        // It seems to depend on the Java environment
+        //printWriter.close();
+        //printWriter = null;
+
+        //Always cleanup the script files
+        if ( !(script == null) && (script.exists()) )
+        {
+            status = script.delete();
+            //System.out.println("Status was: " + status);
+        }
+
+	    String endTime = CurrentTime.getTime();
+	    StringBuffer sbend = new StringBuffer();
+	    sbend.append("*** End:   " + testBase + " jdk" + javaVersion + " ");
+	    if ( (framework.length()>0) && (!framework.startsWith("embedded")) )
+	        sbend.append(framework + " ");
+	    if ( (suiteName != null) && (suiteName.length()>0) )
+	        sbend.append(suiteName + " ");
+	    sbend.append(endTime + " ***");
+	    System.out.println(sbend.toString());
+	    pwDiff.println(sbend.toString());
+        pwDiff.flush();
+        pwDiff.close();
+        pwDiff = null;
+
+        // This could be true if set by user or there were diffs
+        if (keepfiles == false)
+        {
+            // Delete the out and diff files
+            status = tmpOutFile.delete();
+            if (status == false)
+                tmpOutFile = null;
+            status = finalOutFile.delete();
+            if (skiptest == false)
+                status = diffFile.delete();
+			// delete JCC filtered master file
+			if (NetServer.isJCCConnection(framework))
+			{
+        		JCCOutFile = new File(outDir, JCCOutName);
+            	status = JCCOutFile.delete();
+			}
+            if (deleteBaseDir)
+            {
+                if (useCommonDB == false) 
+                {
+                	//System.out.println("Should delete the baseDir: " + baseDir.getPath());
+                	deleteFile(baseDir);
+		        }
+		        else 
+		        {
+			        status = appPropFile.delete();
+			        //no permission in Java to drop derby.log
+			        //File logfile = new File(baseDir, "derby.log");
+			        //System.out.println("delete derby.log ");
+			        //System.out.println(logfile.getPath());
+			        //status = logfile.delete();
+		        }
+            }
+
+			//delete the directories where external input/output files were created
+			if(extInDir!=null)
+				deleteFile(extInDir);
+			if(extOutDir!=null)
+				deleteFile(extOutDir);
+			if(extInDir!=null)
+				deleteFile(extInOutDir);
+        }
+	    // reset for next test
+	    // the next line is a bug fix to get cleanup working correctly when
+	    // useprocess==false;  without this the first failing test causes all
+	    // subsequent tests not to clean up, since keepfiles is static; a
+	    // more general solution is to make the variable non-static, and to
+	    // set the default in the initializer; I(john) have not done this
+	    // because the same reasoning probably applies to many of the static
+	    // variables, and the whole subject should probably be approached in
+	    // a coordinated way when someone has the time for it.
+	    keepfiles = false;
+
+    }
+
+    /*
+     * For recursively deleting a directory
+     *
+     */
+	public static void deleteFile(File f)
+	{
+	    boolean status = true;
+        if (f == null)
+        {
+            System.out.println(f.getName() + " is null");
+            return;
+        }
+        //System.out.println("Trying to delete: " + f.getPath());
+	    status = f.delete();
+
+	    if (status == true)
+	        return;
+	    else
+	    {
+	        // Could not delete; this could be a non-empty directory
+	        //System.out.println("Recursively delete...");
+	        String[] files = f.list();
+	        for (int i = 0; i < files.length; i++)
+	        {
+	            File sub = new File(f.getPath(), files[i]);
+	            if (sub == null)
+	                continue;
+	            //System.out.println("Try to delete: " + sub.getPath());
+	            status = sub.delete();
+	            if (status != true)
+	            {
+	                // Could not delete; it may be a non-empty dir
+	                if ( sub.isDirectory() )
+	                {
+	                    //System.out.println("Recursing again ... ");
+	                    deleteFile(sub);
+	                    // It should be empty now; try again
+	                    status = sub.delete();
+	                    //System.out.println("Recurse delete status: " + status);
+	                }
+	                // The file delete failed
+	                //System.out.println("Failed to clean up file: " + sub.getPath());
+	            }
+	        }
+	    }
+	    //Should be able to delete the top directory now
+	    status = f.delete();
+	    if (status == false)
+	    {
+	        System.out.println("Warning: Cleanup failed on baseDir: " + f.getPath());
+	    }
+	}
+
+	static void addToFailures(String testName) throws IOException
+	{
+		if (failFileName==null)
+		{
+			if (isSuiteRun) failFileName = suiteName+".fail";
+			else failFileName=testBase+".fail";
+        }
+		addToListFile(failFileName,testName);
+	}
+
+	static void addToSuccesses(String testName) throws IOException
+	{
+		if (passFileName==null)
+		{
+			if (isSuiteRun) passFileName = suiteName+".pass";
+			else passFileName=testBase+".pass";
+        }
+		addToListFile(passFileName,testName);
+    }
+
+	static void addToListFile(String fileName, String testName) throws IOException
+	{
+	    File f;
+	    if (isSuiteRun)
+	        f = new File(rsuiteDir,fileName);
+	    else
+	        f = new File(outDir,fileName);
+		PrintStream ps = null;
+
+		// This call to getCanonicalPath catches IOExceptions as a workaround to
+		// a bug in the EPOC jvm. 
+		try { ps = new PrintStream( new FileOutputStream(f.getCanonicalPath(),true) ); }
+		catch (IOException e) {
+		    FileWriter fw = new FileWriter(f);
+		    fw.close();
+		    ps = new PrintStream( new FileOutputStream(f.getCanonicalPath(),true) ); 
+		}
+
+		ps.println(testName);
+		ps.flush();
+		ps.close();
+    }
+
+    static void appendStderr(BufferedOutputStream bos, InputStream is)
+        throws IOException
+    {
+        PrintWriter tmpPw = new PrintWriter(bos);
+        // reader for stderr
+        BufferedReader errReader = new BufferedReader(new InputStreamReader(is));
+        String s = null;
+        int lines = 0;
+        while ((s = errReader.readLine()) != null)
+        {
+           tmpPw.println(s);
+        }
+        errReader.close();
+        tmpPw.flush();
+    }
+
+    static void verifyTestType()
+        throws ClassNotFoundException, FileNotFoundException, IOException
+    {
+        //java requires '/' as separator to look into jar, irrespective of OS
+        InputStream is =
+            loadTestResource("harness/testtypes.properties");
+		Properties p = new Properties();
+		p.load(is);
+        String testtypes = p.getProperty("testtypes");
+	    StringTokenizer st = new StringTokenizer(testtypes,",");
+	    String ttype = "";
+        while (st.hasMoreTokens())
+        {
+            ttype = st.nextToken();
+            if ( testType.equals(ttype) )
+                return;
+        }
+        // Not a known test type
+        System.out.println("Unknown test type: " + testType);
+        System.exit(1);
+    }
+
+	public static void
+	addStandardTestJvmProps(Vector testJvmProps,String derbySystemHome,
+							String userDirName, jvm jvm)
+	{
+		if (derbySystemHome==null || derbySystemHome.length() == 0)
+			derbySystemHome = userDirName;
+		testJvmProps.addElement("derby.system.home=" + derbySystemHome);
+		testJvmProps.addElement("derby.infolog.append=true ");
+		// Why is this being done here
+		//if (jvm != null)
+		    //testJvmProps.addElement("jvm="+jvm.getName());
+		testJvmProps.addElement("user.dir="+userDirName);
+	}
+	
+	private static String[] buildTestCommand(String propString,
+	    String systemHome, String scriptPath)
+	    throws FileNotFoundException, IOException, Exception
+	{
+	    //System.out.println("testType: " + testType);
+	    String ij = "";
+        // Create the test command line
+        if (testType.equals("sql"))
+            ij = "ij";
+		jvm jvm = null; // to quiet compiler
+		jvm = jvm.getJvm(jvmName);
+        if (javaCmd != null)
+            jvm.setJavaCmd(javaCmd);
+
+        if ( (classpath != null) && (classpath.length()>0) )
+            jvm.setClasspath(classpath);
+
+		Vector jvmProps = new Vector();
+		if ( testType.equals("java") || testType.equals("demo") )
+		    addStandardTestJvmProps(jvmProps,systemHome,
+			    outDir.getCanonicalPath(),null);		    
+        else if ( (runDir != null) && (runDir.exists()) )
+		    addStandardTestJvmProps(jvmProps,systemHome,
+			    runDir.getCanonicalPath(),jvm);
+        else
+			addStandardTestJvmProps(jvmProps,systemHome,
+				outDir.getCanonicalPath(),jvm);
+		
+        if ( (testJavaFlags != null) && (testJavaFlags.length()>0) )
+        {
+	    String parsedFlags = setTestJavaFlags(testJavaFlags);
+            StringTokenizer st = new StringTokenizer(parsedFlags," ");
+            while (st.hasMoreTokens())
+            {
+                jvmflags = (jvmflags==null?"":jvmflags) + " " + st.nextToken();
+            }
+        }
+        
+        if ( ij.startsWith("ij") )
+            jvmProps.addElement("ij.defaultResourcePackage=" +
+                defaultPackageName);
+        
+        if ( (framework != null) )
+            jvmProps.addElement("framework=" + framework);
+            
+        if ( (jvmflags != null) && (jvmflags.length()>0) )
+        {
+            jvm.setFlags(jvmflags);
+        }
+        
+        jvm.setD(jvmProps);
+        
+        if (testType.equals("multi"))
+        {
+            if ( (jvmflags != null) && (jvmflags.indexOf("mx") == -1) )
+                jvm.setMx(64*1024*1024); // -mx64m
+        }
+            
+        Vector v = jvm.getCommandLine();
+        if ( ij.startsWith("ij") )
+        {
+            // as of cn1411-20030930, the system takes the default console encoding
+            // which in the US, on windows, is Cp437.
+            // Sun on the other hand, always forces a console encoding of 1252.
+            // To get the same result for ibm141 & jdk14*, we need to force 
+            // the console encoding to Cp1252 for ij tests.
+            // see beetle 5475.
+            v.addElement("-Dconsole.encoding=Cp1252" );
+            v.addElement("org.apache.derby.tools." + ij);
+            if (ij.equals("ij"))
+            {
+                v.addElement("-fr");
+                v.addElement(scriptFileName);
+            }
+            v.addElement("-p");
+            v.addElement(propString);
+        }
+        else if ( testType.equals("java") )
+        {
+            if (javaPath.length() > 0)
+                v.addElement(javaPath + "." + testBase);
+            else
+                v.addElement(testBase);
+            if ( (propString.length() > 0) && (usesystem == null))
+            {
+                v.addElement("-p");
+                v.addElement(propString);
+            }
+        }
+        // here would be placed calls to and set properties for e.g. unittests and multithreaded tests methods
+            
+        // Now convert the vector into a string array
+        String[] sCmd = new String[v.size()];
+        for (int i = 0; i < v.size(); i++)
+        {
+            sCmd[i] = (String)v.elementAt(i);
+        }
+
+        return sCmd;
+    }
+
+    private static void execTestProcess(String[] testCmd)
+        throws Exception
+    {
+        
+        // Execute the process and handle the results
+    	Process pr = null;
+    	try
+    	{
+            // We need the process inputstream and errorstream
+            ProcessStreamResult prout = null;
+            ProcessStreamResult prerr = null;
+            FileOutputStream fos = null;
+            BufferedOutputStream bos = null;
+            
+            StringBuffer sb = new StringBuffer();
+            
+            for (int i = 0; i < testCmd.length; i++)
+            {
+                sb.append(testCmd[i] + " ");                    
+            }
+            if (verbose) System.out.println(sb.toString());
+            pr = Runtime.getRuntime().exec(testCmd);
+
+            if (useOutput)
+            {
+                fos = new FileOutputStream(tmpOutFile);
+                bos = new BufferedOutputStream(fos, 1024);
+                prout = 
+                    new ProcessStreamResult(pr.getInputStream(), bos, timeoutStr);
+            }
+            else
+            {
+                fos = new FileOutputStream(stdOutFile);
+                bos = new BufferedOutputStream(fos, 1024);
+                prout = 
+                    new ProcessStreamResult(pr.getInputStream(), bos, timeoutStr);
+            }
+            prerr =
+                new ProcessStreamResult(pr.getErrorStream(), bos, timeoutStr);
+    
+            if (framework != null && ! framework.equals(""))
+                if (verbose) System.out.println("The test should be running...");
+
+			if (timeout != -1) {
+				TimedProcess tp = new TimedProcess(pr);
+				tp.waitFor(timeout*60);
+				pr = null;
+			}
+
+            // determine if the process is done or was interrupted
+            boolean outInterrupt = prout.Wait();
+            boolean errInterrupt = prerr.Wait();                
+                
+            if ( (errInterrupt) || (outInterrupt) )
+            {
+                pwDiff.println("The test timed out...");
+                System.out.println("Test timed out...");
+                pr.destroy();
+                pr = null;
+            }
+
+            fos.close();
+            bos.close();
+            //printWriter.flush();
+            //printWriter.close();
+            if (pr != null)
+            {
+                pr.destroy();
+                pr = null;
+            }
+        }
+        catch(IOException ioe)
+        {
+            System.out.println("IOException: " + ioe.getMessage());
+        }
+        catch(Throwable t)
+        {
+            pwDiff.println("Process exception: " + t);
+            System.out.println("Process exception: " + t.getMessage());
+            t.printStackTrace();
+            if (pr != null)
+            {
+                pr.destroy();
+                pr = null;
+            }
+        }
+    }
+    
+    private static void execTestNoProcess(Properties sysProp,
+        String systemHome, String propString, String scriptPath)
+        throws Exception
+    {
+        // For platforms where executing a process is failing
+        String olduserdir = (String)sysProp.get("user.dir");
+        Properties ptmp = System.getProperties();
+        ptmp.put("derby.system.home", systemHome);
+        ptmp.put("derby.infolog.append", "true");
+        System.setProperties(ptmp);
+    	PrintStream stdout = System.out;
+    	PrintStream stderr = System.err;
+
+	    String pathStr = "";
+
+	    //these calls to getCanonicalPath catch IOExceptions as a workaround to
+	    //a bug in the EPOC jvm. 
+	    try 
+	    { 
+	        pathStr = tmpOutFile.getCanonicalPath().replace(File.separatorChar,fileSep); 
+	    }
+	    catch (IOException e) 
+	    {
+	        FileWriter fw = new FileWriter(tmpOutFile);
+	        fw.close();
+	        pathStr = tmpOutFile.getCanonicalPath().replace(File.separatorChar,fileSep);
+	    }
+
+    	PrintStream ps = new PrintStream(new FileOutputStream(pathStr), true);
+    	System.setOut(ps);
+    	System.setErr(ps);
+    	if (testType.equals("sql"))
+    	{
+    	    String[] ijarg = new String[3];
+            ijarg[0] = "-p";
+            ijarg[1] = propString;
+            ijarg[2] = scriptPath;
+			RunIJ ij = new RunIJ(ijarg);
+			Thread ijThread = new Thread(ij);
+			try
+			{
+				ijThread.start();
+				if (timeout < 0)
+				{
+					ijThread.join();
+				}
+				else
+				{
+				    ijThread.join(timeout * 60 * 1000);
+				}
+			}
+			catch (Exception e)
+			{
+				System.out.println("Aiiie! Got some kind of exception " + e);
+			}
+
+			// Now make sure a shutdown is complete if necessary
+			if (shutdownurl != null)
+			{
+			    String[] sdargs = new String[2];
+			    sdargs[0] = systemHome;
+			    sdargs[1] = shutdownurl;
+			    shutdown.main(sdargs);
+			}
+			// Reset ij.defaultResourcePackage
+			ptmp = System.getProperties();
+                        ptmp.put("ij.defaultResourcePackage", "/org/apache/derbyTesting/");
+			ptmp.put("usesystem", "");
+			System.setProperties(ptmp);
+        }
+        else if (testType.equals("java"))
+        {
+            sysProp.put("user.dir", outDir.getCanonicalPath());
+            javaPath = "org.apache.derbyTesting." + testDirName;
+            String[] args = new String[2];
+            args[0] = "-p";
+            args[1] = propString;
+            Class[] classArray = new Class[1];
+            classArray[0] = args.getClass();
+            String testName = javaPath + "." + testBase;
+            Class JavaTest = Class.forName(testName);
+            // Get the tests's main method and invoke it
+            Method testMain = JavaTest.getMethod("main", classArray);
+            Object[] argObj = new Object[1];
+            argObj[0] = args;
+			RunClass testObject = new RunClass(JavaTest, testMain, argObj);
+			Thread testThread = new Thread(testObject);
+			try
+			{
+				testThread.start();
+				if (timeout < 0)
+				{
+					testThread.join();
+				}
+				else
+				{
+					testThread.join(timeout * 1000);
+				}
+			}
+			catch(Exception e)
+			{
+				System.out.println("Exception upon invoking test..." + e);
+				e.printStackTrace();
+			}
+
+			try 
+			{
+				java.sql.DriverManager.getConnection("jdbc:derby:;shutdown=true");
+			} 
+			catch (java.sql.SQLException e) 
+			{
+				// ignore the errors, they are expected.
+			}
+    		sysProp.put("user.dir", olduserdir);
+        }
+        // here would be placed messages re unittests and multithreaded tests not working with useprocess false
+        ps.close();
+        // Reset System.out and System.err
+        System.setOut(stdout);
+        System.setErr(stderr);
+    }
+
+    static void addSkiptestReason(String reason) {
+		if (skiptestReason.length() > 0)
+			skiptestReason.append(System.getProperty("line.separator","\n"));
+		skiptestReason.append(reason);
+    }
+
+    static boolean verifyFramework (String framework) {
+    	String validFmString = "";
+    	for (int i = 0 ; i < validFrameworks.length; i++)
+    	{
+    	    validFmString   += " " + validFrameworks[i];
+    	    if (validFrameworks[i].equals(framework))
+        		return true;
+	    }
+    	System.err.println("Invalid framework: " + framework);
+	
+    	System.err.println("Valid frameworks are: " + 
+			   validFmString);
+    	return false;
+	
+    }
+
+    /*
+     * method for loading a resource relative to testResourceHome.
+     * @param loc location of file relative to testResourceHome (e.g. master/cast.out)
+     * @return InputStream for the resource
+     */
+    public static InputStream loadTestResource(String loc) {
+        return new Object().getClass().getResourceAsStream(testResourceHome + loc); 
+    }
+    
+    /*
+     * This method replaces the / in the path string with \ for windows
+     * @param path the path string to convert
+     * @return String the new path
+     */
+    private static String convertPathForWin(String path)
+    {
+        String tmp = "a" + path +"a";
+        int i = tmp.indexOf('/');
+        while (i != -1)
+        {
+            //replace the \\ with .
+            tmp = tmp.substring(0, i) + "\\\\" + tmp.substring(i+1);
+            i = tmp.indexOf('/');
+        }
+        //lets remove the a we added
+        tmp = tmp.substring(1, tmp.length()-1);
+        //System.out.println(tmp);
+        
+        return tmp;
+    }
+
+}
+
+

Modified: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/Sed.java
Url: http://svn.apache.org/viewcvs/incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/Sed.java?view=diff&rev=122528&p1=incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/Sed.java&r1=122527&p2=incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/Sed.java&r2=122528
==============================================================================
--- incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/Sed.java	(original)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/Sed.java	Wed Dec 15 22:20:35 2004
@@ -1,484 +1,484 @@
-/*
-
-   Derby - Class org.apache.derbyTesting.functionTests.harness.Sed
-
-   Copyright 1999, 2004 The Apache Software Foundation or its licensors, as applicable.
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-   You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
-
- */
-
-package org.apache.derbyTesting.functionTests.harness;
-
-/***
- * Sed.java
- *
- * This is a version of "sed" in Java for the Cloudscape Function Tests,
- * written using the OROMatcher Perl5 regular expression classes.
- * The substitutions/deletions are based on the original kornshell tests.
- *
- ***/
-
-import java.io.*;
-import java.util.Vector;
-import org.apache.oro.text.regex.*;
-import java.util.Enumeration;
-import java.util.Properties;
-import java.util.StringTokenizer;
-
-public class Sed
-{
-
-    public Sed()
-    {
-    }
-
-    public static void main(String[] args) throws Exception {
-	if (args == null || args.length != 2) {
-		System.err.println("Usage: Sed sourcefile targetfile");
-		System.exit(1);
-	}
-	File src = new File(args[0]);
-	File tgt = new File(args[1]);
-	new Sed().exec(src,tgt,null, false);
-    }
-
-    // The arguments should be the names of the input and output files
-    public void exec(File srcFile, File dstFile, InputStream isSed, boolean isJCC)
-        throws IOException
-    {
-        // Vector for storing lines to be deleted
-        Vector deleteLines = new Vector();
-        deleteLines.addElement("^ij version.*$");
-        deleteLines.addElement("^\\*\\*\\*\\* Test Run Started .* \\*\\*\\*\\*$");
-        deleteLines.addElement("^\\*\\*\\*\\* Test Run Completed .* \\*\\*\\*\\*$");
-        deleteLines.addElement("^ELAPSED TIME = [0-9]* milliseconds$");
-        deleteLines.addElement("^Symantec Java! JustInTime Compiler Version .*$");
-        deleteLines.addElement("^Copyright .* Symantec .*$");
-        deleteLines.addElement("^\\^\\?$");
-        //deleteLines.addElement("^\\.$"); // originally to remove lines with a dot
-        deleteLines.addElement("^S.*ij> $");
-        deleteLines.addElement("^ *$");
-        deleteLines.addElement("^Server StackTrace:$");
-        deleteLines.addElement("^\\[ *$");
-        deleteLines.addElement("^\\] *$");
-        deleteLines.addElement("^\\[$");
-        deleteLines.addElement("^\\]$");
-        deleteLines.addElement("^<not available>\\]$");
-        deleteLines.addElement("^weblogic\\..*$");
-        deleteLines.addElement("^(.*at .*)\\(.*:[0-9].*\\)$");
-        deleteLines.addElement("^(.*at .*)\\(*.java\\)$");
-        deleteLines.addElement("^(.*at .*)\\(Compiled Code\\)$");
-        deleteLines.addElement("^(.*at .*)\\(Interpreted Code\\)$");
-        deleteLines.addElement("^(.*at .*)\\(Unknown Source\\)$");
-        deleteLines.addElement("^(.*at .*)\\(Native Method\\)$");
-        deleteLines.addElement("^.*at weblogic\\..*$");
-        deleteLines.addElement("^\\tat $"); // rare case of incomplete stack trace line
-        deleteLines.addElement("JBMSTours\\.vti\\.jdbc1_2\\.ExternalTable"); // For some reason ArchiveData.out outputs it's errors in random order, sed them both out.
-        deleteLines.addElement("optimizer estimated cost");
-        deleteLines.addElement("optimizer estimated row count");
-        deleteLines.addElement("^WARNING: Cloudscape \\(instance.*$");
-        deleteLines.addElement("^Warning: Cloudscape \\(instance.*$");
-        deleteLines.addElement("Using executables built for native_threads");
-        deleteLines.addElement("Estimate of memory used");
-        deleteLines.addElement("Size of merge runs");
-        deleteLines.addElement("Number of merge runs");
-        deleteLines.addElement("Sort type");
-        deleteLines.addElement("Optimization started at .*$");
-        deleteLines.addElement("WARNING 02000: No row was found for FETCH, UPDATE or DELETE");
-	// deleteLines for stack traces from j9 jvm to match those above for other jvms
- 	deleteLines.addElement("Stack trace:");	
-        deleteLines.addElement("^.*java/.*\\<init\\>\\(.*\\)V");
- 	deleteLines.addElement("^.*org/apache/derby/.*\\(.*\\).*$");	
-	// next for j9 stack trace with jarfiles test run.
- 	deleteLines.addElement("^.*derby/.*\\<.*\\>\\(.*\\).*$");	
- 	deleteLines.addElement("^.*derby/.*\\(.*\\).*$");	
- 	deleteLines.addElement("^.*java/.*\\(.*\\).*$");
-	deleteLines.addElement("^\\[.*db2jcc.jar\\] [0-9].[1-9] - .*$");	
-	deleteLines.addElement("^\\[.*db2jcc_license_c.jar\\] [1-9].[0-9] - .*$");	
-
-        // Vectors for substitutions
-        Vector searchStrings = new Vector();
-        searchStrings.addElement("^WARNING: JBMS \\(instance *");
-        searchStrings.addElement("^Warning: JBMS \\(instance *");
-        searchStrings.addElement("^Transaction:\\(.*\\) *\\|");
-        searchStrings.addElement("^Read [0-9]* of [0-9]* bytes$");
-	// added for ibridge connections
-        searchStrings.addElement("jdbc:derby:informix://localhost:1527/");
-        // This was for wl output; it needs some FIXUP to work
-        // or we need to change the masters (which would be easier)
-        //searchStrings.addElement("\\[B\\@[0-9a-f]");
-        searchStrings.addElement("Directory .*connect.wombat.seg0");
-        searchStrings.addElement("^ij> Warning: Cloudscape \\(instance.*$");
-        searchStrings.addElement("^ij> WARNING: Cloudscape \\(instance.*$");
-        searchStrings.addElement("^ij(\\([0-9]\\))> WARNING: Cloudscape \\(instance.*$");
-        searchStrings.addElement("^ij(\\([0-9]\\))> Warning: Cloudscape \\(instance.*$");
-        deleteLines.addElement("^XSDB.*$");
-        // Filter for constraint names - bug 5622 - our internal constraint names are too long. To be db2 compatible, we have reworked them.
-        StringBuffer constraintNameFilter = new StringBuffer();
-        constraintNameFilter.append("SQL[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]");
-        searchStrings.addElement(constraintNameFilter.toString());
-        // Filter for uuids
-        StringBuffer uuidFilter = new StringBuffer();
-        uuidFilter.append("[0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f]-");
-        uuidFilter.append("[0-9a-f][0-9a-f][0-9a-f][0-9a-f]-");
-        uuidFilter.append("[0-9a-f][0-9a-f][0-9a-f][0-9a-f]-");
-        uuidFilter.append("[0-9a-f][0-9a-f][0-9a-f][0-9a-f]-");
-        uuidFilter.append("[0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f]");
-        searchStrings.addElement(uuidFilter.toString());
-		// Filter for timestamps
-		StringBuffer	timestampFilter = new StringBuffer();
-		timestampFilter.append( "[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9] " );
-		timestampFilter.append( "[0-9][0-9]:[0-9][0-9]:[0-9][0-9].[0-9]* *" );
-		searchStrings.addElement( timestampFilter.toString() );
-		// 3 digit year
-		timestampFilter = new StringBuffer();
-		timestampFilter.append( "[0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9] " );
-		timestampFilter.append( "[0-9][0-9]:[0-9][0-9]:[0-9][0-9].[0-9]* *" );
-		searchStrings.addElement( timestampFilter.toString() );
-		// ibm13 year
-		timestampFilter = new StringBuffer();
-		timestampFilter.append( "[0-9]-[0-9][0-9]-[0-9][0-9] " );
-		timestampFilter.append( "[0-9][0-9]:[0-9][0-9]:[0-9][0-9].[0-9]* *" );
-		searchStrings.addElement( timestampFilter.toString() );
-		searchStrings.addElement("^COM\\.jbms\\..*\\|");
-		// Filter remove transaction id's from deadlock messages
-		searchStrings.addElement("^  Waiting XID : {.*}");
-		searchStrings.addElement("^  Granted XID : .*$");
-		searchStrings.addElement("^The selected victim is XID : .*");
-		// Filters for build numbers
-		searchStrings.addElement("(Cloudscape - DBMS:[A-Za-z]* - [0-9]\\.[0-9]\\.[0-9] - )\\(([0-9]*)\\)");
-		searchStrings.addElement("(beta - )\\(([0-9]*)\\)");
-		searchStrings.addElement("Level2CostEstimateImpl: .*");
-		// Filter for xa tests for the numbers representing the db name (it can change)
-		searchStrings.addElement("^Transaction ([0-9])* : \\(([0-9]*)\\,([0-9a-f]*)\\,([0-9a-f]*)\\)");
-		// Filter for optimizer number for zindexesLevel1 test (due to a change in display width for the test)
-		searchStrings.addElement("^Modifying access paths using optimizer .[0-9]*");
-		searchStrings.addElement("CDWS[0-9]*");
-		searchStrings.addElement("IXWS[0-9]*");
-		searchStrings.addElement("^.*COM.ibm.db2.jdbc.DB2Exception: \\[IBM\\]\\[CLI Driver\\] SQL1013N  The database alias name or database name \".*\\_M\".*");
-		// for j9, to eliminate intermittent failures due to this problem in j9:
-		searchStrings.addElement("FAILED STACK MAP");
-		if (isJCC)
-		{
-			searchStrings.addElement("[ ]*\\|");
-			searchStrings.addElement("^--*");
-		}
-
-		//Filter to suppress absould paths in error message for roll forward recovery tests 
-		searchStrings.addElement("Directory.*.wombat.already.exists");
-
-        Vector subStrings = new Vector();
-        subStrings.addElement("");
-        subStrings.addElement("");
-        subStrings.addElement("Transaction:(XXX)|");
-        subStrings.addElement("Read ... bytes");
-		// for iBridge connections
-        subStrings.addElement("cloudscape:derby:");
-        //subStrings.addElement("Bx"); // originally for 
-        subStrings.addElement("Directory DBLOCATION/seg0");
-        subStrings.addElement("ij> ");
-        subStrings.addElement("ij> ");
-        subStrings.addElement("ij$1> ");
-        subStrings.addElement("ij$1> ");
-        subStrings.addElement("xxxxGENERATED-IDxxxx");
-        subStrings.addElement("xxxxFILTERED-UUIDxxxx");
-        subStrings.addElement("xxxxxxFILTERED-TIMESTAMPxxxxx");
-        subStrings.addElement("xxxxxxFILTERED-TIMESTAMPxxxxx");
-        subStrings.addElement("xxxxxxFILTERED-TIMESTAMPxxxxx");
-        subStrings.addElement("Transaction:(XXX)|");
-		// remove transaction id's from deadlock messages
-		subStrings.addElement("  Waiting XID : {WWW,QQQ}");
-		subStrings.addElement("  Granted XID : {GGG.QQQ}...");
-		subStrings.addElement("The selected victim is XID : VVV");
-		// sub build numbers
-		subStrings.addElement("$1(xxXXxxFILTERED-BUILD-NUMBERxxXXxx)");
-		subStrings.addElement("$1(xxXXxxFILTERED-BUILD-NUMBERxxXXxx)");
-		subStrings.addElement("Level2CostEstimateImpl: xxXXxxFILTERED-INFORMATIONxxXXxx");
-		// sub for db name in xa tests (it can change)
-		subStrings.addElement("Transaction $1 : ($2,FILTERED,FILTERED)");
-		// sub for optimizer number for zindexesLevel1 test
-		subStrings.addElement("Modifying access paths using optimizer FILTERED_NUMBER");
-		subStrings.addElement("CDWSno");
-		subStrings.addElement("IXWSno");
-		subStrings.addElement("COM.ibm.db2.jdbc.DB2Exception: [IBM][CLI Driver] SQL1013N  The database alias name or database name xxxFILTEREDMIRRORDBxxx could not be found.  SQLSTATE=42705");
-		// for j9, to eliminate intermittent failures due to this problem in j9:
-		subStrings.addElement("");
-		// for JCC replace multiple blanks with one blank to handle differences
-		// in display width
-		if (isJCC)
-		{
-			subStrings.addElement(" |");
-			subStrings.addElement("-----");
-		}
-		subStrings.addElement("Directory DBLOCATION/wombat already exists");
-		doWork(srcFile, dstFile, null, deleteLines, searchStrings, subStrings, isSed);
-
-	}
-	// This just does JCC changes on the output master file
-    public void execJCC(InputStream is, File dstFile)
-        throws IOException
-    {
-        // Vector for storing lines to be deleted
-        Vector deleteLines = new Vector();
-
-        // Vectors for substitutions
-        Vector searchStrings = new Vector();
-		searchStrings.addElement("^true[ ]*\\|");
-		searchStrings.addElement("^false[ ]*\\|");
-		searchStrings.addElement("\\|true[ ]*\\|");
-		searchStrings.addElement("\\|false[ ]*\\|");
-		searchStrings.addElement("[ ]*\\|");
-		searchStrings.addElement("^--*");
-
-        Vector subStrings = new Vector();
-		// true and false show up as 1 and 0 in JCC. 
-		//because they have no boolean support
-		subStrings.addElement("1 |");
-		subStrings.addElement("0 |");
-		subStrings.addElement("|1 |");
-		subStrings.addElement("|0 |");
-		subStrings.addElement(" |");
-		subStrings.addElement("-----");
-
-		doWork(null, dstFile, is, deleteLines, searchStrings, subStrings, null);
-
-	}
-	// for rmi, there's a warning about the db, but it's really ok.
-    public void rmiexec(File srcFile, File dstFile, InputStream isSed)
-        throws IOException
-    {
-        // Vector for storing lines to be deleted
-        Vector deleteLines = new Vector();
-		// for Rmi:
-	 	deleteLines.addElement("^.*WARNING: Wierd RMI server URL:.*$");	
-	 	deleteLines.addElement("^.*WARNING 01J01: Database 'wombat' not created, connection made to existing database instead.");	
-
-        Vector searchStrings = new Vector();
-		//searchStrings.addElement("");
-        Vector subStrings = new Vector();
-		//subStrings.addElement("");
-
-		doWork(srcFile, dstFile, null, deleteLines, searchStrings, subStrings, isSed);
-	}
-
-	private void doWork(File srcFile, File dstFile, InputStream is, Vector deleteLines, 
-		Vector searchStrings, Vector subStrings, InputStream isSed)
-        throws IOException
-	{
-		
-        boolean lineDeleted = false;
-        PatternMatcher matcher;
-        Perl5Compiler pcompiler;
-        PatternMatcherInput input;
-        BufferedReader inFile;
-        PrintWriter outFile;
-        String result = "";
-        String regex;
-        Vector delPatternVector = new Vector();
-        Vector subPatternVector = new Vector();
-
-	// ---------------------------------
-        // Try loading the sed properties if they exist (see jdbc_sed.properties as an example)
-        if ( isSed != null )
-        {
-	    Properties sedp = new Properties();
-		
-            sedp.load(isSed);
-	    for (Enumeration e = sedp.propertyNames(); e.hasMoreElements(); )
-		{
-		    String key = (String)e.nextElement();
-		    if (key.equals("substitute"))
-		    {
-			String value = sedp.getProperty(key);
-			// value string contains a comma separated list of patterns
-			StringTokenizer st = new StringTokenizer(value,",");
-			String patternName = ""; 
-			String patName = ""; 
-			String subName = ""; 
-			while (st.hasMoreTokens())
-			{
-			    patternName = st.nextToken();
-			    // pattern;substitute
-			    StringTokenizer st2 = new StringTokenizer(patternName,";");
-			    patName = st2.nextToken();
-			    subName = st2.nextToken();
-			    if (!patName.equals("") && !subName.equals(""))
-			    {
-				searchStrings.addElement(patName);
-				subStrings.addElement(subName);
-			    }
-//System.out.println("pattern = " + patName + " substitute " + subName);
-			}
-		    }
-		    else if (key.equals("delete"))
-		    {
-			String value = sedp.getProperty(key);
-			// value string contains a comma separated list of patterns
-			StringTokenizer st = new StringTokenizer(value,",");
-			String patternName = ""; 
-			while (st.hasMoreTokens())
-			{
-			    patternName = st.nextToken();
-			    deleteLines.addElement(patternName);
-			}
-		    }
-                }
-        }
-	// ---------------------------------
-
-        //Create Perl5Compiler and Perl5Matcher
-        pcompiler = new Perl5Compiler();
-        matcher = new Perl5Matcher();
-
-        // Define the input and output files based on args
-		if (is == null)
-        	inFile = new BufferedReader(new FileReader(srcFile));
-		else
-			inFile = new BufferedReader(new InputStreamReader(is));
-        outFile = new PrintWriter
-            ( new BufferedWriter(new FileWriter(dstFile), 10000), true );
-
-        // Attempt to compile the patterns for deletes
-        for (int i = 0; i < deleteLines.size(); i++)
-        {
-            try
-            {
-                regex = (String)deleteLines.elementAt(i);
-                //System.out.println("The pattern: " + regex);
-                Pattern pattern = pcompiler.compile(regex);
-                if (pattern == null)
-                    System.out.println("pattern is null");
-                delPatternVector.addElement(pattern);
-            }
-            catch(MalformedPatternException e)
-            {
-                System.out.println("Bad pattern.");
-                System.out.println(e.getMessage());
-            }
-        }
-
-        // Attempt to compile the patterns for substitutes
-        for (int i = 0; i < searchStrings.size(); i++)
-        {
-            try
-            {
-                regex = (String)searchStrings.elementAt(i);
-                //System.out.println("The pattern: " + regex);
-                Pattern pattern = pcompiler.compile(regex);
-                if (pattern == null)
-                    System.out.println("pattern is null");
-                subPatternVector.addElement(pattern);
-            }
-            catch(MalformedPatternException e)
-            {
-                System.out.println("Bad pattern.");
-                System.out.println(e.getMessage());
-            }
-        }
-
-        String str;
-        int j;
-        int lineCount = 0;
-        // Read the input file
-        while ( (str = inFile.readLine()) != null )
-        {
-            lineCount++;
-            
-            //System.out.println("***Line no: " + lineCount);
-            //System.out.println("***Line is: " + str);
-            lineDeleted = false;
-
-            // First delete any nulls (Cafe 1.8 leaves nulls)
-            if (str.length() == 1)
-            {
-                if (str.charAt(0) == (char) 0)
-                {
-                    // Skip this line, don't write it
-                    //System.out.println("Skip this line...");
-                    lineDeleted = true;
-                }
-            }
-
-            // Determine if this line should be deleted for delete pattern match
-            if ( lineDeleted == false )
-            {
-                for (j = 0; j < delPatternVector.size(); j++)
-                {
-                    if ( matcher.contains( str, (Pattern)delPatternVector.elementAt(j) ) )
-                    {
-                        //System.out.println("***Match found to delete line***");
-                        String tmpp = ((Pattern)delPatternVector.elementAt(j)).getPattern();
-                        //System.out.println("***Pattern is: " + tmpp);
-
-                        // In this case we are removing the line, so don't write it out
-                        lineDeleted = true;
-                        break;
-                    }
-                }
-            }
-
-            // Determine if any substitutions are needed
-            if (lineDeleted == false)
-            {
-		Substitution substitution;
-		StringSubstitution strsub = new StringSubstitution("");
-		Perl5Substitution perlsub = new Perl5Substitution("");
-                boolean subDone = false;
-                for (j = 0; j < subPatternVector.size(); j++)
-                {
-                    input = new PatternMatcherInput(str);
-                    Pattern patt = (Pattern)subPatternVector.elementAt(j);
-                    String pstr = patt.getPattern();
-                    //System.out.println("Pattern string is " + pstr);
-                    String sub = (String)subStrings.elementAt(j);
-		    if (sub.indexOf("$") > 0)
-		    {
-                        perlsub.setSubstitution(sub);
-                        substitution = (Substitution)perlsub;
-                    } else {
-                        strsub.setSubstitution(sub);
-			substitution = (Substitution)strsub;
-		    }
-                    //System.out.println("Substitute str = " + sub);
-                    if ( matcher.contains( input, patt ) )
-                    {
-                        MatchResult mr = matcher.getMatch();
-                        //System.out.println("***Match found for substitute***");
-                        // In this case we do a substitute
-                        result = Util.substitute(matcher, patt, substitution, str,
-                            Util.SUBSTITUTE_ALL);
-                        //System.out.println("New string: " + result);
-                        //outFile.println(result);
-                        str = result;
-                        subDone = true;
-                    }
-                }
-                if (subDone)
-                {
-                    //System.out.println("write the subbed line");
-                    outFile.println(result);
-                }
-                else
-                {
-                    //System.out.println("Write the str: " + str);
-                    outFile.println(str);
-                    outFile.flush();
-                }
-            }// end if
-        } // end while
-        inFile.close();
-        outFile.flush();
-        outFile.close();
-    }// end exec
-}
+/*
+
+   Derby - Class org.apache.derbyTesting.functionTests.harness.Sed
+
+   Copyright 1999, 2004 The Apache Software Foundation or its licensors, as applicable.
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+ */
+
+package org.apache.derbyTesting.functionTests.harness;
+
+/***
+ * Sed.java
+ *
+ * This is a version of "sed" in Java for the Cloudscape Function Tests,
+ * written using the OROMatcher Perl5 regular expression classes.
+ * The substitutions/deletions are based on the original kornshell tests.
+ *
+ ***/
+
+import java.io.*;
+import java.util.Vector;
+import org.apache.oro.text.regex.*;
+import java.util.Enumeration;
+import java.util.Properties;
+import java.util.StringTokenizer;
+
+public class Sed
+{
+
+    public Sed()
+    {
+    }
+
+    public static void main(String[] args) throws Exception {
+	if (args == null || args.length != 2) {
+		System.err.println("Usage: Sed sourcefile targetfile");
+		System.exit(1);
+	}
+	File src = new File(args[0]);
+	File tgt = new File(args[1]);
+	new Sed().exec(src,tgt,null, false);
+    }
+
+    // The arguments should be the names of the input and output files
+    public void exec(File srcFile, File dstFile, InputStream isSed, boolean isJCC)
+        throws IOException
+    {
+        // Vector for storing lines to be deleted
+        Vector deleteLines = new Vector();
+        deleteLines.addElement("^ij version.*$");
+        deleteLines.addElement("^\\*\\*\\*\\* Test Run Started .* \\*\\*\\*\\*$");
+        deleteLines.addElement("^\\*\\*\\*\\* Test Run Completed .* \\*\\*\\*\\*$");
+        deleteLines.addElement("^ELAPSED TIME = [0-9]* milliseconds$");
+        deleteLines.addElement("^Symantec Java! JustInTime Compiler Version .*$");
+        deleteLines.addElement("^Copyright .* Symantec .*$");
+        deleteLines.addElement("^\\^\\?$");
+        //deleteLines.addElement("^\\.$"); // originally to remove lines with a dot
+        deleteLines.addElement("^S.*ij> $");
+        deleteLines.addElement("^ *$");
+        deleteLines.addElement("^Server StackTrace:$");
+        deleteLines.addElement("^\\[ *$");
+        deleteLines.addElement("^\\] *$");
+        deleteLines.addElement("^\\[$");
+        deleteLines.addElement("^\\]$");
+        deleteLines.addElement("^<not available>\\]$");
+        deleteLines.addElement("^weblogic\\..*$");
+        deleteLines.addElement("^(.*at .*)\\(.*:[0-9].*\\)$");
+        deleteLines.addElement("^(.*at .*)\\(*.java\\)$");
+        deleteLines.addElement("^(.*at .*)\\(Compiled Code\\)$");
+        deleteLines.addElement("^(.*at .*)\\(Interpreted Code\\)$");
+        deleteLines.addElement("^(.*at .*)\\(Unknown Source\\)$");
+        deleteLines.addElement("^(.*at .*)\\(Native Method\\)$");
+        deleteLines.addElement("^.*at weblogic\\..*$");
+        deleteLines.addElement("^\\tat $"); // rare case of incomplete stack trace line
+        deleteLines.addElement("JBMSTours\\.vti\\.jdbc1_2\\.ExternalTable"); // For some reason ArchiveData.out outputs it's errors in random order, sed them both out.
+        deleteLines.addElement("optimizer estimated cost");
+        deleteLines.addElement("optimizer estimated row count");
+        deleteLines.addElement("^WARNING: Cloudscape \\(instance.*$");
+        deleteLines.addElement("^Warning: Cloudscape \\(instance.*$");
+        deleteLines.addElement("Using executables built for native_threads");
+        deleteLines.addElement("Estimate of memory used");
+        deleteLines.addElement("Size of merge runs");
+        deleteLines.addElement("Number of merge runs");
+        deleteLines.addElement("Sort type");
+        deleteLines.addElement("Optimization started at .*$");
+        deleteLines.addElement("WARNING 02000: No row was found for FETCH, UPDATE or DELETE");
+	// deleteLines for stack traces from j9 jvm to match those above for other jvms
+ 	deleteLines.addElement("Stack trace:");	
+        deleteLines.addElement("^.*java/.*\\<init\\>\\(.*\\)V");
+ 	deleteLines.addElement("^.*org/apache/derby/.*\\(.*\\).*$");	
+	// next for j9 stack trace with jarfiles test run.
+ 	deleteLines.addElement("^.*derby/.*\\<.*\\>\\(.*\\).*$");	
+ 	deleteLines.addElement("^.*derby/.*\\(.*\\).*$");	
+ 	deleteLines.addElement("^.*java/.*\\(.*\\).*$");
+	deleteLines.addElement("^\\[.*db2jcc.jar\\] [0-9].[1-9] - .*$");	
+	deleteLines.addElement("^\\[.*db2jcc_license_c.jar\\] [1-9].[0-9] - .*$");	
+
+        // Vectors for substitutions
+        Vector searchStrings = new Vector();
+        searchStrings.addElement("^WARNING: JBMS \\(instance *");
+        searchStrings.addElement("^Warning: JBMS \\(instance *");
+        searchStrings.addElement("^Transaction:\\(.*\\) *\\|");
+        searchStrings.addElement("^Read [0-9]* of [0-9]* bytes$");
+	// added for ibridge connections
+        searchStrings.addElement("jdbc:derby:informix://localhost:1527/");
+        // This was for wl output; it needs some FIXUP to work
+        // or we need to change the masters (which would be easier)
+        //searchStrings.addElement("\\[B\\@[0-9a-f]");
+        searchStrings.addElement("Directory .*connect.wombat.seg0");
+        searchStrings.addElement("^ij> Warning: Cloudscape \\(instance.*$");
+        searchStrings.addElement("^ij> WARNING: Cloudscape \\(instance.*$");
+        searchStrings.addElement("^ij(\\([0-9]\\))> WARNING: Cloudscape \\(instance.*$");
+        searchStrings.addElement("^ij(\\([0-9]\\))> Warning: Cloudscape \\(instance.*$");
+        deleteLines.addElement("^XSDB.*$");
+        // Filter for constraint names - bug 5622 - our internal constraint names are too long. To be db2 compatible, we have reworked them.
+        StringBuffer constraintNameFilter = new StringBuffer();
+        constraintNameFilter.append("SQL[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]");
+        searchStrings.addElement(constraintNameFilter.toString());
+        // Filter for uuids
+        StringBuffer uuidFilter = new StringBuffer();
+        uuidFilter.append("[0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f]-");
+        uuidFilter.append("[0-9a-f][0-9a-f][0-9a-f][0-9a-f]-");
+        uuidFilter.append("[0-9a-f][0-9a-f][0-9a-f][0-9a-f]-");
+        uuidFilter.append("[0-9a-f][0-9a-f][0-9a-f][0-9a-f]-");
+        uuidFilter.append("[0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f]");
+        searchStrings.addElement(uuidFilter.toString());
+		// Filter for timestamps
+		StringBuffer	timestampFilter = new StringBuffer();
+		timestampFilter.append( "[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9] " );
+		timestampFilter.append( "[0-9][0-9]:[0-9][0-9]:[0-9][0-9].[0-9]* *" );
+		searchStrings.addElement( timestampFilter.toString() );
+		// 3 digit year
+		timestampFilter = new StringBuffer();
+		timestampFilter.append( "[0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9] " );
+		timestampFilter.append( "[0-9][0-9]:[0-9][0-9]:[0-9][0-9].[0-9]* *" );
+		searchStrings.addElement( timestampFilter.toString() );
+		// ibm13 year
+		timestampFilter = new StringBuffer();
+		timestampFilter.append( "[0-9]-[0-9][0-9]-[0-9][0-9] " );
+		timestampFilter.append( "[0-9][0-9]:[0-9][0-9]:[0-9][0-9].[0-9]* *" );
+		searchStrings.addElement( timestampFilter.toString() );
+		searchStrings.addElement("^COM\\.jbms\\..*\\|");
+		// Filter remove transaction id's from deadlock messages
+		searchStrings.addElement("^  Waiting XID : {.*}");
+		searchStrings.addElement("^  Granted XID : .*$");
+		searchStrings.addElement("^The selected victim is XID : .*");
+		// Filters for build numbers
+		searchStrings.addElement("(Cloudscape - DBMS:[A-Za-z]* - [0-9]\\.[0-9]\\.[0-9] - )\\(([0-9]*)\\)");
+		searchStrings.addElement("(beta - )\\(([0-9]*)\\)");
+		searchStrings.addElement("Level2CostEstimateImpl: .*");
+		// Filter for xa tests for the numbers representing the db name (it can change)
+		searchStrings.addElement("^Transaction ([0-9])* : \\(([0-9]*)\\,([0-9a-f]*)\\,([0-9a-f]*)\\)");
+		// Filter for optimizer number for zindexesLevel1 test (due to a change in display width for the test)
+		searchStrings.addElement("^Modifying access paths using optimizer .[0-9]*");
+		searchStrings.addElement("CDWS[0-9]*");
+		searchStrings.addElement("IXWS[0-9]*");
+		searchStrings.addElement("^.*COM.ibm.db2.jdbc.DB2Exception: \\[IBM\\]\\[CLI Driver\\] SQL1013N  The database alias name or database name \".*\\_M\".*");
+		// for j9, to eliminate intermittent failures due to this problem in j9:
+		searchStrings.addElement("FAILED STACK MAP");
+		if (isJCC)
+		{
+			searchStrings.addElement("[ ]*\\|");
+			searchStrings.addElement("^--*");
+		}
+
+		//Filter to suppress absould paths in error message for roll forward recovery tests 
+		searchStrings.addElement("Directory.*.wombat.already.exists");
+
+        Vector subStrings = new Vector();
+        subStrings.addElement("");
+        subStrings.addElement("");
+        subStrings.addElement("Transaction:(XXX)|");
+        subStrings.addElement("Read ... bytes");
+		// for iBridge connections
+        subStrings.addElement("cloudscape:derby:");
+        //subStrings.addElement("Bx"); // originally for 
+        subStrings.addElement("Directory DBLOCATION/seg0");
+        subStrings.addElement("ij> ");
+        subStrings.addElement("ij> ");
+        subStrings.addElement("ij$1> ");
+        subStrings.addElement("ij$1> ");
+        subStrings.addElement("xxxxGENERATED-IDxxxx");
+        subStrings.addElement("xxxxFILTERED-UUIDxxxx");
+        subStrings.addElement("xxxxxxFILTERED-TIMESTAMPxxxxx");
+        subStrings.addElement("xxxxxxFILTERED-TIMESTAMPxxxxx");
+        subStrings.addElement("xxxxxxFILTERED-TIMESTAMPxxxxx");
+        subStrings.addElement("Transaction:(XXX)|");
+		// remove transaction id's from deadlock messages
+		subStrings.addElement("  Waiting XID : {WWW,QQQ}");
+		subStrings.addElement("  Granted XID : {GGG.QQQ}...");
+		subStrings.addElement("The selected victim is XID : VVV");
+		// sub build numbers
+		subStrings.addElement("$1(xxXXxxFILTERED-BUILD-NUMBERxxXXxx)");
+		subStrings.addElement("$1(xxXXxxFILTERED-BUILD-NUMBERxxXXxx)");
+		subStrings.addElement("Level2CostEstimateImpl: xxXXxxFILTERED-INFORMATIONxxXXxx");
+		// sub for db name in xa tests (it can change)
+		subStrings.addElement("Transaction $1 : ($2,FILTERED,FILTERED)");
+		// sub for optimizer number for zindexesLevel1 test
+		subStrings.addElement("Modifying access paths using optimizer FILTERED_NUMBER");
+		subStrings.addElement("CDWSno");
+		subStrings.addElement("IXWSno");
+		subStrings.addElement("COM.ibm.db2.jdbc.DB2Exception: [IBM][CLI Driver] SQL1013N  The database alias name or database name xxxFILTEREDMIRRORDBxxx could not be found.  SQLSTATE=42705");
+		// for j9, to eliminate intermittent failures due to this problem in j9:
+		subStrings.addElement("");
+		// for JCC replace multiple blanks with one blank to handle differences
+		// in display width
+		if (isJCC)
+		{
+			subStrings.addElement(" |");
+			subStrings.addElement("-----");
+		}
+		subStrings.addElement("Directory DBLOCATION/wombat already exists");
+		doWork(srcFile, dstFile, null, deleteLines, searchStrings, subStrings, isSed);
+
+	}
+	// This just does JCC changes on the output master file
+    public void execJCC(InputStream is, File dstFile)
+        throws IOException
+    {
+        // Vector for storing lines to be deleted
+        Vector deleteLines = new Vector();
+
+        // Vectors for substitutions
+        Vector searchStrings = new Vector();
+		searchStrings.addElement("^true[ ]*\\|");
+		searchStrings.addElement("^false[ ]*\\|");
+		searchStrings.addElement("\\|true[ ]*\\|");
+		searchStrings.addElement("\\|false[ ]*\\|");
+		searchStrings.addElement("[ ]*\\|");
+		searchStrings.addElement("^--*");
+
+        Vector subStrings = new Vector();
+		// true and false show up as 1 and 0 in JCC. 
+		//because they have no boolean support
+		subStrings.addElement("1 |");
+		subStrings.addElement("0 |");
+		subStrings.addElement("|1 |");
+		subStrings.addElement("|0 |");
+		subStrings.addElement(" |");
+		subStrings.addElement("-----");
+
+		doWork(null, dstFile, is, deleteLines, searchStrings, subStrings, null);
+
+	}
+	// for rmi, there's a warning about the db, but it's really ok.
+    public void rmiexec(File srcFile, File dstFile, InputStream isSed)
+        throws IOException
+    {
+        // Vector for storing lines to be deleted
+        Vector deleteLines = new Vector();
+		// for Rmi:
+	 	deleteLines.addElement("^.*WARNING: Wierd RMI server URL:.*$");	
+	 	deleteLines.addElement("^.*WARNING 01J01: Database 'wombat' not created, connection made to existing database instead.");	
+
+        Vector searchStrings = new Vector();
+		//searchStrings.addElement("");
+        Vector subStrings = new Vector();
+		//subStrings.addElement("");
+
+		doWork(srcFile, dstFile, null, deleteLines, searchStrings, subStrings, isSed);
+	}
+
+	private void doWork(File srcFile, File dstFile, InputStream is, Vector deleteLines, 
+		Vector searchStrings, Vector subStrings, InputStream isSed)
+        throws IOException
+	{
+		
+        boolean lineDeleted = false;
+        PatternMatcher matcher;
+        Perl5Compiler pcompiler;
+        PatternMatcherInput input;
+        BufferedReader inFile;
+        PrintWriter outFile;
+        String result = "";
+        String regex;
+        Vector delPatternVector = new Vector();
+        Vector subPatternVector = new Vector();
+
+	// ---------------------------------
+        // Try loading the sed properties if they exist (see jdbc_sed.properties as an example)
+        if ( isSed != null )
+        {
+	    Properties sedp = new Properties();
+		
+            sedp.load(isSed);
+	    for (Enumeration e = sedp.propertyNames(); e.hasMoreElements(); )
+		{
+		    String key = (String)e.nextElement();
+		    if (key.equals("substitute"))
+		    {
+			String value = sedp.getProperty(key);
+			// value string contains a comma separated list of patterns
+			StringTokenizer st = new StringTokenizer(value,",");
+			String patternName = ""; 
+			String patName = ""; 
+			String subName = ""; 
+			while (st.hasMoreTokens())
+			{
+			    patternName = st.nextToken();
+			    // pattern;substitute
+			    StringTokenizer st2 = new StringTokenizer(patternName,";");
+			    patName = st2.nextToken();
+			    subName = st2.nextToken();
+			    if (!patName.equals("") && !subName.equals(""))
+			    {
+				searchStrings.addElement(patName);
+				subStrings.addElement(subName);
+			    }
+//System.out.println("pattern = " + patName + " substitute " + subName);
+			}
+		    }
+		    else if (key.equals("delete"))
+		    {
+			String value = sedp.getProperty(key);
+			// value string contains a comma separated list of patterns
+			StringTokenizer st = new StringTokenizer(value,",");
+			String patternName = ""; 
+			while (st.hasMoreTokens())
+			{
+			    patternName = st.nextToken();
+			    deleteLines.addElement(patternName);
+			}
+		    }
+                }
+        }
+	// ---------------------------------
+
+        //Create Perl5Compiler and Perl5Matcher
+        pcompiler = new Perl5Compiler();
+        matcher = new Perl5Matcher();
+
+        // Define the input and output files based on args
+		if (is == null)
+        	inFile = new BufferedReader(new FileReader(srcFile));
+		else
+			inFile = new BufferedReader(new InputStreamReader(is));
+        outFile = new PrintWriter
+            ( new BufferedWriter(new FileWriter(dstFile), 10000), true );
+
+        // Attempt to compile the patterns for deletes
+        for (int i = 0; i < deleteLines.size(); i++)
+        {
+            try
+            {
+                regex = (String)deleteLines.elementAt(i);
+                //System.out.println("The pattern: " + regex);
+                Pattern pattern = pcompiler.compile(regex);
+                if (pattern == null)
+                    System.out.println("pattern is null");
+                delPatternVector.addElement(pattern);
+            }
+            catch(MalformedPatternException e)
+            {
+                System.out.println("Bad pattern.");
+                System.out.println(e.getMessage());
+            }
+        }
+
+        // Attempt to compile the patterns for substitutes
+        for (int i = 0; i < searchStrings.size(); i++)
+        {
+            try
+            {
+                regex = (String)searchStrings.elementAt(i);
+                //System.out.println("The pattern: " + regex);
+                Pattern pattern = pcompiler.compile(regex);
+                if (pattern == null)
+                    System.out.println("pattern is null");
+                subPatternVector.addElement(pattern);
+            }
+            catch(MalformedPatternException e)
+            {
+                System.out.println("Bad pattern.");
+                System.out.println(e.getMessage());
+            }
+        }
+
+        String str;
+        int j;
+        int lineCount = 0;
+        // Read the input file
+        while ( (str = inFile.readLine()) != null )
+        {
+            lineCount++;
+            
+            //System.out.println("***Line no: " + lineCount);
+            //System.out.println("***Line is: " + str);
+            lineDeleted = false;
+
+            // First delete any nulls (Cafe 1.8 leaves nulls)
+            if (str.length() == 1)
+            {
+                if (str.charAt(0) == (char) 0)
+                {
+                    // Skip this line, don't write it
+                    //System.out.println("Skip this line...");
+                    lineDeleted = true;
+                }
+            }
+
+            // Determine if this line should be deleted for delete pattern match
+            if ( lineDeleted == false )
+            {
+                for (j = 0; j < delPatternVector.size(); j++)
+                {
+                    if ( matcher.contains( str, (Pattern)delPatternVector.elementAt(j) ) )
+                    {
+                        //System.out.println("***Match found to delete line***");
+                        String tmpp = ((Pattern)delPatternVector.elementAt(j)).getPattern();
+                        //System.out.println("***Pattern is: " + tmpp);
+
+                        // In this case we are removing the line, so don't write it out
+                        lineDeleted = true;
+                        break;
+                    }
+                }
+            }
+
+            // Determine if any substitutions are needed
+            if (lineDeleted == false)
+            {
+		Substitution substitution;
+		StringSubstitution strsub = new StringSubstitution("");
+		Perl5Substitution perlsub = new Perl5Substitution("");
+                boolean subDone = false;
+                for (j = 0; j < subPatternVector.size(); j++)
+                {
+                    input = new PatternMatcherInput(str);
+                    Pattern patt = (Pattern)subPatternVector.elementAt(j);
+                    String pstr = patt.getPattern();
+                    //System.out.println("Pattern string is " + pstr);
+                    String sub = (String)subStrings.elementAt(j);
+		    if (sub.indexOf("$") > 0)
+		    {
+                        perlsub.setSubstitution(sub);
+                        substitution = (Substitution)perlsub;
+                    } else {
+                        strsub.setSubstitution(sub);
+			substitution = (Substitution)strsub;
+		    }
+                    //System.out.println("Substitute str = " + sub);
+                    if ( matcher.contains( input, patt ) )
+                    {
+                        MatchResult mr = matcher.getMatch();
+                        //System.out.println("***Match found for substitute***");
+                        // In this case we do a substitute
+                        result = Util.substitute(matcher, patt, substitution, str,
+                            Util.SUBSTITUTE_ALL);
+                        //System.out.println("New string: " + result);
+                        //outFile.println(result);
+                        str = result;
+                        subDone = true;
+                    }
+                }
+                if (subDone)
+                {
+                    //System.out.println("write the subbed line");
+                    outFile.println(result);
+                }
+                else
+                {
+                    //System.out.println("Write the str: " + str);
+                    outFile.println(str);
+                    outFile.flush();
+                }
+            }// end if
+        } // end while
+        inFile.close();
+        outFile.flush();
+        outFile.close();
+    }// end exec
+}

Modified: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/SimpleDiff.java
Url: http://svn.apache.org/viewcvs/incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/SimpleDiff.java?view=diff&rev=122528&p1=incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/SimpleDiff.java&r1=122527&p2=incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/SimpleDiff.java&r2=122528
==============================================================================
--- incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/SimpleDiff.java	(original)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/SimpleDiff.java	Wed Dec 15 22:20:35 2004
@@ -1,506 +1,506 @@
-/*
-
-   Derby - Class org.apache.derbyTesting.functionTests.harness.SimpleDiff
-
-   Copyright 1999, 2004 The Apache Software Foundation or its licensors, as applicable.
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-   You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
-
- */
-
-//SimpleDiff.java
-package org.apache.derbyTesting.functionTests.harness;
-
-import java.io.IOException;
-import java.io.BufferedInputStream;
-import java.util.Vector;
-import java.io.File;
-import java.io.PrintWriter;
-import java.io.BufferedReader;
-import java.io.FileReader;
-
-public class SimpleDiff
-{
-
-    PrintWriter pw;
-
-    boolean debugOn = Boolean.getBoolean("simplediff.debug");
-    int debugLevel = 1;
-
-    boolean diffsFound = true;
-
-    int lookAhead = 20;
-
-    public void debug(int level, String msg)
-    {
-        if (debugLevel >= level)
-        {
-            debug(msg);
-        }
-    }
-    public void debug(String msg)
-    {
-        if (debugOn)
-        {
-            System.out.println("DEBUG: " + msg);
-        }
-    }
-
-    int lineCount(String file) throws IOException
-    {
-        BufferedReader input = new BufferedReader(new FileReader(file));
-        int count = 0;
-        String aLine = input.readLine();
-        while (aLine != null)
-        {
-            count++;
-            aLine = input.readLine();
-        }
-        input.close();
-        return count;
-    }
-
-
-    public String[] readFile(BufferedReader input) throws IOException
-    {
-
-        Vector vec = new Vector();
-
-        String aLine = "";
-        //int count = 0;
-        aLine = input.readLine();
-        while (aLine != null)
-        {
-            vec.addElement(aLine);
-            //count++;
-            aLine = input.readLine();
-        }
-        input.close();
-
-        String rV[] = new String[vec.size()];
-        //debug(2, ""+count + " lines in " + filename);
-        debug(2, ""+vec.size() + " lines in input");
-        vec.copyInto(rV);
-
-        return rV;
-    }
-
-    public void printFile(String file[])
-    {
-        for (int i = 0; i < file.length; i++)
-        {
-            pw.println(i + ": " + file[i]);
-            System.out.println(i + ": " + file[i]);
-        }
-    }
-
-    public static String usage = "java SimpleDiff <file1> <file2>";
-
-    /**
-        @param filename Name of file to be read
-        @return String array of file contents
-        @exception IOException thrown by underlying calls
-            to the file system
-    */
-
-    public String[] diffFiles(  DiffBuffer file1,
-                                DiffBuffer file2)
-                                throws IOException
-    {
-
-        int currentLine1 = 0;
-        int currentLine2 = 0;
-        Vector returnVec = new Vector();
-
-        while ( file1.isValidOffset(currentLine1) &&
-                file2.isValidOffset(currentLine2))
-        {
-            String f1 = file1.lineAt(currentLine1);
-            String f2 = file2.lineAt(currentLine2);
-
-            if (f1.equals(f2))
-            {
-                debug(1, currentLine1 + ": match");
-                currentLine1++;
-                currentLine2++;
-                file1.setLowWater(currentLine1);
-                file2.setLowWater(currentLine2);
-            }
-            else
-            {
-                boolean foundMatch = false;
-                int checkLine2 = currentLine2;
-                int checkCount = 1;
-//                while ( (currentLine2 + checkCount) < (file2Length - 1) &&
-                while ( file2.isValidOffset(currentLine2 + checkCount) &&
-                        checkCount < lookAhead)
-                {
-                    debug(1, "currentLine1 " + currentLine1 + "  currentLine2 " + (currentLine2 +checkCount));
-                    debug(1, "about to reference file2[" + (currentLine2 + checkCount) + "]");
-                    f2 = file2.lineAt(currentLine2 + checkCount);
-                    debug(2, "did");
-                    if (f1.equals(f2))
-                    {
-                        foundMatch = true;
-                        if (checkCount > 1)
-                        {
-                            returnVec.addElement(currentLine1 + "a" + (currentLine2 + 1) + "," + (currentLine2 + checkCount));
-                        }
-                        else
-                        {
-                            returnVec.addElement(currentLine1 + "a" + (currentLine2 + 1));
-                        }
-
-                        for (int j = 0; j < checkCount; j++)
-                        {
-                            returnVec.addElement("> " +
-                                  file2.lineAt(currentLine2 + j) );
-                        }
-                        currentLine2 = currentLine2 + checkCount;
-                        checkCount = 0;
-
-						// This break statement was commented out, which
-						// caused problems in the diff output.  I don't
-						// know why it was commented out, and uncommenting
-						// it fixed the problem.
-						//
-						//			-	Jeff Lichtman
-						//				March 24, 1999
-                        break;
-                    }
-                    checkCount ++;
-                }
-                if (!foundMatch && file2.isValidOffset(currentLine2))
-                {
-                    int checkLine1 = currentLine1;
-                    checkCount = 1;
-                    f2 = file2.lineAt(currentLine2);
-                    while ( file1.isValidOffset(currentLine1 + checkCount) &&
-                            checkCount < lookAhead)
-                    {
-                        debug(1, "currentLine2 " + currentLine2 + "  currentLine1 " + (currentLine1 + checkCount));
-                        f1 = file1.lineAt(currentLine1 + checkCount);
-                        if ( f2.equals(f1))
-                        {
-                            foundMatch = true;
-                            if (checkCount > 1)
-                            {
-                                returnVec.addElement((currentLine1 + 1) + "," + (currentLine1 + checkCount) + "d" + currentLine2);
-                            }
-                            else
-                            {
-                                returnVec.addElement((currentLine1 + 1) + "d" + currentLine2);
-                            }
-
-                            for (int j = 0; j < checkCount; j++)
-                            {
-                                returnVec.addElement("< " +
-                                      file1.lineAt(currentLine1 + j) );
-
-                            }
-                            currentLine1 = currentLine1 + checkCount;
-                            checkCount = 0;
-                            debug(1, "continuing");
-                            break;
-                        }
-                        checkCount ++;
-                    }
-
-                }
-                if (!foundMatch)
-                {
-                    debug(1, currentLine1 + ": NOMATCH");
-                    returnVec.addElement((currentLine1 + 1) +" del");// + (currentLine2 + 1));
-                    returnVec.addElement("< " + file1.lineAt(currentLine1));
-                    currentLine1++;
-                }
-                else
-                {
-                    currentLine1++;
-                    currentLine2++;
-                    file1.setLowWater(currentLine1);
-                    file2.setLowWater(currentLine2);
-                }
-            }
-        }
-
-        if (file1.isValidOffset(currentLine1))
-        {
-            returnVec.addElement((currentLine2) + " del");
-            for (int i = currentLine1; file1.isValidOffset(i); i++)
-            {
-                returnVec.addElement("< " + file1.lineAt(i));
-            }
-        }
-        if (file2.isValidOffset(currentLine2))
-        {
-            returnVec.addElement((currentLine1) + " add");
-            for (int i = currentLine2; file2.isValidOffset(i); i++)
-            {
-                returnVec.addElement("> " + file2.lineAt(i));
-            }
-        }
-
-        file1.close();
-        file2.close();
-
-        if (returnVec.size() == 0)
-        {
-            return null;
-        }
-
-
-        String [] returnArray = new String[returnVec.size()];
-        returnVec.copyInto(returnArray);
-        return returnArray;
-
-
-    }
-
-    private void reportMemory()
-    {
-        reportMemory(null);
-    }
-
-    private void reportMemory(String header)
-    {
-        if (header != null)
-        {
-            System.out.println(header);
-        }
-        long free = Runtime.getRuntime().freeMemory();
-        long total = Runtime.getRuntime().totalMemory();
-
-        System.out.println("total:         " + total );
-        System.out.println("free:          " + free );
-        System.out.println("used:          " + (total - free));
-        System.gc();
-        System.out.println("used: <postgc> " + (Runtime.getRuntime().totalMemory() - Runtime.getRuntime().freeMemory()));
-        System.out.println("  ");
-    }
-
-    public boolean doWork(BufferedReader in1, BufferedReader in2, PrintWriter localPW) throws IOException
-    {
-        this.pw=(localPW==null?new PrintWriter(System.out):localPW);
-        try
-        {
-            DiffBuffer db1 = new DiffBuffer(in1, "1");
-            DiffBuffer db2 = new DiffBuffer(in2, "2");
-
-            String diffs[] = diffFiles(db1, db2);
-
-            if (diffs == null)
-            {
-                debug(1, "no diff");
-                return false;
-            }
-            else
-            {
-                for (int i = 0; i < diffs.length; i++)
-                {
-                    this.pw.println(diffs[i]);
-                    System.out.println(diffs[i]);
-                }
-            }
-
-        }
-        catch (IOException ioe)
-        {
-            System.err.println("IOException comparing <" + in1 +
-                "> and <" + in2 + ">");
-            System.err.println(ioe);
-
-            this.pw.println("IOException comparing <" + in1 +
-                "> and <" + in2 + ">");
-            this.pw.println(ioe);
-        }
-        return true;
-    }
-    public static void main(String args[]) throws IOException
-    {
-
-        if (args.length < 2)
-        {
-            System.err.println("Invalid number of arguments");
-            System.err.println("Usage: " + usage);
-            System.exit(1);
-        }
-
-        SimpleDiff me = new SimpleDiff();
-
-        try
-        {
-            BufferedReader br1 = new BufferedReader(new FileReader(args[0]));
-            BufferedReader br2 = new BufferedReader(new FileReader(args[1]));
-            me.doWork(br1, br2, null);
-        }
-        catch (IOException ioe)
-        {
-            System.out.println("IOExeption: " + ioe);
-        }
-    }
-
-    public void pause()
-    {
-        BufferedInputStream bis = new BufferedInputStream(System.in);
-        try
-        {
-            bis.read();
-        }
-        catch (IOException ioe)
-        {
-            pw.println("Error trying to pause...");
-            System.out.println("Error trying to pause...");
-        }
-    }
-
-    class DiffBuffer extends Vector
-    {
-
-
-        public boolean atEOF()
-        {
-            return atEnd;
-        }
-
-        public DiffBuffer(BufferedReader rb)
-        {
-            this(rb, "");
-        }
-
-        public DiffBuffer(BufferedReader rb, String name)
-        {
-            this (rb, name, 1024);
-        }
-
-        public DiffBuffer(BufferedReader rb, String name, int size)
-        {
-            super(size);
-            readBuffer = rb;
-            currentLowWater = 0;
-            currentHighWater = -1;
-            oldLow = 0;
-            myName = name;
-            atEnd = false;
-        }
-
-        public boolean isValidOffset(int lineNumber) throws IOException
-        {
-            if (atEnd)
-            {
-                return lineNumber <= actualEndOfFile;
-            }
-
-            if (lineAt(lineNumber) == null)
-            {
-                return false;
-            }
-            return true;
-        }
-
-        public String lineAt(int offset) throws IOException
-        {
-/*
-System.out.println("offset: " + offset);
-System.out.println("currentHighWater: " + currentHighWater);
-System.out.println("");
-*/
-            if (offset > currentHighWater)
-            {
-                for (int i = 0; i < offset - currentHighWater; i++)
-                {
-                    String aLine = readBuffer.readLine();
-                    addElement(aLine);
-/*
-System.out.println("aLine: " + aLine);
-*/
-                    if (aLine == null)
-                    {
-                        if (!atEnd)
-                        {
-                            //first time we've tried to read past the EOF
-                            actualEndOfFile = currentHighWater + i;
-//System.out.println(myName + ": length " + actualEndOfFile);
-                            atEnd = true;
-                        }
-                    }
-                }
-                currentHighWater = offset;
-            }
-            return (String) elementAt(offset);
-        }
-
-
-        public final String EMPTY = null;
-        protected BufferedReader readBuffer;
-        protected int currentLowWater;
-        protected int currentHighWater;
-        private int oldLow;
-        protected String myName;
-        protected boolean atEnd;
-        protected int actualEndOfFile;
-        /**
-            Useful to keep memory requirements low
-         */
-        public void setLowWater(int newLow)
-        {
-
-            for (int i = oldLow; i < newLow; i++)
-            {
-                setElementAt(EMPTY, i);
-            }
-            currentLowWater = newLow;
-            oldLow = newLow -1;
-        }
-
-
-    public void iterate(boolean verbose)
-    {
-        int nulls = 0;
-        int nonnulls = 0;
-
-
-        for (int i = 0; i < this.size(); i++)
-        {
-            if (elementAt(i) == null)
-            {
-                if (verbose)
-                {
-                    System.out.print("[" + i + "] ");
-                    System.out.println("null");
-                }
-                nulls++;
-
-            }
-            else
-            {
-                if (verbose)
-                {
-                    System.out.print("[" + i + "] ");
-                    System.out.println("NotNULL");
-                }
-                nonnulls++;
-            }
-        }
-        System.out.println("nulls: " + nulls + "  nonNull: " + nonnulls);
-    }
-
-    public void close() throws IOException
-    {
-//		System.out.println("Closing BufferedReader");
-        readBuffer.close();
-        readBuffer = null;
-    }
-    }
-
-}
+/*
+
+   Derby - Class org.apache.derbyTesting.functionTests.harness.SimpleDiff
+
+   Copyright 1999, 2004 The Apache Software Foundation or its licensors, as applicable.
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+ */
+
+//SimpleDiff.java
+package org.apache.derbyTesting.functionTests.harness;
+
+import java.io.IOException;
+import java.io.BufferedInputStream;
+import java.util.Vector;
+import java.io.File;
+import java.io.PrintWriter;
+import java.io.BufferedReader;
+import java.io.FileReader;
+
+public class SimpleDiff
+{
+
+    PrintWriter pw;
+
+    boolean debugOn = Boolean.getBoolean("simplediff.debug");
+    int debugLevel = 1;
+
+    boolean diffsFound = true;
+
+    int lookAhead = 20;
+
+    public void debug(int level, String msg)
+    {
+        if (debugLevel >= level)
+        {
+            debug(msg);
+        }
+    }
+    public void debug(String msg)
+    {
+        if (debugOn)
+        {
+            System.out.println("DEBUG: " + msg);
+        }
+    }
+
+    int lineCount(String file) throws IOException
+    {
+        BufferedReader input = new BufferedReader(new FileReader(file));
+        int count = 0;
+        String aLine = input.readLine();
+        while (aLine != null)
+        {
+            count++;
+            aLine = input.readLine();
+        }
+        input.close();
+        return count;
+    }
+
+
+    public String[] readFile(BufferedReader input) throws IOException
+    {
+
+        Vector vec = new Vector();
+
+        String aLine = "";
+        //int count = 0;
+        aLine = input.readLine();
+        while (aLine != null)
+        {
+            vec.addElement(aLine);
+            //count++;
+            aLine = input.readLine();
+        }
+        input.close();
+
+        String rV[] = new String[vec.size()];
+        //debug(2, ""+count + " lines in " + filename);
+        debug(2, ""+vec.size() + " lines in input");
+        vec.copyInto(rV);
+
+        return rV;
+    }
+
+    public void printFile(String file[])
+    {
+        for (int i = 0; i < file.length; i++)
+        {
+            pw.println(i + ": " + file[i]);
+            System.out.println(i + ": " + file[i]);
+        }
+    }
+
+    public static String usage = "java SimpleDiff <file1> <file2>";
+
+    /**
+        @param filename Name of file to be read
+        @return String array of file contents
+        @exception IOException thrown by underlying calls
+            to the file system
+    */
+
+    public String[] diffFiles(  DiffBuffer file1,
+                                DiffBuffer file2)
+                                throws IOException
+    {
+
+        int currentLine1 = 0;
+        int currentLine2 = 0;
+        Vector returnVec = new Vector();
+
+        while ( file1.isValidOffset(currentLine1) &&
+                file2.isValidOffset(currentLine2))
+        {
+            String f1 = file1.lineAt(currentLine1);
+            String f2 = file2.lineAt(currentLine2);
+
+            if (f1.equals(f2))
+            {
+                debug(1, currentLine1 + ": match");
+                currentLine1++;
+                currentLine2++;
+                file1.setLowWater(currentLine1);
+                file2.setLowWater(currentLine2);
+            }
+            else
+            {
+                boolean foundMatch = false;
+                int checkLine2 = currentLine2;
+                int checkCount = 1;
+//                while ( (currentLine2 + checkCount) < (file2Length - 1) &&
+                while ( file2.isValidOffset(currentLine2 + checkCount) &&
+                        checkCount < lookAhead)
+                {
+                    debug(1, "currentLine1 " + currentLine1 + "  currentLine2 " + (currentLine2 +checkCount));
+                    debug(1, "about to reference file2[" + (currentLine2 + checkCount) + "]");
+                    f2 = file2.lineAt(currentLine2 + checkCount);
+                    debug(2, "did");
+                    if (f1.equals(f2))
+                    {
+                        foundMatch = true;
+                        if (checkCount > 1)
+                        {
+                            returnVec.addElement(currentLine1 + "a" + (currentLine2 + 1) + "," + (currentLine2 + checkCount));
+                        }
+                        else
+                        {
+                            returnVec.addElement(currentLine1 + "a" + (currentLine2 + 1));
+                        }
+
+                        for (int j = 0; j < checkCount; j++)
+                        {
+                            returnVec.addElement("> " +
+                                  file2.lineAt(currentLine2 + j) );
+                        }
+                        currentLine2 = currentLine2 + checkCount;
+                        checkCount = 0;
+
+						// This break statement was commented out, which
+						// caused problems in the diff output.  I don't
+						// know why it was commented out, and uncommenting
+						// it fixed the problem.
+						//
+						//			-	Jeff Lichtman
+						//				March 24, 1999
+                        break;
+                    }
+                    checkCount ++;
+                }
+                if (!foundMatch && file2.isValidOffset(currentLine2))
+                {
+                    int checkLine1 = currentLine1;
+                    checkCount = 1;
+                    f2 = file2.lineAt(currentLine2);
+                    while ( file1.isValidOffset(currentLine1 + checkCount) &&
+                            checkCount < lookAhead)
+                    {
+                        debug(1, "currentLine2 " + currentLine2 + "  currentLine1 " + (currentLine1 + checkCount));
+                        f1 = file1.lineAt(currentLine1 + checkCount);
+                        if ( f2.equals(f1))
+                        {
+                            foundMatch = true;
+                            if (checkCount > 1)
+                            {
+                                returnVec.addElement((currentLine1 + 1) + "," + (currentLine1 + checkCount) + "d" + currentLine2);
+                            }
+                            else
+                            {
+                                returnVec.addElement((currentLine1 + 1) + "d" + currentLine2);
+                            }
+
+                            for (int j = 0; j < checkCount; j++)
+                            {
+                                returnVec.addElement("< " +
+                                      file1.lineAt(currentLine1 + j) );
+
+                            }
+                            currentLine1 = currentLine1 + checkCount;
+                            checkCount = 0;
+                            debug(1, "continuing");
+                            break;
+                        }
+                        checkCount ++;
+                    }
+
+                }
+                if (!foundMatch)
+                {
+                    debug(1, currentLine1 + ": NOMATCH");
+                    returnVec.addElement((currentLine1 + 1) +" del");// + (currentLine2 + 1));
+                    returnVec.addElement("< " + file1.lineAt(currentLine1));
+                    currentLine1++;
+                }
+                else
+                {
+                    currentLine1++;
+                    currentLine2++;
+                    file1.setLowWater(currentLine1);
+                    file2.setLowWater(currentLine2);
+                }
+            }
+        }
+
+        if (file1.isValidOffset(currentLine1))
+        {
+            returnVec.addElement((currentLine2) + " del");
+            for (int i = currentLine1; file1.isValidOffset(i); i++)
+            {
+                returnVec.addElement("< " + file1.lineAt(i));
+            }
+        }
+        if (file2.isValidOffset(currentLine2))
+        {
+            returnVec.addElement((currentLine1) + " add");
+            for (int i = currentLine2; file2.isValidOffset(i); i++)
+            {
+                returnVec.addElement("> " + file2.lineAt(i));
+            }
+        }
+
+        file1.close();
+        file2.close();
+
+        if (returnVec.size() == 0)
+        {
+            return null;
+        }
+
+
+        String [] returnArray = new String[returnVec.size()];
+        returnVec.copyInto(returnArray);
+        return returnArray;
+
+
+    }
+
+    private void reportMemory()
+    {
+        reportMemory(null);
+    }
+
+    private void reportMemory(String header)
+    {
+        if (header != null)
+        {
+            System.out.println(header);
+        }
+        long free = Runtime.getRuntime().freeMemory();
+        long total = Runtime.getRuntime().totalMemory();
+
+        System.out.println("total:         " + total );
+        System.out.println("free:          " + free );
+        System.out.println("used:          " + (total - free));
+        System.gc();
+        System.out.println("used: <postgc> " + (Runtime.getRuntime().totalMemory() - Runtime.getRuntime().freeMemory()));
+        System.out.println("  ");
+    }
+
+    public boolean doWork(BufferedReader in1, BufferedReader in2, PrintWriter localPW) throws IOException
+    {
+        this.pw=(localPW==null?new PrintWriter(System.out):localPW);
+        try
+        {
+            DiffBuffer db1 = new DiffBuffer(in1, "1");
+            DiffBuffer db2 = new DiffBuffer(in2, "2");
+
+            String diffs[] = diffFiles(db1, db2);
+
+            if (diffs == null)
+            {
+                debug(1, "no diff");
+                return false;
+            }
+            else
+            {
+                for (int i = 0; i < diffs.length; i++)
+                {
+                    this.pw.println(diffs[i]);
+                    System.out.println(diffs[i]);
+                }
+            }
+
+        }
+        catch (IOException ioe)
+        {
+            System.err.println("IOException comparing <" + in1 +
+                "> and <" + in2 + ">");
+            System.err.println(ioe);
+
+            this.pw.println("IOException comparing <" + in1 +
+                "> and <" + in2 + ">");
+            this.pw.println(ioe);
+        }
+        return true;
+    }
+    public static void main(String args[]) throws IOException
+    {
+
+        if (args.length < 2)
+        {
+            System.err.println("Invalid number of arguments");
+            System.err.println("Usage: " + usage);
+            System.exit(1);
+        }
+
+        SimpleDiff me = new SimpleDiff();
+
+        try
+        {
+            BufferedReader br1 = new BufferedReader(new FileReader(args[0]));
+            BufferedReader br2 = new BufferedReader(new FileReader(args[1]));
+            me.doWork(br1, br2, null);
+        }
+        catch (IOException ioe)
+        {
+            System.out.println("IOExeption: " + ioe);
+        }
+    }
+
+    public void pause()
+    {
+        BufferedInputStream bis = new BufferedInputStream(System.in);
+        try
+        {
+            bis.read();
+        }
+        catch (IOException ioe)
+        {
+            pw.println("Error trying to pause...");
+            System.out.println("Error trying to pause...");
+        }
+    }
+
+    class DiffBuffer extends Vector
+    {
+
+
+        public boolean atEOF()
+        {
+            return atEnd;
+        }
+
+        public DiffBuffer(BufferedReader rb)
+        {
+            this(rb, "");
+        }
+
+        public DiffBuffer(BufferedReader rb, String name)
+        {
+            this (rb, name, 1024);
+        }
+
+        public DiffBuffer(BufferedReader rb, String name, int size)
+        {
+            super(size);
+            readBuffer = rb;
+            currentLowWater = 0;
+            currentHighWater = -1;
+            oldLow = 0;
+            myName = name;
+            atEnd = false;
+        }
+
+        public boolean isValidOffset(int lineNumber) throws IOException
+        {
+            if (atEnd)
+            {
+                return lineNumber <= actualEndOfFile;
+            }
+
+            if (lineAt(lineNumber) == null)
+            {
+                return false;
+            }
+            return true;
+        }
+
+        public String lineAt(int offset) throws IOException
+        {
+/*
+System.out.println("offset: " + offset);
+System.out.println("currentHighWater: " + currentHighWater);
+System.out.println("");
+*/
+            if (offset > currentHighWater)
+            {
+                for (int i = 0; i < offset - currentHighWater; i++)
+                {
+                    String aLine = readBuffer.readLine();
+                    addElement(aLine);
+/*
+System.out.println("aLine: " + aLine);
+*/
+                    if (aLine == null)
+                    {
+                        if (!atEnd)
+                        {
+                            //first time we've tried to read past the EOF
+                            actualEndOfFile = currentHighWater + i;
+//System.out.println(myName + ": length " + actualEndOfFile);
+                            atEnd = true;
+                        }
+                    }
+                }
+                currentHighWater = offset;
+            }
+            return (String) elementAt(offset);
+        }
+
+
+        public final String EMPTY = null;
+        protected BufferedReader readBuffer;
+        protected int currentLowWater;
+        protected int currentHighWater;
+        private int oldLow;
+        protected String myName;
+        protected boolean atEnd;
+        protected int actualEndOfFile;
+        /**
+            Useful to keep memory requirements low
+         */
+        public void setLowWater(int newLow)
+        {
+
+            for (int i = oldLow; i < newLow; i++)
+            {
+                setElementAt(EMPTY, i);
+            }
+            currentLowWater = newLow;
+            oldLow = newLow -1;
+        }
+
+
+    public void iterate(boolean verbose)
+    {
+        int nulls = 0;
+        int nonnulls = 0;
+
+
+        for (int i = 0; i < this.size(); i++)
+        {
+            if (elementAt(i) == null)
+            {
+                if (verbose)
+                {
+                    System.out.print("[" + i + "] ");
+                    System.out.println("null");
+                }
+                nulls++;
+
+            }
+            else
+            {
+                if (verbose)
+                {
+                    System.out.print("[" + i + "] ");
+                    System.out.println("NotNULL");
+                }
+                nonnulls++;
+            }
+        }
+        System.out.println("nulls: " + nulls + "  nonNull: " + nonnulls);
+    }
+
+    public void close() throws IOException
+    {
+//		System.out.println("Closing BufferedReader");
+        readBuffer.close();
+        readBuffer = null;
+    }
+    }
+
+}

Modified: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/SkipTest.java
Url: http://svn.apache.org/viewcvs/incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/SkipTest.java?view=diff&rev=122528&p1=incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/SkipTest.java&r1=122527&p2=incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/SkipTest.java&r2=122528
==============================================================================
--- incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/SkipTest.java	(original)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/SkipTest.java	Wed Dec 15 22:20:35 2004
@@ -1,68 +1,68 @@
-/*
-
-   Derby - Class org.apache.derbyTesting.functionTests.harness.SkipTest
-
-   Copyright 1999, 2004 The Apache Software Foundation or its licensors, as applicable.
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-   You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
-
- */
-
-package org.apache.derbyTesting.functionTests.harness;
-
-import java.util.Properties;
-import java.io.BufferedReader;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-
-
-/**
-  Determine if the named test is one which should not be
-  run in a particular framework (defined by the propFileName).
-  For instance, there could be a nowl.properties for a list of
-  tests which do not currently work under the WebLogic framework.
-  */
-public class SkipTest
-{
- 
-    private SkipTest()
-    {
-    }
-
-    public static boolean skipIt(String listFileName, String testName)
-        throws Exception
-    {
-        boolean answer = false;
-	    InputStream is =
-		RunTest.loadTestResource("suites" + '/' + listFileName);
-        if (is == null)
-        {
-            System.out.println("File not found: " + listFileName);
-            answer = false;
-            return answer;
-        }
-        
-        // Create a BufferedReader to read the list of tests to skip
-        BufferedReader listFile = new BufferedReader(new InputStreamReader(is));
-        String str = "";
-        // Read the list of tests to skip, compare to testName
-        while ( (str = listFile.readLine()) != null )
-        {
-	       if ( (testName.equals(str)) )
-	            answer = true;
-	    }
-        return answer;
-    }
-}
-		
-			
+/*
+
+   Derby - Class org.apache.derbyTesting.functionTests.harness.SkipTest
+
+   Copyright 1999, 2004 The Apache Software Foundation or its licensors, as applicable.
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+ */
+
+package org.apache.derbyTesting.functionTests.harness;
+
+import java.util.Properties;
+import java.io.BufferedReader;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+
+
+/**
+  Determine if the named test is one which should not be
+  run in a particular framework (defined by the propFileName).
+  For instance, there could be a nowl.properties for a list of
+  tests which do not currently work under the WebLogic framework.
+  */
+public class SkipTest
+{
+ 
+    private SkipTest()
+    {
+    }
+
+    public static boolean skipIt(String listFileName, String testName)
+        throws Exception
+    {
+        boolean answer = false;
+	    InputStream is =
+		RunTest.loadTestResource("suites" + '/' + listFileName);
+        if (is == null)
+        {
+            System.out.println("File not found: " + listFileName);
+            answer = false;
+            return answer;
+        }
+        
+        // Create a BufferedReader to read the list of tests to skip
+        BufferedReader listFile = new BufferedReader(new InputStreamReader(is));
+        String str = "";
+        // Read the list of tests to skip, compare to testName
+        while ( (str = listFile.readLine()) != null )
+        {
+	       if ( (testName.equals(str)) )
+	            answer = true;
+	    }
+        return answer;
+    }
+}
+		
+			

Modified: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/SpecialFlags.java
Url: http://svn.apache.org/viewcvs/incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/SpecialFlags.java?view=diff&rev=122528&p1=incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/SpecialFlags.java&r1=122527&p2=incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/SpecialFlags.java&r2=122528
==============================================================================
--- incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/SpecialFlags.java	(original)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/SpecialFlags.java	Wed Dec 15 22:20:35 2004
@@ -1,141 +1,141 @@
-/*
-
-   Derby - Class org.apache.derbyTesting.functionTests.harness.SpecialFlags
-
-   Copyright 1999, 2004 The Apache Software Foundation or its licensors, as applicable.
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-   You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
-
- */
-
-package org.apache.derbyTesting.functionTests.harness;
-
-import java.util.Enumeration;
-import java.util.Properties;
-import java.util.StringTokenizer;
-
-/**
-    Parse testJavaFlags for RunTest
-    These are special properties that might be
-    set for a suite or test, and they can be
-    either ij properties or server properties
-    which is why they need to be parsed
-*/
-
-public class SpecialFlags
-{
-
-    public static Properties getSpecialProperties(Properties suiteProperties)
-    {
-        // Save any special properties which can be used by a
-        // suite for ij or server properties (not in the usual list)
-
-        // Define the "usual" properties to exclude from special props
-        // FIXME: These should be in a file or something to make it
-        // easier to add to this
-        String[] excludeList = new String[32];
-        excludeList[0] = "jvm";
-        excludeList[1] = "classpath";
-        excludeList[2] = "classpathServer";
-        excludeList[3] = "framework";
-        excludeList[4] = "usesystem";
-        excludeList[5] = "useprocess";
-        excludeList[6] = "outputdir";
-        excludeList[7] = "replication";
-        excludeList[8] = "keepfiles";
-        excludeList[9] = "mtestdir";
-        excludeList[10] = "suites";
-        excludeList[11] = "searchCP";
-        excludeList[12] = "useoutput";
-        excludeList[13] = "suitename";
-        excludeList[14] = "cleanfiles";
-        excludeList[15] = "systemdiff";
-        excludeList[16] = "jvmflags";
-        excludeList[17] = "testJavaFlags";
-        excludeList[18] = "ij.defaultResourcePackage";
-        excludeList[19] = "outcopy";
-        excludeList[20] = "verbose";
-        excludeList[21] = "canondir";
-        excludeList[22] = "timeout";
-        excludeList[23] = "encryption";
-        excludeList[24] = "javaCmd";
-        excludeList[25] = "topreportdir";
-        excludeList[26] = "jarfile";
-        excludeList[27] = "upgradetest";
-        excludeList[28] = "jdk12test";
-        excludeList[29] = "jdk12exttest";
-        excludeList[30] = "skipsed";
-		excludeList[31] = "sourceEnv";
-
-        Properties p = new Properties();
-
-        for (Enumeration e = suiteProperties.propertyNames(); e.hasMoreElements();)
-        {
-            boolean exclude = false;
-            String key = (String)e.nextElement();
-            for ( int i = 0; i < excludeList.length; i++ )
-            {
-                if ( excludeList[i].equals(key) )
-                {
-                    exclude = true;
-                    break;
-                }
-            }
-            if ( exclude == false )
-            {
-                String value = suiteProperties.getProperty(key);
-                p.put(key,value);
-            }
-        }
-        return p;
-    }
-
-	public static void parse(String flags,
-	    Properties ijProps, Properties srvProps)
-	{
-	    // flags is a list of key-value pairs separated by a ^;
-	    // to be parsed and added to either ijProps or srvProps
-	    StringTokenizer st = new StringTokenizer(flags, "^");
-	    String str = "";
-	    String key = "";
-	    String value = "";
-	    while (st.hasMoreTokens())
-	    {
-	        str = st.nextToken();
-            // System.out.println("TOKEN:"+str);
-	        key = str.substring( 0, str.indexOf("=") );
-	        value = str.substring( (str.indexOf("=") + 1) );
-	        if ( str.startsWith("derby") )
-	        {
-	            // This is a server property
-	            // Note that some can have a list of values
-	            if ( key.equals("derby.debug.true") ||
-	                 key.equals("derby.infolog.streams") )
-	            {
-	                String currval = srvProps.getProperty(key);
-	                if ( (currval != null) && (currval.length()>0) )
-	                {
-	                    value = value + "," + currval;
-	                }
-	            }
-	            srvProps.put(key,value);
-	        }
-	        else
-	            // This is an ij property
-	            ijProps.put(key,value);
-        }
-	}
-
-	// no instances permitted.
-	private SpecialFlags(){}
-}
+/*
+
+   Derby - Class org.apache.derbyTesting.functionTests.harness.SpecialFlags
+
+   Copyright 1999, 2004 The Apache Software Foundation or its licensors, as applicable.
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+ */
+
+package org.apache.derbyTesting.functionTests.harness;
+
+import java.util.Enumeration;
+import java.util.Properties;
+import java.util.StringTokenizer;
+
+/**
+    Parse testJavaFlags for RunTest
+    These are special properties that might be
+    set for a suite or test, and they can be
+    either ij properties or server properties
+    which is why they need to be parsed
+*/
+
+public class SpecialFlags
+{
+
+    public static Properties getSpecialProperties(Properties suiteProperties)
+    {
+        // Save any special properties which can be used by a
+        // suite for ij or server properties (not in the usual list)
+
+        // Define the "usual" properties to exclude from special props
+        // FIXME: These should be in a file or something to make it
+        // easier to add to this
+        String[] excludeList = new String[32];
+        excludeList[0] = "jvm";
+        excludeList[1] = "classpath";
+        excludeList[2] = "classpathServer";
+        excludeList[3] = "framework";
+        excludeList[4] = "usesystem";
+        excludeList[5] = "useprocess";
+        excludeList[6] = "outputdir";
+        excludeList[7] = "replication";
+        excludeList[8] = "keepfiles";
+        excludeList[9] = "mtestdir";
+        excludeList[10] = "suites";
+        excludeList[11] = "searchCP";
+        excludeList[12] = "useoutput";
+        excludeList[13] = "suitename";
+        excludeList[14] = "cleanfiles";
+        excludeList[15] = "systemdiff";
+        excludeList[16] = "jvmflags";
+        excludeList[17] = "testJavaFlags";
+        excludeList[18] = "ij.defaultResourcePackage";
+        excludeList[19] = "outcopy";
+        excludeList[20] = "verbose";
+        excludeList[21] = "canondir";
+        excludeList[22] = "timeout";
+        excludeList[23] = "encryption";
+        excludeList[24] = "javaCmd";
+        excludeList[25] = "topreportdir";
+        excludeList[26] = "jarfile";
+        excludeList[27] = "upgradetest";
+        excludeList[28] = "jdk12test";
+        excludeList[29] = "jdk12exttest";
+        excludeList[30] = "skipsed";
+		excludeList[31] = "sourceEnv";
+
+        Properties p = new Properties();
+
+        for (Enumeration e = suiteProperties.propertyNames(); e.hasMoreElements();)
+        {
+            boolean exclude = false;
+            String key = (String)e.nextElement();
+            for ( int i = 0; i < excludeList.length; i++ )
+            {
+                if ( excludeList[i].equals(key) )
+                {
+                    exclude = true;
+                    break;
+                }
+            }
+            if ( exclude == false )
+            {
+                String value = suiteProperties.getProperty(key);
+                p.put(key,value);
+            }
+        }
+        return p;
+    }
+
+	public static void parse(String flags,
+	    Properties ijProps, Properties srvProps)
+	{
+	    // flags is a list of key-value pairs separated by a ^;
+	    // to be parsed and added to either ijProps or srvProps
+	    StringTokenizer st = new StringTokenizer(flags, "^");
+	    String str = "";
+	    String key = "";
+	    String value = "";
+	    while (st.hasMoreTokens())
+	    {
+	        str = st.nextToken();
+            // System.out.println("TOKEN:"+str);
+	        key = str.substring( 0, str.indexOf("=") );
+	        value = str.substring( (str.indexOf("=") + 1) );
+	        if ( str.startsWith("derby") )
+	        {
+	            // This is a server property
+	            // Note that some can have a list of values
+	            if ( key.equals("derby.debug.true") ||
+	                 key.equals("derby.infolog.streams") )
+	            {
+	                String currval = srvProps.getProperty(key);
+	                if ( (currval != null) && (currval.length()>0) )
+	                {
+	                    value = value + "," + currval;
+	                }
+	            }
+	            srvProps.put(key,value);
+	        }
+	        else
+	            // This is an ij property
+	            ijProps.put(key,value);
+        }
+	}
+
+	// no instances permitted.
+	private SpecialFlags(){}
+}

Modified: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/SysInfoLog.java
Url: http://svn.apache.org/viewcvs/incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/SysInfoLog.java?view=diff&rev=122528&p1=incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/SysInfoLog.java&r1=122527&p2=incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/SysInfoLog.java&r2=122528
==============================================================================
--- incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/SysInfoLog.java	(original)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/SysInfoLog.java	Wed Dec 15 22:20:35 2004
@@ -1,131 +1,131 @@
-/*
-
-   Derby - Class org.apache.derbyTesting.functionTests.harness.SysInfoLog
-
-   Copyright 1999, 2004 The Apache Software Foundation or its licensors, as applicable.
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-   You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
-
- */
-
-package org.apache.derbyTesting.functionTests.harness;
-
-/***
- * SysInfoLog
- * Purpose: For a Suite or Test run, write out the
- * sysinfo to the suite or test output file
- *
- ***/
-
-import java.io.*;
-import java.util.Vector;
-
-public class SysInfoLog
-{
-
-    public SysInfoLog()
-    {
-    }
-
-    // Write out sysinfo for a suite or test
-    public void exec(String jvmName, String javaCmd, String classpath,
-        String framework, PrintWriter pw, boolean useprocess)
-        throws Exception
-	{
-        if ( useprocess == true )
-        {
-            // Create a process to run sysinfo
-    		Process pr = null;
-			jvm javavm = null; // to quiet the compiler
-    		try
-    		{
-                // Create the command line
-                //System.out.println("jvmName: " + jvmName);
-                if ( (jvmName == null) || (jvmName.length()==0) )
-                    jvmName = "jdk13";
-                else if (jvmName.startsWith("jdk13"))
-                    jvmName = "jdk31";
-
-				javavm = jvm.getJvm(jvmName);
-                if (javaCmd != null)
-                    javavm.setJavaCmd(javaCmd);
-				
-                if (javavm == null) System.out.println("WHOA, javavm is NULL");
-                if (javavm == null) pw.println("WHOA, javavm is NULL");
-
-                if ( (classpath != null) && (classpath.length()>0) )
-                {
-                    javavm.setClasspath(classpath);
-                }
-
-				Vector v = javavm.getCommandLine();
-                v.addElement("org.apache.derby.tools.sysinfo");
-                // Now convert the vector into a string array
-                String[] sCmd = new String[v.size()];
-                for (int i = 0; i < v.size(); i++)
-                {
-                    sCmd[i] = (String)v.elementAt(i);
-                    //System.out.println(sCmd[i]);
-                }
-                
-                pr = Runtime.getRuntime().exec(sCmd);
-
-                // 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(), pw);
-                pw.flush();
-
-                if ( (framework != null) && (framework.length()>0) )
-                {
-                    pw.println("Framework: " + framework);
-                }
-
-                pr.destroy();
-                pr = null;
-            }
-            catch(Throwable t)
-            {
-                if (javavm == null) System.out.println("WHOA, javavm is NULL");
-                if (javavm == null) pw.println("WHOA, javavm is NULL");
-                System.out.println("Process exception: " + t);
-                pw.println("Process exception: " + t);
-                t.printStackTrace(pw);
-                if (pr != null)
-                {
-                    pr.destroy();
-                    pr = null;
-                }
-            }
-        }
-        else
-        {
-            // For platforms where process exec fails or hangs
-            // useprocess=false and attempt to get some info
-            /*
-            pw.println(org.apache.derby.impl.tools.sysinfo.Main.javaSep);
-            org.apache.derby.impl.tools.sysinfo.Main.reportCloudscape(pw);
-            pw.println(org.apache.derby.impl.tools.sysinfo.Main.jbmsSep);
-            org.apache.derby.impl.tools.sysinfo.Main.reportCloudscape(pw);
-            pw.println(org.apache.derby.impl.tools.sysinfo.Main.licSep);
-            org.apache.derby.impl.tools.sysinfo.Main.printLicenseFile(pw);
-            */
-        }
-    }
-}
-
+/*
+
+   Derby - Class org.apache.derbyTesting.functionTests.harness.SysInfoLog
+
+   Copyright 1999, 2004 The Apache Software Foundation or its licensors, as applicable.
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+ */
+
+package org.apache.derbyTesting.functionTests.harness;
+
+/***
+ * SysInfoLog
+ * Purpose: For a Suite or Test run, write out the
+ * sysinfo to the suite or test output file
+ *
+ ***/
+
+import java.io.*;
+import java.util.Vector;
+
+public class SysInfoLog
+{
+
+    public SysInfoLog()
+    {
+    }
+
+    // Write out sysinfo for a suite or test
+    public void exec(String jvmName, String javaCmd, String classpath,
+        String framework, PrintWriter pw, boolean useprocess)
+        throws Exception
+	{
+        if ( useprocess == true )
+        {
+            // Create a process to run sysinfo
+    		Process pr = null;
+			jvm javavm = null; // to quiet the compiler
+    		try
+    		{
+                // Create the command line
+                //System.out.println("jvmName: " + jvmName);
+                if ( (jvmName == null) || (jvmName.length()==0) )
+                    jvmName = "jdk13";
+                else if (jvmName.startsWith("jdk13"))
+                    jvmName = "jdk31";
+
+				javavm = jvm.getJvm(jvmName);
+                if (javaCmd != null)
+                    javavm.setJavaCmd(javaCmd);
+				
+                if (javavm == null) System.out.println("WHOA, javavm is NULL");
+                if (javavm == null) pw.println("WHOA, javavm is NULL");
+
+                if ( (classpath != null) && (classpath.length()>0) )
+                {
+                    javavm.setClasspath(classpath);
+                }
+
+				Vector v = javavm.getCommandLine();
+                v.addElement("org.apache.derby.tools.sysinfo");
+                // Now convert the vector into a string array
+                String[] sCmd = new String[v.size()];
+                for (int i = 0; i < v.size(); i++)
+                {
+                    sCmd[i] = (String)v.elementAt(i);
+                    //System.out.println(sCmd[i]);
+                }
+                
+                pr = Runtime.getRuntime().exec(sCmd);
+
+                // 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(), pw);
+                pw.flush();
+
+                if ( (framework != null) && (framework.length()>0) )
+                {
+                    pw.println("Framework: " + framework);
+                }
+
+                pr.destroy();
+                pr = null;
+            }
+            catch(Throwable t)
+            {
+                if (javavm == null) System.out.println("WHOA, javavm is NULL");
+                if (javavm == null) pw.println("WHOA, javavm is NULL");
+                System.out.println("Process exception: " + t);
+                pw.println("Process exception: " + t);
+                t.printStackTrace(pw);
+                if (pr != null)
+                {
+                    pr.destroy();
+                    pr = null;
+                }
+            }
+        }
+        else
+        {
+            // For platforms where process exec fails or hangs
+            // useprocess=false and attempt to get some info
+            /*
+            pw.println(org.apache.derby.impl.tools.sysinfo.Main.javaSep);
+            org.apache.derby.impl.tools.sysinfo.Main.reportCloudscape(pw);
+            pw.println(org.apache.derby.impl.tools.sysinfo.Main.jbmsSep);
+            org.apache.derby.impl.tools.sysinfo.Main.reportCloudscape(pw);
+            pw.println(org.apache.derby.impl.tools.sysinfo.Main.licSep);
+            org.apache.derby.impl.tools.sysinfo.Main.printLicenseFile(pw);
+            */
+        }
+    }
+}
+

Modified: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/TimedProcess.java
Url: http://svn.apache.org/viewcvs/incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/TimedProcess.java?view=diff&rev=122528&p1=incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/TimedProcess.java&r1=122527&p2=incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/TimedProcess.java&r2=122528
==============================================================================
--- incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/TimedProcess.java	(original)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/TimedProcess.java	Wed Dec 15 22:20:35 2004
@@ -1,109 +1,109 @@
-/*
-
-   Derby - Class org.apache.derbyTesting.functionTests.harness.TimedProcess
-
-   Copyright 2000, 2004 The Apache Software Foundation or its licensors, as applicable.
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-   You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
-
- */
-
-package org.apache.derbyTesting.functionTests.harness;
-
-/**
- * This class is a wrapper of Process to provide a waitFor() method
- * that forcibly terminates the process if it does not
- * complete within the specified time.
- *
- * @author Phil Lopez
- * 
- */
-public class TimedProcess
-{
-
-  private Process process;
-
-  public TimedProcess(Process process)
-  {
-    this.process = process;
-  }
-
-  public int waitFor(int sec)
-  {
-    int exitValue = -1;
-
-    // Create a thread to wait for the process to die
-    WaitForProcess t = new WaitForProcess(process);
-    t.start();
-    
-    // Give the process sec seconds to terminate
-    try
-    {
-      t.join(sec * 1000);
-
-      // Otherwise, interrupt the thread...
-      if (t.isAlive())
-      {
-        t.interrupt();
-        
-        System.err.println("Server Process did not complete in time. Destroying...");
-        // ...and destroy the process with gusto
-        process.destroy();
-      }
-      else
-      {
-        // process shut down, so it is right to get the exit value from it
-        exitValue = t.getProcessExitValue();
-      }
-    }
-    catch (InterruptedException e)
-    {
-      e.printStackTrace();
-    }
-  
-    return exitValue;
-  }
-} // public class TimedProcess
-
-
-class WaitForProcess
-  extends Thread
-{
-  private Process process;
-  private int processExitValue;
-  
-  public WaitForProcess(Process process)
-  {
-    this.process = process;
-  }
-
-  public int getProcessExitValue()
-  {
-    return processExitValue;
-  }
-
-  public void run()
-  {
-    // Our whole goal in life here is to waitFor() the process.
-    // However, we're actually going to catch the InterruptedException for it!
-    try
-    {
-      processExitValue = process.waitFor();
-    }
-    catch (InterruptedException e)
-    {
-      // Don't do anything here; the thread will die of natural causes
-    }
-  }
-} // class WaitForProcess
-
+/*
+
+   Derby - Class org.apache.derbyTesting.functionTests.harness.TimedProcess
+
+   Copyright 2000, 2004 The Apache Software Foundation or its licensors, as applicable.
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+ */
+
+package org.apache.derbyTesting.functionTests.harness;
+
+/**
+ * This class is a wrapper of Process to provide a waitFor() method
+ * that forcibly terminates the process if it does not
+ * complete within the specified time.
+ *
+ * @author Phil Lopez
+ * 
+ */
+public class TimedProcess
+{
+
+  private Process process;
+
+  public TimedProcess(Process process)
+  {
+    this.process = process;
+  }
+
+  public int waitFor(int sec)
+  {
+    int exitValue = -1;
+
+    // Create a thread to wait for the process to die
+    WaitForProcess t = new WaitForProcess(process);
+    t.start();
+    
+    // Give the process sec seconds to terminate
+    try
+    {
+      t.join(sec * 1000);
+
+      // Otherwise, interrupt the thread...
+      if (t.isAlive())
+      {
+        t.interrupt();
+        
+        System.err.println("Server Process did not complete in time. Destroying...");
+        // ...and destroy the process with gusto
+        process.destroy();
+      }
+      else
+      {
+        // process shut down, so it is right to get the exit value from it
+        exitValue = t.getProcessExitValue();
+      }
+    }
+    catch (InterruptedException e)
+    {
+      e.printStackTrace();
+    }
+  
+    return exitValue;
+  }
+} // public class TimedProcess
+
+
+class WaitForProcess
+  extends Thread
+{
+  private Process process;
+  private int processExitValue;
+  
+  public WaitForProcess(Process process)
+  {
+    this.process = process;
+  }
+
+  public int getProcessExitValue()
+  {
+    return processExitValue;
+  }
+
+  public void run()
+  {
+    // Our whole goal in life here is to waitFor() the process.
+    // However, we're actually going to catch the InterruptedException for it!
+    try
+    {
+      processExitValue = process.waitFor();
+    }
+    catch (InterruptedException e)
+    {
+      // Don't do anything here; the thread will die of natural causes
+    }
+  }
+} // class WaitForProcess
+

Modified: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/UnJar.java
Url: http://svn.apache.org/viewcvs/incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/UnJar.java?view=diff&rev=122528&p1=incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/UnJar.java&r1=122527&p2=incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/UnJar.java&r2=122528
==============================================================================
--- incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/UnJar.java	(original)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/UnJar.java	Wed Dec 15 22:20:35 2004
@@ -1,101 +1,101 @@
-/*
-
-   Derby - Class org.apache.derbyTesting.functionTests.harness.UnJar
-
-   Copyright 1999, 2004 The Apache Software Foundation or its licensors, as applicable.
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-   You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
-
- */
-
-package org.apache.derbyTesting.functionTests.harness;
-
-import java.io.*;
-
-/**
-  The upgrade tests use jar files containing older version
-  databases. These need to be "unjarred" in order to do the tests.
-  */
-public class UnJar
-{
- 
-    public UnJar()
-    {
-    }
-    
-    public static void main(String args[]) throws Exception
-    {
-        UnJar uj = new UnJar();
-        uj.unjar(args[0], null, true);
-    }
-    
-    public static void unjar(String jarname, String outputdir, boolean useprocess)
-        throws ClassNotFoundException, IOException
-    {
-        if (outputdir == null)
-            outputdir = System.getProperty("user.dir");
-        
-	    InputStream is =
-            RunTest.loadTestResource("upgrade" + '/' + jarname);
-        if (is == null)
-        {
-            System.out.println("File not found: " + jarname);
-            System.exit(1);
-        }
-        
-        // Copy to the current directory in order to unjar it
-        //System.out.println("Copy the jarfile to: " + outputdir);
-        File jarFile = new File((new File(outputdir, jarname)).getCanonicalPath());
-        //System.out.println("jarFile: " + jarFile.getPath());
-    	FileOutputStream fos = new FileOutputStream(jarFile);
-        byte[] data = new byte[1024];
-        int len;
-    	while ((len = is.read(data)) != -1)
-    	{
-    	    fos.write(data, 0, len);
-    	}
-    	fos.close();
-        
-        // Now unjar the file
-        String jarCmd = "jar xf " + jarFile.getPath();
-        if ( useprocess == true )
-        {
-            // Now execute the jar command
-            Process pr = null;
-        	try
-        	{
-        		//System.out.println("Use process to execute: " + jarCmd);
-                pr = Runtime.getRuntime().exec(jarCmd);
-                
-                pr.waitFor();
-                //System.out.println("Process done.");
-                pr.destroy();
-            }
-            catch(Throwable t)
-            {
-                System.out.println("Process exception: " + t.getMessage());
-                if (pr != null)
-                {
-                    pr.destroy();
-                    pr = null;
-                }
-            }
-        }
-        else
-        {
-            System.out.println("Jar not implemented yet with useprocess=false");
-        }
-    }
-}
-		
-			
+/*
+
+   Derby - Class org.apache.derbyTesting.functionTests.harness.UnJar
+
+   Copyright 1999, 2004 The Apache Software Foundation or its licensors, as applicable.
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+ */
+
+package org.apache.derbyTesting.functionTests.harness;
+
+import java.io.*;
+
+/**
+  The upgrade tests use jar files containing older version
+  databases. These need to be "unjarred" in order to do the tests.
+  */
+public class UnJar
+{
+ 
+    public UnJar()
+    {
+    }
+    
+    public static void main(String args[]) throws Exception
+    {
+        UnJar uj = new UnJar();
+        uj.unjar(args[0], null, true);
+    }
+    
+    public static void unjar(String jarname, String outputdir, boolean useprocess)
+        throws ClassNotFoundException, IOException
+    {
+        if (outputdir == null)
+            outputdir = System.getProperty("user.dir");
+        
+	    InputStream is =
+            RunTest.loadTestResource("upgrade" + '/' + jarname);
+        if (is == null)
+        {
+            System.out.println("File not found: " + jarname);
+            System.exit(1);
+        }
+        
+        // Copy to the current directory in order to unjar it
+        //System.out.println("Copy the jarfile to: " + outputdir);
+        File jarFile = new File((new File(outputdir, jarname)).getCanonicalPath());
+        //System.out.println("jarFile: " + jarFile.getPath());
+    	FileOutputStream fos = new FileOutputStream(jarFile);
+        byte[] data = new byte[1024];
+        int len;
+    	while ((len = is.read(data)) != -1)
+    	{
+    	    fos.write(data, 0, len);
+    	}
+    	fos.close();
+        
+        // Now unjar the file
+        String jarCmd = "jar xf " + jarFile.getPath();
+        if ( useprocess == true )
+        {
+            // Now execute the jar command
+            Process pr = null;
+        	try
+        	{
+        		//System.out.println("Use process to execute: " + jarCmd);
+                pr = Runtime.getRuntime().exec(jarCmd);
+                
+                pr.waitFor();
+                //System.out.println("Process done.");
+                pr.destroy();
+            }
+            catch(Throwable t)
+            {
+                System.out.println("Process exception: " + t.getMessage());
+                if (pr != null)
+                {
+                    pr.destroy();
+                    pr = null;
+                }
+            }
+        }
+        else
+        {
+            System.out.println("Jar not implemented yet with useprocess=false");
+        }
+    }
+}
+		
+			

Modified: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/build.xml
Url: http://svn.apache.org/viewcvs/incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/build.xml?view=diff&rev=122528&p1=incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/build.xml&r1=122527&p2=incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/build.xml&r2=122528
==============================================================================
--- incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/build.xml	(original)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/build.xml	Wed Dec 15 22:20:35 2004
@@ -1,84 +1,84 @@
-<?xml version="1.0"?>
-
-<!-- ==================================================================== -->
-<!--                       Derby build file                          -->
-<!-- ==================================================================== -->
-
-<project default="FTharness" basedir="../../../../../../.." >
-
-<!-- ==================================================================== -->
-<!--                           Set properties                             -->
-<!-- ==================================================================== -->
-
-  <!-- Set property lib dir -->
-  <property name="properties.dir" value="${basedir}/tools/ant/properties" />
-
-  <!-- User settings -->
-  <property file="${user.home}/ant.properties"/>
-
-  <!-- Significant dirs -->
-  <property file="${properties.dir}/dirs.properties"/>
-  <property file="${properties.dir}/derbytesting.properties"/>
-
-  <!-- Compiler settings -->
-  <property file="${properties.dir}/defaultcompiler.properties"/>
-
-  <property file="${properties.dir}/${build.compiler}.properties"/>
-
-  <!-- Parser properties -->
-  <property file="${properties.dir}/parser.properties"/>
-
-  <!-- Compile-time classpath properties files -->
-  <property file="${properties.dir}/extrapath.properties"/>
-  <property file="${properties.dir}/compilepath.properties"/>
-
-  <!-- Release and Version info -->
-  <property file="${properties.dir}/release.properties"/>
-
-  <!-- derby testing specific properties files -->
-  <property file="${ant.home}/properties/derbytesting.properties"/>
-  <property file="${user.home}/properties/derbytesting.properties"/>
-  <property name="this.dir" value="${derby.testing.functest.dir}/harness"/>
-
-<!--             ============ Begin Targets ==============                -->
- 
-  <target name="FTharness" depends="init,compile,copyfiles"/>
-
-  <target name="init">
-    <mkdir dir="${out.dir}/${derby.testing.functest.dir}/harness"/>
-  </target>
-
-  <target name="compile">
-    <javac
-      bootclasspath="${empty}"
-      nowarn="on"
-      debug="${debug}"
-      depend="${depend}"
-      deprecation="${deprecation}"
-      optimize="${optimize}"
-      proceed="${proceed}"
-      verbose="${verbose}" 
-      srcdir="${derby.testing.src.dir}"
-      destdir="${out.dir}">
-      <classpath>
-        <pathelement location="${oro}"/>
-        <pathelement path="${compile.classpath}"/>
-      </classpath>
-        <include name="${this.dir}/*.java"/> 
-    </javac>
-  </target>
-
-  <target name="copyfiles">
-    <copy todir="${out.dir}/${derby.testing.functest.dir}/harness">
-      <fileset dir="${derby.testing.src.dir}/${derby.testing.functest.dir}/harness" 
-        includesfile="${derby.testing.src.dir}/${derby.testing.functest.dir}/harness/copyfiles.ant"/> 
-    </copy>
-  </target> 
-
-
-<!--             ============= End Targets ==============                -->
-
-<!--             ============= End Project ==============                -->
-
-</project>
-
+<?xml version="1.0"?>
+
+<!-- ==================================================================== -->
+<!--                       Derby build file                          -->
+<!-- ==================================================================== -->
+
+<project default="FTharness" basedir="../../../../../../.." >
+
+<!-- ==================================================================== -->
+<!--                           Set properties                             -->
+<!-- ==================================================================== -->
+
+  <!-- Set property lib dir -->
+  <property name="properties.dir" value="${basedir}/tools/ant/properties" />
+
+  <!-- User settings -->
+  <property file="${user.home}/ant.properties"/>
+
+  <!-- Significant dirs -->
+  <property file="${properties.dir}/dirs.properties"/>
+  <property file="${properties.dir}/derbytesting.properties"/>
+
+  <!-- Compiler settings -->
+  <property file="${properties.dir}/defaultcompiler.properties"/>
+
+  <property file="${properties.dir}/${build.compiler}.properties"/>
+
+  <!-- Parser properties -->
+  <property file="${properties.dir}/parser.properties"/>
+
+  <!-- Compile-time classpath properties files -->
+  <property file="${properties.dir}/extrapath.properties"/>
+  <property file="${properties.dir}/compilepath.properties"/>
+
+  <!-- Release and Version info -->
+  <property file="${properties.dir}/release.properties"/>
+
+  <!-- derby testing specific properties files -->
+  <property file="${ant.home}/properties/derbytesting.properties"/>
+  <property file="${user.home}/properties/derbytesting.properties"/>
+  <property name="this.dir" value="${derby.testing.functest.dir}/harness"/>
+
+<!--             ============ Begin Targets ==============                -->
+ 
+  <target name="FTharness" depends="init,compile,copyfiles"/>
+
+  <target name="init">
+    <mkdir dir="${out.dir}/${derby.testing.functest.dir}/harness"/>
+  </target>
+
+  <target name="compile">
+    <javac
+      bootclasspath="${empty}"
+      nowarn="on"
+      debug="${debug}"
+      depend="${depend}"
+      deprecation="${deprecation}"
+      optimize="${optimize}"
+      proceed="${proceed}"
+      verbose="${verbose}" 
+      srcdir="${derby.testing.src.dir}"
+      destdir="${out.dir}">
+      <classpath>
+        <pathelement location="${oro}"/>
+        <pathelement path="${compile.classpath}"/>
+      </classpath>
+        <include name="${this.dir}/*.java"/> 
+    </javac>
+  </target>
+
+  <target name="copyfiles">
+    <copy todir="${out.dir}/${derby.testing.functest.dir}/harness">
+      <fileset dir="${derby.testing.src.dir}/${derby.testing.functest.dir}/harness" 
+        includesfile="${derby.testing.src.dir}/${derby.testing.functest.dir}/harness/copyfiles.ant"/> 
+    </copy>
+  </target> 
+
+
+<!--             ============= End Targets ==============                -->
+
+<!--             ============= End Project ==============                -->
+
+</project>
+

Modified: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/copyfiles.ant
Url: http://svn.apache.org/viewcvs/incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/copyfiles.ant?view=diff&rev=122528&p1=incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/copyfiles.ant&r1=122527&p2=incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/copyfiles.ant&r2=122528
==============================================================================
--- incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/copyfiles.ant	(original)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/copyfiles.ant	Wed Dec 15 22:20:35 2004
@@ -1,2 +1,2 @@
-needPosition.properties
-testtypes.properties
+needPosition.properties
+testtypes.properties

Modified: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/currentjvm.java
Url: http://svn.apache.org/viewcvs/incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/currentjvm.java?view=diff&rev=122528&p1=incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/currentjvm.java&r1=122527&p2=incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/currentjvm.java&r2=122528
==============================================================================
--- incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/currentjvm.java	(original)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/currentjvm.java	Wed Dec 15 22:20:35 2004
@@ -1,108 +1,108 @@
-/*
-
-   Derby - Class org.apache.derbyTesting.functionTests.harness.currentjvm
-
-   Copyright 1999, 2004 The Apache Software Foundation or its licensors, as applicable.
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-   You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
-
- */
-
-package org.apache.derbyTesting.functionTests.harness;
-
-import java.util.Vector;
-import java.util.StringTokenizer;
-
-/**
-  <p>This class is for whatever java is in the current classpath
-
-  @author ames
- */
-
-public class currentjvm extends jvm {
-
-	public String getName() {return "currentjvm";}
-    public currentjvm(boolean noasyncgc, boolean verbosegc, boolean noclassgc,
-    long ss, long oss, long ms, long mx, String classpath, String prof,
-    boolean verify, boolean noverify, boolean nojit, Vector D) {
-        super(noasyncgc,verbosegc,noclassgc,ss,oss,ms,mx,classpath,prof,
-		verify,noverify,nojit,D);
-    }
-    // more typical use:
-    public currentjvm(String classpath, Vector D) {
-        super(classpath,D);
-    }
-    // more typical use:
-    public currentjvm(long ms, long mx, String classpath, Vector D) {
-        super(ms,mx,classpath,D);
-    }
-    // actual use
-    public currentjvm() { }
-
-    // return the command line to invoke this VM.  The caller then adds
-    // the class and program arguments.
-    public Vector getCommandLine() 
-    {
-        StringBuffer sb = new StringBuffer();
-        Vector v = super.getCommandLine();
-        appendOtherFlags(sb);
-        String s = sb.toString();
-        StringTokenizer st = new StringTokenizer(s);
-        while (st.hasMoreTokens())
-        {
-            v.addElement(st.nextToken());
-        }
-        return v;
-    }
-
-    public void appendOtherFlags(StringBuffer sb)
-    {
-        if (noasyncgc) sb.append(" -noasyncgc");
-        if (verbosegc) sb.append(" -verbosegc");
-        if (noclassgc) sb.append(" -noclassgc");
-        if (ss>=0) {
-          sb.append(" -ss");
-          sb.append(ss);
-        }
-        if (oss>=0) {
-          sb.append(" -oss");
-          sb.append(oss);
-        }
-        if (ms>=0) {
-          sb.append(" -ms");
-          sb.append(ms);
-        }
-        if (mx>=0) {
-          sb.append(" -mx");
-          sb.append(mx);
-        }
-        if (classpath!=null) {
-          sb.append(" -classpath ");
-          sb.append(classpath);
-        }
-        if (prof!=null) {
-          sb.append(" -prof:");
-          sb.append(prof);
-        }
-        if (verify) sb.append(" -verify");
-        if (noverify) sb.append(" -noverify");
-        if (nojit) sb.append(" -nojit");
-        if (D!=null)
-          for (int i=0; i<D.size();i++) {
-	        sb.append(" -D");
-	        sb.append((String)(D.elementAt(i)));
-          }
-    }
-
-	public String getDintro() { return "-D"; }
-}
+/*
+
+   Derby - Class org.apache.derbyTesting.functionTests.harness.currentjvm
+
+   Copyright 1999, 2004 The Apache Software Foundation or its licensors, as applicable.
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+ */
+
+package org.apache.derbyTesting.functionTests.harness;
+
+import java.util.Vector;
+import java.util.StringTokenizer;
+
+/**
+  <p>This class is for whatever java is in the current classpath
+
+  @author ames
+ */
+
+public class currentjvm extends jvm {
+
+	public String getName() {return "currentjvm";}
+    public currentjvm(boolean noasyncgc, boolean verbosegc, boolean noclassgc,
+    long ss, long oss, long ms, long mx, String classpath, String prof,
+    boolean verify, boolean noverify, boolean nojit, Vector D) {
+        super(noasyncgc,verbosegc,noclassgc,ss,oss,ms,mx,classpath,prof,
+		verify,noverify,nojit,D);
+    }
+    // more typical use:
+    public currentjvm(String classpath, Vector D) {
+        super(classpath,D);
+    }
+    // more typical use:
+    public currentjvm(long ms, long mx, String classpath, Vector D) {
+        super(ms,mx,classpath,D);
+    }
+    // actual use
+    public currentjvm() { }
+
+    // return the command line to invoke this VM.  The caller then adds
+    // the class and program arguments.
+    public Vector getCommandLine() 
+    {
+        StringBuffer sb = new StringBuffer();
+        Vector v = super.getCommandLine();
+        appendOtherFlags(sb);
+        String s = sb.toString();
+        StringTokenizer st = new StringTokenizer(s);
+        while (st.hasMoreTokens())
+        {
+            v.addElement(st.nextToken());
+        }
+        return v;
+    }
+
+    public void appendOtherFlags(StringBuffer sb)
+    {
+        if (noasyncgc) sb.append(" -noasyncgc");
+        if (verbosegc) sb.append(" -verbosegc");
+        if (noclassgc) sb.append(" -noclassgc");
+        if (ss>=0) {
+          sb.append(" -ss");
+          sb.append(ss);
+        }
+        if (oss>=0) {
+          sb.append(" -oss");
+          sb.append(oss);
+        }
+        if (ms>=0) {
+          sb.append(" -ms");
+          sb.append(ms);
+        }
+        if (mx>=0) {
+          sb.append(" -mx");
+          sb.append(mx);
+        }
+        if (classpath!=null) {
+          sb.append(" -classpath ");
+          sb.append(classpath);
+        }
+        if (prof!=null) {
+          sb.append(" -prof:");
+          sb.append(prof);
+        }
+        if (verify) sb.append(" -verify");
+        if (noverify) sb.append(" -noverify");
+        if (nojit) sb.append(" -nojit");
+        if (D!=null)
+          for (int i=0; i<D.size();i++) {
+	        sb.append(" -D");
+	        sb.append((String)(D.elementAt(i)));
+          }
+    }
+
+	public String getDintro() { return "-D"; }
+}

Modified: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/dbcleanup.java
Url: http://svn.apache.org/viewcvs/incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/dbcleanup.java?view=diff&rev=122528&p1=incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/dbcleanup.java&r1=122527&p2=incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/dbcleanup.java&r2=122528
==============================================================================
--- incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/dbcleanup.java	(original)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/dbcleanup.java	Wed Dec 15 22:20:35 2004
@@ -1,379 +1,379 @@
-/*
-
-   Derby - Class org.apache.derbyTesting.functionTests.harness.dbcleanup
-
-   Copyright 2000, 2004 The Apache Software Foundation or its licensors, as applicable.
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-   You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
-
- */
-
-package org.apache.derbyTesting.functionTests.harness;
-
-import java.sql.Connection;
-import java.sql.DriverManager;
-import java.sql.Statement;
-import java.sql.PreparedStatement;
-import java.sql.ResultSet;
-import java.sql.ResultSetMetaData;
-import java.sql.SQLException;
-import java.sql.SQLWarning;
-import java.io.*;
-import java.util.*;
-import java.lang.Long;
-import java.util.Vector;
-
-import org.apache.derby.tools.JDBCDisplayUtil;
-
-/*
- **
- ** dbcleanup
- **
- ** Preliminary version:
- **	gets rid of all the items in a database except those that
- **	are present when a fresh database is created.  There are
- **	some gaps still-- sync objects, and I have not done SYSFILES.
- **	I have probably missed other things as well.  At present this
- **	is hardwired for jdbc:derby:wombat, the focus of our
- **	attention in the embedded tests.
- **
- */
-public class dbcleanup {
-
-	static String dbURL = "jdbc:derby:wombat";
-	static String driver = "org.apache.derby.jdbc.EmbeddedDriver";
-	static boolean dbIsDirty = false;
-
-	int thread_id;
-	int ind = 0;
-
-	public static void main(String[] args) throws SQLException, IOException,
-		InterruptedException, Exception {
-		doit(true);
-	}
-
-	public static void doit(boolean dbIsNew) throws SQLException, IOException,
-		InterruptedException, Exception {
-
-		Connection conn = null;
-		Statement s = null;
-		ResultSet rs = null;
-		boolean finished = false;	
-		Date d = new Date();
-
-        	Properties dbclProps = System.getProperties();
-		String systemHome = dbclProps.getProperty("user.dir") + File.separatorChar +
-			"testCSHome";
-        	dbclProps.put("derby.system.home", systemHome);
-        	System.setProperties(dbclProps);
-
-		boolean useprocess = true;
-		String up = dbclProps.getProperty("useprocess");
-		if (up != null && up.equals("false"))
-			useprocess = false;		
-		
-    		PrintStream stdout = System.out;
-    		PrintStream stderr = System.err;
-
-		Class.forName(driver).newInstance();
-
-		if (dbIsNew) {
-		try {
-			conn = DriverManager.getConnection(dbURL +
-				";create=true");
-			conn.setAutoCommit(false);
-			System.out.println("created " + dbURL + " " + d);
-//FIX: temporarily we will always cleanup, so skip the shutdown
-//			conn.close();
-			// shutdown required only if 2 processes access database
-//			if (useprocess) doshutdown();
-		//	return;
-		} catch (SQLException  se) {
-			System.out.println("connect failed for " + dbURL);
-			JDBCDisplayUtil.ShowException(System.out, se);
-			System.exit(1);
-		}
-		}
-		else {
-		try {
-			conn = DriverManager.getConnection(dbURL);
-			conn.setAutoCommit(false);
-			System.out.println("connected to " + dbURL + " " + d);
-		} catch (SQLException  se) {
-			System.out.println("connect failed for " + dbURL);
-			JDBCDisplayUtil.ShowException(System.out, se);
-			System.exit(1);
-		}
-		}
-
-		d = new Date();
-		System.out.println("dbcleanup starting: " + d);
-
-		Enumeration schemalist = null;
-		Enumeration list = null;
-		Vector schemavec = new Vector();
-		Vector tablevec = null;
-		// get a list of the user schemas
-		try {
-			s = conn.createStatement();
-			rs = s.executeQuery( " select schemaname from sys.sysschemas " +
-				" where schemaname <> 'SYS'"); 
-			while (rs.next()) { 
-				schemavec.addElement(new String(rs.getString(1)));
-			}
-			rs.close();
-			if (schemavec.size() > 1) {
-				// there is at least one schema to clean up
-				dbIsDirty = true;
-			}
-		} catch (SQLException  se) {
-			System.out.println("select schemas: FAIL -- unexpected exception:");
-			JDBCDisplayUtil.ShowException(System.out, se);
-			System.exit(1);
-		}
-
-		// for each user schema, drop the objects
-		String schema = null;
-		String n = null;
-		boolean viewdependencyFound = false;
-		boolean tabledependencyFound = false;
-		Vector viewvec = null;
-		int count = 0;
-		for (schemalist = schemavec.elements(); schemalist.hasMoreElements();) {
-			schema = (String)schemalist.nextElement();
-			for (viewdependencyFound = true; viewdependencyFound;){
-				viewdependencyFound = false;
-				viewvec = findTables(conn, s, 'V', schema);
-				//for (list = viewvec.elements(); list.hasMoreElements();)
-				//	System.out.println("\t" + list.nextElement());
-				if (viewvec.size() > 0) {
-					System.out.println("schema " + schema);
-					viewdependencyFound = dropTables(conn, s, viewvec, "view");
-				}
-			}
-
-			for (tabledependencyFound = true; tabledependencyFound;){
-				tabledependencyFound = false;
-				tablevec = findTables(conn, s, 'T', schema);
-				if (tablevec.size() > 0) {
-					System.out.println("schema " + schema);
-					tabledependencyFound = 
-						dropTables(conn, s, tablevec, "table");
-				}
-			}
-
-			Vector stmtvec = new Vector();
-			try {
-				rs = s.executeQuery( " select stmtname " +
-					" from sys.sysstatements t, sys.sysschemas  s " +
-					" where t.schemaid = s.schemaid " +
-					" and s.schemaname = '" + schema + "'");
-				for (count = 0; rs.next(); count++) { 
-					dbIsDirty = true;
-					stmtvec.addElement(new String(rs.getString(1)));
-				}
-				rs.close();
-			} catch (SQLException  se) {
-				System.out.println("select statements: FAIL -- unexpected exception:");
-				JDBCDisplayUtil.ShowException(System.out, se);
-				System.exit(1);
-			}
-
-			if (count > 1) {
-			try {
-				System.out.println("schema " + schema);
-				System.out.println("dropping leftover statements: ");
-				for (list = stmtvec.elements(); list.hasMoreElements();) {
-					n = (String)list.nextElement();
-					s.execute("drop statement " + n);
-					conn.commit();
-					System.out.println("\t" + n);
-				}
-			} catch (SQLException  se) {
-				System.out.println("drop statement: FAIL -- unexpected exception:");
-				JDBCDisplayUtil.ShowException(System.out, se);
-				System.exit(1);
-			}
-			}
-		}
-		// drop every user schema except APP
-		if (schemavec.size() > 1) {
-		System.out.println("dropping extra user schemas: ");
-		schemalist = null;
-		for (schemalist = schemavec.elements(); schemalist.hasMoreElements();) {
-			schema = (String)schemalist.nextElement();
-			if (schema.equals("APP")) continue;
-			if (schema == null) {
-				System.out.println("null schema in schemalist");
-				continue;
-			}
-			try {
-				System.out.println("\t" + schema);
-				s.execute("drop schema \"" + schema + "\"");
-			} catch (SQLException  se) {
-				System.out.println("drop schema: FAIL -- unexpected exception:");
-				JDBCDisplayUtil.ShowException(System.out, se);
-				System.exit(1);
-			}
-		}
-		}
-		// drop all method aliases
-		dropAliases(conn, 'M');
-		dropAliases(conn, 'C');
-
-		// DEBUG: help figure out what's going on with extra entries in sysdepends
-		try {
-			rs = s.executeQuery("select count (*) from sys.sysdepends");
-			if (rs.next()) {
-				int i = rs.getInt(1);
-				if (i > 0)
-					System.out.println("found " + i + " leftover dependencies");
-			}
-		} catch (SQLException  se) {
-			System.out.println("drop schema: FAIL -- unexpected exception:");
-			JDBCDisplayUtil.ShowException(System.out, se);
-			System.exit(1);
-		}
-
-		// shutdown required only if 2 processes access database
-		if (useprocess) doshutdown();
-		//conn.close();
-		d = new Date();
-		System.out.println("dbcleanup finished: " + d);
-	}
-
-	static void doshutdown() {
-		Connection conn = null;
-		try {
-			conn = DriverManager.getConnection(dbURL +
-				";shutdown=true");
-		} catch (SQLException  se) {
-			if (se.getSQLState().equals("08006")){
-				System.out.println("shutting down " + dbURL);
-			}
-			else {
-				System.out.println("shutdown failed for " + dbURL);
-				JDBCDisplayUtil.ShowException(System.out, se);
-				System.exit(1);
-			}
-		}
-	}
-
-	static boolean dropTables(Connection conn, Statement s, Vector tablevec,
-		String tabletype) throws Exception {
-
-		boolean dependencyFound = false;
-		String n = null;
-
-		String objtype = null;
-		System.out.println("dropping " + tabletype + "(s)");
-
-		for (Enumeration list = tablevec.elements(); list.hasMoreElements();) {
-			n = (String)list.nextElement();
-			try {
-				s.execute("drop " + tabletype + " " + n);
-				conn.commit();
-				System.out.println("\t" + n);
-			} catch (SQLException  se) {
-				if (se.getSQLState().equals("X0Y25")){
-					dependencyFound=true;
-					//System.out.println("error X0Y25: " + se.getMessage());
-					System.out.println(n + " not droped due to dependency, will retry a bit later");
-				}
-				else if (se.getSQLState().equals("X0Y23")){
-					dependencyFound=true;
-					//System.out.println("error X0Y23: " + se.getMessage());
-					System.out.println(n + " not droped due to dependency, will retry a bit later");
-				}
-				else {
-					System.out.println("drop table: FAIL -- unexpected exception:");
-					JDBCDisplayUtil.ShowException(System.out, se);
-					System.exit(1);
-		//FIX exits
-				}
-			}
-		}
-		return(dependencyFound);
-	}
-
-	static  Vector findTables(Connection conn, Statement s, char c, String schema) throws Exception {
-
-		ResultSet rs = null;
-		Vector tableviewvec = new Vector();
-
-		try {
-			rs = s.executeQuery( " select t.tablename " +
-				" from sys.systables t, sys.sysschemas  s " +
-				" where t.schemaid = s.schemaid " +
-				" and t.tabletype = '" + c + "'" +
-				" and s.schemaname = '" + schema + "'" );
-			while (rs.next()) { 
-				dbIsDirty = true;
-				tableviewvec.addElement(new String(rs.getString(1)));
-			}
-			rs.close();
-		} catch (SQLException  se) {
-			System.out.println("select tables: FAIL -- unexpected exception:");
-			JDBCDisplayUtil.ShowException(System.out, se);
-			System.exit(1);
-		//FIX exits
-		}
-		return(tableviewvec);
-	}
-
-	static void dropAliases (Connection conn, char aliastype) throws Exception {
-		
-		ResultSet rs = null;
-		Statement s = null;
-		String typestring = null;
-		Vector aliasvec = new Vector();
-		String n = null;
-		int count = 0;
-
-		if (aliastype == 'M') typestring = "method";
-		else if (aliastype == 'C') typestring = "class";
-
-		try {
-			s = conn.createStatement();
-			rs = s.executeQuery("select alias, aliastype from sys.sysaliases " +
-				" where systemalias = false " + 
-				" and aliastype = '" + aliastype + "'");
-			for (count = 0; rs.next(); count++) {
-				dbIsDirty = true;
-				aliasvec.addElement(new String(rs.getString(1)));
-			}
-			rs.close();
-			conn.commit();
-		} catch (SQLException  se) {
-			System.out.println("drop alias: FAIL -- unexpected exception:");
-			JDBCDisplayUtil.ShowException(System.out, se);
-			System.exit(1);
-		}
-
-		if (count > 1) {
-		System.out.println("dropping user aliases, type " + typestring + ": ");
-		for (Enumeration list = aliasvec.elements(); list.hasMoreElements();) {
-			n = (String)list.nextElement();
-			try {
-				s.execute("drop " + typestring + " alias " + n);
-			} catch (SQLException  se) {
-				System.out.println("drop alias: FAIL -- unexpected exception:");
-				JDBCDisplayUtil.ShowException(System.out, se);
-				System.exit(1);
-			}
-			conn.commit();
-			System.out.println("\t" + n);
-		}
-		}
-	}
-}
+/*
+
+   Derby - Class org.apache.derbyTesting.functionTests.harness.dbcleanup
+
+   Copyright 2000, 2004 The Apache Software Foundation or its licensors, as applicable.
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+ */
+
+package org.apache.derbyTesting.functionTests.harness;
+
+import java.sql.Connection;
+import java.sql.DriverManager;
+import java.sql.Statement;
+import java.sql.PreparedStatement;
+import java.sql.ResultSet;
+import java.sql.ResultSetMetaData;
+import java.sql.SQLException;
+import java.sql.SQLWarning;
+import java.io.*;
+import java.util.*;
+import java.lang.Long;
+import java.util.Vector;
+
+import org.apache.derby.tools.JDBCDisplayUtil;
+
+/*
+ **
+ ** dbcleanup
+ **
+ ** Preliminary version:
+ **	gets rid of all the items in a database except those that
+ **	are present when a fresh database is created.  There are
+ **	some gaps still-- sync objects, and I have not done SYSFILES.
+ **	I have probably missed other things as well.  At present this
+ **	is hardwired for jdbc:derby:wombat, the focus of our
+ **	attention in the embedded tests.
+ **
+ */
+public class dbcleanup {
+
+	static String dbURL = "jdbc:derby:wombat";
+	static String driver = "org.apache.derby.jdbc.EmbeddedDriver";
+	static boolean dbIsDirty = false;
+
+	int thread_id;
+	int ind = 0;
+
+	public static void main(String[] args) throws SQLException, IOException,
+		InterruptedException, Exception {
+		doit(true);
+	}
+
+	public static void doit(boolean dbIsNew) throws SQLException, IOException,
+		InterruptedException, Exception {
+
+		Connection conn = null;
+		Statement s = null;
+		ResultSet rs = null;
+		boolean finished = false;	
+		Date d = new Date();
+
+        	Properties dbclProps = System.getProperties();
+		String systemHome = dbclProps.getProperty("user.dir") + File.separatorChar +
+			"testCSHome";
+        	dbclProps.put("derby.system.home", systemHome);
+        	System.setProperties(dbclProps);
+
+		boolean useprocess = true;
+		String up = dbclProps.getProperty("useprocess");
+		if (up != null && up.equals("false"))
+			useprocess = false;		
+		
+    		PrintStream stdout = System.out;
+    		PrintStream stderr = System.err;
+
+		Class.forName(driver).newInstance();
+
+		if (dbIsNew) {
+		try {
+			conn = DriverManager.getConnection(dbURL +
+				";create=true");
+			conn.setAutoCommit(false);
+			System.out.println("created " + dbURL + " " + d);
+//FIX: temporarily we will always cleanup, so skip the shutdown
+//			conn.close();
+			// shutdown required only if 2 processes access database
+//			if (useprocess) doshutdown();
+		//	return;
+		} catch (SQLException  se) {
+			System.out.println("connect failed for " + dbURL);
+			JDBCDisplayUtil.ShowException(System.out, se);
+			System.exit(1);
+		}
+		}
+		else {
+		try {
+			conn = DriverManager.getConnection(dbURL);
+			conn.setAutoCommit(false);
+			System.out.println("connected to " + dbURL + " " + d);
+		} catch (SQLException  se) {
+			System.out.println("connect failed for " + dbURL);
+			JDBCDisplayUtil.ShowException(System.out, se);
+			System.exit(1);
+		}
+		}
+
+		d = new Date();
+		System.out.println("dbcleanup starting: " + d);
+
+		Enumeration schemalist = null;
+		Enumeration list = null;
+		Vector schemavec = new Vector();
+		Vector tablevec = null;
+		// get a list of the user schemas
+		try {
+			s = conn.createStatement();
+			rs = s.executeQuery( " select schemaname from sys.sysschemas " +
+				" where schemaname <> 'SYS'"); 
+			while (rs.next()) { 
+				schemavec.addElement(new String(rs.getString(1)));
+			}
+			rs.close();
+			if (schemavec.size() > 1) {
+				// there is at least one schema to clean up
+				dbIsDirty = true;
+			}
+		} catch (SQLException  se) {
+			System.out.println("select schemas: FAIL -- unexpected exception:");
+			JDBCDisplayUtil.ShowException(System.out, se);
+			System.exit(1);
+		}
+
+		// for each user schema, drop the objects
+		String schema = null;
+		String n = null;
+		boolean viewdependencyFound = false;
+		boolean tabledependencyFound = false;
+		Vector viewvec = null;
+		int count = 0;
+		for (schemalist = schemavec.elements(); schemalist.hasMoreElements();) {
+			schema = (String)schemalist.nextElement();
+			for (viewdependencyFound = true; viewdependencyFound;){
+				viewdependencyFound = false;
+				viewvec = findTables(conn, s, 'V', schema);
+				//for (list = viewvec.elements(); list.hasMoreElements();)
+				//	System.out.println("\t" + list.nextElement());
+				if (viewvec.size() > 0) {
+					System.out.println("schema " + schema);
+					viewdependencyFound = dropTables(conn, s, viewvec, "view");
+				}
+			}
+
+			for (tabledependencyFound = true; tabledependencyFound;){
+				tabledependencyFound = false;
+				tablevec = findTables(conn, s, 'T', schema);
+				if (tablevec.size() > 0) {
+					System.out.println("schema " + schema);
+					tabledependencyFound = 
+						dropTables(conn, s, tablevec, "table");
+				}
+			}
+
+			Vector stmtvec = new Vector();
+			try {
+				rs = s.executeQuery( " select stmtname " +
+					" from sys.sysstatements t, sys.sysschemas  s " +
+					" where t.schemaid = s.schemaid " +
+					" and s.schemaname = '" + schema + "'");
+				for (count = 0; rs.next(); count++) { 
+					dbIsDirty = true;
+					stmtvec.addElement(new String(rs.getString(1)));
+				}
+				rs.close();
+			} catch (SQLException  se) {
+				System.out.println("select statements: FAIL -- unexpected exception:");
+				JDBCDisplayUtil.ShowException(System.out, se);
+				System.exit(1);
+			}
+
+			if (count > 1) {
+			try {
+				System.out.println("schema " + schema);
+				System.out.println("dropping leftover statements: ");
+				for (list = stmtvec.elements(); list.hasMoreElements();) {
+					n = (String)list.nextElement();
+					s.execute("drop statement " + n);
+					conn.commit();
+					System.out.println("\t" + n);
+				}
+			} catch (SQLException  se) {
+				System.out.println("drop statement: FAIL -- unexpected exception:");
+				JDBCDisplayUtil.ShowException(System.out, se);
+				System.exit(1);
+			}
+			}
+		}
+		// drop every user schema except APP
+		if (schemavec.size() > 1) {
+		System.out.println("dropping extra user schemas: ");
+		schemalist = null;
+		for (schemalist = schemavec.elements(); schemalist.hasMoreElements();) {
+			schema = (String)schemalist.nextElement();
+			if (schema.equals("APP")) continue;
+			if (schema == null) {
+				System.out.println("null schema in schemalist");
+				continue;
+			}
+			try {
+				System.out.println("\t" + schema);
+				s.execute("drop schema \"" + schema + "\"");
+			} catch (SQLException  se) {
+				System.out.println("drop schema: FAIL -- unexpected exception:");
+				JDBCDisplayUtil.ShowException(System.out, se);
+				System.exit(1);
+			}
+		}
+		}
+		// drop all method aliases
+		dropAliases(conn, 'M');
+		dropAliases(conn, 'C');
+
+		// DEBUG: help figure out what's going on with extra entries in sysdepends
+		try {
+			rs = s.executeQuery("select count (*) from sys.sysdepends");
+			if (rs.next()) {
+				int i = rs.getInt(1);
+				if (i > 0)
+					System.out.println("found " + i + " leftover dependencies");
+			}
+		} catch (SQLException  se) {
+			System.out.println("drop schema: FAIL -- unexpected exception:");
+			JDBCDisplayUtil.ShowException(System.out, se);
+			System.exit(1);
+		}
+
+		// shutdown required only if 2 processes access database
+		if (useprocess) doshutdown();
+		//conn.close();
+		d = new Date();
+		System.out.println("dbcleanup finished: " + d);
+	}
+
+	static void doshutdown() {
+		Connection conn = null;
+		try {
+			conn = DriverManager.getConnection(dbURL +
+				";shutdown=true");
+		} catch (SQLException  se) {
+			if (se.getSQLState().equals("08006")){
+				System.out.println("shutting down " + dbURL);
+			}
+			else {
+				System.out.println("shutdown failed for " + dbURL);
+				JDBCDisplayUtil.ShowException(System.out, se);
+				System.exit(1);
+			}
+		}
+	}
+
+	static boolean dropTables(Connection conn, Statement s, Vector tablevec,
+		String tabletype) throws Exception {
+
+		boolean dependencyFound = false;
+		String n = null;
+
+		String objtype = null;
+		System.out.println("dropping " + tabletype + "(s)");
+
+		for (Enumeration list = tablevec.elements(); list.hasMoreElements();) {
+			n = (String)list.nextElement();
+			try {
+				s.execute("drop " + tabletype + " " + n);
+				conn.commit();
+				System.out.println("\t" + n);
+			} catch (SQLException  se) {
+				if (se.getSQLState().equals("X0Y25")){
+					dependencyFound=true;
+					//System.out.println("error X0Y25: " + se.getMessage());
+					System.out.println(n + " not droped due to dependency, will retry a bit later");
+				}
+				else if (se.getSQLState().equals("X0Y23")){
+					dependencyFound=true;
+					//System.out.println("error X0Y23: " + se.getMessage());
+					System.out.println(n + " not droped due to dependency, will retry a bit later");
+				}
+				else {
+					System.out.println("drop table: FAIL -- unexpected exception:");
+					JDBCDisplayUtil.ShowException(System.out, se);
+					System.exit(1);
+		//FIX exits
+				}
+			}
+		}
+		return(dependencyFound);
+	}
+
+	static  Vector findTables(Connection conn, Statement s, char c, String schema) throws Exception {
+
+		ResultSet rs = null;
+		Vector tableviewvec = new Vector();
+
+		try {
+			rs = s.executeQuery( " select t.tablename " +
+				" from sys.systables t, sys.sysschemas  s " +
+				" where t.schemaid = s.schemaid " +
+				" and t.tabletype = '" + c + "'" +
+				" and s.schemaname = '" + schema + "'" );
+			while (rs.next()) { 
+				dbIsDirty = true;
+				tableviewvec.addElement(new String(rs.getString(1)));
+			}
+			rs.close();
+		} catch (SQLException  se) {
+			System.out.println("select tables: FAIL -- unexpected exception:");
+			JDBCDisplayUtil.ShowException(System.out, se);
+			System.exit(1);
+		//FIX exits
+		}
+		return(tableviewvec);
+	}
+
+	static void dropAliases (Connection conn, char aliastype) throws Exception {
+		
+		ResultSet rs = null;
+		Statement s = null;
+		String typestring = null;
+		Vector aliasvec = new Vector();
+		String n = null;
+		int count = 0;
+
+		if (aliastype == 'M') typestring = "method";
+		else if (aliastype == 'C') typestring = "class";
+
+		try {
+			s = conn.createStatement();
+			rs = s.executeQuery("select alias, aliastype from sys.sysaliases " +
+				" where systemalias = false " + 
+				" and aliastype = '" + aliastype + "'");
+			for (count = 0; rs.next(); count++) {
+				dbIsDirty = true;
+				aliasvec.addElement(new String(rs.getString(1)));
+			}
+			rs.close();
+			conn.commit();
+		} catch (SQLException  se) {
+			System.out.println("drop alias: FAIL -- unexpected exception:");
+			JDBCDisplayUtil.ShowException(System.out, se);
+			System.exit(1);
+		}
+
+		if (count > 1) {
+		System.out.println("dropping user aliases, type " + typestring + ": ");
+		for (Enumeration list = aliasvec.elements(); list.hasMoreElements();) {
+			n = (String)list.nextElement();
+			try {
+				s.execute("drop " + typestring + " alias " + n);
+			} catch (SQLException  se) {
+				System.out.println("drop alias: FAIL -- unexpected exception:");
+				JDBCDisplayUtil.ShowException(System.out, se);
+				System.exit(1);
+			}
+			conn.commit();
+			System.out.println("\t" + n);
+		}
+		}
+	}
+}

Modified: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/ibm13.java
Url: http://svn.apache.org/viewcvs/incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/ibm13.java?view=diff&rev=122528&p1=incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/ibm13.java&r1=122527&p2=incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/ibm13.java&r2=122528
==============================================================================
--- incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/ibm13.java	(original)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/ibm13.java	Wed Dec 15 22:20:35 2004
@@ -1,97 +1,97 @@
-/*
-
-   Derby - Class org.apache.derbyTesting.functionTests.harness.ibm13
-
-   Copyright 2001, 2004 The Apache Software Foundation or its licensors, as applicable.
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-   You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
-
- */
-
-package org.apache.derbyTesting.functionTests.harness;
-
-import java.util.Vector;
-import java.util.StringTokenizer;
-
-/**
-  <p>This class is for IBM's jdk 1.3.
-
-  @author ames
- */
-public class ibm13 extends jvm {
-
-	public String getName(){return "ibm13";}
-    public ibm13(boolean noasyncgc, boolean verbosegc, boolean noclassgc,
-    long ss, long oss, long ms, long mx, String classpath, String prof,
-    boolean verify, boolean noverify, boolean nojit, Vector D) {
-        super(noasyncgc,verbosegc,noclassgc,ss,oss,ms,mx,classpath,prof,
-		verify,noverify,nojit,D);
-    }
-    // more typical use:
-    public ibm13(String classpath, Vector D) {
-        super(classpath,D);
-    }
-    // more typical use:
-    public ibm13(long ms, long mx, String classpath, Vector D) {
-        super(ms,mx,classpath,D);
-    }
-    // actual use
-    public ibm13() { }
-
-    // return the command line to invoke this VM.  The caller then adds
-    // the class and program arguments.
-    public Vector getCommandLine() 
-    {
-        StringBuffer sb = new StringBuffer();
-        Vector v = super.getCommandLine();
-        appendOtherFlags(sb);
-        String s = sb.toString();
-        StringTokenizer st = new StringTokenizer(s);
-        while (st.hasMoreTokens())
-        {
-            v.addElement(st.nextToken());
-        }
-        return v;
-	}
-
-	public void appendOtherFlags(StringBuffer sb)
-	{
-        if (noasyncgc) warn("ibm13 does not support noasyncgc");
-        if (verbosegc) sb.append(" -verbose:gc");
-        if (noclassgc) sb.append(" -Xnoclassgc");
-        if (ss>=0) warn("ibm13 does not support ss");
-        if (oss>=0) warn("ibm13 does not support oss");
-        if (ms>=0) {
-          sb.append(" -ms");
-          sb.append(ms);
-        }
-        if (mx>=0) {
-          sb.append(" -mx");
-          sb.append(mx);
-        }
-        if (classpath!=null) {
-          sb.append(" -classpath ");
-          sb.append(classpath);
-        }
-        if (prof!=null) warn("ibm13 does not support prof");
-        if (verify) warn("ibm13 does not support verify");
-        if (noverify) warn("ibm13 does not support noverify");
-        if (nojit) sb.append(" -Djava.compiler=NONE");
-        if (D != null)
-          for (int i=0; i<D.size();i++) {
-	        sb.append(" -D");
-	        sb.append((String)(D.elementAt(i)));
-          }
-    }
-	public String getDintro() { return "-D"; }
-}
+/*
+
+   Derby - Class org.apache.derbyTesting.functionTests.harness.ibm13
+
+   Copyright 2001, 2004 The Apache Software Foundation or its licensors, as applicable.
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+ */
+
+package org.apache.derbyTesting.functionTests.harness;
+
+import java.util.Vector;
+import java.util.StringTokenizer;
+
+/**
+  <p>This class is for IBM's jdk 1.3.
+
+  @author ames
+ */
+public class ibm13 extends jvm {
+
+	public String getName(){return "ibm13";}
+    public ibm13(boolean noasyncgc, boolean verbosegc, boolean noclassgc,
+    long ss, long oss, long ms, long mx, String classpath, String prof,
+    boolean verify, boolean noverify, boolean nojit, Vector D) {
+        super(noasyncgc,verbosegc,noclassgc,ss,oss,ms,mx,classpath,prof,
+		verify,noverify,nojit,D);
+    }
+    // more typical use:
+    public ibm13(String classpath, Vector D) {
+        super(classpath,D);
+    }
+    // more typical use:
+    public ibm13(long ms, long mx, String classpath, Vector D) {
+        super(ms,mx,classpath,D);
+    }
+    // actual use
+    public ibm13() { }
+
+    // return the command line to invoke this VM.  The caller then adds
+    // the class and program arguments.
+    public Vector getCommandLine() 
+    {
+        StringBuffer sb = new StringBuffer();
+        Vector v = super.getCommandLine();
+        appendOtherFlags(sb);
+        String s = sb.toString();
+        StringTokenizer st = new StringTokenizer(s);
+        while (st.hasMoreTokens())
+        {
+            v.addElement(st.nextToken());
+        }
+        return v;
+	}
+
+	public void appendOtherFlags(StringBuffer sb)
+	{
+        if (noasyncgc) warn("ibm13 does not support noasyncgc");
+        if (verbosegc) sb.append(" -verbose:gc");
+        if (noclassgc) sb.append(" -Xnoclassgc");
+        if (ss>=0) warn("ibm13 does not support ss");
+        if (oss>=0) warn("ibm13 does not support oss");
+        if (ms>=0) {
+          sb.append(" -ms");
+          sb.append(ms);
+        }
+        if (mx>=0) {
+          sb.append(" -mx");
+          sb.append(mx);
+        }
+        if (classpath!=null) {
+          sb.append(" -classpath ");
+          sb.append(classpath);
+        }
+        if (prof!=null) warn("ibm13 does not support prof");
+        if (verify) warn("ibm13 does not support verify");
+        if (noverify) warn("ibm13 does not support noverify");
+        if (nojit) sb.append(" -Djava.compiler=NONE");
+        if (D != null)
+          for (int i=0; i<D.size();i++) {
+	        sb.append(" -D");
+	        sb.append((String)(D.elementAt(i)));
+          }
+    }
+	public String getDintro() { return "-D"; }
+}

Modified: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/ibm14.java
Url: http://svn.apache.org/viewcvs/incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/ibm14.java?view=diff&rev=122528&p1=incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/ibm14.java&r1=122527&p2=incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/ibm14.java&r2=122528
==============================================================================
--- incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/ibm14.java	(original)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/ibm14.java	Wed Dec 15 22:20:35 2004
@@ -1,97 +1,97 @@
-/*
-
-   Derby - Class org.apache.derbyTesting.functionTests.harness.ibm14
-
-   Copyright 2002, 2004 The Apache Software Foundation or its licensors, as applicable.
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-   You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
-
- */
-
-package org.apache.derbyTesting.functionTests.harness;
-
-import java.util.Vector;
-import java.util.StringTokenizer;
-
-/**
-  <p>This class is for IBM's jdk 1.4.
-
-  @author ames
- */
-public class ibm14 extends jvm {
-
-	public String getName(){return "ibm14";}
-    public ibm14(boolean noasyncgc, boolean verbosegc, boolean noclassgc,
-    long ss, long oss, long ms, long mx, String classpath, String prof,
-    boolean verify, boolean noverify, boolean nojit, Vector D) {
-        super(noasyncgc,verbosegc,noclassgc,ss,oss,ms,mx,classpath,prof,
-		verify,noverify,nojit,D);
-    }
-    // more typical use:
-    public ibm14(String classpath, Vector D) {
-        super(classpath,D);
-    }
-    // more typical use:
-    public ibm14(long ms, long mx, String classpath, Vector D) {
-        super(ms,mx,classpath,D);
-    }
-    // actual use
-    public ibm14() { }
-
-    // return the command line to invoke this VM.  The caller then adds
-    // the class and program arguments.
-    public Vector getCommandLine() 
-    {
-        StringBuffer sb = new StringBuffer();
-        Vector v = super.getCommandLine();
-        appendOtherFlags(sb);
-        String s = sb.toString();
-        StringTokenizer st = new StringTokenizer(s);
-        while (st.hasMoreTokens())
-        {
-            v.addElement(st.nextToken());
-        }
-        return v;
-	}
-
-	public void appendOtherFlags(StringBuffer sb)
-	{
-        if (noasyncgc) warn("ibm14 does not support noasyncgc");
-        if (verbosegc) sb.append(" -verbose:gc");
-        if (noclassgc) sb.append(" -Xnoclassgc");
-        if (ss>=0) warn("ibm14 does not support ss");
-        if (oss>=0) warn("ibm14 does not support oss");
-        if (ms>=0) {
-          sb.append(" -ms");
-          sb.append(ms);
-        }
-        if (mx>=0) {
-          sb.append(" -mx");
-          sb.append(mx);
-        }
-        if (classpath!=null) {
-          sb.append(" -classpath ");
-          sb.append(classpath);
-        }
-        if (prof!=null) warn("ibm14 does not support prof");
-        if (verify) warn("ibm14 does not support verify");
-        if (noverify) warn("ibm14 does not support noverify");
-        if (nojit) sb.append(" -Djava.compiler=NONE");
-        if (D != null)
-          for (int i=0; i<D.size();i++) {
-	        sb.append(" -D");
-	        sb.append((String)(D.elementAt(i)));
-          }
-    }
-	public String getDintro() { return "-D"; }
-}
+/*
+
+   Derby - Class org.apache.derbyTesting.functionTests.harness.ibm14
+
+   Copyright 2002, 2004 The Apache Software Foundation or its licensors, as applicable.
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+ */
+
+package org.apache.derbyTesting.functionTests.harness;
+
+import java.util.Vector;
+import java.util.StringTokenizer;
+
+/**
+  <p>This class is for IBM's jdk 1.4.
+
+  @author ames
+ */
+public class ibm14 extends jvm {
+
+	public String getName(){return "ibm14";}
+    public ibm14(boolean noasyncgc, boolean verbosegc, boolean noclassgc,
+    long ss, long oss, long ms, long mx, String classpath, String prof,
+    boolean verify, boolean noverify, boolean nojit, Vector D) {
+        super(noasyncgc,verbosegc,noclassgc,ss,oss,ms,mx,classpath,prof,
+		verify,noverify,nojit,D);
+    }
+    // more typical use:
+    public ibm14(String classpath, Vector D) {
+        super(classpath,D);
+    }
+    // more typical use:
+    public ibm14(long ms, long mx, String classpath, Vector D) {
+        super(ms,mx,classpath,D);
+    }
+    // actual use
+    public ibm14() { }
+
+    // return the command line to invoke this VM.  The caller then adds
+    // the class and program arguments.
+    public Vector getCommandLine() 
+    {
+        StringBuffer sb = new StringBuffer();
+        Vector v = super.getCommandLine();
+        appendOtherFlags(sb);
+        String s = sb.toString();
+        StringTokenizer st = new StringTokenizer(s);
+        while (st.hasMoreTokens())
+        {
+            v.addElement(st.nextToken());
+        }
+        return v;
+	}
+
+	public void appendOtherFlags(StringBuffer sb)
+	{
+        if (noasyncgc) warn("ibm14 does not support noasyncgc");
+        if (verbosegc) sb.append(" -verbose:gc");
+        if (noclassgc) sb.append(" -Xnoclassgc");
+        if (ss>=0) warn("ibm14 does not support ss");
+        if (oss>=0) warn("ibm14 does not support oss");
+        if (ms>=0) {
+          sb.append(" -ms");
+          sb.append(ms);
+        }
+        if (mx>=0) {
+          sb.append(" -mx");
+          sb.append(mx);
+        }
+        if (classpath!=null) {
+          sb.append(" -classpath ");
+          sb.append(classpath);
+        }
+        if (prof!=null) warn("ibm14 does not support prof");
+        if (verify) warn("ibm14 does not support verify");
+        if (noverify) warn("ibm14 does not support noverify");
+        if (nojit) sb.append(" -Djava.compiler=NONE");
+        if (D != null)
+          for (int i=0; i<D.size();i++) {
+	        sb.append(" -D");
+	        sb.append((String)(D.elementAt(i)));
+          }
+    }
+	public String getDintro() { return "-D"; }
+}

Modified: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/j9_13.java
Url: http://svn.apache.org/viewcvs/incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/j9_13.java?view=diff&rev=122528&p1=incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/j9_13.java&r1=122527&p2=incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/j9_13.java&r2=122528
==============================================================================
--- incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/j9_13.java	(original)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/j9_13.java	Wed Dec 15 22:20:35 2004
@@ -1,135 +1,135 @@
-/*
-
-   Derby - Class org.apache.derbyTesting.functionTests.harness.j9_13
-
-   Copyright 2002, 2004 The Apache Software Foundation or its licensors, as applicable.
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-   You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
-
- */
-
-package org.apache.derbyTesting.functionTests.harness;
-
-import java.util.Vector;
-import java.util.StringTokenizer;
-import java.util.Properties;
-
-
-/**
-  <p>This class is for IBM's J9 jdk 1.3.
-
-  @author ge
- */
-public class j9_13 extends jvm {
-
-	public String getName(){return "j9_13";}
-    public j9_13(boolean noasyncgc, boolean verbosegc, boolean noclassgc,
-    long ss, long oss, long ms, long mx, String classpath, String prof,
-    boolean verify, boolean noverify, boolean nojit, Vector D) {
-        super(noasyncgc,verbosegc,noclassgc,ss,oss,ms,mx,classpath,prof,
-		verify,noverify,nojit,D);
-    }
-    // more typical use:
-    public j9_13(String classpath, Vector D) {
-        super(classpath,D);
-    }
-    // more typical use:
-    public j9_13(long ms, long mx, String classpath, Vector D) {
-        super(ms,mx,classpath,D);
-    }
-    // actual use
-    public j9_13() {
-	Properties sp = System.getProperties();
-	String srvJvm = sp.getProperty("serverJvm");
-	if ((srvJvm!=null) && ((srvJvm.toUpperCase().startsWith("J9")) || (srvJvm.equalsIgnoreCase("wsdd5.6"))))
-	{
-		String wshome = guessWSHome();
-		// note, may have to switch to sep instead of hardcoding the slashes...
-		setJavaCmd(wshome+"/wsdd5.6/ive/bin/j9");
-	}
-	else
-		setJavaCmd("j9");
-    }
-
-    // return the command line to invoke this VM.  The caller then adds
-    // the class and program arguments.
-    public Vector getCommandLine() 
-    {
-
-        StringBuffer sb = new StringBuffer();
-        Vector v = super.getCommandLine();
-
-        appendOtherFlags(sb);
-        String s = sb.toString();
-        StringTokenizer st = new StringTokenizer(s);
-        while (st.hasMoreTokens())
-        {
-            v.addElement(st.nextToken());
-        }
-        return v;
-	}
-
-	public void appendOtherFlags(StringBuffer sb)
-	{
-
-	Properties sp = System.getProperties();
-	String bootcp = sp.getProperty("bootcp");
-	String srvJvm = sp.getProperty("serverJvm");
-	// if we're coming in to be the server jvm for networkserver testing on j9,
-	// bootcp is null, so we need to try to setup the bootclasspath from scratch
-	// for now, assume we're only interested in doing this for wsdd5.6, worry about
-	// newer versions, multiple class libraries, or multiple releases later.
-	if ((srvJvm !=null ) && ((srvJvm.toUpperCase().startsWith("J9")) || (srvJvm.equalsIgnoreCase("wsdd5.6"))))
-	{
-		String pathsep = System.getProperty("path.separator");
-		String wshome = guessWSHome();
-		// note, may have to switch to sep instead of hardcoding the slashes...
-		sb.append(" -Xbootclasspath/a:" + wshome + "/wsdd5.6/ive/lib/jclMax/classes.zip"
-			+ pathsep + wshome + "/wsdd5.6/ive/lib/charconv.zip"
-			+ pathsep + wshome + "/wsdd5.6/ive/lib/jclMax");
-	} 
-	else
-		sb.append(" -Xbootclasspath/a:" + bootcp);
-        if (noasyncgc) warn("j9_13 does not support noasyncgc");
-        if (verbosegc) sb.append(" -verbose:gc");
-        if (noclassgc) warn("j9_13 does not support noclassgc");
-        if (ss>=0) warn("j9_13 does not support ss");
-        if (oss>=0) warn("j9_13 does not support oss");
-        if (ms>=0) {
-          sb.append(" -Xss");
-          sb.append(ms);
-		  //sb.append("k");
-        }
-        if (mx>=0) {
-          sb.append(" -Xmx");
-          sb.append(mx);
-		  //sb.append("k");
-        }
-        if (classpath!=null) warn("j9_13 does not support classpath, use -Xbootclasspath,-Xbootclasspath/p,-Xbootclasspath/a"); 
-        if (prof!=null) warn("j9_13 does not support prof");
-        if (verify) sb.append(" -verify");
-        if (noverify) warn("j9_13 does not support noverify");
-        if (nojit) sb.append(" -Xnojit");
-        if (D != null)
-          for (int i=0; i<D.size();i++) {
-	        sb.append(" -D");
-	        sb.append((String)(D.elementAt(i)));
-          }
-    }
-	public String getDintro() { return "-D"; }
-
-	protected void setSecurityProps()
-	{
-		System.out.println("Note: J9 tests do not run with security manager");		
-	}
-}
+/*
+
+   Derby - Class org.apache.derbyTesting.functionTests.harness.j9_13
+
+   Copyright 2002, 2004 The Apache Software Foundation or its licensors, as applicable.
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+ */
+
+package org.apache.derbyTesting.functionTests.harness;
+
+import java.util.Vector;
+import java.util.StringTokenizer;
+import java.util.Properties;
+
+
+/**
+  <p>This class is for IBM's J9 jdk 1.3.
+
+  @author ge
+ */
+public class j9_13 extends jvm {
+
+	public String getName(){return "j9_13";}
+    public j9_13(boolean noasyncgc, boolean verbosegc, boolean noclassgc,
+    long ss, long oss, long ms, long mx, String classpath, String prof,
+    boolean verify, boolean noverify, boolean nojit, Vector D) {
+        super(noasyncgc,verbosegc,noclassgc,ss,oss,ms,mx,classpath,prof,
+		verify,noverify,nojit,D);
+    }
+    // more typical use:
+    public j9_13(String classpath, Vector D) {
+        super(classpath,D);
+    }
+    // more typical use:
+    public j9_13(long ms, long mx, String classpath, Vector D) {
+        super(ms,mx,classpath,D);
+    }
+    // actual use
+    public j9_13() {
+	Properties sp = System.getProperties();
+	String srvJvm = sp.getProperty("serverJvm");
+	if ((srvJvm!=null) && ((srvJvm.toUpperCase().startsWith("J9")) || (srvJvm.equalsIgnoreCase("wsdd5.6"))))
+	{
+		String wshome = guessWSHome();
+		// note, may have to switch to sep instead of hardcoding the slashes...
+		setJavaCmd(wshome+"/wsdd5.6/ive/bin/j9");
+	}
+	else
+		setJavaCmd("j9");
+    }
+
+    // return the command line to invoke this VM.  The caller then adds
+    // the class and program arguments.
+    public Vector getCommandLine() 
+    {
+
+        StringBuffer sb = new StringBuffer();
+        Vector v = super.getCommandLine();
+
+        appendOtherFlags(sb);
+        String s = sb.toString();
+        StringTokenizer st = new StringTokenizer(s);
+        while (st.hasMoreTokens())
+        {
+            v.addElement(st.nextToken());
+        }
+        return v;
+	}
+
+	public void appendOtherFlags(StringBuffer sb)
+	{
+
+	Properties sp = System.getProperties();
+	String bootcp = sp.getProperty("bootcp");
+	String srvJvm = sp.getProperty("serverJvm");
+	// if we're coming in to be the server jvm for networkserver testing on j9,
+	// bootcp is null, so we need to try to setup the bootclasspath from scratch
+	// for now, assume we're only interested in doing this for wsdd5.6, worry about
+	// newer versions, multiple class libraries, or multiple releases later.
+	if ((srvJvm !=null ) && ((srvJvm.toUpperCase().startsWith("J9")) || (srvJvm.equalsIgnoreCase("wsdd5.6"))))
+	{
+		String pathsep = System.getProperty("path.separator");
+		String wshome = guessWSHome();
+		// note, may have to switch to sep instead of hardcoding the slashes...
+		sb.append(" -Xbootclasspath/a:" + wshome + "/wsdd5.6/ive/lib/jclMax/classes.zip"
+			+ pathsep + wshome + "/wsdd5.6/ive/lib/charconv.zip"
+			+ pathsep + wshome + "/wsdd5.6/ive/lib/jclMax");
+	} 
+	else
+		sb.append(" -Xbootclasspath/a:" + bootcp);
+        if (noasyncgc) warn("j9_13 does not support noasyncgc");
+        if (verbosegc) sb.append(" -verbose:gc");
+        if (noclassgc) warn("j9_13 does not support noclassgc");
+        if (ss>=0) warn("j9_13 does not support ss");
+        if (oss>=0) warn("j9_13 does not support oss");
+        if (ms>=0) {
+          sb.append(" -Xss");
+          sb.append(ms);
+		  //sb.append("k");
+        }
+        if (mx>=0) {
+          sb.append(" -Xmx");
+          sb.append(mx);
+		  //sb.append("k");
+        }
+        if (classpath!=null) warn("j9_13 does not support classpath, use -Xbootclasspath,-Xbootclasspath/p,-Xbootclasspath/a"); 
+        if (prof!=null) warn("j9_13 does not support prof");
+        if (verify) sb.append(" -verify");
+        if (noverify) warn("j9_13 does not support noverify");
+        if (nojit) sb.append(" -Xnojit");
+        if (D != null)
+          for (int i=0; i<D.size();i++) {
+	        sb.append(" -D");
+	        sb.append((String)(D.elementAt(i)));
+          }
+    }
+	public String getDintro() { return "-D"; }
+
+	protected void setSecurityProps()
+	{
+		System.out.println("Note: J9 tests do not run with security manager");		
+	}
+}

Modified: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/jdk13.java
Url: http://svn.apache.org/viewcvs/incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/jdk13.java?view=diff&rev=122528&p1=incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/jdk13.java&r1=122527&p2=incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/jdk13.java&r2=122528
==============================================================================
--- incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/jdk13.java	(original)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/jdk13.java	Wed Dec 15 22:20:35 2004
@@ -1,97 +1,97 @@
-/*
-
-   Derby - Class org.apache.derbyTesting.functionTests.harness.jdk13
-
-   Copyright 2000, 2004 The Apache Software Foundation or its licensors, as applicable.
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-   You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
-
- */
-
-package org.apache.derbyTesting.functionTests.harness;
-
-import java.util.Vector;
-import java.util.StringTokenizer;
-
-/**
-  <p>This class is for JDK1.3.
-
-  @author ames
- */
-public class jdk13 extends jvm {
-
-	public String getName(){return "jdk13";}
-    public jdk13(boolean noasyncgc, boolean verbosegc, boolean noclassgc,
-    long ss, long oss, long ms, long mx, String classpath, String prof,
-    boolean verify, boolean noverify, boolean nojit, Vector D) {
-        super(noasyncgc,verbosegc,noclassgc,ss,oss,ms,mx,classpath,prof,
-		verify,noverify,nojit,D);
-    }
-    // more typical use:
-    public jdk13(String classpath, Vector D) {
-        super(classpath,D);
-    }
-    // more typical use:
-    public jdk13(long ms, long mx, String classpath, Vector D) {
-        super(ms,mx,classpath,D);
-    }
-    // actual use
-    public jdk13() { }
-
-    // return the command line to invoke this VM.  The caller then adds
-    // the class and program arguments.
-    public Vector getCommandLine() 
-    {
-        StringBuffer sb = new StringBuffer();
-        Vector v = super.getCommandLine();
-        appendOtherFlags(sb);
-        String s = sb.toString();
-        StringTokenizer st = new StringTokenizer(s);
-        while (st.hasMoreTokens())
-        {
-            v.addElement(st.nextToken());
-        }
-        return v;
-	}
-
-	public void appendOtherFlags(StringBuffer sb)
-	{
-        if (noasyncgc) warn("jdk13 does not support noasyncgc");
-        if (verbosegc) sb.append(" -verbose:gc");
-        if (noclassgc) sb.append(" -Xnoclassgc");
-        if (ss>=0) warn("jdk13 does not support ss");
-        if (oss>=0) warn("jdk13 does not support oss");
-        if (ms>=0) {
-          sb.append(" -ms");
-          sb.append(ms);
-        }
-        if (mx>=0) {
-          sb.append(" -mx");
-          sb.append(mx);
-        }
-        if (classpath!=null) {
-          sb.append(" -classpath ");
-          sb.append(classpath);
-        }
-        if (prof!=null) warn("jdk13 does not support prof");
-        if (verify) warn("jdk13 does not support verify");
-        if (noverify) warn("jdk13 does not support noverify");
-        if (nojit) sb.append(" -Djava.compiler=NONE");
-        if (D != null)
-          for (int i=0; i<D.size();i++) {
-	        sb.append(" -D");
-	        sb.append((String)(D.elementAt(i)));
-          }
-    }
-	public String getDintro() { return "-D"; }
-}
+/*
+
+   Derby - Class org.apache.derbyTesting.functionTests.harness.jdk13
+
+   Copyright 2000, 2004 The Apache Software Foundation or its licensors, as applicable.
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+ */
+
+package org.apache.derbyTesting.functionTests.harness;
+
+import java.util.Vector;
+import java.util.StringTokenizer;
+
+/**
+  <p>This class is for JDK1.3.
+
+  @author ames
+ */
+public class jdk13 extends jvm {
+
+	public String getName(){return "jdk13";}
+    public jdk13(boolean noasyncgc, boolean verbosegc, boolean noclassgc,
+    long ss, long oss, long ms, long mx, String classpath, String prof,
+    boolean verify, boolean noverify, boolean nojit, Vector D) {
+        super(noasyncgc,verbosegc,noclassgc,ss,oss,ms,mx,classpath,prof,
+		verify,noverify,nojit,D);
+    }
+    // more typical use:
+    public jdk13(String classpath, Vector D) {
+        super(classpath,D);
+    }
+    // more typical use:
+    public jdk13(long ms, long mx, String classpath, Vector D) {
+        super(ms,mx,classpath,D);
+    }
+    // actual use
+    public jdk13() { }
+
+    // return the command line to invoke this VM.  The caller then adds
+    // the class and program arguments.
+    public Vector getCommandLine() 
+    {
+        StringBuffer sb = new StringBuffer();
+        Vector v = super.getCommandLine();
+        appendOtherFlags(sb);
+        String s = sb.toString();
+        StringTokenizer st = new StringTokenizer(s);
+        while (st.hasMoreTokens())
+        {
+            v.addElement(st.nextToken());
+        }
+        return v;
+	}
+
+	public void appendOtherFlags(StringBuffer sb)
+	{
+        if (noasyncgc) warn("jdk13 does not support noasyncgc");
+        if (verbosegc) sb.append(" -verbose:gc");
+        if (noclassgc) sb.append(" -Xnoclassgc");
+        if (ss>=0) warn("jdk13 does not support ss");
+        if (oss>=0) warn("jdk13 does not support oss");
+        if (ms>=0) {
+          sb.append(" -ms");
+          sb.append(ms);
+        }
+        if (mx>=0) {
+          sb.append(" -mx");
+          sb.append(mx);
+        }
+        if (classpath!=null) {
+          sb.append(" -classpath ");
+          sb.append(classpath);
+        }
+        if (prof!=null) warn("jdk13 does not support prof");
+        if (verify) warn("jdk13 does not support verify");
+        if (noverify) warn("jdk13 does not support noverify");
+        if (nojit) sb.append(" -Djava.compiler=NONE");
+        if (D != null)
+          for (int i=0; i<D.size();i++) {
+	        sb.append(" -D");
+	        sb.append((String)(D.elementAt(i)));
+          }
+    }
+	public String getDintro() { return "-D"; }
+}

Modified: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/jdk14.java
Url: http://svn.apache.org/viewcvs/incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/jdk14.java?view=diff&rev=122528&p1=incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/jdk14.java&r1=122527&p2=incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/jdk14.java&r2=122528
==============================================================================
--- incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/jdk14.java	(original)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/jdk14.java	Wed Dec 15 22:20:35 2004
@@ -1,97 +1,97 @@
-/*
-
-   Derby - Class org.apache.derbyTesting.functionTests.harness.jdk14
-
-   Copyright 2001, 2004 The Apache Software Foundation or its licensors, as applicable.
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-   You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
-
- */
-
-package org.apache.derbyTesting.functionTests.harness;
-
-import java.util.Vector;
-import java.util.StringTokenizer;
-
-/**
-  <p>This class is for JDK1.4.
-
-  @author ames
- */
-public class jdk14 extends jvm {
-
-	public String getName(){return "jdk14";}
-    public jdk14(boolean noasyncgc, boolean verbosegc, boolean noclassgc,
-    long ss, long oss, long ms, long mx, String classpath, String prof,
-    boolean verify, boolean noverify, boolean nojit, Vector D) {
-        super(noasyncgc,verbosegc,noclassgc,ss,oss,ms,mx,classpath,prof,
-		verify,noverify,nojit,D);
-    }
-    // more typical use:
-    public jdk14(String classpath, Vector D) {
-        super(classpath,D);
-    }
-    // more typical use:
-    public jdk14(long ms, long mx, String classpath, Vector D) {
-        super(ms,mx,classpath,D);
-    }
-    // actual use
-    public jdk14() { }
-
-    // return the command line to invoke this VM.  The caller then adds
-    // the class and program arguments.
-    public Vector getCommandLine() 
-    {
-        StringBuffer sb = new StringBuffer();
-        Vector v = super.getCommandLine();
-        appendOtherFlags(sb);
-        String s = sb.toString();
-        StringTokenizer st = new StringTokenizer(s);
-        while (st.hasMoreTokens())
-        {
-            v.addElement(st.nextToken());
-        }
-        return v;
-	}
-
-	public void appendOtherFlags(StringBuffer sb)
-	{
-        if (noasyncgc) warn("jdk14 does not support noasyncgc");
-        if (verbosegc) sb.append(" -verbose:gc");
-        if (noclassgc) sb.append(" -Xnoclassgc");
-        if (ss>=0) warn("jdk14 does not support ss");
-        if (oss>=0) warn("jdk14 does not support oss");
-        if (ms>=0) {
-          sb.append(" -ms");
-          sb.append(ms);
-        }
-        if (mx>=0) {
-          sb.append(" -mx");
-          sb.append(mx);
-        }
-        if (classpath!=null) {
-          sb.append(" -classpath ");
-          sb.append(classpath);
-        }
-        if (prof!=null) warn("jdk14 does not support prof");
-        if (verify) warn("jdk14 does not support verify");
-        if (noverify) warn("jdk14 does not support noverify");
-        if (nojit) sb.append(" -Djava.compiler=NONE");
-        if (D != null)
-          for (int i=0; i<D.size();i++) {
-	        sb.append(" -D");
-	        sb.append((String)(D.elementAt(i)));
-          }
-    }
-	public String getDintro() { return "-D"; }
-}
+/*
+
+   Derby - Class org.apache.derbyTesting.functionTests.harness.jdk14
+
+   Copyright 2001, 2004 The Apache Software Foundation or its licensors, as applicable.
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+ */
+
+package org.apache.derbyTesting.functionTests.harness;
+
+import java.util.Vector;
+import java.util.StringTokenizer;
+
+/**
+  <p>This class is for JDK1.4.
+
+  @author ames
+ */
+public class jdk14 extends jvm {
+
+	public String getName(){return "jdk14";}
+    public jdk14(boolean noasyncgc, boolean verbosegc, boolean noclassgc,
+    long ss, long oss, long ms, long mx, String classpath, String prof,
+    boolean verify, boolean noverify, boolean nojit, Vector D) {
+        super(noasyncgc,verbosegc,noclassgc,ss,oss,ms,mx,classpath,prof,
+		verify,noverify,nojit,D);
+    }
+    // more typical use:
+    public jdk14(String classpath, Vector D) {
+        super(classpath,D);
+    }
+    // more typical use:
+    public jdk14(long ms, long mx, String classpath, Vector D) {
+        super(ms,mx,classpath,D);
+    }
+    // actual use
+    public jdk14() { }
+
+    // return the command line to invoke this VM.  The caller then adds
+    // the class and program arguments.
+    public Vector getCommandLine() 
+    {
+        StringBuffer sb = new StringBuffer();
+        Vector v = super.getCommandLine();
+        appendOtherFlags(sb);
+        String s = sb.toString();
+        StringTokenizer st = new StringTokenizer(s);
+        while (st.hasMoreTokens())
+        {
+            v.addElement(st.nextToken());
+        }
+        return v;
+	}
+
+	public void appendOtherFlags(StringBuffer sb)
+	{
+        if (noasyncgc) warn("jdk14 does not support noasyncgc");
+        if (verbosegc) sb.append(" -verbose:gc");
+        if (noclassgc) sb.append(" -Xnoclassgc");
+        if (ss>=0) warn("jdk14 does not support ss");
+        if (oss>=0) warn("jdk14 does not support oss");
+        if (ms>=0) {
+          sb.append(" -ms");
+          sb.append(ms);
+        }
+        if (mx>=0) {
+          sb.append(" -mx");
+          sb.append(mx);
+        }
+        if (classpath!=null) {
+          sb.append(" -classpath ");
+          sb.append(classpath);
+        }
+        if (prof!=null) warn("jdk14 does not support prof");
+        if (verify) warn("jdk14 does not support verify");
+        if (noverify) warn("jdk14 does not support noverify");
+        if (nojit) sb.append(" -Djava.compiler=NONE");
+        if (D != null)
+          for (int i=0; i<D.size();i++) {
+	        sb.append(" -D");
+	        sb.append((String)(D.elementAt(i)));
+          }
+    }
+	public String getDintro() { return "-D"; }
+}

Modified: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/jdk15.java
Url: http://svn.apache.org/viewcvs/incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/jdk15.java?view=diff&rev=122528&p1=incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/jdk15.java&r1=122527&p2=incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/jdk15.java&r2=122528
==============================================================================
--- incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/jdk15.java	(original)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/jdk15.java	Wed Dec 15 22:20:35 2004
@@ -1,97 +1,97 @@
-/*
-
-   Derby - Class org.apache.derbyTesting.functionTests.harness.jdk15
-
-   Copyright 2004 The Apache Software Foundation or its licensors, as applicable.
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-   You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
-
- */
-
-package org.apache.derbyTesting.functionTests.harness;
-
-import java.util.Vector;
-import java.util.StringTokenizer;
-
-/**
-  <p>This class is for JDK1.5.
-
-  @author ames
- */
-public class jdk15 extends jvm {
-
-	public String getName(){return "jdk15";}
-    public jdk15(boolean noasyncgc, boolean verbosegc, boolean noclassgc,
-    long ss, long oss, long ms, long mx, String classpath, String prof,
-    boolean verify, boolean noverify, boolean nojit, Vector D) {
-        super(noasyncgc,verbosegc,noclassgc,ss,oss,ms,mx,classpath,prof,
-		verify,noverify,nojit,D);
-    }
-    // more typical use:
-    public jdk15(String classpath, Vector D) {
-        super(classpath,D);
-    }
-    // more typical use:
-    public jdk15(long ms, long mx, String classpath, Vector D) {
-        super(ms,mx,classpath,D);
-    }
-    // actual use
-    public jdk15() { }
-
-    // return the command line to invoke this VM.  The caller then adds
-    // the class and program arguments.
-    public Vector getCommandLine() 
-    {
-        StringBuffer sb = new StringBuffer();
-        Vector v = super.getCommandLine();
-        appendOtherFlags(sb);
-        String s = sb.toString();
-        StringTokenizer st = new StringTokenizer(s);
-        while (st.hasMoreTokens())
-        {
-            v.addElement(st.nextToken());
-        }
-        return v;
-	}
-
-	public void appendOtherFlags(StringBuffer sb)
-	{
-        if (noasyncgc) warn("jdk15 does not support noasyncgc");
-        if (verbosegc) sb.append(" -verbose:gc");
-        if (noclassgc) sb.append(" -Xnoclassgc");
-        if (ss>=0) warn("jdk15 does not support ss");
-        if (oss>=0) warn("jdk15 does not support oss");
-        if (ms>=0) {
-          sb.append(" -ms");
-          sb.append(ms);
-        }
-        if (mx>=0) {
-          sb.append(" -mx");
-          sb.append(mx);
-        }
-        if (classpath!=null) {
-          sb.append(" -classpath ");
-          sb.append(classpath);
-        }
-        if (prof!=null) warn("jdk15 does not support prof");
-        if (verify) warn("jdk15 does not support verify");
-        if (noverify) warn("jdk15 does not support noverify");
-        if (nojit) sb.append(" -Djava.compiler=NONE");
-        if (D != null)
-          for (int i=0; i<D.size();i++) {
-	        sb.append(" -D");
-	        sb.append((String)(D.elementAt(i)));
-          }
-    }
-	public String getDintro() { return "-D"; }
-}
+/*
+
+   Derby - Class org.apache.derbyTesting.functionTests.harness.jdk15
+
+   Copyright 2004 The Apache Software Foundation or its licensors, as applicable.
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+ */
+
+package org.apache.derbyTesting.functionTests.harness;
+
+import java.util.Vector;
+import java.util.StringTokenizer;
+
+/**
+  <p>This class is for JDK1.5.
+
+  @author ames
+ */
+public class jdk15 extends jvm {
+
+	public String getName(){return "jdk15";}
+    public jdk15(boolean noasyncgc, boolean verbosegc, boolean noclassgc,
+    long ss, long oss, long ms, long mx, String classpath, String prof,
+    boolean verify, boolean noverify, boolean nojit, Vector D) {
+        super(noasyncgc,verbosegc,noclassgc,ss,oss,ms,mx,classpath,prof,
+		verify,noverify,nojit,D);
+    }
+    // more typical use:
+    public jdk15(String classpath, Vector D) {
+        super(classpath,D);
+    }
+    // more typical use:
+    public jdk15(long ms, long mx, String classpath, Vector D) {
+        super(ms,mx,classpath,D);
+    }
+    // actual use
+    public jdk15() { }
+
+    // return the command line to invoke this VM.  The caller then adds
+    // the class and program arguments.
+    public Vector getCommandLine() 
+    {
+        StringBuffer sb = new StringBuffer();
+        Vector v = super.getCommandLine();
+        appendOtherFlags(sb);
+        String s = sb.toString();
+        StringTokenizer st = new StringTokenizer(s);
+        while (st.hasMoreTokens())
+        {
+            v.addElement(st.nextToken());
+        }
+        return v;
+	}
+
+	public void appendOtherFlags(StringBuffer sb)
+	{
+        if (noasyncgc) warn("jdk15 does not support noasyncgc");
+        if (verbosegc) sb.append(" -verbose:gc");
+        if (noclassgc) sb.append(" -Xnoclassgc");
+        if (ss>=0) warn("jdk15 does not support ss");
+        if (oss>=0) warn("jdk15 does not support oss");
+        if (ms>=0) {
+          sb.append(" -ms");
+          sb.append(ms);
+        }
+        if (mx>=0) {
+          sb.append(" -mx");
+          sb.append(mx);
+        }
+        if (classpath!=null) {
+          sb.append(" -classpath ");
+          sb.append(classpath);
+        }
+        if (prof!=null) warn("jdk15 does not support prof");
+        if (verify) warn("jdk15 does not support verify");
+        if (noverify) warn("jdk15 does not support noverify");
+        if (nojit) sb.append(" -Djava.compiler=NONE");
+        if (D != null)
+          for (int i=0; i<D.size();i++) {
+	        sb.append(" -D");
+	        sb.append((String)(D.elementAt(i)));
+          }
+    }
+	public String getDintro() { return "-D"; }
+}

Modified: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/jvm.java
Url: http://svn.apache.org/viewcvs/incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/jvm.java?view=diff&rev=122528&p1=incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/jvm.java&r1=122527&p2=incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/jvm.java&r2=122528
==============================================================================
--- incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/jvm.java	(original)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/jvm.java	Wed Dec 15 22:20:35 2004
@@ -1,372 +1,372 @@
-/*
-
-   Derby - Class org.apache.derbyTesting.functionTests.harness.jvm
-
-   Copyright 1999, 2004 The Apache Software Foundation or its licensors, as applicable.
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-   You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
-
- */
-
-package org.apache.derbyTesting.functionTests.harness;
-
-import java.util.Vector;
-import java.util.StringTokenizer;
-import java.io.File;
-import org.apache.derby.impl.tools.sysinfo.ZipInfoProperties;
-
-
-/**
-  <p>This class provides the interface and mechanism
-  for plugging VMs into the system.  Typically
-  you only need to add a new implementation if your
-  supported attributes or command line building are
-  different from those that exist.
-
-  <p>this class has fields for all options that a JDK VM can take,
-  that is the reference point for all others.  Note some VMs (like jview)
-  don't take all options and will ignore them (like -mx).  Defining
-  the system property "verbose" to 1 will give you warnings for ignored
-  properties in a properly implemented subclass.
-
-  <p> here is the canonical output from java -help for options we take:
-  <pre>
-    -noasyncgc        don't allow asynchronous garbage collection
-    -verbosegc        print a message when garbage collection occurs
-    -noclassgc        disable class garbage collection
-    -ss<number>       set the maximum native stack size for any thread
-    -oss<number>      set the maximum Java stack size for any thread
-    -ms<number>       set the initial Java heap size
-    -mx<number>       set the maximum Java heap size
-    -classpath <directories separated by semicolons>
-                      list directories in which to look for classes
-    -prof[:<file>]    output profiling data to .\java.prof or .\<file>
-    -verify           verify all classes when read in
-    -noverify         do not verify any class
-    -nojit            turn off the jit
-    -Dprop=name       define property; can be specified more than once
-  </pre>
-
-  @author ames
- */
-
-
-public abstract class jvm {
-
-    // they all take their defaults as the initial value.
-    // -1, null, and false all will mean we won't include them
-    // in the command line.
-
-    // flags             just take the whole string of flags as is
-    public String flags = null;
-    // -noasyncgc        don't allow asynchronous garbage collection
-    public boolean noasyncgc = false;
-    // -verbosegc        print a message when garbage collection occurs
-    public boolean verbosegc = false;
-    // -noclassgc        disable class garbage collection
-    public boolean noclassgc = false;
-    // -ss<number>       set the maximum native stack size for any thread
-    public long ss = -1;
-    // -oss<number>      set the maximum Java stack size for any thread
-    public long oss = -1;
-    // -ms<number>       set the initial Java heap size
-    public long ms = -1;
-    // -mx<number>       set the maximum Java heap size
-    public long mx = -1;
-    // -classpath <directories separated by semicolons>
-    //                   list directories in which to look for classes
-    public String classpath = null;
-    // -prof[:<file>]    output profiling data to .\java.prof or .\<file>
-    public String prof = null;
-    // -verify           verify all classes when read in
-    //                   (remote verification is the default)
-    public boolean verify = false;
-    // -noverify         do not verify any class
-    //                   (remote verification is the default)
-    public boolean noverify = false;
-    // -nojit            turn off the jit
-    public boolean nojit = false;
-    // -Dprop=name       define property; can be specified more than once
-    public Vector D = null;
-    // java cmd (java, java_g)
-    public String javaCmd = "java";
-    // major and minor version
-    public String majorVersion = "";
-    public String minorVersion = "";
-    public int imajor = 0;
-    public int iminor = 0;
-
-	// security defaults relative to WS
-	// not used if jvmargs serverPolicyFile or serverCodeBase are set
-	private static String DEFAULT_POLICY="util/nwsvr.policy";
-	private static String DEFAULT_CODEBASE="/classes";
-
-    // constructors
-    public jvm() { }
-
-    public jvm(boolean noasyncgc, boolean verbosegc, boolean noclassgc,
-    long ss, long oss, long ms, long mx, String classpath, String prof,
-    boolean verify, boolean noverify, boolean nojit, Vector D) {
-        this.noasyncgc=noasyncgc;
-        this.noclassgc=noclassgc;
-        this.verbosegc=verbosegc;
-        this.ss=ss;
-        this.oss=oss;
-        this.ms=ms;
-        this.mx=mx;
-        this.classpath=classpath;
-        this.prof=prof;
-        this.verify=verify;
-        this.noverify=noverify;
-        this.nojit=nojit;
-        this.D=D;
-    }
-    // more typical use:
-    public jvm(String classpath, Vector D) {
-        this.classpath=classpath;
-        this.D=D;
-    }
-    // more typical use:
-    public jvm(long ms, long mx, String classpath, Vector D) {
-        this.ms=ms;
-        this.mx=mx;
-        this.classpath=classpath;
-        this.D=D;
-    }
-
-	/**
-       return the property definition introducer, with a space if a
-       separator is needed.
-     */
-    public abstract String getDintro();
-	public abstract String getName();
-    public void setNoasyncgc(boolean noasyncgc) { this.noasyncgc=noasyncgc; }
-    public void setNoclassgc(boolean noclassgc) { this.noclassgc=noclassgc; }
-    public void setVerbosegc(boolean verbosegc) { this.verbosegc=verbosegc; }
-    public void setSs(long ss) { this.ss=ss; }
-    public void setOss(long oss) { this.oss=oss; }
-    public void setMs(long ms) { this.ms = ms; }
-    public void setMx(long mx) { this.mx = mx; }
-    public void setClasspath(String classpath) { this.classpath = classpath; }
-    public void setProf(String prof) { this.prof=prof; }
-    public void setVerify(boolean verify) { this.verify=verify; }
-    public void setNoverify(boolean noverify) { this.noverify=noverify; }
-    public void setNojit(boolean nojit) { this.nojit=nojit; }
-    public void setD(Vector D) { this.D = D; }
-    public void setFlags(String flags) { this.flags = flags; }
-    public void setJavaCmd(String jcmd) { this.javaCmd = jcmd; }
-
-	
-    public Vector getCommandLine()
-    {
-        Vector v = new Vector();
-        v.addElement(javaCmd);
-        if ( (flags != null) && (flags.length()>0) )
-        {
-            StringTokenizer st = new StringTokenizer(flags);
-            while (st.hasMoreTokens())
-            {
-                v.addElement(st.nextToken());
-            }
-        }
-        return v;
-    }
-
-    // implementation, used by subclasses only
-    int verboselevel = -1;
-    public void warn(String msg) {
-      if (verboselevel == -1) {
-         try {
-           verboselevel = Integer.parseInt((String)(System.getProperty("verbose")));
-         } catch (Exception e) {
-           verboselevel = 0;
-         }
-      }
-      if (verboselevel >0)
-          System.out.println("jvm: "+msg);
-    }
-
-    // utility for locating a jvm.
-    /**
-        pass in class name for JVM.  If we can't find it, try
-	also org.apache.derbyTesting.functionTests.harness.<jvmName>
-     */
-    public static jvm getJvm(String jvmName) throws ClassNotFoundException, InstantiationException, IllegalAccessException {
-	jvm result = null;
-        try {
-		result = (jvm)Class.forName(jvmName).newInstance();
-        } catch (ClassNotFoundException e) {
-		result = (jvm)Class.forName("org.apache.derbyTesting.functionTests.harness."+jvmName).newInstance();
-        }
-        return result;
-    }
-
-	/**
-	  Get the current JVM using the normal test harness rules for finding
-	  a JVM.
-	  <OL>
-	  <LI> If the sytem property 'jvm' use this name.
-	  <LI> else if the java version starts with 1.2 use
-	       "jdk12".
-	  <LI> else use "currentjvm".	
-	  */
-	public static jvm getCurrentJvm() throws Exception
-	{
-		String jvmName = System.getProperty("jvm");
-		if ( (jvmName == null) || (jvmName.length()==0) )
-		{
-			String javaVersion = System.getProperty("java.version");
-		    if (javaVersion.startsWith("1.2"))
-		        jvmName = "jdk12";
-		    else
-		        jvmName = "currentjvm";
-		}
-		return getJvm(jvmName);
-	}
-
-    /**
-      Return the major version number
-    */
-    public int getMajorVersion()
-    {
-        return imajor;
-    }
-    
-    /**
-      Return the major version number
-    */
-    public int getMinorVersion()
-    {
-        return iminor;
-    }
-    
-	/**
-	  Get the current JVM using the normal test harness rules for finding
-	  a JVM.
-	  */
-	public void setVersion() throws Exception
-	{
-		// check for jdk12 or higher
-	    String javaVersion = System.getProperty("java.version");
-		int i = javaVersion.indexOf('.');
-		int j = javaVersion.indexOf('.', i+1);
-		majorVersion = javaVersion.substring(0, i);
-		minorVersion = javaVersion.substring(i+1, j);
-		Integer minor = new Integer(minorVersion);
-		iminor = minor.intValue();
-		Integer major = new Integer(majorVersion);
-		imajor = major.intValue();
-		
-		String jvmName = System.getProperty("jvm");
-		
-		if ( (jvmName == null) || (jvmName.length()==0) )
-		{
-		    if (iminor < 2)
-		        jvmName = "currentjvm";
-		    else
-		        jvmName = "jdk" + majorVersion + minorVersion;
-		}
-	}
-	
-	/** Find $WS based on the assumption that JAVA_HOME is $WS/<jvm_name>
-	 * or $WS/<jvm_name>/jre
-	 * @return path of $WS
-	 */
-	protected static String guessWSHome()
-	{
-		String wshome=""; 
-		String jhome = System.getProperty("java.home");
-		String sep = System.getProperty("file.separator");
-		// need to strip off the java directory  assuming it's something
-		// like ibm14/jre or ibm14
-		wshome = jhome.substring(0,jhome.indexOf(sep + "jre"));
-		wshome = wshome.substring(0,wshome.lastIndexOf(sep));
-		return wshome;
-	}
-
-	protected static String findCodeBase()
-	{
-		String classpath = System.getProperty("java.class.path");
-		char sep = '/';
-		ZipInfoProperties zip[]= 
-			org.apache.derby.impl.tools.sysinfo.Main.getAllInfo (classpath);
-		for (int i = 0; i < zip.length; i++)
-		{
-			// it's a url so should just have forward slashes
-			String location = zip[i].getLocation().replace('\\','/');
-			if (location.indexOf("derbynet.jar") != -1)
-			{
-				return location.substring(0,location.lastIndexOf(sep));
-			}
-			else if ((location.indexOf("classes") != -1) &&
-					 location.indexOf(".jar") == -1)
-				return location;
-		}
-		return null;
-	}
-	
-	/**
-	 * set up security properties for server command line.
-	 */
-	protected void setSecurityProps() throws java.io.IOException, ClassNotFoundException
-	{
-		if (this.D == null)
-			this.D = new Vector();
-		
-		String userDir = System.getProperty("user.dir");
-		String policyFile = System.getProperty("serverPolicyFile");
-		if (policyFile == null)
-		{
-				File userDirHandle = new File(userDir);
-				CopySuppFiles.copyFiles(userDirHandle,DEFAULT_POLICY);
-				policyFile = userDir + baseName(DEFAULT_POLICY);
-		}
-
-		String serverCodeBase = System.getProperty("serverCodeBase");
-		if (serverCodeBase == null)
-			serverCodeBase = findCodeBase();
-   
-		if (serverCodeBase == null)
-		{
-			String ws = guessWSHome();
-			serverCodeBase = ws + DEFAULT_CODEBASE;
-		}
-
-		if (policyFile.toLowerCase().equals("none") || 
-			(!(new File(policyFile)).exists()) ||
-			!(new File(policyFile)).exists())
-		{
-			System.out.println("WARNING: Running without Security manager." +
-							   "serverPolicy(" + policyFile + 
-							   ") or serverCodeBase(" +  serverCodeBase + 
-							   ") not available");
-		return;
-		}
-		this.D.addElement("java.security.manager");
-		this.D.addElement("java.security.policy=" + policyFile);
-		this.D.addElement("csinfo.codebase=" + serverCodeBase);
-		this.D.addElement("csinfo.serverhost=localhost");
-		this.D.addElement("csinfo.trustedhost=localhost");	 
-
-	}
-
-	/** Get the base file name from a resource name string
-	 * @param resourceName (e.g. /org/apache/derbyTesting/functionTests/util/nwsvr.policy)
-	 * @return short name (e.g. nwsvr.policy)
-	 */
-	private String baseName(String resourceName)
-	{
-	  
-		return resourceName.substring(resourceName.lastIndexOf("/"),resourceName.length());
-	}
-}
+/*
+
+   Derby - Class org.apache.derbyTesting.functionTests.harness.jvm
+
+   Copyright 1999, 2004 The Apache Software Foundation or its licensors, as applicable.
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+ */
+
+package org.apache.derbyTesting.functionTests.harness;
+
+import java.util.Vector;
+import java.util.StringTokenizer;
+import java.io.File;
+import org.apache.derby.impl.tools.sysinfo.ZipInfoProperties;
+
+
+/**
+  <p>This class provides the interface and mechanism
+  for plugging VMs into the system.  Typically
+  you only need to add a new implementation if your
+  supported attributes or command line building are
+  different from those that exist.
+
+  <p>this class has fields for all options that a JDK VM can take,
+  that is the reference point for all others.  Note some VMs (like jview)
+  don't take all options and will ignore them (like -mx).  Defining
+  the system property "verbose" to 1 will give you warnings for ignored
+  properties in a properly implemented subclass.
+
+  <p> here is the canonical output from java -help for options we take:
+  <pre>
+    -noasyncgc        don't allow asynchronous garbage collection
+    -verbosegc        print a message when garbage collection occurs
+    -noclassgc        disable class garbage collection
+    -ss<number>       set the maximum native stack size for any thread
+    -oss<number>      set the maximum Java stack size for any thread
+    -ms<number>       set the initial Java heap size
+    -mx<number>       set the maximum Java heap size
+    -classpath <directories separated by semicolons>
+                      list directories in which to look for classes
+    -prof[:<file>]    output profiling data to .\java.prof or .\<file>
+    -verify           verify all classes when read in
+    -noverify         do not verify any class
+    -nojit            turn off the jit
+    -Dprop=name       define property; can be specified more than once
+  </pre>
+
+  @author ames
+ */
+
+
+public abstract class jvm {
+
+    // they all take their defaults as the initial value.
+    // -1, null, and false all will mean we won't include them
+    // in the command line.
+
+    // flags             just take the whole string of flags as is
+    public String flags = null;
+    // -noasyncgc        don't allow asynchronous garbage collection
+    public boolean noasyncgc = false;
+    // -verbosegc        print a message when garbage collection occurs
+    public boolean verbosegc = false;
+    // -noclassgc        disable class garbage collection
+    public boolean noclassgc = false;
+    // -ss<number>       set the maximum native stack size for any thread
+    public long ss = -1;
+    // -oss<number>      set the maximum Java stack size for any thread
+    public long oss = -1;
+    // -ms<number>       set the initial Java heap size
+    public long ms = -1;
+    // -mx<number>       set the maximum Java heap size
+    public long mx = -1;
+    // -classpath <directories separated by semicolons>
+    //                   list directories in which to look for classes
+    public String classpath = null;
+    // -prof[:<file>]    output profiling data to .\java.prof or .\<file>
+    public String prof = null;
+    // -verify           verify all classes when read in
+    //                   (remote verification is the default)
+    public boolean verify = false;
+    // -noverify         do not verify any class
+    //                   (remote verification is the default)
+    public boolean noverify = false;
+    // -nojit            turn off the jit
+    public boolean nojit = false;
+    // -Dprop=name       define property; can be specified more than once
+    public Vector D = null;
+    // java cmd (java, java_g)
+    public String javaCmd = "java";
+    // major and minor version
+    public String majorVersion = "";
+    public String minorVersion = "";
+    public int imajor = 0;
+    public int iminor = 0;
+
+	// security defaults relative to WS
+	// not used if jvmargs serverPolicyFile or serverCodeBase are set
+	private static String DEFAULT_POLICY="util/nwsvr.policy";
+	private static String DEFAULT_CODEBASE="/classes";
+
+    // constructors
+    public jvm() { }
+
+    public jvm(boolean noasyncgc, boolean verbosegc, boolean noclassgc,
+    long ss, long oss, long ms, long mx, String classpath, String prof,
+    boolean verify, boolean noverify, boolean nojit, Vector D) {
+        this.noasyncgc=noasyncgc;
+        this.noclassgc=noclassgc;
+        this.verbosegc=verbosegc;
+        this.ss=ss;
+        this.oss=oss;
+        this.ms=ms;
+        this.mx=mx;
+        this.classpath=classpath;
+        this.prof=prof;
+        this.verify=verify;
+        this.noverify=noverify;
+        this.nojit=nojit;
+        this.D=D;
+    }
+    // more typical use:
+    public jvm(String classpath, Vector D) {
+        this.classpath=classpath;
+        this.D=D;
+    }
+    // more typical use:
+    public jvm(long ms, long mx, String classpath, Vector D) {
+        this.ms=ms;
+        this.mx=mx;
+        this.classpath=classpath;
+        this.D=D;
+    }
+
+	/**
+       return the property definition introducer, with a space if a
+       separator is needed.
+     */
+    public abstract String getDintro();
+	public abstract String getName();
+    public void setNoasyncgc(boolean noasyncgc) { this.noasyncgc=noasyncgc; }
+    public void setNoclassgc(boolean noclassgc) { this.noclassgc=noclassgc; }
+    public void setVerbosegc(boolean verbosegc) { this.verbosegc=verbosegc; }
+    public void setSs(long ss) { this.ss=ss; }
+    public void setOss(long oss) { this.oss=oss; }
+    public void setMs(long ms) { this.ms = ms; }
+    public void setMx(long mx) { this.mx = mx; }
+    public void setClasspath(String classpath) { this.classpath = classpath; }
+    public void setProf(String prof) { this.prof=prof; }
+    public void setVerify(boolean verify) { this.verify=verify; }
+    public void setNoverify(boolean noverify) { this.noverify=noverify; }
+    public void setNojit(boolean nojit) { this.nojit=nojit; }
+    public void setD(Vector D) { this.D = D; }
+    public void setFlags(String flags) { this.flags = flags; }
+    public void setJavaCmd(String jcmd) { this.javaCmd = jcmd; }
+
+	
+    public Vector getCommandLine()
+    {
+        Vector v = new Vector();
+        v.addElement(javaCmd);
+        if ( (flags != null) && (flags.length()>0) )
+        {
+            StringTokenizer st = new StringTokenizer(flags);
+            while (st.hasMoreTokens())
+            {
+                v.addElement(st.nextToken());
+            }
+        }
+        return v;
+    }
+
+    // implementation, used by subclasses only
+    int verboselevel = -1;
+    public void warn(String msg) {
+      if (verboselevel == -1) {
+         try {
+           verboselevel = Integer.parseInt((String)(System.getProperty("verbose")));
+         } catch (Exception e) {
+           verboselevel = 0;
+         }
+      }
+      if (verboselevel >0)
+          System.out.println("jvm: "+msg);
+    }
+
+    // utility for locating a jvm.
+    /**
+        pass in class name for JVM.  If we can't find it, try
+	also org.apache.derbyTesting.functionTests.harness.<jvmName>
+     */
+    public static jvm getJvm(String jvmName) throws ClassNotFoundException, InstantiationException, IllegalAccessException {
+	jvm result = null;
+        try {
+		result = (jvm)Class.forName(jvmName).newInstance();
+        } catch (ClassNotFoundException e) {
+		result = (jvm)Class.forName("org.apache.derbyTesting.functionTests.harness."+jvmName).newInstance();
+        }
+        return result;
+    }
+
+	/**
+	  Get the current JVM using the normal test harness rules for finding
+	  a JVM.
+	  <OL>
+	  <LI> If the sytem property 'jvm' use this name.
+	  <LI> else if the java version starts with 1.2 use
+	       "jdk12".
+	  <LI> else use "currentjvm".	
+	  */
+	public static jvm getCurrentJvm() throws Exception
+	{
+		String jvmName = System.getProperty("jvm");
+		if ( (jvmName == null) || (jvmName.length()==0) )
+		{
+			String javaVersion = System.getProperty("java.version");
+		    if (javaVersion.startsWith("1.2"))
+		        jvmName = "jdk12";
+		    else
+		        jvmName = "currentjvm";
+		}
+		return getJvm(jvmName);
+	}
+
+    /**
+      Return the major version number
+    */
+    public int getMajorVersion()
+    {
+        return imajor;
+    }
+    
+    /**
+      Return the major version number
+    */
+    public int getMinorVersion()
+    {
+        return iminor;
+    }
+    
+	/**
+	  Get the current JVM using the normal test harness rules for finding
+	  a JVM.
+	  */
+	public void setVersion() throws Exception
+	{
+		// check for jdk12 or higher
+	    String javaVersion = System.getProperty("java.version");
+		int i = javaVersion.indexOf('.');
+		int j = javaVersion.indexOf('.', i+1);
+		majorVersion = javaVersion.substring(0, i);
+		minorVersion = javaVersion.substring(i+1, j);
+		Integer minor = new Integer(minorVersion);
+		iminor = minor.intValue();
+		Integer major = new Integer(majorVersion);
+		imajor = major.intValue();
+		
+		String jvmName = System.getProperty("jvm");
+		
+		if ( (jvmName == null) || (jvmName.length()==0) )
+		{
+		    if (iminor < 2)
+		        jvmName = "currentjvm";
+		    else
+		        jvmName = "jdk" + majorVersion + minorVersion;
+		}
+	}
+	
+	/** Find $WS based on the assumption that JAVA_HOME is $WS/<jvm_name>
+	 * or $WS/<jvm_name>/jre
+	 * @return path of $WS
+	 */
+	protected static String guessWSHome()
+	{
+		String wshome=""; 
+		String jhome = System.getProperty("java.home");
+		String sep = System.getProperty("file.separator");
+		// need to strip off the java directory  assuming it's something
+		// like ibm14/jre or ibm14
+		wshome = jhome.substring(0,jhome.indexOf(sep + "jre"));
+		wshome = wshome.substring(0,wshome.lastIndexOf(sep));
+		return wshome;
+	}
+
+	protected static String findCodeBase()
+	{
+		String classpath = System.getProperty("java.class.path");
+		char sep = '/';
+		ZipInfoProperties zip[]= 
+			org.apache.derby.impl.tools.sysinfo.Main.getAllInfo (classpath);
+		for (int i = 0; i < zip.length; i++)
+		{
+			// it's a url so should just have forward slashes
+			String location = zip[i].getLocation().replace('\\','/');
+			if (location.indexOf("derbynet.jar") != -1)
+			{
+				return location.substring(0,location.lastIndexOf(sep));
+			}
+			else if ((location.indexOf("classes") != -1) &&
+					 location.indexOf(".jar") == -1)
+				return location;
+		}
+		return null;
+	}
+	
+	/**
+	 * set up security properties for server command line.
+	 */
+	protected void setSecurityProps() throws java.io.IOException, ClassNotFoundException
+	{
+		if (this.D == null)
+			this.D = new Vector();
+		
+		String userDir = System.getProperty("user.dir");
+		String policyFile = System.getProperty("serverPolicyFile");
+		if (policyFile == null)
+		{
+				File userDirHandle = new File(userDir);
+				CopySuppFiles.copyFiles(userDirHandle,DEFAULT_POLICY);
+				policyFile = userDir + baseName(DEFAULT_POLICY);
+		}
+
+		String serverCodeBase = System.getProperty("serverCodeBase");
+		if (serverCodeBase == null)
+			serverCodeBase = findCodeBase();
+   
+		if (serverCodeBase == null)
+		{
+			String ws = guessWSHome();
+			serverCodeBase = ws + DEFAULT_CODEBASE;
+		}
+
+		if (policyFile.toLowerCase().equals("none") || 
+			(!(new File(policyFile)).exists()) ||
+			!(new File(policyFile)).exists())
+		{
+			System.out.println("WARNING: Running without Security manager." +
+							   "serverPolicy(" + policyFile + 
+							   ") or serverCodeBase(" +  serverCodeBase + 
+							   ") not available");
+		return;
+		}
+		this.D.addElement("java.security.manager");
+		this.D.addElement("java.security.policy=" + policyFile);
+		this.D.addElement("csinfo.codebase=" + serverCodeBase);
+		this.D.addElement("csinfo.serverhost=localhost");
+		this.D.addElement("csinfo.trustedhost=localhost");	 
+
+	}
+
+	/** Get the base file name from a resource name string
+	 * @param resourceName (e.g. /org/apache/derbyTesting/functionTests/util/nwsvr.policy)
+	 * @return short name (e.g. nwsvr.policy)
+	 */
+	private String baseName(String resourceName)
+	{
+	  
+		return resourceName.substring(resourceName.lastIndexOf("/"),resourceName.length());
+	}
+}

Modified: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/shutdown.java
Url: http://svn.apache.org/viewcvs/incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/shutdown.java?view=diff&rev=122528&p1=incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/shutdown.java&r1=122527&p2=incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/shutdown.java&r2=122528
==============================================================================
--- incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/shutdown.java	(original)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/shutdown.java	Wed Dec 15 22:20:35 2004
@@ -1,106 +1,106 @@
-/*
-
-   Derby - Class org.apache.derbyTesting.functionTests.harness.shutdown
-
-   Copyright 2000, 2004 The Apache Software Foundation or its licensors, as applicable.
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-   You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
-
- */
-
-package org.apache.derbyTesting.functionTests.harness;
-
-import java.sql.Connection;
-import java.sql.DriverManager;
-import java.sql.SQLException;
-import java.sql.SQLWarning;
-import java.util.*;
-import java.io.*;
-
-import org.apache.derby.tools.JDBCDisplayUtil;
-
-/*
- **
- ** shutdown
- **
- **	force a shutdown after a test complete to guarantee shutdown
- **	which doesn't always seem to happen with useprocess=false
- **
- */
-public class shutdown
-{
- 
-	static String shutdownurl;
-	static String driver = "org.apache.derby.jdbc.EmbeddedDriver";
-	static String systemHome;
-
-	public static void main(String[] args) throws SQLException,
-		InterruptedException, Exception 
-    {
-		systemHome = args[0];
-		shutdownurl = args[1];
-		try
-		{
-		    doit();
-		}
-		catch(Exception e)
-		{
-		    System.out.println("Exception in shutdown: " + e);
-		}
-	}
-
-	public static void doit() throws SQLException,
-		InterruptedException, Exception 
-	{
-		Connection conn = null;
-		boolean finished = false;	
-		Date d = new Date();
-
-        Properties sp = System.getProperties();
-        if (systemHome == null)
-        {
-		    systemHome = sp.getProperty("user.dir") + File.separatorChar +
-			"testCSHome";
-        	sp.put("derby.system.home", systemHome);
-        	System.setProperties(sp);
-        }
-		boolean useprocess = true;
-		String up = sp.getProperty("useprocess");
-		if (up != null && up.equals("false"))
-			useprocess = false;		
-
-        PrintStream stdout = System.out;
-    	PrintStream stderr = System.err;
-
-		Class.forName(driver).newInstance();
-
-		try 
-		{
-			conn = DriverManager.getConnection(shutdownurl);
-		} 
-		catch (SQLException  se) 
-		{
-		    if (se.getSQLState().equals("08006"))
-		    {
-		        // It was already shutdown
-		        //System.out.println("Shutdown with: " + shutdownurl);
-		    }
-		    else 
-			{
-				System.out.println("shutdown failed for " + shutdownurl);
-				JDBCDisplayUtil.ShowException(System.out, se);
-				System.exit(1);
-	        }
-		}
-    }
-}
+/*
+
+   Derby - Class org.apache.derbyTesting.functionTests.harness.shutdown
+
+   Copyright 2000, 2004 The Apache Software Foundation or its licensors, as applicable.
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+ */
+
+package org.apache.derbyTesting.functionTests.harness;
+
+import java.sql.Connection;
+import java.sql.DriverManager;
+import java.sql.SQLException;
+import java.sql.SQLWarning;
+import java.util.*;
+import java.io.*;
+
+import org.apache.derby.tools.JDBCDisplayUtil;
+
+/*
+ **
+ ** shutdown
+ **
+ **	force a shutdown after a test complete to guarantee shutdown
+ **	which doesn't always seem to happen with useprocess=false
+ **
+ */
+public class shutdown
+{
+ 
+	static String shutdownurl;
+	static String driver = "org.apache.derby.jdbc.EmbeddedDriver";
+	static String systemHome;
+
+	public static void main(String[] args) throws SQLException,
+		InterruptedException, Exception 
+    {
+		systemHome = args[0];
+		shutdownurl = args[1];
+		try
+		{
+		    doit();
+		}
+		catch(Exception e)
+		{
+		    System.out.println("Exception in shutdown: " + e);
+		}
+	}
+
+	public static void doit() throws SQLException,
+		InterruptedException, Exception 
+	{
+		Connection conn = null;
+		boolean finished = false;	
+		Date d = new Date();
+
+        Properties sp = System.getProperties();
+        if (systemHome == null)
+        {
+		    systemHome = sp.getProperty("user.dir") + File.separatorChar +
+			"testCSHome";
+        	sp.put("derby.system.home", systemHome);
+        	System.setProperties(sp);
+        }
+		boolean useprocess = true;
+		String up = sp.getProperty("useprocess");
+		if (up != null && up.equals("false"))
+			useprocess = false;		
+
+        PrintStream stdout = System.out;
+    	PrintStream stderr = System.err;
+
+		Class.forName(driver).newInstance();
+
+		try 
+		{
+			conn = DriverManager.getConnection(shutdownurl);
+		} 
+		catch (SQLException  se) 
+		{
+		    if (se.getSQLState().equals("08006"))
+		    {
+		        // It was already shutdown
+		        //System.out.println("Shutdown with: " + shutdownurl);
+		    }
+		    else 
+			{
+				System.out.println("shutdown failed for " + shutdownurl);
+				JDBCDisplayUtil.ShowException(System.out, se);
+				System.exit(1);
+	        }
+		}
+    }
+}

Modified: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/testtypes.properties
Url: http://svn.apache.org/viewcvs/incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/testtypes.properties?view=diff&rev=122528&p1=incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/testtypes.properties&r1=122527&p2=incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/testtypes.properties&r2=122528
==============================================================================
--- incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/testtypes.properties	(original)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/testtypes.properties	Wed Dec 15 22:20:35 2004
@@ -1 +1 @@
-testtypes=sql,sql2,unit,java,multi,demo
+testtypes=sql,sql2,unit,java,multi,demo

Modified: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/AIjdbc.out
Url: http://svn.apache.org/viewcvs/incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/AIjdbc.out?view=diff&rev=122528&p1=incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/AIjdbc.out&r1=122527&p2=incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/AIjdbc.out&r2=122528
==============================================================================
--- incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/AIjdbc.out	(original)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/AIjdbc.out	Wed Dec 15 22:20:35 2004
@@ -1,6 +1,6 @@
-Test AIjdbc starting
-Test AIjdbc:creating objects
-Test AIjdbc:select from base table
-Test AIjdbc:select from view
-PASS
-Test AIjdbc finished
+Test AIjdbc starting
+Test AIjdbc:creating objects
+Test AIjdbc:select from base table
+Test AIjdbc:select from view
+PASS
+Test AIjdbc finished

Modified: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/CharUTF8.out
Url: http://svn.apache.org/viewcvs/incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/CharUTF8.out?view=diff&rev=122528&p1=incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/CharUTF8.out&r1=122527&p2=incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/CharUTF8.out&r2=122528
==============================================================================
--- incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/CharUTF8.out	(original)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/CharUTF8.out	Wed Dec 15 22:20:35 2004
@@ -1,1095 +1,1095 @@
-Test CharUTF8 starting
-Testing with last char value 59 length=60
-Testing with last char value 119 length=60
-Testing with last char value 179 length=60
-Testing with last char value 239 length=60
-Testing with last char value 299 length=60
-Testing with last char value 359 length=60
-Testing with last char value 419 length=60
-Testing with last char value 479 length=60
-Testing with last char value 539 length=60
-Testing with last char value 599 length=60
-Testing with last char value 659 length=60
-Testing with last char value 719 length=60
-Testing with last char value 779 length=60
-Testing with last char value 839 length=60
-Testing with last char value 899 length=60
-Testing with last char value 959 length=60
-Testing with last char value 1019 length=60
-Testing with last char value 1079 length=60
-Testing with last char value 1139 length=60
-Testing with last char value 1199 length=60
-Testing with last char value 1259 length=60
-Testing with last char value 1319 length=60
-Testing with last char value 1379 length=60
-Testing with last char value 1439 length=60
-Testing with last char value 1499 length=60
-Testing with last char value 1559 length=60
-Testing with last char value 1619 length=60
-Testing with last char value 1679 length=60
-Testing with last char value 1739 length=60
-Testing with last char value 1799 length=60
-Testing with last char value 1859 length=60
-Testing with last char value 1919 length=60
-Testing with last char value 1979 length=60
-Testing with last char value 2039 length=60
-Testing with last char value 2099 length=60
-Testing with last char value 2159 length=60
-Testing with last char value 2219 length=60
-Testing with last char value 2279 length=60
-Testing with last char value 2339 length=60
-Testing with last char value 2399 length=60
-Testing with last char value 2459 length=60
-Testing with last char value 2519 length=60
-Testing with last char value 2579 length=60
-Testing with last char value 2639 length=60
-Testing with last char value 2699 length=60
-Testing with last char value 2759 length=60
-Testing with last char value 2819 length=60
-Testing with last char value 2879 length=60
-Testing with last char value 2939 length=60
-Testing with last char value 2999 length=60
-Testing with last char value 3059 length=60
-Testing with last char value 3119 length=60
-Testing with last char value 3179 length=60
-Testing with last char value 3239 length=60
-Testing with last char value 3299 length=60
-Testing with last char value 3359 length=60
-Testing with last char value 3419 length=60
-Testing with last char value 3479 length=60
-Testing with last char value 3539 length=60
-Testing with last char value 3599 length=60
-Testing with last char value 3659 length=60
-Testing with last char value 3719 length=60
-Testing with last char value 3779 length=60
-Testing with last char value 3839 length=60
-Testing with last char value 3899 length=60
-Testing with last char value 3959 length=60
-Testing with last char value 4019 length=60
-Testing with last char value 4079 length=60
-Testing with last char value 4139 length=60
-Testing with last char value 4199 length=60
-Testing with last char value 4259 length=60
-Testing with last char value 4319 length=60
-Testing with last char value 4379 length=60
-Testing with last char value 4439 length=60
-Testing with last char value 4499 length=60
-Testing with last char value 4559 length=60
-Testing with last char value 4619 length=60
-Testing with last char value 4679 length=60
-Testing with last char value 4739 length=60
-Testing with last char value 4799 length=60
-Testing with last char value 4859 length=60
-Testing with last char value 4919 length=60
-Testing with last char value 4979 length=60
-Testing with last char value 5039 length=60
-Testing with last char value 5099 length=60
-Testing with last char value 5159 length=60
-Testing with last char value 5219 length=60
-Testing with last char value 5279 length=60
-Testing with last char value 5339 length=60
-Testing with last char value 5399 length=60
-Testing with last char value 5459 length=60
-Testing with last char value 5519 length=60
-Testing with last char value 5579 length=60
-Testing with last char value 5639 length=60
-Testing with last char value 5699 length=60
-Testing with last char value 5759 length=60
-Testing with last char value 5819 length=60
-Testing with last char value 5879 length=60
-Testing with last char value 5939 length=60
-Testing with last char value 5999 length=60
-Testing with last char value 6059 length=60
-Testing with last char value 6119 length=60
-Testing with last char value 6179 length=60
-Testing with last char value 6239 length=60
-Testing with last char value 6299 length=60
-Testing with last char value 6359 length=60
-Testing with last char value 6419 length=60
-Testing with last char value 6479 length=60
-Testing with last char value 6539 length=60
-Testing with last char value 6599 length=60
-Testing with last char value 6659 length=60
-Testing with last char value 6719 length=60
-Testing with last char value 6779 length=60
-Testing with last char value 6839 length=60
-Testing with last char value 6899 length=60
-Testing with last char value 6959 length=60
-Testing with last char value 7019 length=60
-Testing with last char value 7079 length=60
-Testing with last char value 7139 length=60
-Testing with last char value 7199 length=60
-Testing with last char value 7259 length=60
-Testing with last char value 7319 length=60
-Testing with last char value 7379 length=60
-Testing with last char value 7439 length=60
-Testing with last char value 7499 length=60
-Testing with last char value 7559 length=60
-Testing with last char value 7619 length=60
-Testing with last char value 7679 length=60
-Testing with last char value 7739 length=60
-Testing with last char value 7799 length=60
-Testing with last char value 7859 length=60
-Testing with last char value 7919 length=60
-Testing with last char value 7979 length=60
-Testing with last char value 8039 length=60
-Testing with last char value 8099 length=60
-Testing with last char value 8159 length=60
-Testing with last char value 8219 length=60
-Testing with last char value 8279 length=60
-Testing with last char value 8339 length=60
-Testing with last char value 8399 length=60
-Testing with last char value 8459 length=60
-Testing with last char value 8519 length=60
-Testing with last char value 8579 length=60
-Testing with last char value 8639 length=60
-Testing with last char value 8699 length=60
-Testing with last char value 8759 length=60
-Testing with last char value 8819 length=60
-Testing with last char value 8879 length=60
-Testing with last char value 8939 length=60
-Testing with last char value 8999 length=60
-Testing with last char value 9059 length=60
-Testing with last char value 9119 length=60
-Testing with last char value 9179 length=60
-Testing with last char value 9239 length=60
-Testing with last char value 9299 length=60
-Testing with last char value 9359 length=60
-Testing with last char value 9419 length=60
-Testing with last char value 9479 length=60
-Testing with last char value 9539 length=60
-Testing with last char value 9599 length=60
-Testing with last char value 9659 length=60
-Testing with last char value 9719 length=60
-Testing with last char value 9779 length=60
-Testing with last char value 9839 length=60
-Testing with last char value 9899 length=60
-Testing with last char value 9959 length=60
-Testing with last char value 10019 length=60
-Testing with last char value 10079 length=60
-Testing with last char value 10139 length=60
-Testing with last char value 10199 length=60
-Testing with last char value 10259 length=60
-Testing with last char value 10319 length=60
-Testing with last char value 10379 length=60
-Testing with last char value 10439 length=60
-Testing with last char value 10499 length=60
-Testing with last char value 10559 length=60
-Testing with last char value 10619 length=60
-Testing with last char value 10679 length=60
-Testing with last char value 10739 length=60
-Testing with last char value 10799 length=60
-Testing with last char value 10859 length=60
-Testing with last char value 10919 length=60
-Testing with last char value 10979 length=60
-Testing with last char value 11039 length=60
-Testing with last char value 11099 length=60
-Testing with last char value 11159 length=60
-Testing with last char value 11219 length=60
-Testing with last char value 11279 length=60
-Testing with last char value 11339 length=60
-Testing with last char value 11399 length=60
-Testing with last char value 11459 length=60
-Testing with last char value 11519 length=60
-Testing with last char value 11579 length=60
-Testing with last char value 11639 length=60
-Testing with last char value 11699 length=60
-Testing with last char value 11759 length=60
-Testing with last char value 11819 length=60
-Testing with last char value 11879 length=60
-Testing with last char value 11939 length=60
-Testing with last char value 11999 length=60
-Testing with last char value 12059 length=60
-Testing with last char value 12119 length=60
-Testing with last char value 12179 length=60
-Testing with last char value 12239 length=60
-Testing with last char value 12299 length=60
-Testing with last char value 12359 length=60
-Testing with last char value 12419 length=60
-Testing with last char value 12479 length=60
-Testing with last char value 12539 length=60
-Testing with last char value 12599 length=60
-Testing with last char value 12659 length=60
-Testing with last char value 12719 length=60
-Testing with last char value 12779 length=60
-Testing with last char value 12839 length=60
-Testing with last char value 12899 length=60
-Testing with last char value 12959 length=60
-Testing with last char value 13019 length=60
-Testing with last char value 13079 length=60
-Testing with last char value 13139 length=60
-Testing with last char value 13199 length=60
-Testing with last char value 13259 length=60
-Testing with last char value 13319 length=60
-Testing with last char value 13379 length=60
-Testing with last char value 13439 length=60
-Testing with last char value 13499 length=60
-Testing with last char value 13559 length=60
-Testing with last char value 13619 length=60
-Testing with last char value 13679 length=60
-Testing with last char value 13739 length=60
-Testing with last char value 13799 length=60
-Testing with last char value 13859 length=60
-Testing with last char value 13919 length=60
-Testing with last char value 13979 length=60
-Testing with last char value 14039 length=60
-Testing with last char value 14099 length=60
-Testing with last char value 14159 length=60
-Testing with last char value 14219 length=60
-Testing with last char value 14279 length=60
-Testing with last char value 14339 length=60
-Testing with last char value 14399 length=60
-Testing with last char value 14459 length=60
-Testing with last char value 14519 length=60
-Testing with last char value 14579 length=60
-Testing with last char value 14639 length=60
-Testing with last char value 14699 length=60
-Testing with last char value 14759 length=60
-Testing with last char value 14819 length=60
-Testing with last char value 14879 length=60
-Testing with last char value 14939 length=60
-Testing with last char value 14999 length=60
-Testing with last char value 15059 length=60
-Testing with last char value 15119 length=60
-Testing with last char value 15179 length=60
-Testing with last char value 15239 length=60
-Testing with last char value 15299 length=60
-Testing with last char value 15359 length=60
-Testing with last char value 15419 length=60
-Testing with last char value 15479 length=60
-Testing with last char value 15539 length=60
-Testing with last char value 15599 length=60
-Testing with last char value 15659 length=60
-Testing with last char value 15719 length=60
-Testing with last char value 15779 length=60
-Testing with last char value 15839 length=60
-Testing with last char value 15899 length=60
-Testing with last char value 15959 length=60
-Testing with last char value 16019 length=60
-Testing with last char value 16079 length=60
-Testing with last char value 16139 length=60
-Testing with last char value 16199 length=60
-Testing with last char value 16259 length=60
-Testing with last char value 16319 length=60
-Testing with last char value 16379 length=60
-Testing with last char value 16439 length=60
-Testing with last char value 16499 length=60
-Testing with last char value 16559 length=60
-Testing with last char value 16619 length=60
-Testing with last char value 16679 length=60
-Testing with last char value 16739 length=60
-Testing with last char value 16799 length=60
-Testing with last char value 16859 length=60
-Testing with last char value 16919 length=60
-Testing with last char value 16979 length=60
-Testing with last char value 17039 length=60
-Testing with last char value 17099 length=60
-Testing with last char value 17159 length=60
-Testing with last char value 17219 length=60
-Testing with last char value 17279 length=60
-Testing with last char value 17339 length=60
-Testing with last char value 17399 length=60
-Testing with last char value 17459 length=60
-Testing with last char value 17519 length=60
-Testing with last char value 17579 length=60
-Testing with last char value 17639 length=60
-Testing with last char value 17699 length=60
-Testing with last char value 17759 length=60
-Testing with last char value 17819 length=60
-Testing with last char value 17879 length=60
-Testing with last char value 17939 length=60
-Testing with last char value 17999 length=60
-Testing with last char value 18059 length=60
-Testing with last char value 18119 length=60
-Testing with last char value 18179 length=60
-Testing with last char value 18239 length=60
-Testing with last char value 18299 length=60
-Testing with last char value 18359 length=60
-Testing with last char value 18419 length=60
-Testing with last char value 18479 length=60
-Testing with last char value 18539 length=60
-Testing with last char value 18599 length=60
-Testing with last char value 18659 length=60
-Testing with last char value 18719 length=60
-Testing with last char value 18779 length=60
-Testing with last char value 18839 length=60
-Testing with last char value 18899 length=60
-Testing with last char value 18959 length=60
-Testing with last char value 19019 length=60
-Testing with last char value 19079 length=60
-Testing with last char value 19139 length=60
-Testing with last char value 19199 length=60
-Testing with last char value 19259 length=60
-Testing with last char value 19319 length=60
-Testing with last char value 19379 length=60
-Testing with last char value 19439 length=60
-Testing with last char value 19499 length=60
-Testing with last char value 19559 length=60
-Testing with last char value 19619 length=60
-Testing with last char value 19679 length=60
-Testing with last char value 19739 length=60
-Testing with last char value 19799 length=60
-Testing with last char value 19859 length=60
-Testing with last char value 19919 length=60
-Testing with last char value 19979 length=60
-Testing with last char value 20039 length=60
-Testing with last char value 20099 length=60
-Testing with last char value 20159 length=60
-Testing with last char value 20219 length=60
-Testing with last char value 20279 length=60
-Testing with last char value 20339 length=60
-Testing with last char value 20399 length=60
-Testing with last char value 20459 length=60
-Testing with last char value 20519 length=60
-Testing with last char value 20579 length=60
-Testing with last char value 20639 length=60
-Testing with last char value 20699 length=60
-Testing with last char value 20759 length=60
-Testing with last char value 20819 length=60
-Testing with last char value 20879 length=60
-Testing with last char value 20939 length=60
-Testing with last char value 20999 length=60
-Testing with last char value 21059 length=60
-Testing with last char value 21119 length=60
-Testing with last char value 21179 length=60
-Testing with last char value 21239 length=60
-Testing with last char value 21299 length=60
-Testing with last char value 21359 length=60
-Testing with last char value 21419 length=60
-Testing with last char value 21479 length=60
-Testing with last char value 21539 length=60
-Testing with last char value 21599 length=60
-Testing with last char value 21659 length=60
-Testing with last char value 21719 length=60
-Testing with last char value 21779 length=60
-Testing with last char value 21839 length=60
-Testing with last char value 21899 length=60
-Testing with last char value 21959 length=60
-Testing with last char value 22019 length=60
-Testing with last char value 22079 length=60
-Testing with last char value 22139 length=60
-Testing with last char value 22199 length=60
-Testing with last char value 22259 length=60
-Testing with last char value 22319 length=60
-Testing with last char value 22379 length=60
-Testing with last char value 22439 length=60
-Testing with last char value 22499 length=60
-Testing with last char value 22559 length=60
-Testing with last char value 22619 length=60
-Testing with last char value 22679 length=60
-Testing with last char value 22739 length=60
-Testing with last char value 22799 length=60
-Testing with last char value 22859 length=60
-Testing with last char value 22919 length=60
-Testing with last char value 22979 length=60
-Testing with last char value 23039 length=60
-Testing with last char value 23099 length=60
-Testing with last char value 23159 length=60
-Testing with last char value 23219 length=60
-Testing with last char value 23279 length=60
-Testing with last char value 23339 length=60
-Testing with last char value 23399 length=60
-Testing with last char value 23459 length=60
-Testing with last char value 23519 length=60
-Testing with last char value 23579 length=60
-Testing with last char value 23639 length=60
-Testing with last char value 23699 length=60
-Testing with last char value 23759 length=60
-Testing with last char value 23819 length=60
-Testing with last char value 23879 length=60
-Testing with last char value 23939 length=60
-Testing with last char value 23999 length=60
-Testing with last char value 24059 length=60
-Testing with last char value 24119 length=60
-Testing with last char value 24179 length=60
-Testing with last char value 24239 length=60
-Testing with last char value 24299 length=60
-Testing with last char value 24359 length=60
-Testing with last char value 24419 length=60
-Testing with last char value 24479 length=60
-Testing with last char value 24539 length=60
-Testing with last char value 24599 length=60
-Testing with last char value 24659 length=60
-Testing with last char value 24719 length=60
-Testing with last char value 24779 length=60
-Testing with last char value 24839 length=60
-Testing with last char value 24899 length=60
-Testing with last char value 24959 length=60
-Testing with last char value 25019 length=60
-Testing with last char value 25079 length=60
-Testing with last char value 25139 length=60
-Testing with last char value 25199 length=60
-Testing with last char value 25259 length=60
-Testing with last char value 25319 length=60
-Testing with last char value 25379 length=60
-Testing with last char value 25439 length=60
-Testing with last char value 25499 length=60
-Testing with last char value 25559 length=60
-Testing with last char value 25619 length=60
-Testing with last char value 25679 length=60
-Testing with last char value 25739 length=60
-Testing with last char value 25799 length=60
-Testing with last char value 25859 length=60
-Testing with last char value 25919 length=60
-Testing with last char value 25979 length=60
-Testing with last char value 26039 length=60
-Testing with last char value 26099 length=60
-Testing with last char value 26159 length=60
-Testing with last char value 26219 length=60
-Testing with last char value 26279 length=60
-Testing with last char value 26339 length=60
-Testing with last char value 26399 length=60
-Testing with last char value 26459 length=60
-Testing with last char value 26519 length=60
-Testing with last char value 26579 length=60
-Testing with last char value 26639 length=60
-Testing with last char value 26699 length=60
-Testing with last char value 26759 length=60
-Testing with last char value 26819 length=60
-Testing with last char value 26879 length=60
-Testing with last char value 26939 length=60
-Testing with last char value 26999 length=60
-Testing with last char value 27059 length=60
-Testing with last char value 27119 length=60
-Testing with last char value 27179 length=60
-Testing with last char value 27239 length=60
-Testing with last char value 27299 length=60
-Testing with last char value 27359 length=60
-Testing with last char value 27419 length=60
-Testing with last char value 27479 length=60
-Testing with last char value 27539 length=60
-Testing with last char value 27599 length=60
-Testing with last char value 27659 length=60
-Testing with last char value 27719 length=60
-Testing with last char value 27779 length=60
-Testing with last char value 27839 length=60
-Testing with last char value 27899 length=60
-Testing with last char value 27959 length=60
-Testing with last char value 28019 length=60
-Testing with last char value 28079 length=60
-Testing with last char value 28139 length=60
-Testing with last char value 28199 length=60
-Testing with last char value 28259 length=60
-Testing with last char value 28319 length=60
-Testing with last char value 28379 length=60
-Testing with last char value 28439 length=60
-Testing with last char value 28499 length=60
-Testing with last char value 28559 length=60
-Testing with last char value 28619 length=60
-Testing with last char value 28679 length=60
-Testing with last char value 28739 length=60
-Testing with last char value 28799 length=60
-Testing with last char value 28859 length=60
-Testing with last char value 28919 length=60
-Testing with last char value 28979 length=60
-Testing with last char value 29039 length=60
-Testing with last char value 29099 length=60
-Testing with last char value 29159 length=60
-Testing with last char value 29219 length=60
-Testing with last char value 29279 length=60
-Testing with last char value 29339 length=60
-Testing with last char value 29399 length=60
-Testing with last char value 29459 length=60
-Testing with last char value 29519 length=60
-Testing with last char value 29579 length=60
-Testing with last char value 29639 length=60
-Testing with last char value 29699 length=60
-Testing with last char value 29759 length=60
-Testing with last char value 29819 length=60
-Testing with last char value 29879 length=60
-Testing with last char value 29939 length=60
-Testing with last char value 29999 length=60
-Testing with last char value 30059 length=60
-Testing with last char value 30119 length=60
-Testing with last char value 30179 length=60
-Testing with last char value 30239 length=60
-Testing with last char value 30299 length=60
-Testing with last char value 30359 length=60
-Testing with last char value 30419 length=60
-Testing with last char value 30479 length=60
-Testing with last char value 30539 length=60
-Testing with last char value 30599 length=60
-Testing with last char value 30659 length=60
-Testing with last char value 30719 length=60
-Testing with last char value 30779 length=60
-Testing with last char value 30839 length=60
-Testing with last char value 30899 length=60
-Testing with last char value 30959 length=60
-Testing with last char value 31019 length=60
-Testing with last char value 31079 length=60
-Testing with last char value 31139 length=60
-Testing with last char value 31199 length=60
-Testing with last char value 31259 length=60
-Testing with last char value 31319 length=60
-Testing with last char value 31379 length=60
-Testing with last char value 31439 length=60
-Testing with last char value 31499 length=60
-Testing with last char value 31559 length=60
-Testing with last char value 31619 length=60
-Testing with last char value 31679 length=60
-Testing with last char value 31739 length=60
-Testing with last char value 31799 length=60
-Testing with last char value 31859 length=60
-Testing with last char value 31919 length=60
-Testing with last char value 31979 length=60
-Testing with last char value 32039 length=60
-Testing with last char value 32099 length=60
-Testing with last char value 32159 length=60
-Testing with last char value 32219 length=60
-Testing with last char value 32279 length=60
-Testing with last char value 32339 length=60
-Testing with last char value 32399 length=60
-Testing with last char value 32459 length=60
-Testing with last char value 32519 length=60
-Testing with last char value 32579 length=60
-Testing with last char value 32639 length=60
-Testing with last char value 32699 length=60
-Testing with last char value 32759 length=60
-Testing with last char value 32819 length=60
-Testing with last char value 32879 length=60
-Testing with last char value 32939 length=60
-Testing with last char value 32999 length=60
-Testing with last char value 33059 length=60
-Testing with last char value 33119 length=60
-Testing with last char value 33179 length=60
-Testing with last char value 33239 length=60
-Testing with last char value 33299 length=60
-Testing with last char value 33359 length=60
-Testing with last char value 33419 length=60
-Testing with last char value 33479 length=60
-Testing with last char value 33539 length=60
-Testing with last char value 33599 length=60
-Testing with last char value 33659 length=60
-Testing with last char value 33719 length=60
-Testing with last char value 33779 length=60
-Testing with last char value 33839 length=60
-Testing with last char value 33899 length=60
-Testing with last char value 33959 length=60
-Testing with last char value 34019 length=60
-Testing with last char value 34079 length=60
-Testing with last char value 34139 length=60
-Testing with last char value 34199 length=60
-Testing with last char value 34259 length=60
-Testing with last char value 34319 length=60
-Testing with last char value 34379 length=60
-Testing with last char value 34439 length=60
-Testing with last char value 34499 length=60
-Testing with last char value 34559 length=60
-Testing with last char value 34619 length=60
-Testing with last char value 34679 length=60
-Testing with last char value 34739 length=60
-Testing with last char value 34799 length=60
-Testing with last char value 34859 length=60
-Testing with last char value 34919 length=60
-Testing with last char value 34979 length=60
-Testing with last char value 35039 length=60
-Testing with last char value 35099 length=60
-Testing with last char value 35159 length=60
-Testing with last char value 35219 length=60
-Testing with last char value 35279 length=60
-Testing with last char value 35339 length=60
-Testing with last char value 35399 length=60
-Testing with last char value 35459 length=60
-Testing with last char value 35519 length=60
-Testing with last char value 35579 length=60
-Testing with last char value 35639 length=60
-Testing with last char value 35699 length=60
-Testing with last char value 35759 length=60
-Testing with last char value 35819 length=60
-Testing with last char value 35879 length=60
-Testing with last char value 35939 length=60
-Testing with last char value 35999 length=60
-Testing with last char value 36059 length=60
-Testing with last char value 36119 length=60
-Testing with last char value 36179 length=60
-Testing with last char value 36239 length=60
-Testing with last char value 36299 length=60
-Testing with last char value 36359 length=60
-Testing with last char value 36419 length=60
-Testing with last char value 36479 length=60
-Testing with last char value 36539 length=60
-Testing with last char value 36599 length=60
-Testing with last char value 36659 length=60
-Testing with last char value 36719 length=60
-Testing with last char value 36779 length=60
-Testing with last char value 36839 length=60
-Testing with last char value 36899 length=60
-Testing with last char value 36959 length=60
-Testing with last char value 37019 length=60
-Testing with last char value 37079 length=60
-Testing with last char value 37139 length=60
-Testing with last char value 37199 length=60
-Testing with last char value 37259 length=60
-Testing with last char value 37319 length=60
-Testing with last char value 37379 length=60
-Testing with last char value 37439 length=60
-Testing with last char value 37499 length=60
-Testing with last char value 37559 length=60
-Testing with last char value 37619 length=60
-Testing with last char value 37679 length=60
-Testing with last char value 37739 length=60
-Testing with last char value 37799 length=60
-Testing with last char value 37859 length=60
-Testing with last char value 37919 length=60
-Testing with last char value 37979 length=60
-Testing with last char value 38039 length=60
-Testing with last char value 38099 length=60
-Testing with last char value 38159 length=60
-Testing with last char value 38219 length=60
-Testing with last char value 38279 length=60
-Testing with last char value 38339 length=60
-Testing with last char value 38399 length=60
-Testing with last char value 38459 length=60
-Testing with last char value 38519 length=60
-Testing with last char value 38579 length=60
-Testing with last char value 38639 length=60
-Testing with last char value 38699 length=60
-Testing with last char value 38759 length=60
-Testing with last char value 38819 length=60
-Testing with last char value 38879 length=60
-Testing with last char value 38939 length=60
-Testing with last char value 38999 length=60
-Testing with last char value 39059 length=60
-Testing with last char value 39119 length=60
-Testing with last char value 39179 length=60
-Testing with last char value 39239 length=60
-Testing with last char value 39299 length=60
-Testing with last char value 39359 length=60
-Testing with last char value 39419 length=60
-Testing with last char value 39479 length=60
-Testing with last char value 39539 length=60
-Testing with last char value 39599 length=60
-Testing with last char value 39659 length=60
-Testing with last char value 39719 length=60
-Testing with last char value 39779 length=60
-Testing with last char value 39839 length=60
-Testing with last char value 39899 length=60
-Testing with last char value 39959 length=60
-Testing with last char value 40019 length=60
-Testing with last char value 40079 length=60
-Testing with last char value 40139 length=60
-Testing with last char value 40199 length=60
-Testing with last char value 40259 length=60
-Testing with last char value 40319 length=60
-Testing with last char value 40379 length=60
-Testing with last char value 40439 length=60
-Testing with last char value 40499 length=60
-Testing with last char value 40559 length=60
-Testing with last char value 40619 length=60
-Testing with last char value 40679 length=60
-Testing with last char value 40739 length=60
-Testing with last char value 40799 length=60
-Testing with last char value 40859 length=60
-Testing with last char value 40919 length=60
-Testing with last char value 40979 length=60
-Testing with last char value 41039 length=60
-Testing with last char value 41099 length=60
-Testing with last char value 41159 length=60
-Testing with last char value 41219 length=60
-Testing with last char value 41279 length=60
-Testing with last char value 41339 length=60
-Testing with last char value 41399 length=60
-Testing with last char value 41459 length=60
-Testing with last char value 41519 length=60
-Testing with last char value 41579 length=60
-Testing with last char value 41639 length=60
-Testing with last char value 41699 length=60
-Testing with last char value 41759 length=60
-Testing with last char value 41819 length=60
-Testing with last char value 41879 length=60
-Testing with last char value 41939 length=60
-Testing with last char value 41999 length=60
-Testing with last char value 42059 length=60
-Testing with last char value 42119 length=60
-Testing with last char value 42179 length=60
-Testing with last char value 42239 length=60
-Testing with last char value 42299 length=60
-Testing with last char value 42359 length=60
-Testing with last char value 42419 length=60
-Testing with last char value 42479 length=60
-Testing with last char value 42539 length=60
-Testing with last char value 42599 length=60
-Testing with last char value 42659 length=60
-Testing with last char value 42719 length=60
-Testing with last char value 42779 length=60
-Testing with last char value 42839 length=60
-Testing with last char value 42899 length=60
-Testing with last char value 42959 length=60
-Testing with last char value 43019 length=60
-Testing with last char value 43079 length=60
-Testing with last char value 43139 length=60
-Testing with last char value 43199 length=60
-Testing with last char value 43259 length=60
-Testing with last char value 43319 length=60
-Testing with last char value 43379 length=60
-Testing with last char value 43439 length=60
-Testing with last char value 43499 length=60
-Testing with last char value 43559 length=60
-Testing with last char value 43619 length=60
-Testing with last char value 43679 length=60
-Testing with last char value 43739 length=60
-Testing with last char value 43799 length=60
-Testing with last char value 43859 length=60
-Testing with last char value 43919 length=60
-Testing with last char value 43979 length=60
-Testing with last char value 44039 length=60
-Testing with last char value 44099 length=60
-Testing with last char value 44159 length=60
-Testing with last char value 44219 length=60
-Testing with last char value 44279 length=60
-Testing with last char value 44339 length=60
-Testing with last char value 44399 length=60
-Testing with last char value 44459 length=60
-Testing with last char value 44519 length=60
-Testing with last char value 44579 length=60
-Testing with last char value 44639 length=60
-Testing with last char value 44699 length=60
-Testing with last char value 44759 length=60
-Testing with last char value 44819 length=60
-Testing with last char value 44879 length=60
-Testing with last char value 44939 length=60
-Testing with last char value 44999 length=60
-Testing with last char value 45059 length=60
-Testing with last char value 45119 length=60
-Testing with last char value 45179 length=60
-Testing with last char value 45239 length=60
-Testing with last char value 45299 length=60
-Testing with last char value 45359 length=60
-Testing with last char value 45419 length=60
-Testing with last char value 45479 length=60
-Testing with last char value 45539 length=60
-Testing with last char value 45599 length=60
-Testing with last char value 45659 length=60
-Testing with last char value 45719 length=60
-Testing with last char value 45779 length=60
-Testing with last char value 45839 length=60
-Testing with last char value 45899 length=60
-Testing with last char value 45959 length=60
-Testing with last char value 46019 length=60
-Testing with last char value 46079 length=60
-Testing with last char value 46139 length=60
-Testing with last char value 46199 length=60
-Testing with last char value 46259 length=60
-Testing with last char value 46319 length=60
-Testing with last char value 46379 length=60
-Testing with last char value 46439 length=60
-Testing with last char value 46499 length=60
-Testing with last char value 46559 length=60
-Testing with last char value 46619 length=60
-Testing with last char value 46679 length=60
-Testing with last char value 46739 length=60
-Testing with last char value 46799 length=60
-Testing with last char value 46859 length=60
-Testing with last char value 46919 length=60
-Testing with last char value 46979 length=60
-Testing with last char value 47039 length=60
-Testing with last char value 47099 length=60
-Testing with last char value 47159 length=60
-Testing with last char value 47219 length=60
-Testing with last char value 47279 length=60
-Testing with last char value 47339 length=60
-Testing with last char value 47399 length=60
-Testing with last char value 47459 length=60
-Testing with last char value 47519 length=60
-Testing with last char value 47579 length=60
-Testing with last char value 47639 length=60
-Testing with last char value 47699 length=60
-Testing with last char value 47759 length=60
-Testing with last char value 47819 length=60
-Testing with last char value 47879 length=60
-Testing with last char value 47939 length=60
-Testing with last char value 47999 length=60
-Testing with last char value 48059 length=60
-Testing with last char value 48119 length=60
-Testing with last char value 48179 length=60
-Testing with last char value 48239 length=60
-Testing with last char value 48299 length=60
-Testing with last char value 48359 length=60
-Testing with last char value 48419 length=60
-Testing with last char value 48479 length=60
-Testing with last char value 48539 length=60
-Testing with last char value 48599 length=60
-Testing with last char value 48659 length=60
-Testing with last char value 48719 length=60
-Testing with last char value 48779 length=60
-Testing with last char value 48839 length=60
-Testing with last char value 48899 length=60
-Testing with last char value 48959 length=60
-Testing with last char value 49019 length=60
-Testing with last char value 49079 length=60
-Testing with last char value 49139 length=60
-Testing with last char value 49199 length=60
-Testing with last char value 49259 length=60
-Testing with last char value 49319 length=60
-Testing with last char value 49379 length=60
-Testing with last char value 49439 length=60
-Testing with last char value 49499 length=60
-Testing with last char value 49559 length=60
-Testing with last char value 49619 length=60
-Testing with last char value 49679 length=60
-Testing with last char value 49739 length=60
-Testing with last char value 49799 length=60
-Testing with last char value 49859 length=60
-Testing with last char value 49919 length=60
-Testing with last char value 49979 length=60
-Testing with last char value 50039 length=60
-Testing with last char value 50099 length=60
-Testing with last char value 50159 length=60
-Testing with last char value 50219 length=60
-Testing with last char value 50279 length=60
-Testing with last char value 50339 length=60
-Testing with last char value 50399 length=60
-Testing with last char value 50459 length=60
-Testing with last char value 50519 length=60
-Testing with last char value 50579 length=60
-Testing with last char value 50639 length=60
-Testing with last char value 50699 length=60
-Testing with last char value 50759 length=60
-Testing with last char value 50819 length=60
-Testing with last char value 50879 length=60
-Testing with last char value 50939 length=60
-Testing with last char value 50999 length=60
-Testing with last char value 51059 length=60
-Testing with last char value 51119 length=60
-Testing with last char value 51179 length=60
-Testing with last char value 51239 length=60
-Testing with last char value 51299 length=60
-Testing with last char value 51359 length=60
-Testing with last char value 51419 length=60
-Testing with last char value 51479 length=60
-Testing with last char value 51539 length=60
-Testing with last char value 51599 length=60
-Testing with last char value 51659 length=60
-Testing with last char value 51719 length=60
-Testing with last char value 51779 length=60
-Testing with last char value 51839 length=60
-Testing with last char value 51899 length=60
-Testing with last char value 51959 length=60
-Testing with last char value 52019 length=60
-Testing with last char value 52079 length=60
-Testing with last char value 52139 length=60
-Testing with last char value 52199 length=60
-Testing with last char value 52259 length=60
-Testing with last char value 52319 length=60
-Testing with last char value 52379 length=60
-Testing with last char value 52439 length=60
-Testing with last char value 52499 length=60
-Testing with last char value 52559 length=60
-Testing with last char value 52619 length=60
-Testing with last char value 52679 length=60
-Testing with last char value 52739 length=60
-Testing with last char value 52799 length=60
-Testing with last char value 52859 length=60
-Testing with last char value 52919 length=60
-Testing with last char value 52979 length=60
-Testing with last char value 53039 length=60
-Testing with last char value 53099 length=60
-Testing with last char value 53159 length=60
-Testing with last char value 53219 length=60
-Testing with last char value 53279 length=60
-Testing with last char value 53339 length=60
-Testing with last char value 53399 length=60
-Testing with last char value 53459 length=60
-Testing with last char value 53519 length=60
-Testing with last char value 53579 length=60
-Testing with last char value 53639 length=60
-Testing with last char value 53699 length=60
-Testing with last char value 53759 length=60
-Testing with last char value 53819 length=60
-Testing with last char value 53879 length=60
-Testing with last char value 53939 length=60
-Testing with last char value 53999 length=60
-Testing with last char value 54059 length=60
-Testing with last char value 54119 length=60
-Testing with last char value 54179 length=60
-Testing with last char value 54239 length=60
-Testing with last char value 54299 length=60
-Testing with last char value 54359 length=60
-Testing with last char value 54419 length=60
-Testing with last char value 54479 length=60
-Testing with last char value 54539 length=60
-Testing with last char value 54599 length=60
-Testing with last char value 54659 length=60
-Testing with last char value 54719 length=60
-Testing with last char value 54779 length=60
-Testing with last char value 54839 length=60
-Testing with last char value 54899 length=60
-Testing with last char value 54959 length=60
-Testing with last char value 55019 length=60
-Testing with last char value 55079 length=60
-Testing with last char value 55139 length=60
-Testing with last char value 55199 length=60
-Testing with last char value 55259 length=60
-Testing with last char value 55319 length=60
-Testing with last char value 55379 length=60
-Testing with last char value 55439 length=60
-Testing with last char value 55499 length=60
-Testing with last char value 55559 length=60
-Testing with last char value 55619 length=60
-Testing with last char value 55679 length=60
-Testing with last char value 55739 length=60
-Testing with last char value 55799 length=60
-Testing with last char value 55859 length=60
-Testing with last char value 55919 length=60
-Testing with last char value 55979 length=60
-Testing with last char value 56039 length=60
-Testing with last char value 56099 length=60
-Testing with last char value 56159 length=60
-Testing with last char value 56219 length=60
-Testing with last char value 56279 length=60
-Testing with last char value 56339 length=60
-Testing with last char value 56399 length=60
-Testing with last char value 56459 length=60
-Testing with last char value 56519 length=60
-Testing with last char value 56579 length=60
-Testing with last char value 56639 length=60
-Testing with last char value 56699 length=60
-Testing with last char value 56759 length=60
-Testing with last char value 56819 length=60
-Testing with last char value 56879 length=60
-Testing with last char value 56939 length=60
-Testing with last char value 56999 length=60
-Testing with last char value 57059 length=60
-Testing with last char value 57119 length=60
-Testing with last char value 57179 length=60
-Testing with last char value 57239 length=60
-Testing with last char value 57299 length=60
-Testing with last char value 57359 length=60
-Testing with last char value 57419 length=60
-Testing with last char value 57479 length=60
-Testing with last char value 57539 length=60
-Testing with last char value 57599 length=60
-Testing with last char value 57659 length=60
-Testing with last char value 57719 length=60
-Testing with last char value 57779 length=60
-Testing with last char value 57839 length=60
-Testing with last char value 57899 length=60
-Testing with last char value 57959 length=60
-Testing with last char value 58019 length=60
-Testing with last char value 58079 length=60
-Testing with last char value 58139 length=60
-Testing with last char value 58199 length=60
-Testing with last char value 58259 length=60
-Testing with last char value 58319 length=60
-Testing with last char value 58379 length=60
-Testing with last char value 58439 length=60
-Testing with last char value 58499 length=60
-Testing with last char value 58559 length=60
-Testing with last char value 58619 length=60
-Testing with last char value 58679 length=60
-Testing with last char value 58739 length=60
-Testing with last char value 58799 length=60
-Testing with last char value 58859 length=60
-Testing with last char value 58919 length=60
-Testing with last char value 58979 length=60
-Testing with last char value 59039 length=60
-Testing with last char value 59099 length=60
-Testing with last char value 59159 length=60
-Testing with last char value 59219 length=60
-Testing with last char value 59279 length=60
-Testing with last char value 59339 length=60
-Testing with last char value 59399 length=60
-Testing with last char value 59459 length=60
-Testing with last char value 59519 length=60
-Testing with last char value 59579 length=60
-Testing with last char value 59639 length=60
-Testing with last char value 59699 length=60
-Testing with last char value 59759 length=60
-Testing with last char value 59819 length=60
-Testing with last char value 59879 length=60
-Testing with last char value 59939 length=60
-Testing with last char value 59999 length=60
-Testing with last char value 60059 length=60
-Testing with last char value 60119 length=60
-Testing with last char value 60179 length=60
-Testing with last char value 60239 length=60
-Testing with last char value 60299 length=60
-Testing with last char value 60359 length=60
-Testing with last char value 60419 length=60
-Testing with last char value 60479 length=60
-Testing with last char value 60539 length=60
-Testing with last char value 60599 length=60
-Testing with last char value 60659 length=60
-Testing with last char value 60719 length=60
-Testing with last char value 60779 length=60
-Testing with last char value 60839 length=60
-Testing with last char value 60899 length=60
-Testing with last char value 60959 length=60
-Testing with last char value 61019 length=60
-Testing with last char value 61079 length=60
-Testing with last char value 61139 length=60
-Testing with last char value 61199 length=60
-Testing with last char value 61259 length=60
-Testing with last char value 61319 length=60
-Testing with last char value 61379 length=60
-Testing with last char value 61439 length=60
-Testing with last char value 61499 length=60
-Testing with last char value 61559 length=60
-Testing with last char value 61619 length=60
-Testing with last char value 61679 length=60
-Testing with last char value 61739 length=60
-Testing with last char value 61799 length=60
-Testing with last char value 61859 length=60
-Testing with last char value 61919 length=60
-Testing with last char value 61979 length=60
-Testing with last char value 62039 length=60
-Testing with last char value 62099 length=60
-Testing with last char value 62159 length=60
-Testing with last char value 62219 length=60
-Testing with last char value 62279 length=60
-Testing with last char value 62339 length=60
-Testing with last char value 62399 length=60
-Testing with last char value 62459 length=60
-Testing with last char value 62519 length=60
-Testing with last char value 62579 length=60
-Testing with last char value 62639 length=60
-Testing with last char value 62699 length=60
-Testing with last char value 62759 length=60
-Testing with last char value 62819 length=60
-Testing with last char value 62879 length=60
-Testing with last char value 62939 length=60
-Testing with last char value 62999 length=60
-Testing with last char value 63059 length=60
-Testing with last char value 63119 length=60
-Testing with last char value 63179 length=60
-Testing with last char value 63239 length=60
-Testing with last char value 63299 length=60
-Testing with last char value 63359 length=60
-Testing with last char value 63419 length=60
-Testing with last char value 63479 length=60
-Testing with last char value 63539 length=60
-Testing with last char value 63599 length=60
-Testing with last char value 63659 length=60
-Testing with last char value 63719 length=60
-Testing with last char value 63779 length=60
-Testing with last char value 63839 length=60
-Testing with last char value 63899 length=60
-Testing with last char value 63959 length=60
-Testing with last char value 64019 length=60
-Testing with last char value 64079 length=60
-Testing with last char value 64139 length=60
-Testing with last char value 64199 length=60
-Testing with last char value 64259 length=60
-Testing with last char value 64319 length=60
-Testing with last char value 64379 length=60
-Testing with last char value 64439 length=60
-Testing with last char value 64499 length=60
-Testing with last char value 64559 length=60
-Testing with last char value 64619 length=60
-Testing with last char value 64679 length=60
-Testing with last char value 64739 length=60
-Testing with last char value 64799 length=60
-Testing with last char value 64859 length=60
-Testing with last char value 64919 length=60
-Testing with last char value 64979 length=60
-Testing with last char value 65039 length=60
-Testing with last char value 65099 length=60
-Testing with last char value 65159 length=60
-Testing with last char value 65219 length=60
-Testing with last char value 65279 length=60
-Testing with last char value 65339 length=60
-Testing with last char value 65399 length=60
-Testing with last char value 65459 length=60
-Testing with last char value 65519 length=60
-Testing with last char value 65535 length=16
-Test CharUTF8 finished
+Test CharUTF8 starting
+Testing with last char value 59 length=60
+Testing with last char value 119 length=60
+Testing with last char value 179 length=60
+Testing with last char value 239 length=60
+Testing with last char value 299 length=60
+Testing with last char value 359 length=60
+Testing with last char value 419 length=60
+Testing with last char value 479 length=60
+Testing with last char value 539 length=60
+Testing with last char value 599 length=60
+Testing with last char value 659 length=60
+Testing with last char value 719 length=60
+Testing with last char value 779 length=60
+Testing with last char value 839 length=60
+Testing with last char value 899 length=60
+Testing with last char value 959 length=60
+Testing with last char value 1019 length=60
+Testing with last char value 1079 length=60
+Testing with last char value 1139 length=60
+Testing with last char value 1199 length=60
+Testing with last char value 1259 length=60
+Testing with last char value 1319 length=60
+Testing with last char value 1379 length=60
+Testing with last char value 1439 length=60
+Testing with last char value 1499 length=60
+Testing with last char value 1559 length=60
+Testing with last char value 1619 length=60
+Testing with last char value 1679 length=60
+Testing with last char value 1739 length=60
+Testing with last char value 1799 length=60
+Testing with last char value 1859 length=60
+Testing with last char value 1919 length=60
+Testing with last char value 1979 length=60
+Testing with last char value 2039 length=60
+Testing with last char value 2099 length=60
+Testing with last char value 2159 length=60
+Testing with last char value 2219 length=60
+Testing with last char value 2279 length=60
+Testing with last char value 2339 length=60
+Testing with last char value 2399 length=60
+Testing with last char value 2459 length=60
+Testing with last char value 2519 length=60
+Testing with last char value 2579 length=60
+Testing with last char value 2639 length=60
+Testing with last char value 2699 length=60
+Testing with last char value 2759 length=60
+Testing with last char value 2819 length=60
+Testing with last char value 2879 length=60
+Testing with last char value 2939 length=60
+Testing with last char value 2999 length=60
+Testing with last char value 3059 length=60
+Testing with last char value 3119 length=60
+Testing with last char value 3179 length=60
+Testing with last char value 3239 length=60
+Testing with last char value 3299 length=60
+Testing with last char value 3359 length=60
+Testing with last char value 3419 length=60
+Testing with last char value 3479 length=60
+Testing with last char value 3539 length=60
+Testing with last char value 3599 length=60
+Testing with last char value 3659 length=60
+Testing with last char value 3719 length=60
+Testing with last char value 3779 length=60
+Testing with last char value 3839 length=60
+Testing with last char value 3899 length=60
+Testing with last char value 3959 length=60
+Testing with last char value 4019 length=60
+Testing with last char value 4079 length=60
+Testing with last char value 4139 length=60
+Testing with last char value 4199 length=60
+Testing with last char value 4259 length=60
+Testing with last char value 4319 length=60
+Testing with last char value 4379 length=60
+Testing with last char value 4439 length=60
+Testing with last char value 4499 length=60
+Testing with last char value 4559 length=60
+Testing with last char value 4619 length=60
+Testing with last char value 4679 length=60
+Testing with last char value 4739 length=60
+Testing with last char value 4799 length=60
+Testing with last char value 4859 length=60
+Testing with last char value 4919 length=60
+Testing with last char value 4979 length=60
+Testing with last char value 5039 length=60
+Testing with last char value 5099 length=60
+Testing with last char value 5159 length=60
+Testing with last char value 5219 length=60
+Testing with last char value 5279 length=60
+Testing with last char value 5339 length=60
+Testing with last char value 5399 length=60
+Testing with last char value 5459 length=60
+Testing with last char value 5519 length=60
+Testing with last char value 5579 length=60
+Testing with last char value 5639 length=60
+Testing with last char value 5699 length=60
+Testing with last char value 5759 length=60
+Testing with last char value 5819 length=60
+Testing with last char value 5879 length=60
+Testing with last char value 5939 length=60
+Testing with last char value 5999 length=60
+Testing with last char value 6059 length=60
+Testing with last char value 6119 length=60
+Testing with last char value 6179 length=60
+Testing with last char value 6239 length=60
+Testing with last char value 6299 length=60
+Testing with last char value 6359 length=60
+Testing with last char value 6419 length=60
+Testing with last char value 6479 length=60
+Testing with last char value 6539 length=60
+Testing with last char value 6599 length=60
+Testing with last char value 6659 length=60
+Testing with last char value 6719 length=60
+Testing with last char value 6779 length=60
+Testing with last char value 6839 length=60
+Testing with last char value 6899 length=60
+Testing with last char value 6959 length=60
+Testing with last char value 7019 length=60
+Testing with last char value 7079 length=60
+Testing with last char value 7139 length=60
+Testing with last char value 7199 length=60
+Testing with last char value 7259 length=60
+Testing with last char value 7319 length=60
+Testing with last char value 7379 length=60
+Testing with last char value 7439 length=60
+Testing with last char value 7499 length=60
+Testing with last char value 7559 length=60
+Testing with last char value 7619 length=60
+Testing with last char value 7679 length=60
+Testing with last char value 7739 length=60
+Testing with last char value 7799 length=60
+Testing with last char value 7859 length=60
+Testing with last char value 7919 length=60
+Testing with last char value 7979 length=60
+Testing with last char value 8039 length=60
+Testing with last char value 8099 length=60
+Testing with last char value 8159 length=60
+Testing with last char value 8219 length=60
+Testing with last char value 8279 length=60
+Testing with last char value 8339 length=60
+Testing with last char value 8399 length=60
+Testing with last char value 8459 length=60
+Testing with last char value 8519 length=60
+Testing with last char value 8579 length=60
+Testing with last char value 8639 length=60
+Testing with last char value 8699 length=60
+Testing with last char value 8759 length=60
+Testing with last char value 8819 length=60
+Testing with last char value 8879 length=60
+Testing with last char value 8939 length=60
+Testing with last char value 8999 length=60
+Testing with last char value 9059 length=60
+Testing with last char value 9119 length=60
+Testing with last char value 9179 length=60
+Testing with last char value 9239 length=60
+Testing with last char value 9299 length=60
+Testing with last char value 9359 length=60
+Testing with last char value 9419 length=60
+Testing with last char value 9479 length=60
+Testing with last char value 9539 length=60
+Testing with last char value 9599 length=60
+Testing with last char value 9659 length=60
+Testing with last char value 9719 length=60
+Testing with last char value 9779 length=60
+Testing with last char value 9839 length=60
+Testing with last char value 9899 length=60
+Testing with last char value 9959 length=60
+Testing with last char value 10019 length=60
+Testing with last char value 10079 length=60
+Testing with last char value 10139 length=60
+Testing with last char value 10199 length=60
+Testing with last char value 10259 length=60
+Testing with last char value 10319 length=60
+Testing with last char value 10379 length=60
+Testing with last char value 10439 length=60
+Testing with last char value 10499 length=60
+Testing with last char value 10559 length=60
+Testing with last char value 10619 length=60
+Testing with last char value 10679 length=60
+Testing with last char value 10739 length=60
+Testing with last char value 10799 length=60
+Testing with last char value 10859 length=60
+Testing with last char value 10919 length=60
+Testing with last char value 10979 length=60
+Testing with last char value 11039 length=60
+Testing with last char value 11099 length=60
+Testing with last char value 11159 length=60
+Testing with last char value 11219 length=60
+Testing with last char value 11279 length=60
+Testing with last char value 11339 length=60
+Testing with last char value 11399 length=60
+Testing with last char value 11459 length=60
+Testing with last char value 11519 length=60
+Testing with last char value 11579 length=60
+Testing with last char value 11639 length=60
+Testing with last char value 11699 length=60
+Testing with last char value 11759 length=60
+Testing with last char value 11819 length=60
+Testing with last char value 11879 length=60
+Testing with last char value 11939 length=60
+Testing with last char value 11999 length=60
+Testing with last char value 12059 length=60
+Testing with last char value 12119 length=60
+Testing with last char value 12179 length=60
+Testing with last char value 12239 length=60
+Testing with last char value 12299 length=60
+Testing with last char value 12359 length=60
+Testing with last char value 12419 length=60
+Testing with last char value 12479 length=60
+Testing with last char value 12539 length=60
+Testing with last char value 12599 length=60
+Testing with last char value 12659 length=60
+Testing with last char value 12719 length=60
+Testing with last char value 12779 length=60
+Testing with last char value 12839 length=60
+Testing with last char value 12899 length=60
+Testing with last char value 12959 length=60
+Testing with last char value 13019 length=60
+Testing with last char value 13079 length=60
+Testing with last char value 13139 length=60
+Testing with last char value 13199 length=60
+Testing with last char value 13259 length=60
+Testing with last char value 13319 length=60
+Testing with last char value 13379 length=60
+Testing with last char value 13439 length=60
+Testing with last char value 13499 length=60
+Testing with last char value 13559 length=60
+Testing with last char value 13619 length=60
+Testing with last char value 13679 length=60
+Testing with last char value 13739 length=60
+Testing with last char value 13799 length=60
+Testing with last char value 13859 length=60
+Testing with last char value 13919 length=60
+Testing with last char value 13979 length=60
+Testing with last char value 14039 length=60
+Testing with last char value 14099 length=60
+Testing with last char value 14159 length=60
+Testing with last char value 14219 length=60
+Testing with last char value 14279 length=60
+Testing with last char value 14339 length=60
+Testing with last char value 14399 length=60
+Testing with last char value 14459 length=60
+Testing with last char value 14519 length=60
+Testing with last char value 14579 length=60
+Testing with last char value 14639 length=60
+Testing with last char value 14699 length=60
+Testing with last char value 14759 length=60
+Testing with last char value 14819 length=60
+Testing with last char value 14879 length=60
+Testing with last char value 14939 length=60
+Testing with last char value 14999 length=60
+Testing with last char value 15059 length=60
+Testing with last char value 15119 length=60
+Testing with last char value 15179 length=60
+Testing with last char value 15239 length=60
+Testing with last char value 15299 length=60
+Testing with last char value 15359 length=60
+Testing with last char value 15419 length=60
+Testing with last char value 15479 length=60
+Testing with last char value 15539 length=60
+Testing with last char value 15599 length=60
+Testing with last char value 15659 length=60
+Testing with last char value 15719 length=60
+Testing with last char value 15779 length=60
+Testing with last char value 15839 length=60
+Testing with last char value 15899 length=60
+Testing with last char value 15959 length=60
+Testing with last char value 16019 length=60
+Testing with last char value 16079 length=60
+Testing with last char value 16139 length=60
+Testing with last char value 16199 length=60
+Testing with last char value 16259 length=60
+Testing with last char value 16319 length=60
+Testing with last char value 16379 length=60
+Testing with last char value 16439 length=60
+Testing with last char value 16499 length=60
+Testing with last char value 16559 length=60
+Testing with last char value 16619 length=60
+Testing with last char value 16679 length=60
+Testing with last char value 16739 length=60
+Testing with last char value 16799 length=60
+Testing with last char value 16859 length=60
+Testing with last char value 16919 length=60
+Testing with last char value 16979 length=60
+Testing with last char value 17039 length=60
+Testing with last char value 17099 length=60
+Testing with last char value 17159 length=60
+Testing with last char value 17219 length=60
+Testing with last char value 17279 length=60
+Testing with last char value 17339 length=60
+Testing with last char value 17399 length=60
+Testing with last char value 17459 length=60
+Testing with last char value 17519 length=60
+Testing with last char value 17579 length=60
+Testing with last char value 17639 length=60
+Testing with last char value 17699 length=60
+Testing with last char value 17759 length=60
+Testing with last char value 17819 length=60
+Testing with last char value 17879 length=60
+Testing with last char value 17939 length=60
+Testing with last char value 17999 length=60
+Testing with last char value 18059 length=60
+Testing with last char value 18119 length=60
+Testing with last char value 18179 length=60
+Testing with last char value 18239 length=60
+Testing with last char value 18299 length=60
+Testing with last char value 18359 length=60
+Testing with last char value 18419 length=60
+Testing with last char value 18479 length=60
+Testing with last char value 18539 length=60
+Testing with last char value 18599 length=60
+Testing with last char value 18659 length=60
+Testing with last char value 18719 length=60
+Testing with last char value 18779 length=60
+Testing with last char value 18839 length=60
+Testing with last char value 18899 length=60
+Testing with last char value 18959 length=60
+Testing with last char value 19019 length=60
+Testing with last char value 19079 length=60
+Testing with last char value 19139 length=60
+Testing with last char value 19199 length=60
+Testing with last char value 19259 length=60
+Testing with last char value 19319 length=60
+Testing with last char value 19379 length=60
+Testing with last char value 19439 length=60
+Testing with last char value 19499 length=60
+Testing with last char value 19559 length=60
+Testing with last char value 19619 length=60
+Testing with last char value 19679 length=60
+Testing with last char value 19739 length=60
+Testing with last char value 19799 length=60
+Testing with last char value 19859 length=60
+Testing with last char value 19919 length=60
+Testing with last char value 19979 length=60
+Testing with last char value 20039 length=60
+Testing with last char value 20099 length=60
+Testing with last char value 20159 length=60
+Testing with last char value 20219 length=60
+Testing with last char value 20279 length=60
+Testing with last char value 20339 length=60
+Testing with last char value 20399 length=60
+Testing with last char value 20459 length=60
+Testing with last char value 20519 length=60
+Testing with last char value 20579 length=60
+Testing with last char value 20639 length=60
+Testing with last char value 20699 length=60
+Testing with last char value 20759 length=60
+Testing with last char value 20819 length=60
+Testing with last char value 20879 length=60
+Testing with last char value 20939 length=60
+Testing with last char value 20999 length=60
+Testing with last char value 21059 length=60
+Testing with last char value 21119 length=60
+Testing with last char value 21179 length=60
+Testing with last char value 21239 length=60
+Testing with last char value 21299 length=60
+Testing with last char value 21359 length=60
+Testing with last char value 21419 length=60
+Testing with last char value 21479 length=60
+Testing with last char value 21539 length=60
+Testing with last char value 21599 length=60
+Testing with last char value 21659 length=60
+Testing with last char value 21719 length=60
+Testing with last char value 21779 length=60
+Testing with last char value 21839 length=60
+Testing with last char value 21899 length=60
+Testing with last char value 21959 length=60
+Testing with last char value 22019 length=60
+Testing with last char value 22079 length=60
+Testing with last char value 22139 length=60
+Testing with last char value 22199 length=60
+Testing with last char value 22259 length=60
+Testing with last char value 22319 length=60
+Testing with last char value 22379 length=60
+Testing with last char value 22439 length=60
+Testing with last char value 22499 length=60
+Testing with last char value 22559 length=60
+Testing with last char value 22619 length=60
+Testing with last char value 22679 length=60
+Testing with last char value 22739 length=60
+Testing with last char value 22799 length=60
+Testing with last char value 22859 length=60
+Testing with last char value 22919 length=60
+Testing with last char value 22979 length=60
+Testing with last char value 23039 length=60
+Testing with last char value 23099 length=60
+Testing with last char value 23159 length=60
+Testing with last char value 23219 length=60
+Testing with last char value 23279 length=60
+Testing with last char value 23339 length=60
+Testing with last char value 23399 length=60
+Testing with last char value 23459 length=60
+Testing with last char value 23519 length=60
+Testing with last char value 23579 length=60
+Testing with last char value 23639 length=60
+Testing with last char value 23699 length=60
+Testing with last char value 23759 length=60
+Testing with last char value 23819 length=60
+Testing with last char value 23879 length=60
+Testing with last char value 23939 length=60
+Testing with last char value 23999 length=60
+Testing with last char value 24059 length=60
+Testing with last char value 24119 length=60
+Testing with last char value 24179 length=60
+Testing with last char value 24239 length=60
+Testing with last char value 24299 length=60
+Testing with last char value 24359 length=60
+Testing with last char value 24419 length=60
+Testing with last char value 24479 length=60
+Testing with last char value 24539 length=60
+Testing with last char value 24599 length=60
+Testing with last char value 24659 length=60
+Testing with last char value 24719 length=60
+Testing with last char value 24779 length=60
+Testing with last char value 24839 length=60
+Testing with last char value 24899 length=60
+Testing with last char value 24959 length=60
+Testing with last char value 25019 length=60
+Testing with last char value 25079 length=60
+Testing with last char value 25139 length=60
+Testing with last char value 25199 length=60
+Testing with last char value 25259 length=60
+Testing with last char value 25319 length=60
+Testing with last char value 25379 length=60
+Testing with last char value 25439 length=60
+Testing with last char value 25499 length=60
+Testing with last char value 25559 length=60
+Testing with last char value 25619 length=60
+Testing with last char value 25679 length=60
+Testing with last char value 25739 length=60
+Testing with last char value 25799 length=60
+Testing with last char value 25859 length=60
+Testing with last char value 25919 length=60
+Testing with last char value 25979 length=60
+Testing with last char value 26039 length=60
+Testing with last char value 26099 length=60
+Testing with last char value 26159 length=60
+Testing with last char value 26219 length=60
+Testing with last char value 26279 length=60
+Testing with last char value 26339 length=60
+Testing with last char value 26399 length=60
+Testing with last char value 26459 length=60
+Testing with last char value 26519 length=60
+Testing with last char value 26579 length=60
+Testing with last char value 26639 length=60
+Testing with last char value 26699 length=60
+Testing with last char value 26759 length=60
+Testing with last char value 26819 length=60
+Testing with last char value 26879 length=60
+Testing with last char value 26939 length=60
+Testing with last char value 26999 length=60
+Testing with last char value 27059 length=60
+Testing with last char value 27119 length=60
+Testing with last char value 27179 length=60
+Testing with last char value 27239 length=60
+Testing with last char value 27299 length=60
+Testing with last char value 27359 length=60
+Testing with last char value 27419 length=60
+Testing with last char value 27479 length=60
+Testing with last char value 27539 length=60
+Testing with last char value 27599 length=60
+Testing with last char value 27659 length=60
+Testing with last char value 27719 length=60
+Testing with last char value 27779 length=60
+Testing with last char value 27839 length=60
+Testing with last char value 27899 length=60
+Testing with last char value 27959 length=60
+Testing with last char value 28019 length=60
+Testing with last char value 28079 length=60
+Testing with last char value 28139 length=60
+Testing with last char value 28199 length=60
+Testing with last char value 28259 length=60
+Testing with last char value 28319 length=60
+Testing with last char value 28379 length=60
+Testing with last char value 28439 length=60
+Testing with last char value 28499 length=60
+Testing with last char value 28559 length=60
+Testing with last char value 28619 length=60
+Testing with last char value 28679 length=60
+Testing with last char value 28739 length=60
+Testing with last char value 28799 length=60
+Testing with last char value 28859 length=60
+Testing with last char value 28919 length=60
+Testing with last char value 28979 length=60
+Testing with last char value 29039 length=60
+Testing with last char value 29099 length=60
+Testing with last char value 29159 length=60
+Testing with last char value 29219 length=60
+Testing with last char value 29279 length=60
+Testing with last char value 29339 length=60
+Testing with last char value 29399 length=60
+Testing with last char value 29459 length=60
+Testing with last char value 29519 length=60
+Testing with last char value 29579 length=60
+Testing with last char value 29639 length=60
+Testing with last char value 29699 length=60
+Testing with last char value 29759 length=60
+Testing with last char value 29819 length=60
+Testing with last char value 29879 length=60
+Testing with last char value 29939 length=60
+Testing with last char value 29999 length=60
+Testing with last char value 30059 length=60
+Testing with last char value 30119 length=60
+Testing with last char value 30179 length=60
+Testing with last char value 30239 length=60
+Testing with last char value 30299 length=60
+Testing with last char value 30359 length=60
+Testing with last char value 30419 length=60
+Testing with last char value 30479 length=60
+Testing with last char value 30539 length=60
+Testing with last char value 30599 length=60
+Testing with last char value 30659 length=60
+Testing with last char value 30719 length=60
+Testing with last char value 30779 length=60
+Testing with last char value 30839 length=60
+Testing with last char value 30899 length=60
+Testing with last char value 30959 length=60
+Testing with last char value 31019 length=60
+Testing with last char value 31079 length=60
+Testing with last char value 31139 length=60
+Testing with last char value 31199 length=60
+Testing with last char value 31259 length=60
+Testing with last char value 31319 length=60
+Testing with last char value 31379 length=60
+Testing with last char value 31439 length=60
+Testing with last char value 31499 length=60
+Testing with last char value 31559 length=60
+Testing with last char value 31619 length=60
+Testing with last char value 31679 length=60
+Testing with last char value 31739 length=60
+Testing with last char value 31799 length=60
+Testing with last char value 31859 length=60
+Testing with last char value 31919 length=60
+Testing with last char value 31979 length=60
+Testing with last char value 32039 length=60
+Testing with last char value 32099 length=60
+Testing with last char value 32159 length=60
+Testing with last char value 32219 length=60
+Testing with last char value 32279 length=60
+Testing with last char value 32339 length=60
+Testing with last char value 32399 length=60
+Testing with last char value 32459 length=60
+Testing with last char value 32519 length=60
+Testing with last char value 32579 length=60
+Testing with last char value 32639 length=60
+Testing with last char value 32699 length=60
+Testing with last char value 32759 length=60
+Testing with last char value 32819 length=60
+Testing with last char value 32879 length=60
+Testing with last char value 32939 length=60
+Testing with last char value 32999 length=60
+Testing with last char value 33059 length=60
+Testing with last char value 33119 length=60
+Testing with last char value 33179 length=60
+Testing with last char value 33239 length=60
+Testing with last char value 33299 length=60
+Testing with last char value 33359 length=60
+Testing with last char value 33419 length=60
+Testing with last char value 33479 length=60
+Testing with last char value 33539 length=60
+Testing with last char value 33599 length=60
+Testing with last char value 33659 length=60
+Testing with last char value 33719 length=60
+Testing with last char value 33779 length=60
+Testing with last char value 33839 length=60
+Testing with last char value 33899 length=60
+Testing with last char value 33959 length=60
+Testing with last char value 34019 length=60
+Testing with last char value 34079 length=60
+Testing with last char value 34139 length=60
+Testing with last char value 34199 length=60
+Testing with last char value 34259 length=60
+Testing with last char value 34319 length=60
+Testing with last char value 34379 length=60
+Testing with last char value 34439 length=60
+Testing with last char value 34499 length=60
+Testing with last char value 34559 length=60
+Testing with last char value 34619 length=60
+Testing with last char value 34679 length=60
+Testing with last char value 34739 length=60
+Testing with last char value 34799 length=60
+Testing with last char value 34859 length=60
+Testing with last char value 34919 length=60
+Testing with last char value 34979 length=60
+Testing with last char value 35039 length=60
+Testing with last char value 35099 length=60
+Testing with last char value 35159 length=60
+Testing with last char value 35219 length=60
+Testing with last char value 35279 length=60
+Testing with last char value 35339 length=60
+Testing with last char value 35399 length=60
+Testing with last char value 35459 length=60
+Testing with last char value 35519 length=60
+Testing with last char value 35579 length=60
+Testing with last char value 35639 length=60
+Testing with last char value 35699 length=60
+Testing with last char value 35759 length=60
+Testing with last char value 35819 length=60
+Testing with last char value 35879 length=60
+Testing with last char value 35939 length=60
+Testing with last char value 35999 length=60
+Testing with last char value 36059 length=60
+Testing with last char value 36119 length=60
+Testing with last char value 36179 length=60
+Testing with last char value 36239 length=60
+Testing with last char value 36299 length=60
+Testing with last char value 36359 length=60
+Testing with last char value 36419 length=60
+Testing with last char value 36479 length=60
+Testing with last char value 36539 length=60
+Testing with last char value 36599 length=60
+Testing with last char value 36659 length=60
+Testing with last char value 36719 length=60
+Testing with last char value 36779 length=60
+Testing with last char value 36839 length=60
+Testing with last char value 36899 length=60
+Testing with last char value 36959 length=60
+Testing with last char value 37019 length=60
+Testing with last char value 37079 length=60
+Testing with last char value 37139 length=60
+Testing with last char value 37199 length=60
+Testing with last char value 37259 length=60
+Testing with last char value 37319 length=60
+Testing with last char value 37379 length=60
+Testing with last char value 37439 length=60
+Testing with last char value 37499 length=60
+Testing with last char value 37559 length=60
+Testing with last char value 37619 length=60
+Testing with last char value 37679 length=60
+Testing with last char value 37739 length=60
+Testing with last char value 37799 length=60
+Testing with last char value 37859 length=60
+Testing with last char value 37919 length=60
+Testing with last char value 37979 length=60
+Testing with last char value 38039 length=60
+Testing with last char value 38099 length=60
+Testing with last char value 38159 length=60
+Testing with last char value 38219 length=60
+Testing with last char value 38279 length=60
+Testing with last char value 38339 length=60
+Testing with last char value 38399 length=60
+Testing with last char value 38459 length=60
+Testing with last char value 38519 length=60
+Testing with last char value 38579 length=60
+Testing with last char value 38639 length=60
+Testing with last char value 38699 length=60
+Testing with last char value 38759 length=60
+Testing with last char value 38819 length=60
+Testing with last char value 38879 length=60
+Testing with last char value 38939 length=60
+Testing with last char value 38999 length=60
+Testing with last char value 39059 length=60
+Testing with last char value 39119 length=60
+Testing with last char value 39179 length=60
+Testing with last char value 39239 length=60
+Testing with last char value 39299 length=60
+Testing with last char value 39359 length=60
+Testing with last char value 39419 length=60
+Testing with last char value 39479 length=60
+Testing with last char value 39539 length=60
+Testing with last char value 39599 length=60
+Testing with last char value 39659 length=60
+Testing with last char value 39719 length=60
+Testing with last char value 39779 length=60
+Testing with last char value 39839 length=60
+Testing with last char value 39899 length=60
+Testing with last char value 39959 length=60
+Testing with last char value 40019 length=60
+Testing with last char value 40079 length=60
+Testing with last char value 40139 length=60
+Testing with last char value 40199 length=60
+Testing with last char value 40259 length=60
+Testing with last char value 40319 length=60
+Testing with last char value 40379 length=60
+Testing with last char value 40439 length=60
+Testing with last char value 40499 length=60
+Testing with last char value 40559 length=60
+Testing with last char value 40619 length=60
+Testing with last char value 40679 length=60
+Testing with last char value 40739 length=60
+Testing with last char value 40799 length=60
+Testing with last char value 40859 length=60
+Testing with last char value 40919 length=60
+Testing with last char value 40979 length=60
+Testing with last char value 41039 length=60
+Testing with last char value 41099 length=60
+Testing with last char value 41159 length=60
+Testing with last char value 41219 length=60
+Testing with last char value 41279 length=60
+Testing with last char value 41339 length=60
+Testing with last char value 41399 length=60
+Testing with last char value 41459 length=60
+Testing with last char value 41519 length=60
+Testing with last char value 41579 length=60
+Testing with last char value 41639 length=60
+Testing with last char value 41699 length=60
+Testing with last char value 41759 length=60
+Testing with last char value 41819 length=60
+Testing with last char value 41879 length=60
+Testing with last char value 41939 length=60
+Testing with last char value 41999 length=60
+Testing with last char value 42059 length=60
+Testing with last char value 42119 length=60
+Testing with last char value 42179 length=60
+Testing with last char value 42239 length=60
+Testing with last char value 42299 length=60
+Testing with last char value 42359 length=60
+Testing with last char value 42419 length=60
+Testing with last char value 42479 length=60
+Testing with last char value 42539 length=60
+Testing with last char value 42599 length=60
+Testing with last char value 42659 length=60
+Testing with last char value 42719 length=60
+Testing with last char value 42779 length=60
+Testing with last char value 42839 length=60
+Testing with last char value 42899 length=60
+Testing with last char value 42959 length=60
+Testing with last char value 43019 length=60
+Testing with last char value 43079 length=60
+Testing with last char value 43139 length=60
+Testing with last char value 43199 length=60
+Testing with last char value 43259 length=60
+Testing with last char value 43319 length=60
+Testing with last char value 43379 length=60
+Testing with last char value 43439 length=60
+Testing with last char value 43499 length=60
+Testing with last char value 43559 length=60
+Testing with last char value 43619 length=60
+Testing with last char value 43679 length=60
+Testing with last char value 43739 length=60
+Testing with last char value 43799 length=60
+Testing with last char value 43859 length=60
+Testing with last char value 43919 length=60
+Testing with last char value 43979 length=60
+Testing with last char value 44039 length=60
+Testing with last char value 44099 length=60
+Testing with last char value 44159 length=60
+Testing with last char value 44219 length=60
+Testing with last char value 44279 length=60
+Testing with last char value 44339 length=60
+Testing with last char value 44399 length=60
+Testing with last char value 44459 length=60
+Testing with last char value 44519 length=60
+Testing with last char value 44579 length=60
+Testing with last char value 44639 length=60
+Testing with last char value 44699 length=60
+Testing with last char value 44759 length=60
+Testing with last char value 44819 length=60
+Testing with last char value 44879 length=60
+Testing with last char value 44939 length=60
+Testing with last char value 44999 length=60
+Testing with last char value 45059 length=60
+Testing with last char value 45119 length=60
+Testing with last char value 45179 length=60
+Testing with last char value 45239 length=60
+Testing with last char value 45299 length=60
+Testing with last char value 45359 length=60
+Testing with last char value 45419 length=60
+Testing with last char value 45479 length=60
+Testing with last char value 45539 length=60
+Testing with last char value 45599 length=60
+Testing with last char value 45659 length=60
+Testing with last char value 45719 length=60
+Testing with last char value 45779 length=60
+Testing with last char value 45839 length=60
+Testing with last char value 45899 length=60
+Testing with last char value 45959 length=60
+Testing with last char value 46019 length=60
+Testing with last char value 46079 length=60
+Testing with last char value 46139 length=60
+Testing with last char value 46199 length=60
+Testing with last char value 46259 length=60
+Testing with last char value 46319 length=60
+Testing with last char value 46379 length=60
+Testing with last char value 46439 length=60
+Testing with last char value 46499 length=60
+Testing with last char value 46559 length=60
+Testing with last char value 46619 length=60
+Testing with last char value 46679 length=60
+Testing with last char value 46739 length=60
+Testing with last char value 46799 length=60
+Testing with last char value 46859 length=60
+Testing with last char value 46919 length=60
+Testing with last char value 46979 length=60
+Testing with last char value 47039 length=60
+Testing with last char value 47099 length=60
+Testing with last char value 47159 length=60
+Testing with last char value 47219 length=60
+Testing with last char value 47279 length=60
+Testing with last char value 47339 length=60
+Testing with last char value 47399 length=60
+Testing with last char value 47459 length=60
+Testing with last char value 47519 length=60
+Testing with last char value 47579 length=60
+Testing with last char value 47639 length=60
+Testing with last char value 47699 length=60
+Testing with last char value 47759 length=60
+Testing with last char value 47819 length=60
+Testing with last char value 47879 length=60
+Testing with last char value 47939 length=60
+Testing with last char value 47999 length=60
+Testing with last char value 48059 length=60
+Testing with last char value 48119 length=60
+Testing with last char value 48179 length=60
+Testing with last char value 48239 length=60
+Testing with last char value 48299 length=60
+Testing with last char value 48359 length=60
+Testing with last char value 48419 length=60
+Testing with last char value 48479 length=60
+Testing with last char value 48539 length=60
+Testing with last char value 48599 length=60
+Testing with last char value 48659 length=60
+Testing with last char value 48719 length=60
+Testing with last char value 48779 length=60
+Testing with last char value 48839 length=60
+Testing with last char value 48899 length=60
+Testing with last char value 48959 length=60
+Testing with last char value 49019 length=60
+Testing with last char value 49079 length=60
+Testing with last char value 49139 length=60
+Testing with last char value 49199 length=60
+Testing with last char value 49259 length=60
+Testing with last char value 49319 length=60
+Testing with last char value 49379 length=60
+Testing with last char value 49439 length=60
+Testing with last char value 49499 length=60
+Testing with last char value 49559 length=60
+Testing with last char value 49619 length=60
+Testing with last char value 49679 length=60
+Testing with last char value 49739 length=60
+Testing with last char value 49799 length=60
+Testing with last char value 49859 length=60
+Testing with last char value 49919 length=60
+Testing with last char value 49979 length=60
+Testing with last char value 50039 length=60
+Testing with last char value 50099 length=60
+Testing with last char value 50159 length=60
+Testing with last char value 50219 length=60
+Testing with last char value 50279 length=60
+Testing with last char value 50339 length=60
+Testing with last char value 50399 length=60
+Testing with last char value 50459 length=60
+Testing with last char value 50519 length=60
+Testing with last char value 50579 length=60
+Testing with last char value 50639 length=60
+Testing with last char value 50699 length=60
+Testing with last char value 50759 length=60
+Testing with last char value 50819 length=60
+Testing with last char value 50879 length=60
+Testing with last char value 50939 length=60
+Testing with last char value 50999 length=60
+Testing with last char value 51059 length=60
+Testing with last char value 51119 length=60
+Testing with last char value 51179 length=60
+Testing with last char value 51239 length=60
+Testing with last char value 51299 length=60
+Testing with last char value 51359 length=60
+Testing with last char value 51419 length=60
+Testing with last char value 51479 length=60
+Testing with last char value 51539 length=60
+Testing with last char value 51599 length=60
+Testing with last char value 51659 length=60
+Testing with last char value 51719 length=60
+Testing with last char value 51779 length=60
+Testing with last char value 51839 length=60
+Testing with last char value 51899 length=60
+Testing with last char value 51959 length=60
+Testing with last char value 52019 length=60
+Testing with last char value 52079 length=60
+Testing with last char value 52139 length=60
+Testing with last char value 52199 length=60
+Testing with last char value 52259 length=60
+Testing with last char value 52319 length=60
+Testing with last char value 52379 length=60
+Testing with last char value 52439 length=60
+Testing with last char value 52499 length=60
+Testing with last char value 52559 length=60
+Testing with last char value 52619 length=60
+Testing with last char value 52679 length=60
+Testing with last char value 52739 length=60
+Testing with last char value 52799 length=60
+Testing with last char value 52859 length=60
+Testing with last char value 52919 length=60
+Testing with last char value 52979 length=60
+Testing with last char value 53039 length=60
+Testing with last char value 53099 length=60
+Testing with last char value 53159 length=60
+Testing with last char value 53219 length=60
+Testing with last char value 53279 length=60
+Testing with last char value 53339 length=60
+Testing with last char value 53399 length=60
+Testing with last char value 53459 length=60
+Testing with last char value 53519 length=60
+Testing with last char value 53579 length=60
+Testing with last char value 53639 length=60
+Testing with last char value 53699 length=60
+Testing with last char value 53759 length=60
+Testing with last char value 53819 length=60
+Testing with last char value 53879 length=60
+Testing with last char value 53939 length=60
+Testing with last char value 53999 length=60
+Testing with last char value 54059 length=60
+Testing with last char value 54119 length=60
+Testing with last char value 54179 length=60
+Testing with last char value 54239 length=60
+Testing with last char value 54299 length=60
+Testing with last char value 54359 length=60
+Testing with last char value 54419 length=60
+Testing with last char value 54479 length=60
+Testing with last char value 54539 length=60
+Testing with last char value 54599 length=60
+Testing with last char value 54659 length=60
+Testing with last char value 54719 length=60
+Testing with last char value 54779 length=60
+Testing with last char value 54839 length=60
+Testing with last char value 54899 length=60
+Testing with last char value 54959 length=60
+Testing with last char value 55019 length=60
+Testing with last char value 55079 length=60
+Testing with last char value 55139 length=60
+Testing with last char value 55199 length=60
+Testing with last char value 55259 length=60
+Testing with last char value 55319 length=60
+Testing with last char value 55379 length=60
+Testing with last char value 55439 length=60
+Testing with last char value 55499 length=60
+Testing with last char value 55559 length=60
+Testing with last char value 55619 length=60
+Testing with last char value 55679 length=60
+Testing with last char value 55739 length=60
+Testing with last char value 55799 length=60
+Testing with last char value 55859 length=60
+Testing with last char value 55919 length=60
+Testing with last char value 55979 length=60
+Testing with last char value 56039 length=60
+Testing with last char value 56099 length=60
+Testing with last char value 56159 length=60
+Testing with last char value 56219 length=60
+Testing with last char value 56279 length=60
+Testing with last char value 56339 length=60
+Testing with last char value 56399 length=60
+Testing with last char value 56459 length=60
+Testing with last char value 56519 length=60
+Testing with last char value 56579 length=60
+Testing with last char value 56639 length=60
+Testing with last char value 56699 length=60
+Testing with last char value 56759 length=60
+Testing with last char value 56819 length=60
+Testing with last char value 56879 length=60
+Testing with last char value 56939 length=60
+Testing with last char value 56999 length=60
+Testing with last char value 57059 length=60
+Testing with last char value 57119 length=60
+Testing with last char value 57179 length=60
+Testing with last char value 57239 length=60
+Testing with last char value 57299 length=60
+Testing with last char value 57359 length=60
+Testing with last char value 57419 length=60
+Testing with last char value 57479 length=60
+Testing with last char value 57539 length=60
+Testing with last char value 57599 length=60
+Testing with last char value 57659 length=60
+Testing with last char value 57719 length=60
+Testing with last char value 57779 length=60
+Testing with last char value 57839 length=60
+Testing with last char value 57899 length=60
+Testing with last char value 57959 length=60
+Testing with last char value 58019 length=60
+Testing with last char value 58079 length=60
+Testing with last char value 58139 length=60
+Testing with last char value 58199 length=60
+Testing with last char value 58259 length=60
+Testing with last char value 58319 length=60
+Testing with last char value 58379 length=60
+Testing with last char value 58439 length=60
+Testing with last char value 58499 length=60
+Testing with last char value 58559 length=60
+Testing with last char value 58619 length=60
+Testing with last char value 58679 length=60
+Testing with last char value 58739 length=60
+Testing with last char value 58799 length=60
+Testing with last char value 58859 length=60
+Testing with last char value 58919 length=60
+Testing with last char value 58979 length=60
+Testing with last char value 59039 length=60
+Testing with last char value 59099 length=60
+Testing with last char value 59159 length=60
+Testing with last char value 59219 length=60
+Testing with last char value 59279 length=60
+Testing with last char value 59339 length=60
+Testing with last char value 59399 length=60
+Testing with last char value 59459 length=60
+Testing with last char value 59519 length=60
+Testing with last char value 59579 length=60
+Testing with last char value 59639 length=60
+Testing with last char value 59699 length=60
+Testing with last char value 59759 length=60
+Testing with last char value 59819 length=60
+Testing with last char value 59879 length=60
+Testing with last char value 59939 length=60
+Testing with last char value 59999 length=60
+Testing with last char value 60059 length=60
+Testing with last char value 60119 length=60
+Testing with last char value 60179 length=60
+Testing with last char value 60239 length=60
+Testing with last char value 60299 length=60
+Testing with last char value 60359 length=60
+Testing with last char value 60419 length=60
+Testing with last char value 60479 length=60
+Testing with last char value 60539 length=60
+Testing with last char value 60599 length=60
+Testing with last char value 60659 length=60
+Testing with last char value 60719 length=60
+Testing with last char value 60779 length=60
+Testing with last char value 60839 length=60
+Testing with last char value 60899 length=60
+Testing with last char value 60959 length=60
+Testing with last char value 61019 length=60
+Testing with last char value 61079 length=60
+Testing with last char value 61139 length=60
+Testing with last char value 61199 length=60
+Testing with last char value 61259 length=60
+Testing with last char value 61319 length=60
+Testing with last char value 61379 length=60
+Testing with last char value 61439 length=60
+Testing with last char value 61499 length=60
+Testing with last char value 61559 length=60
+Testing with last char value 61619 length=60
+Testing with last char value 61679 length=60
+Testing with last char value 61739 length=60
+Testing with last char value 61799 length=60
+Testing with last char value 61859 length=60
+Testing with last char value 61919 length=60
+Testing with last char value 61979 length=60
+Testing with last char value 62039 length=60
+Testing with last char value 62099 length=60
+Testing with last char value 62159 length=60
+Testing with last char value 62219 length=60
+Testing with last char value 62279 length=60
+Testing with last char value 62339 length=60
+Testing with last char value 62399 length=60
+Testing with last char value 62459 length=60
+Testing with last char value 62519 length=60
+Testing with last char value 62579 length=60
+Testing with last char value 62639 length=60
+Testing with last char value 62699 length=60
+Testing with last char value 62759 length=60
+Testing with last char value 62819 length=60
+Testing with last char value 62879 length=60
+Testing with last char value 62939 length=60
+Testing with last char value 62999 length=60
+Testing with last char value 63059 length=60
+Testing with last char value 63119 length=60
+Testing with last char value 63179 length=60
+Testing with last char value 63239 length=60
+Testing with last char value 63299 length=60
+Testing with last char value 63359 length=60
+Testing with last char value 63419 length=60
+Testing with last char value 63479 length=60
+Testing with last char value 63539 length=60
+Testing with last char value 63599 length=60
+Testing with last char value 63659 length=60
+Testing with last char value 63719 length=60
+Testing with last char value 63779 length=60
+Testing with last char value 63839 length=60
+Testing with last char value 63899 length=60
+Testing with last char value 63959 length=60
+Testing with last char value 64019 length=60
+Testing with last char value 64079 length=60
+Testing with last char value 64139 length=60
+Testing with last char value 64199 length=60
+Testing with last char value 64259 length=60
+Testing with last char value 64319 length=60
+Testing with last char value 64379 length=60
+Testing with last char value 64439 length=60
+Testing with last char value 64499 length=60
+Testing with last char value 64559 length=60
+Testing with last char value 64619 length=60
+Testing with last char value 64679 length=60
+Testing with last char value 64739 length=60
+Testing with last char value 64799 length=60
+Testing with last char value 64859 length=60
+Testing with last char value 64919 length=60
+Testing with last char value 64979 length=60
+Testing with last char value 65039 length=60
+Testing with last char value 65099 length=60
+Testing with last char value 65159 length=60
+Testing with last char value 65219 length=60
+Testing with last char value 65279 length=60
+Testing with last char value 65339 length=60
+Testing with last char value 65399 length=60
+Testing with last char value 65459 length=60
+Testing with last char value 65519 length=60
+Testing with last char value 65535 length=16
+Test CharUTF8 finished

Modified: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/DB2IsolationLevels.out
Url: http://svn.apache.org/viewcvs/incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/DB2IsolationLevels.out?view=diff&rev=122528&p1=incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/DB2IsolationLevels.out&r1=122527&p2=incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/DB2IsolationLevels.out&r2=122528
==============================================================================
--- incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/DB2IsolationLevels.out	(original)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/DB2IsolationLevels.out	Wed Dec 15 22:20:35 2004
@@ -1,541 +1,541 @@
-ij> -- single user test for the various isolation levels
--- also notice in the runtimestatistics output that Fetch Size is 16 for various isolation levels ie we are doing bulk fetch for all isolation levels
--- this will test the fix for bug 5953 - which is to enable bulk fetching for RR and serializable isolation levels as well.
-prepare getIsolation as 'values current isolation';
-ij> autocommit off;
-ij> call SYSCS_UTIL.SYSCS_SET_RUNTIMESTATISTICS(1);
-0 rows inserted/updated/deleted
-ij> maximumdisplaywidth 2000;
-ij> -- create a table
-create table t1(c1 int not null constraint asdf primary key);
-0 rows inserted/updated/deleted
-ij> commit;
-ij> -- insert a row
-insert into t1 values 1;
-1 row inserted/updated/deleted
-ij> -- verify table scan gets row lock at read committed
-select * from t1;
-C1         
------------
-1          
-ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
-1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-Statement Name: 
-	null
-Statement Text: 
-	-- verify table scan gets row lock at read committed
-select * from t1
-Parse Time: 0
-Bind Time: 0
-Optimize Time: 0
-Generate Time: 0
-Compile Time: 0
-Execute Time: 0
-Begin Compilation Timestamp : null
-End Compilation Timestamp : null
-Begin Execution Timestamp : null
-End Execution Timestamp : null
-Statement Execution Plan Text: 
-Index Scan ResultSet for T1 using constraint ASDF at read committed isolation level using instantaneous share row locking chosen by the optimizer
-Number of opens = 1
-Rows seen = 1
-Rows filtered = 0
-Fetch Size = 16
-	constructor time (milliseconds) = 0
-	open time (milliseconds) = 0
-	next time (milliseconds) = 0
-	close time (milliseconds) = 0
-	next time in milliseconds/row = 0
-scan information: 
-	Bit set of columns fetched={0}
-	Number of columns fetched=1
-	Number of deleted rows visited=0
-	Number of pages visited=1
-	Number of rows qualified=1
-	Number of rows visited=1
-	Scan type=btree
-	Tree height=1
-	start position: 
-	None
-	stop position: 
-	None
-	qualifiers:
-None
-ij> -- verify SET ISOLATION commits and changes isolation level
-set isolation RR;
-0 rows inserted/updated/deleted
-ij> execute getIsolation;
-1   
-----
-RR  
-ij> -- rollback should find nothing to undo
-rollback;
-ij> select * from t1;
-C1         
------------
-1          
-ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
-1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-Statement Name: 
-	null
-Statement Text: 
-	select * from t1
-Parse Time: 0
-Bind Time: 0
-Optimize Time: 0
-Generate Time: 0
-Compile Time: 0
-Execute Time: 0
-Begin Compilation Timestamp : null
-End Compilation Timestamp : null
-Begin Execution Timestamp : null
-End Execution Timestamp : null
-Statement Execution Plan Text: 
-Index Scan ResultSet for T1 using constraint ASDF at serializable isolation level using share table locking chosen by the optimizer
-Number of opens = 1
-Rows seen = 1
-Rows filtered = 0
-Fetch Size = 16
-	constructor time (milliseconds) = 0
-	open time (milliseconds) = 0
-	next time (milliseconds) = 0
-	close time (milliseconds) = 0
-	next time in milliseconds/row = 0
-scan information: 
-	Bit set of columns fetched={0}
-	Number of columns fetched=1
-	Number of deleted rows visited=0
-	Number of pages visited=1
-	Number of rows qualified=1
-	Number of rows visited=1
-	Scan type=btree
-	Tree height=1
-	start position: 
-	None
-	stop position: 
-	None
-	qualifiers:
-None
-ij> set isolation reset;
-0 rows inserted/updated/deleted
-ij> execute getIsolation;
-1   
-----
-ij> -- verify SET ISOLATION commits and changes isolation level
-set isolation read committed;
-0 rows inserted/updated/deleted
-ij> execute getIsolation;
-1   
-----
-CS  
-ij> -- rollback should find nothing to undo
-rollback;
-ij> select * from t1;
-C1         
------------
-1          
-ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
-1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-Statement Name: 
-	null
-Statement Text: 
-	select * from t1
-Parse Time: 0
-Bind Time: 0
-Optimize Time: 0
-Generate Time: 0
-Compile Time: 0
-Execute Time: 0
-Begin Compilation Timestamp : null
-End Compilation Timestamp : null
-Begin Execution Timestamp : null
-End Execution Timestamp : null
-Statement Execution Plan Text: 
-Index Scan ResultSet for T1 using constraint ASDF at read committed isolation level using instantaneous share row locking chosen by the optimizer
-Number of opens = 1
-Rows seen = 1
-Rows filtered = 0
-Fetch Size = 16
-	constructor time (milliseconds) = 0
-	open time (milliseconds) = 0
-	next time (milliseconds) = 0
-	close time (milliseconds) = 0
-	next time in milliseconds/row = 0
-scan information: 
-	Bit set of columns fetched={0}
-	Number of columns fetched=1
-	Number of deleted rows visited=0
-	Number of pages visited=1
-	Number of rows qualified=1
-	Number of rows visited=1
-	Scan type=btree
-	Tree height=1
-	start position: 
-	None
-	stop position: 
-	None
-	qualifiers:
-None
-ij> set current isolation = reset;
-0 rows inserted/updated/deleted
-ij> execute getIsolation;
-1   
-----
-ij> -- verify SET ISOLATION commits and changes isolation level
-set current isolation = RS;
-0 rows inserted/updated/deleted
-ij> execute getIsolation;
-1   
-----
-RS  
-ij> -- rollback should find nothing to undo
-rollback;
-ij> select * from t1;
-C1         
------------
-1          
-ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
-1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-Statement Name: 
-	null
-Statement Text: 
-	select * from t1
-Parse Time: 0
-Bind Time: 0
-Optimize Time: 0
-Generate Time: 0
-Compile Time: 0
-Execute Time: 0
-Begin Compilation Timestamp : null
-End Compilation Timestamp : null
-Begin Execution Timestamp : null
-End Execution Timestamp : null
-Statement Execution Plan Text: 
-Index Scan ResultSet for T1 using constraint ASDF at repeatable read isolation level using share row locking chosen by the optimizer
-Number of opens = 1
-Rows seen = 1
-Rows filtered = 0
-Fetch Size = 16
-	constructor time (milliseconds) = 0
-	open time (milliseconds) = 0
-	next time (milliseconds) = 0
-	close time (milliseconds) = 0
-	next time in milliseconds/row = 0
-scan information: 
-	Bit set of columns fetched={0}
-	Number of columns fetched=1
-	Number of deleted rows visited=0
-	Number of pages visited=1
-	Number of rows qualified=1
-	Number of rows visited=1
-	Scan type=btree
-	Tree height=1
-	start position: 
-	None
-	stop position: 
-	None
-	qualifiers:
-None
-ij> set isolation to reset;
-0 rows inserted/updated/deleted
-ij> execute getIsolation;
-1   
-----
-ij> -- verify SET ISOLATION commits and changes isolation level
-set isolation = dirty read;
-0 rows inserted/updated/deleted
-ij> execute getIsolation;
-1   
-----
-UR  
-ij> -- rollback should find nothing to undo
-rollback;
-ij> select * from t1;
-C1         
------------
-1          
-ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
-1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-Statement Name: 
-	null
-Statement Text: 
-	select * from t1
-Parse Time: 0
-Bind Time: 0
-Optimize Time: 0
-Generate Time: 0
-Compile Time: 0
-Execute Time: 0
-Begin Compilation Timestamp : null
-End Compilation Timestamp : null
-Begin Execution Timestamp : null
-End Execution Timestamp : null
-Statement Execution Plan Text: 
-Index Scan ResultSet for T1 using constraint ASDF at read uncommitted isolation level using share row locking chosen by the optimizer
-Number of opens = 1
-Rows seen = 1
-Rows filtered = 0
-Fetch Size = 16
-	constructor time (milliseconds) = 0
-	open time (milliseconds) = 0
-	next time (milliseconds) = 0
-	close time (milliseconds) = 0
-	next time in milliseconds/row = 0
-scan information: 
-	Bit set of columns fetched={0}
-	Number of columns fetched=1
-	Number of deleted rows visited=0
-	Number of pages visited=1
-	Number of rows qualified=1
-	Number of rows visited=1
-	Scan type=btree
-	Tree height=1
-	start position: 
-	None
-	stop position: 
-	None
-	qualifiers:
-None
-ij> -- test WITH ISOLATION clause
-set isolation serializable;
-0 rows inserted/updated/deleted
-ij> execute getIsolation;
-1   
-----
-RR  
-ij> select * from t1 with CS;
-C1         
------------
-1          
-ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
-1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-Statement Name: 
-	null
-Statement Text: 
-	select * from t1 with CS
-Parse Time: 0
-Bind Time: 0
-Optimize Time: 0
-Generate Time: 0
-Compile Time: 0
-Execute Time: 0
-Begin Compilation Timestamp : null
-End Compilation Timestamp : null
-Begin Execution Timestamp : null
-End Execution Timestamp : null
-Statement Execution Plan Text: 
-Index Scan ResultSet for T1 using constraint ASDF at read committed isolation level using instantaneous share row locking chosen by the optimizer
-Number of opens = 1
-Rows seen = 1
-Rows filtered = 0
-Fetch Size = 16
-	constructor time (milliseconds) = 0
-	open time (milliseconds) = 0
-	next time (milliseconds) = 0
-	close time (milliseconds) = 0
-	next time in milliseconds/row = 0
-scan information: 
-	Bit set of columns fetched={0}
-	Number of columns fetched=1
-	Number of deleted rows visited=0
-	Number of pages visited=1
-	Number of rows qualified=1
-	Number of rows visited=1
-	Scan type=btree
-	Tree height=1
-	start position: 
-	None
-	stop position: 
-	None
-	qualifiers:
-None
-ij> set isolation cursor stability;
-0 rows inserted/updated/deleted
-ij> execute getIsolation;
-1   
-----
-CS  
-ij> select * from t1 with RR;
-C1         
------------
-1          
-ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
-1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-Statement Name: 
-	null
-Statement Text: 
-	select * from t1 with RR
-Parse Time: 0
-Bind Time: 0
-Optimize Time: 0
-Generate Time: 0
-Compile Time: 0
-Execute Time: 0
-Begin Compilation Timestamp : null
-End Compilation Timestamp : null
-Begin Execution Timestamp : null
-End Execution Timestamp : null
-Statement Execution Plan Text: 
-Index Scan ResultSet for T1 using constraint ASDF at serializable isolation level using share table locking chosen by the optimizer
-Number of opens = 1
-Rows seen = 1
-Rows filtered = 0
-Fetch Size = 16
-	constructor time (milliseconds) = 0
-	open time (milliseconds) = 0
-	next time (milliseconds) = 0
-	close time (milliseconds) = 0
-	next time in milliseconds/row = 0
-scan information: 
-	Bit set of columns fetched={0}
-	Number of columns fetched=1
-	Number of deleted rows visited=0
-	Number of pages visited=1
-	Number of rows qualified=1
-	Number of rows visited=1
-	Scan type=btree
-	Tree height=1
-	start position: 
-	None
-	stop position: 
-	None
-	qualifiers:
-None
-ij> set isolation serializable;
-0 rows inserted/updated/deleted
-ij> execute getIsolation;
-1   
-----
-RR  
-ij> select * from t1 with RS;
-C1         
------------
-1          
-ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
-1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-Statement Name: 
-	null
-Statement Text: 
-	select * from t1 with RS
-Parse Time: 0
-Bind Time: 0
-Optimize Time: 0
-Generate Time: 0
-Compile Time: 0
-Execute Time: 0
-Begin Compilation Timestamp : null
-End Compilation Timestamp : null
-Begin Execution Timestamp : null
-End Execution Timestamp : null
-Statement Execution Plan Text: 
-Index Scan ResultSet for T1 using constraint ASDF at repeatable read isolation level using share row locking chosen by the optimizer
-Number of opens = 1
-Rows seen = 1
-Rows filtered = 0
-Fetch Size = 16
-	constructor time (milliseconds) = 0
-	open time (milliseconds) = 0
-	next time (milliseconds) = 0
-	close time (milliseconds) = 0
-	next time in milliseconds/row = 0
-scan information: 
-	Bit set of columns fetched={0}
-	Number of columns fetched=1
-	Number of deleted rows visited=0
-	Number of pages visited=1
-	Number of rows qualified=1
-	Number of rows visited=1
-	Scan type=btree
-	Tree height=1
-	start position: 
-	None
-	stop position: 
-	None
-	qualifiers:
-None
-ij> set current isolation to read committed;
-0 rows inserted/updated/deleted
-ij> execute getIsolation;
-1   
-----
-CS  
-ij> select * from t1 with ur;
-C1         
------------
-1          
-ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
-1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-Statement Name: 
-	null
-Statement Text: 
-	select * from t1 with ur
-Parse Time: 0
-Bind Time: 0
-Optimize Time: 0
-Generate Time: 0
-Compile Time: 0
-Execute Time: 0
-Begin Compilation Timestamp : null
-End Compilation Timestamp : null
-Begin Execution Timestamp : null
-End Execution Timestamp : null
-Statement Execution Plan Text: 
-Index Scan ResultSet for T1 using constraint ASDF at read uncommitted isolation level using share row locking chosen by the optimizer
-Number of opens = 1
-Rows seen = 1
-Rows filtered = 0
-Fetch Size = 16
-	constructor time (milliseconds) = 0
-	open time (milliseconds) = 0
-	next time (milliseconds) = 0
-	close time (milliseconds) = 0
-	next time in milliseconds/row = 0
-scan information: 
-	Bit set of columns fetched={0}
-	Number of columns fetched=1
-	Number of deleted rows visited=0
-	Number of pages visited=1
-	Number of rows qualified=1
-	Number of rows visited=1
-	Scan type=btree
-	Tree height=1
-	start position: 
-	None
-	stop position: 
-	None
-	qualifiers:
-None
-ij> -- unknown isolation level
-select * from t1 with rw;
-ERROR 42X01: Syntax error: Encountered "rw" at line 2, column 23.
-ij> select * from t1 with DIRTY READ;
-ERROR 42X01: Syntax error: Encountered "DIRTY" at line 1, column 23.
-ij> select * from t1 with READ UNCOMMITTED;
-ERROR 42X01: Syntax error: Encountered "READ" at line 1, column 23.
-ij> select * from t1 with READ COMMITTED;
-ERROR 42X01: Syntax error: Encountered "READ" at line 1, column 23.
-ij> select * from t1 with CURSOR STABILITY;
-ERROR 42X01: Syntax error: Encountered "CURSOR" at line 1, column 23.
-ij> select * from t1 with REPEATABLE READ;
-ERROR 42X01: Syntax error: Encountered "REPEATABLE" at line 1, column 23.
-ij> select * from t1 with SERIALIZABLE;
-ERROR 42X01: Syntax error: Encountered "SERIALIZABLE" at line 1, column 23.
-ij> -- check the db2 isolation levels can be used as identifiers
-create table db2iso(cs int, rr int, ur int, rs int);
-0 rows inserted/updated/deleted
-ij> select cs, rr, ur, rs from db2iso;
-CS         |RR         |UR         |RS         
------------------------------------------------
-ij> -- cleanup
-drop table t1;
-0 rows inserted/updated/deleted
-ij> 
+ij> -- single user test for the various isolation levels
+-- also notice in the runtimestatistics output that Fetch Size is 16 for various isolation levels ie we are doing bulk fetch for all isolation levels
+-- this will test the fix for bug 5953 - which is to enable bulk fetching for RR and serializable isolation levels as well.
+prepare getIsolation as 'values current isolation';
+ij> autocommit off;
+ij> call SYSCS_UTIL.SYSCS_SET_RUNTIMESTATISTICS(1);
+0 rows inserted/updated/deleted
+ij> maximumdisplaywidth 2000;
+ij> -- create a table
+create table t1(c1 int not null constraint asdf primary key);
+0 rows inserted/updated/deleted
+ij> commit;
+ij> -- insert a row
+insert into t1 values 1;
+1 row inserted/updated/deleted
+ij> -- verify table scan gets row lock at read committed
+select * from t1;
+C1         
+-----------
+1          
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1