You are viewing a plain text version of this content. The canonical link for it is here.
Posted to derby-commits@db.apache.org by rh...@apache.org on 2018/09/02 12:53:39 UTC

svn commit: r1839878 - in /db/derby/code/trunk/java: org.apache.derby.commons/ org.apache.derby.engine/ org.apache.derby.server/ org.apache.derby.tests/org/apache/derbyTesting/functionTests/harness/ org.apache.derby.tests/org/apache/derbyTesting/junit/...

Author: rhillegas
Date: Sun Sep  2 12:53:38 2018
New Revision: 1839878

URL: http://svn.apache.org/viewvc?rev=1839878&view=rev
Log:
DERBY-6945: Make it possible to run some Derby tests using the module path; commit derby-6945-49-aa-runSomeTestsWithModulePath.diff.

Modified:
    db/derby/code/trunk/java/org.apache.derby.commons/module-info.java
    db/derby/code/trunk/java/org.apache.derby.engine/module-info.java
    db/derby/code/trunk/java/org.apache.derby.server/module-info.java
    db/derby/code/trunk/java/org.apache.derby.tests/org/apache/derbyTesting/functionTests/harness/FileCompare.java
    db/derby/code/trunk/java/org.apache.derby.tests/org/apache/derbyTesting/functionTests/harness/RunTest.java
    db/derby/code/trunk/java/org.apache.derby.tests/org/apache/derbyTesting/functionTests/harness/jvm.java
    db/derby/code/trunk/java/org.apache.derby.tests/org/apache/derbyTesting/junit/BaseTestCase.java
    db/derby/code/trunk/java/org.apache.derby.tests/org/apache/derbyTesting/junit/DerbyConstants.java
    db/derby/code/trunk/java/org.apache.derby.tests/org/apache/derbyTesting/junit/NetworkServerTestSetup.java
    db/derby/code/trunk/java/org.apache.derby.tests/org/apache/derbyTesting/junit/SecurityManagerSetup.java
    db/derby/code/trunk/java/org.apache.derby.tools/org/apache/derby/impl/tools/sysinfo/Main.java

Modified: db/derby/code/trunk/java/org.apache.derby.commons/module-info.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/org.apache.derby.commons/module-info.java?rev=1839878&r1=1839877&r2=1839878&view=diff
==============================================================================
--- db/derby/code/trunk/java/org.apache.derby.commons/module-info.java (original)
+++ db/derby/code/trunk/java/org.apache.derby.commons/module-info.java Sun Sep  2 12:53:38 2018
@@ -45,6 +45,14 @@ module org.apache.derby.commons
         with org.apache.derby.info.shared.DerbyModule;
 
     //
+    // FIXME! EXPOSED SO THAT THESE PACKAGES CAN BE ACCESSED
+    // BY THE QUERY PLANS WHICH ARE CODE-GENERATED
+    // INTO THE UNNAMED MODULE.
+    //
+    exports org.apache.derby.shared.common.error;
+
+
+    //
     // DERBY INTERNAL EXPORTS
     //
     // ONLY VISIBLE TO OTHER DERBY MODULES.
@@ -54,19 +62,6 @@ module org.apache.derby.commons
         org.apache.derby.server,
         org.apache.derby.optionaltools;
 
-    // FIXME!
-    // EXPORTED TO UNNAMED MODULE SO THAT GENERATED
-    // CLASSES CAN ACCESS StandardException
-    //
-    exports org.apache.derby.shared.common.error;
-    //    exports org.apache.derby.shared.common.error to
-    //        org.apache.derby.engine,
-    //        org.apache.derby.client,
-    //        org.apache.derby.server,
-    //        org.apache.derby.tools,
-    //        org.apache.derby.optionaltools,
-    //        org.apache.derby.tests;
-
     exports org.apache.derby.shared.common.i18n to
         org.apache.derby.engine,
         org.apache.derby.client,
@@ -102,4 +97,19 @@ module org.apache.derby.commons
 
     exports org.apache.derby.shared.common.util to
         org.apache.derby.engine;
+
+    //
+    // STANZAS FOR USE WHEN QUERY PLANS ARE GENERATED INTO
+    // SOME MODULE OTHER THAN THE UNNAMED MODULE.
+    //
+    //
+    // QUERY PLANS REFERENCE StandardException
+    //
+    //    exports org.apache.derby.shared.common.error to
+    //        org.apache.derby.engine,
+    //        org.apache.derby.client,
+    //        org.apache.derby.server,
+    //        org.apache.derby.tools,
+    //        org.apache.derby.optionaltools,
+    //        org.apache.derby.tests;
 }

Modified: db/derby/code/trunk/java/org.apache.derby.engine/module-info.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/org.apache.derby.engine/module-info.java?rev=1839878&r1=1839877&r2=1839878&view=diff
==============================================================================
--- db/derby/code/trunk/java/org.apache.derby.engine/module-info.java (original)
+++ db/derby/code/trunk/java/org.apache.derby.engine/module-info.java Sun Sep  2 12:53:38 2018
@@ -68,6 +68,8 @@ module org.apache.derby.engine
     opens org.apache.derby;
     // ALLOW ACCESS TO ENGLISH MESSAGES
     opens org.apache.derby.loc;
+    // ALLOW ACCESS TO info.properties
+    opens org.apache.derby.info.engine;
 
     //
     // ALLOW CLASS INSTANTIATION VIA REFLECTION
@@ -75,7 +77,22 @@ module org.apache.derby.engine
     
     // ALLOW ExceptionFactory TO INSTANTIATE SQLExceptionFactory
     opens org.apache.derby.impl.jdbc to org.apache.derby.commons;
-    
+
+    //
+    // FIXME! EXPOSED SO THAT THESE PACKAGES CAN BE ACCESSED
+    // BY THE QUERY PLANS WHICH ARE CODE-GENERATED
+    // INTO THE UNNAMED MODULE.
+    //
+    exports org.apache.derby.iapi.services.io;
+    exports org.apache.derby.iapi.services.loader;
+    exports org.apache.derby.iapi.sql;
+    exports org.apache.derby.iapi.sql.conn;
+    exports org.apache.derby.iapi.sql.execute;
+    exports org.apache.derby.iapi.store.access;
+    exports org.apache.derby.iapi.types;
+    exports org.apache.derby.iapi.util;
+    exports org.apache.derby.impl.sql.execute;
+
     //
     // DERBY INTERNAL EXPORTS
     //
@@ -115,24 +132,9 @@ module org.apache.derby.engine
     exports org.apache.derby.iapi.services.diag to
         org.apache.derby.tests;
 
-    exports org.apache.derby.iapi.services.io to
-        org.apache.derby.server,
-        org.apache.derby.optionaltools,
-        org.apache.derby.tests;
-
     exports org.apache.derby.iapi.services.jmx to
         org.apache.derby.server;
 
-    // FIXME! THE GENERATED CLASSES END UP IN THE UNNAMED MODULE.
-    // BECAUSE THEY REFERENCE GeneratedByteCode, WE HAVE TO EXPORT ITS
-    // PACKAGE. WE SHOULD TIGHTEN THIS UP. MAYBE WE CAN GIVE THE GENERATED
-    // CLASSES THEIR OWN MODULE WHICH CAN RECEIVE THE EXPORT.
-    // THEN WE CAN UNCOMMENT THE EXPORTS TO OTHER MODULES.
-    exports org.apache.derby.iapi.services.loader;
-    //exports org.apache.derby.iapi.services.loader to
-    //    org.apache.derby.optionaltools,
-    //    org.apache.derby.tests;
-
     exports org.apache.derby.iapi.services.locks to
         org.apache.derby.tests;
 
@@ -149,25 +151,9 @@ module org.apache.derby.engine
     exports org.apache.derby.iapi.services.uuid to
         org.apache.derby.tests;
 
-    // FIXME! THE GENERATED CLASSES END UP IN THE UNNAMED MODULE.
-    // BECAUSE THEY REFERENCE Row, WE HAVE TO EXPORT ITS
-    // PACKAGE. WE SHOULD TIGHTEN THIS UP. MAYBE WE CAN GIVE THE GENERATED
-    // CLASSES THEIR OWN MODULE WHICH CAN RECEIVE THE EXPORT.
-    // THEN WE CAN UNCOMMENT THE EXPORT TO THE TESTING MODULE.
-    exports org.apache.derby.iapi.sql;
-    //exports org.apache.derby.iapi.sql to
-    //    org.apache.derby.tests;
-
     exports org.apache.derby.iapi.sql.compile to
         org.apache.derby.tests;
 
-    // FIXME! GENERATED CLASSES NEED TO ACCESS
-    // LanguageConnectionContext
-    exports org.apache.derby.iapi.sql.conn;
-    //    exports org.apache.derby.iapi.sql.conn to
-    //        org.apache.derby.optionaltools,
-    //        org.apache.derby.tests;
-
     exports org.apache.derby.iapi.sql.depend to
         org.apache.derby.tests;
 
@@ -176,18 +162,6 @@ module org.apache.derby.engine
         org.apache.derby.optionaltools,
         org.apache.derby.tests;
 
-    // FIXME! THE GENERATED CLASSES END UP IN THE UNNAMED MODULE.
-    // BECAUSE THEY REFERENCE ExecutionFactory, WE HAVE TO EXPORT ITS
-    // PACKAGE. WE SHOULD TIGHTEN THIS UP. MAYBE WE CAN GIVE THE GENERATED
-    // CLASSES THEIR OWN MODULE WHICH CAN RECEIVE THE EXPORT.
-    // THEN WE CAN UNCOMMENT THE EXPORT TO THE TESTING MODULE.
-    exports org.apache.derby.iapi.sql.execute;
-    //exports org.apache.derby.iapi.sql.execute to
-    //    org.apache.derby.tests;
-
-    exports org.apache.derby.iapi.store.access to
-        org.apache.derby.tests;
-
     exports org.apache.derby.iapi.store.access.conglomerate to
         org.apache.derby.tests;
 
@@ -212,22 +186,6 @@ module org.apache.derby.engine
     exports org.apache.derby.iapi.transaction to
         org.apache.derby.server;
 
-    // FIXME! THE GENERATED CLASSES END UP IN THE UNNAMED MODULE.
-    // BECAUSE THEY REFERENCE DataValueFactory, WE HAVE TO EXPORT ITS
-    // PACKAGE. WE SHOULD TIGHTEN THIS UP. MAYBE WE CAN GIVE THE GENERATED
-    // CLASSES THEIR OWN MODULE WHICH CAN RECEIVE THE EXPORT.
-    // THEN WE CAN UNCOMMENT THE EXPORT TO THE OPTIONALTOOLS AND TESTING MODULES.
-    exports org.apache.derby.iapi.types;
-    //exports org.apache.derby.iapi.types to
-    //    org.apache.derby.optionaltools,
-    //    org.apache.derby.tests;
-
-    exports org.apache.derby.iapi.util to
-        org.apache.derby.server,
-        org.apache.derby.tools,
-        org.apache.derby.optionaltools,
-        org.apache.derby.tests;
-
     exports org.apache.derby.impl.io.vfmem to
         org.apache.derby.tests;
 
@@ -247,15 +205,6 @@ module org.apache.derby.engine
     exports org.apache.derby.impl.sql to
         org.apache.derby.tests;
 
-    // FIXME! THE GENERATED CLASSES END UP IN THE UNNAMED MODULE.
-    // BECAUSE THEY EXTEND BaseActivation, WE HAVE TO EXPORT ITS
-    // PACKAGE. WE SHOULD TIGHTEN THIS UP. MAYBE WE CAN GIVE THE GENERATED
-    // CLASSES THEIR OWN MODULE WHICH CAN RECEIVE THE EXPORT.
-    // THEN WE CAN UNCOMMENT THE EXPORT TO THE TESTING MODULE.
-    exports org.apache.derby.impl.sql.execute;
-    //exports org.apache.derby.impl.sql.execute to
-    //    org.apache.derby.tests;
-
     exports org.apache.derby.impl.sql.catalog to
         org.apache.derby.tests;
 
@@ -288,4 +237,68 @@ module org.apache.derby.engine
     exports org.apache.derby.security to
         org.apache.derby.tests;
 
+    //
+    // STANZAS FOR USE WHEN QUERY PLANS ARE GENERATED INTO
+    // SOME MODULE OTHER THAN THE UNNAMED MODULE.
+    //
+    //
+    // QUERY PLANS REFERENCE org.apache.derby.iapi.services.io.Storable
+    //
+    //    exports org.apache.derby.iapi.services.io to
+    //        org.apache.derby.server,
+    //        org.apache.derby.optionaltools,
+    //        org.apache.derby.tests;
+    //
+    //
+    // QUERY PLANS REFERENCE GeneratedByteCode
+    //
+    //exports org.apache.derby.iapi.services.loader to
+    //    org.apache.derby.optionaltools,
+    //    org.apache.derby.tests;
+    //
+    // QUERY PLANS REFERENCE Row
+    //
+    //exports org.apache.derby.iapi.sql to
+    //    org.apache.derby.tests;
+    //
+    //
+    // QUERY PLANS REFEREENCE LanguageConnectionContext
+    //
+    //    exports org.apache.derby.iapi.sql.conn to
+    //        org.apache.derby.optionaltools,
+    //        org.apache.derby.tests;
+    //
+    //
+    // QUERY PLANS REFERENCE ExecutionFactory
+    //
+    //exports org.apache.derby.iapi.sql.execute to
+    //    org.apache.derby.tests;
+    //
+    //
+    // QUERY PLANS REFERENCE org.apache.derby.iapi.store.access.Qualifier
+    //
+    //exports org.apache.derby.iapi.store.access to
+    //    org.apache.derby.tests;
+    //
+    //
+    // QUERY PLANS REFERENCE DataValueFactory
+    //
+    //exports org.apache.derby.iapi.types to
+    //    org.apache.derby.optionaltools,
+    //    org.apache.derby.tests;
+    //
+    //
+    // QUERY PLANS REFERENCE org.apache.derby.iapi.util.StringUtil
+    //
+    //    exports org.apache.derby.iapi.util to
+    //        org.apache.derby.server,
+    //        org.apache.derby.tools,
+    //        org.apache.derby.optionaltools,
+    //        org.apache.derby.tests;
+    //
+    //
+    // QUERY PLANS EXTEND BaseActivation
+    //
+    //exports org.apache.derby.impl.sql.execute to
+    //    org.apache.derby.tests;
 }

Modified: db/derby/code/trunk/java/org.apache.derby.server/module-info.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/org.apache.derby.server/module-info.java?rev=1839878&r1=1839877&r2=1839878&view=diff
==============================================================================
--- db/derby/code/trunk/java/org.apache.derby.server/module-info.java (original)
+++ db/derby/code/trunk/java/org.apache.derby.server/module-info.java Sun Sep  2 12:53:38 2018
@@ -70,5 +70,6 @@ module org.apache.derby.server
     // ONLY VISIBLE TO OTHER DERBY MODULES.
     //
     exports org.apache.derby.impl.drda to
+        org.apache.derby.engine,
         org.apache.derby.tests;
 }

Modified: db/derby/code/trunk/java/org.apache.derby.tests/org/apache/derbyTesting/functionTests/harness/FileCompare.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/org.apache.derby.tests/org/apache/derbyTesting/functionTests/harness/FileCompare.java?rev=1839878&r1=1839877&r2=1839878&view=diff
==============================================================================
--- db/derby/code/trunk/java/org.apache.derby.tests/org/apache/derbyTesting/functionTests/harness/FileCompare.java (original)
+++ db/derby/code/trunk/java/org.apache.derby.tests/org/apache/derbyTesting/functionTests/harness/FileCompare.java Sun Sep  2 12:53:38 2018
@@ -34,6 +34,8 @@ import java.util.StringTokenizer;
 import java.util.Properties;
 
 import org.apache.derby.shared.common.info.ProductGenusNames;
+import org.apache.derby.shared.common.info.JVMInfo;
+import org.apache.derby.shared.common.reference.ModuleUtil;
 
 public class FileCompare
 {
@@ -110,8 +112,19 @@ public class FileCompare
             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("/" + ProductGenusNames.DBMS_INFO);
+            String resourceName = "/" + ProductGenusNames.DBMS_INFO;
+            InputStream is;
+            if (JVMInfo.isModuleAware())
+            {
+                Module engineModule = ModuleUtil.derbyModule(ModuleUtil.ENGINE_MODULE_NAME);
+                is = engineModule.getResourceAsStream(resourceName);
+            }
+            else
+            {
+                Class c = FileCompare.class; // get our class loader
+                is = c.getResourceAsStream(resourceName);
+            }
+            
 			Properties dbprop = new Properties();
 			dbprop.load(is);
 			is.close();

Modified: db/derby/code/trunk/java/org.apache.derby.tests/org/apache/derbyTesting/functionTests/harness/RunTest.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/org.apache.derby.tests/org/apache/derbyTesting/functionTests/harness/RunTest.java?rev=1839878&r1=1839877&r2=1839878&view=diff
==============================================================================
--- db/derby/code/trunk/java/org.apache.derby.tests/org/apache/derbyTesting/functionTests/harness/RunTest.java (original)
+++ db/derby/code/trunk/java/org.apache.derby.tests/org/apache/derbyTesting/functionTests/harness/RunTest.java Sun Sep  2 12:53:38 2018
@@ -43,7 +43,10 @@ import java.util.Properties;
 import java.util.StringTokenizer;
 import java.util.Vector;
 import org.apache.derby.shared.common.reference.Attribute;
+import org.apache.derby.shared.common.info.JVMInfo;
+import org.apache.derby.shared.common.reference.ModuleUtil;
 import org.apache.derbyTesting.junit.BaseTestSuite;
+import org.apache.derbyTesting.junit.DerbyConstants;
 
 public class RunTest
 {
@@ -2289,7 +2292,7 @@ clp.list(System.out);
 		
         if ( (testJavaFlags != null) && (testJavaFlags.length()>0) )
         {
-	    String parsedFlags = setTestJavaFlags(testJavaFlags);
+            String parsedFlags = setTestJavaFlags(testJavaFlags);
             StringTokenizer st = new StringTokenizer(parsedFlags," ");
             while (st.hasMoreTokens())
             {
@@ -2364,8 +2367,23 @@ clp.list(System.out);
             jvm.setSecurityProps();
         else
         	System.out.println("-- SecurityManager not installed --");
-            
+
         Vector<String> v = jvm.getCommandLine();
+
+        boolean isModuleAware = JVMInfo.isModuleAware();
+        if (isModuleAware)
+        {
+            v.add("-p");
+            v.add(JVMInfo.getSystemModulePath());
+            v.add("--add-modules");
+            v.add
+              (
+               ModuleUtil.TESTING_MODULE_NAME + "," +
+               ModuleUtil.TOOLS_MODULE_NAME + "," +
+               DerbyConstants.JUNIT_MODULE_NAME
+               );
+        }
+        
         if ( ij.startsWith("ij") )
         {
             // As of cn1411-20030930 IBM jvm the system takes the default
@@ -2382,7 +2400,19 @@ clp.list(System.out);
             } else if ((isNotAscii == null) || (isNotAscii.equals("false"))) {
                 v.addElement("-Dconsole.encoding=Cp1252" );
             }
-            v.addElement("org.apache.derby.tools." + ij);
+
+            String executableClass = "org.apache.derby.tools." + ij;
+            
+            if (isModuleAware)
+            {
+                v.add("-m");
+                v.add(ModuleUtil.TOOLS_MODULE_NAME + "/" + executableClass);
+            }
+            else
+            {
+                v.addElement(executableClass);
+            }
+
             if (ij.equals("ij"))
             {
                 //TODO: is there a setting/property we could check after which
@@ -2396,10 +2426,19 @@ clp.list(System.out);
         }
         else if ( testType.equals("java") )
         {
-            if (javaPath.length() > 0)
-                v.addElement(javaPath + "." + testBase);
+            String testClass = (javaPath.length() > 0) ?
+                javaPath + "." + testBase : testBase;
+
+            if (isModuleAware)
+            {
+                v.add("-m");
+                v.add(ModuleUtil.TESTING_MODULE_NAME + "/" + testClass);
+            }
             else
-                v.addElement(testBase);
+            {
+                v.addElement(testClass);
+            }
+
             if (propString.length() > 0)
             {
                 v.addElement("-p");

Modified: db/derby/code/trunk/java/org.apache.derby.tests/org/apache/derbyTesting/functionTests/harness/jvm.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/org.apache.derby.tests/org/apache/derbyTesting/functionTests/harness/jvm.java?rev=1839878&r1=1839877&r2=1839878&view=diff
==============================================================================
--- db/derby/code/trunk/java/org.apache.derby.tests/org/apache/derbyTesting/functionTests/harness/jvm.java (original)
+++ db/derby/code/trunk/java/org.apache.derby.tests/org/apache/derbyTesting/functionTests/harness/jvm.java Sun Sep  2 12:53:38 2018
@@ -29,6 +29,7 @@ import java.util.StringTokenizer;
 import java.io.File;
 import java.io.IOException;
 
+import org.apache.derby.shared.common.info.JVMInfo;
 import org.apache.derby.impl.tools.sysinfo.ZipInfoProperties;
 import org.apache.derbyTesting.junit.SecurityManagerSetup;
 
@@ -319,7 +320,8 @@ public abstract class jvm {
 
 	public static String findCodeBase(boolean[] isJar)
 	{
-		String classpath = System.getProperty("java.class.path");
+        String classpath = JVMInfo.isModuleAware() ?
+            JVMInfo.getSystemModulePath() : System.getProperty("java.class.path");
 		char sep = '/';
 		ZipInfoProperties zip[]= 
 			org.apache.derby.impl.tools.sysinfo.Main.getAllInfo (classpath);

Modified: db/derby/code/trunk/java/org.apache.derby.tests/org/apache/derbyTesting/junit/BaseTestCase.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/org.apache.derby.tests/org/apache/derbyTesting/junit/BaseTestCase.java?rev=1839878&r1=1839877&r2=1839878&view=diff
==============================================================================
--- db/derby/code/trunk/java/org.apache.derby.tests/org/apache/derbyTesting/junit/BaseTestCase.java (original)
+++ db/derby/code/trunk/java/org.apache.derby.tests/org/apache/derbyTesting/junit/BaseTestCase.java Sun Sep  2 12:53:38 2018
@@ -19,6 +19,8 @@
  */
 package org.apache.derbyTesting.junit;
 
+import org.apache.derby.shared.common.info.JVMInfo;
+import org.apache.derby.shared.common.reference.ModuleUtil;
 import org.apache.derbyTesting.functionTests.harness.JavaVersionHolder;
 import org.apache.derbyTesting.functionTests.util.PrivilegedFileOpsForTests;
 import junit.framework.Assert;
@@ -645,7 +647,9 @@ public abstract class BaseTestCase
 	 */
     public static Process execJavaCmd(
         String jvm, String cp, String[] cmd, final File dir, boolean addClassPath)
-            throws IOException {
+            throws IOException
+    {
+        boolean isModuleAware = JVMInfo.isModuleAware();
 
         // Is this an invocation of a jar file with java -jar ...?
         final boolean isJarInvocation = cmd.length > 0 && cmd[0].equals("-jar");
@@ -711,6 +715,12 @@ public abstract class BaseTestCase
                 booleanValue()) {
             setupForDebuggerAttach(cmdlist);
         }
+
+        if (isModuleAware)
+        {
+            cmdlist.add("--add-modules");
+            cmdlist.add(ModuleUtil.TESTING_MODULE_NAME + "," + DerbyConstants.JUNIT_MODULE_NAME);
+        }
         
         if (isJarInvocation) {
             // If -jar is specified, the Java command will ignore the user's
@@ -719,8 +729,14 @@ public abstract class BaseTestCase
             // the calling code.
             assertNull("Both -jar and classpath specified", cp);
         } else if (addClassPath) {
-            cmdlist.add("-classpath");
-            cmdlist.add(cp == null ? getSystemProperty("java.class.path") : cp);
+            String myClasspath;
+            if (cp != null) { myClasspath = cp; }
+            else if (isModuleAware) { myClasspath = JVMInfo.getSystemModulePath(); }
+            else { myClasspath = getSystemProperty("java.class.path"); }
+
+            if (isModuleAware) { cmdlist.add("-p"); }
+            else { cmdlist.add("-classpath"); }
+            cmdlist.add(myClasspath);
         }
 
 	    for (int i =0; i < cmd.length;i++) {
@@ -740,6 +756,13 @@ public abstract class BaseTestCase
 	            }
 	        });
 	    } catch (PrivilegedActionException pe) {
+            println("Failed to run command: " + pe.getMessage());
+            if (TestConfiguration.getCurrent().isVerbose())
+            {
+                pe.printStackTrace(out);
+                out.flush();
+            }
+            
             throw (IOException) pe.getException();
 	    }
 	}

Modified: db/derby/code/trunk/java/org.apache.derby.tests/org/apache/derbyTesting/junit/DerbyConstants.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/org.apache.derby.tests/org/apache/derbyTesting/junit/DerbyConstants.java?rev=1839878&r1=1839877&r2=1839878&view=diff
==============================================================================
--- db/derby/code/trunk/java/org.apache.derby.tests/org/apache/derbyTesting/junit/DerbyConstants.java (original)
+++ db/derby/code/trunk/java/org.apache.derby.tests/org/apache/derbyTesting/junit/DerbyConstants.java Sun Sep  2 12:53:38 2018
@@ -35,4 +35,7 @@ public interface DerbyConstants {
 
     /** Default name for the DBO (database owner). */
     String TEST_DBO = "TEST_DBO";
+
+    /** Name of the automatic JUnit module. */
+    String JUNIT_MODULE_NAME = "junit";
 }

Modified: db/derby/code/trunk/java/org.apache.derby.tests/org/apache/derbyTesting/junit/NetworkServerTestSetup.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/org.apache.derby.tests/org/apache/derbyTesting/junit/NetworkServerTestSetup.java?rev=1839878&r1=1839877&r2=1839878&view=diff
==============================================================================
--- db/derby/code/trunk/java/org.apache.derby.tests/org/apache/derbyTesting/junit/NetworkServerTestSetup.java (original)
+++ db/derby/code/trunk/java/org.apache.derby.tests/org/apache/derbyTesting/junit/NetworkServerTestSetup.java Sun Sep  2 12:53:38 2018
@@ -36,6 +36,8 @@ import java.util.ArrayList;
 import java.util.Arrays;
 import junit.framework.AssertionFailedError;
 import junit.framework.Test;
+import org.apache.derby.shared.common.info.JVMInfo;
+import org.apache.derby.shared.common.reference.ModuleUtil;
 import org.apache.derby.drda.NetworkServerControl;
 import org.apache.derby.shared.common.error.ExceptionUtil;
 import org.apache.derby.shared.common.info.JVMInfo;
@@ -119,7 +121,7 @@ final public class NetworkServerTestSetu
         this.useSeparateProcess = false;
         this.serverShouldComeUp = true;
         this.startServerAtSetup = true;
-}
+    }
 
     /**
      * Decorates a test with the NetworkServerTestSetup.
@@ -307,6 +309,7 @@ final public class NetworkServerTestSetu
 
     private void startWithAPI() throws Exception
     {
+        BaseTestCase.println("Starting network server with NetworkServerControl api:");
             
             serverOutput = AccessController.doPrivileged(
                     new PrivilegedAction<FileOutputStream>() {
@@ -337,6 +340,8 @@ final public class NetworkServerTestSetu
 
                 String[]    args = getDefaultStartupArgs( false );
                 
+                BaseTestCase.println("Starting network server with this command: " + Arrays.asList(args));
+                
                 org.apache.derby.drda.NetworkServerControl.main( args );
             }
             
@@ -345,6 +350,8 @@ final public class NetworkServerTestSetu
 
     private SpawnedProcess startSeparateProcess() throws Exception
     {
+        boolean isModuleAware = JVMInfo.isModuleAware();
+        BaseTestCase.println("Starting network server as a separate process:");
         ArrayList<String> al = new ArrayList<String>();
         boolean         skipHostName = false;
 
@@ -388,7 +395,16 @@ final public class NetworkServerTestSetu
             al.add( "-D" + systemProperties[ i ] );
         }
 
-        al.add( "org.apache.derby.drda.NetworkServerControl" );
+        String serverName = NetworkServerControl.class.getName();
+        if (isModuleAware)
+        {
+            al.add("-m");
+            al.add(ModuleUtil.SERVER_MODULE_NAME + "/" + serverName);
+        }
+        else
+        {
+            al.add(serverName);
+        }
 
         count = startupArgs.length;
         for ( int i = 0; i < count; i++ )

Modified: db/derby/code/trunk/java/org.apache.derby.tests/org/apache/derbyTesting/junit/SecurityManagerSetup.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/org.apache.derby.tests/org/apache/derbyTesting/junit/SecurityManagerSetup.java?rev=1839878&r1=1839877&r2=1839878&view=diff
==============================================================================
--- db/derby/code/trunk/java/org.apache.derby.tests/org/apache/derbyTesting/junit/SecurityManagerSetup.java (original)
+++ db/derby/code/trunk/java/org.apache.derby.tests/org/apache/derbyTesting/junit/SecurityManagerSetup.java Sun Sep  2 12:53:38 2018
@@ -34,6 +34,7 @@ import java.util.Enumeration;
 import java.util.Properties;
 import junit.extensions.TestSetup;
 import junit.framework.Test;
+import org.apache.derby.shared.common.reference.Property;
 import org.apache.derbyTesting.functionTests.util.PrivilegedFileOpsForTests;
 
 /**
@@ -428,6 +429,7 @@ public final class SecurityManagerSetup
         if (testing.getProtocol().equals("file")) {
            File f = new File(testing.getPath());
            classPathSet.setProperty("derbyTesting.testjarpath", f.getAbsolutePath());
+           classPathSet.setProperty(Property.DERBY_INSTALL_PATH, f.getParentFile().getAbsolutePath());
         }
 
         setCodebase(DERBY_ENGINE, "org.apache.derby.database.Database");

Modified: db/derby/code/trunk/java/org.apache.derby.tools/org/apache/derby/impl/tools/sysinfo/Main.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/org.apache.derby.tools/org/apache/derby/impl/tools/sysinfo/Main.java?rev=1839878&r1=1839877&r2=1839878&view=diff
==============================================================================
--- db/derby/code/trunk/java/org.apache.derby.tools/org/apache/derby/impl/tools/sysinfo/Main.java (original)
+++ db/derby/code/trunk/java/org.apache.derby.tools/org/apache/derby/impl/tools/sysinfo/Main.java Sun Sep  2 12:53:38 2018
@@ -469,7 +469,7 @@ public static void getMainInfo (java.io.
 
                     if (JVMInfo.isModuleAware())
                     {
-                      String moduleName = ModuleUtil.localizationModuleName(locale.toString());
+                        String moduleName = ModuleUtil.localizationModuleName(locale.toString());
                         Module localizationModule = ModuleUtil.derbyModule(moduleName);
 
                         if (localizationModule != null)