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/03 15:00:27 UTC

svn commit: r1839969 - in /db/derby/code/trunk/java: org.apache.derby.commons/org/apache/derby/shared/common/reference/ org.apache.derby.engine/ org.apache.derby.tests/org/apache/derbyTesting/functionTests/harness/ org.apache.derby.tests/org/apache/der...

Author: rhillegas
Date: Mon Sep  3 15:00:27 2018
New Revision: 1839969

URL: http://svn.apache.org/viewvc?rev=1839969&view=rev
Log:
DERBY-6945: Make it possible to run the derbyall suite under the old test harness with a module path; commit derby-6945-50-aa-runOldTestHarnessWithModulePath.diff.

Modified:
    db/derby/code/trunk/java/org.apache.derby.commons/org/apache/derby/shared/common/reference/ModuleUtil.java
    db/derby/code/trunk/java/org.apache.derby.engine/module-info.java
    db/derby/code/trunk/java/org.apache.derby.tests/org/apache/derbyTesting/functionTests/harness/RunList.java
    db/derby/code/trunk/java/org.apache.derby.tests/org/apache/derbyTesting/functionTests/harness/RunSuite.java
    db/derby/code/trunk/java/org.apache.derby.tests/org/apache/derbyTesting/functionTests/harness/SysInfoLog.java
    db/derby/code/trunk/java/org.apache.derby.tests/org/apache/derbyTesting/functionTests/harness/jdk100.java
    db/derby/code/trunk/java/org.apache.derby.tests/org/apache/derbyTesting/functionTests/harness/jdk13.java
    db/derby/code/trunk/java/org.apache.derby.tests/org/apache/derbyTesting/junit/NetworkServerTestSetup.java
    db/derby/code/trunk/java/org.apache.derby.tools/module-info.java
    db/derby/code/trunk/java/org.apache.derby.tools/org/apache/derby/impl/tools/ij/util.java

Modified: db/derby/code/trunk/java/org.apache.derby.commons/org/apache/derby/shared/common/reference/ModuleUtil.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/org.apache.derby.commons/org/apache/derby/shared/common/reference/ModuleUtil.java?rev=1839969&r1=1839968&r2=1839969&view=diff
==============================================================================
--- db/derby/code/trunk/java/org.apache.derby.commons/org/apache/derby/shared/common/reference/ModuleUtil.java (original)
+++ db/derby/code/trunk/java/org.apache.derby.commons/org/apache/derby/shared/common/reference/ModuleUtil.java Mon Sep  3 15:00:27 2018
@@ -21,11 +21,17 @@
 
 package org.apache.derby.shared.common.reference;
 
+import java.security.AccessController;
+import java.security.PrivilegedActionException;
+import java.security.PrivilegedExceptionAction;
+import java.io.IOException;
+import java.io.InputStream;
 import java.util.HashMap;
 import java.util.Locale;
 import java.util.ServiceLoader;
 
 import org.apache.derby.shared.api.DerbyModuleAPI;
+import org.apache.derby.shared.common.error.StandardException;
 import org.apache.derby.shared.common.info.JVMInfo;
 
 /**
@@ -96,6 +102,30 @@ public class ModuleUtil
         return LOCALE_MODULE_NAME_PREFIX + localeString;
     }
 
+    /**
+     * Lookup a resource in all the Derby modules. Returns the first
+     * version of the resource which can be found. This should be unambiguous
+     * due to the fact that packages cannot straddle multiple modules.
+     *
+     * @param resourceName The name of the resource to find
+     *
+     * @return a stream opened on the resource or null if it was not found
+     */
+    public static InputStream getResourceAsStream(String resourceName)
+        throws StandardException
+    {
+        initModuleInfo();  // find all of the derby modules
+
+        InputStream retval = null;
+        for (java.lang.Module module : _derbyModules.values())
+        {
+            retval = getResourceAsStream(module, resourceName);
+            if (retval != null) { break; }
+        }
+
+        return retval;
+    }
+
     /////////////////////////////////////////////////////////
     //
     // MINIONS
@@ -123,4 +153,43 @@ public class ModuleUtil
         _derbyModules = result;
     }
 
+    /**
+     * Lookup a resource in a module.
+     *
+     * @param module The module in which to look for the resource
+     * @param resourceName The name of the resource
+     *
+     * @return a stream opened on the resource or null we can't find the resource in the module.
+     */
+    private static InputStream getResourceAsStream
+      (
+         final java.lang.Module module,
+         final String resourceName
+       )
+      throws StandardException
+    {
+        InputStream retval = null;
+        Throwable error = null;
+        try
+        {
+            retval = AccessController.doPrivileged
+              (
+               new PrivilegedExceptionAction<InputStream>()
+               {
+                   public InputStream run() throws IOException
+                   {
+                       return module.getResourceAsStream(resourceName);
+                   }
+               }
+               );
+        }
+        catch (PrivilegedActionException pae) { error = pae; }
+
+        if (error != null)
+        {
+            throw StandardException.plainWrapException(error);
+        }
+        
+        return retval;
+    }
 }

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=1839969&r1=1839968&r2=1839969&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 Mon Sep  3 15:00:27 2018
@@ -83,6 +83,8 @@ module org.apache.derby.engine
     // BY THE QUERY PLANS WHICH ARE CODE-GENERATED
     // INTO THE UNNAMED MODULE.
     //
+    exports org.apache.derby.diag;
+    exports org.apache.derby.iapi.db;
     exports org.apache.derby.iapi.services.io;
     exports org.apache.derby.iapi.services.loader;
     exports org.apache.derby.iapi.sql;
@@ -105,12 +107,6 @@ module org.apache.derby.engine
         org.apache.derby.optionaltools,
         org.apache.derby.tests;
 
-    exports org.apache.derby.iapi.db to
-        org.apache.derby.server,
-        org.apache.derby.tools,
-        org.apache.derby.optionaltools,
-        org.apache.derby.tests;
-
     exports org.apache.derby.iapi.jdbc to
         org.apache.derby.server,
         org.apache.derby.tools,
@@ -186,6 +182,9 @@ module org.apache.derby.engine
     exports org.apache.derby.iapi.transaction to
         org.apache.derby.server;
 
+    exports org.apache.derby.impl.io to
+        org.apache.derby.tests;
+
     exports org.apache.derby.impl.io.vfmem to
         org.apache.derby.tests;
 
@@ -301,4 +300,13 @@ module org.apache.derby.engine
     //
     //exports org.apache.derby.impl.sql.execute to
     //    org.apache.derby.tests;
+    //
+    //
+    // QUERY PLANS REFERENCE org.apache.derby.iapi.db.Factory
+    //    exports org.apache.derby.iapi.db to
+    //        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.tests/org/apache/derbyTesting/functionTests/harness/RunList.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/org.apache.derby.tests/org/apache/derbyTesting/functionTests/harness/RunList.java?rev=1839969&r1=1839968&r2=1839969&view=diff
==============================================================================
--- db/derby/code/trunk/java/org.apache.derby.tests/org/apache/derbyTesting/functionTests/harness/RunList.java (original)
+++ db/derby/code/trunk/java/org.apache.derby.tests/org/apache/derbyTesting/functionTests/harness/RunList.java Mon Sep  3 15:00:27 2018
@@ -46,6 +46,9 @@ import java.util.StringTokenizer;
 import java.sql.DriverManager;
 import java.sql.SQLException;
 
+import org.apache.derby.shared.common.info.JVMInfo;
+import org.apache.derby.shared.common.reference.ModuleUtil;
+
 import org.apache.derbyTesting.functionTests.util.TestUtil;
 
 
@@ -340,6 +343,8 @@ public class RunList
     private static void runTests(Properties suiteProps, String suite)
         throws IOException, Exception
     {
+        boolean isModuleAware = JVMInfo.isModuleAware();
+      
 	    // 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
@@ -358,8 +363,10 @@ public class RunList
 	    }
         if ( (testJavaFlags != null) && (testJavaFlags.length()>0) )
             jvmProps.addElement("testJavaFlags=" + testJavaFlags);
-	    if (classpath != null)
+	    if ((classpath != null) && !isModuleAware)
+        {
 	        jvmProps.addElement("classpath=" + classpath);
+        }
 	    if (classpathServer != null)
 	        jvmProps.addElement("classpathServer=" + classpathServer);
 	    if (jversion != null)
@@ -491,7 +498,20 @@ public class RunList
 
         jvm.setD(jvmProps);
         Vector<String> v = jvm.getCommandLine();
-        v.addElement("org.apache.derbyTesting.functionTests.harness.RunTest");
+
+        String execClassName = "org.apache.derbyTesting.functionTests.harness.RunTest";
+        if (isModuleAware)
+        {
+            v.addElement("--add-modules");
+            v.addElement("org.apache.derby.tests,junit");
+            
+            v.add("-m");
+            v.add(ModuleUtil.TESTING_MODULE_NAME + "/" + execClassName);
+        }
+        else
+        {
+            v.addElement(execClassName);
+        }
 
         String str = "";
 	    String lastTest = null;

Modified: db/derby/code/trunk/java/org.apache.derby.tests/org/apache/derbyTesting/functionTests/harness/RunSuite.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/org.apache.derby.tests/org/apache/derbyTesting/functionTests/harness/RunSuite.java?rev=1839969&r1=1839968&r2=1839969&view=diff
==============================================================================
--- db/derby/code/trunk/java/org.apache.derby.tests/org/apache/derbyTesting/functionTests/harness/RunSuite.java (original)
+++ db/derby/code/trunk/java/org.apache.derby.tests/org/apache/derbyTesting/functionTests/harness/RunSuite.java Mon Sep  3 15:00:27 2018
@@ -21,7 +21,10 @@
 
 package org.apache.derbyTesting.functionTests.harness;
 
+import org.apache.derby.shared.common.info.JVMInfo;
+import org.apache.derby.shared.common.reference.ModuleUtil;
 import org.apache.derby.tools.sysinfo;
+
 import java.io.File;
 import java.io.InputStream;
 import java.io.InputStreamReader;
@@ -364,6 +367,8 @@ public class RunSuite
 
     private static void getSystemProperties()
     {
+        boolean isModuleAware = JVMInfo.isModuleAware();
+      
         // Get any properties specified on the command line
         // which may not have been specified in the suite prop file
         Properties sp = System.getProperties();
@@ -423,7 +428,8 @@ public class RunSuite
 		        testSpecialProps = testSpecialProps + "^" + testprops;
 		    suiteProperties.put("testSpecialProps", testSpecialProps);
 		}
-		String clpth = sp.getProperty("classpath");
+
+		String clpth = isModuleAware ? JVMInfo.getSystemModulePath() : sp.getProperty("classpath");
 		if (clpth != null)
 		{
 		    classpath = clpth;

Modified: db/derby/code/trunk/java/org.apache.derby.tests/org/apache/derbyTesting/functionTests/harness/SysInfoLog.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/org.apache.derby.tests/org/apache/derbyTesting/functionTests/harness/SysInfoLog.java?rev=1839969&r1=1839968&r2=1839969&view=diff
==============================================================================
--- db/derby/code/trunk/java/org.apache.derby.tests/org/apache/derbyTesting/functionTests/harness/SysInfoLog.java (original)
+++ db/derby/code/trunk/java/org.apache.derby.tests/org/apache/derbyTesting/functionTests/harness/SysInfoLog.java Mon Sep  3 15:00:27 2018
@@ -31,6 +31,9 @@ package org.apache.derbyTesting.function
 import java.io.*;
 import java.util.Vector;
 
+import org.apache.derby.shared.common.info.JVMInfo;
+import org.apache.derby.shared.common.reference.ModuleUtil;
+
 public class SysInfoLog
 {
 
@@ -43,6 +46,8 @@ public class SysInfoLog
         String framework, PrintWriter pw, boolean useprocess)
         throws Exception
 	{
+        boolean isModuleAware = JVMInfo.isModuleAware();
+      
         if ( useprocess == true )
         {
             // Create a process to run sysinfo
@@ -51,7 +56,7 @@ public class SysInfoLog
     		try
     		{
                 // Create the command line
-                //System.out.println("jvmName: " + jvmName);
+                System.out.println("jvmName: " + jvmName);
                 if ( (jvmName == null) || (jvmName.length()==0) )
                     jvmName = "jdk13";
                 else if (jvmName.startsWith("jdk13"))
@@ -70,7 +75,18 @@ public class SysInfoLog
                 }
 
 				Vector<String> v = javavm.getCommandLine();
-                v.addElement("org.apache.derby.tools.sysinfo");
+
+                String mainClassName = "org.apache.derby.tools.sysinfo";
+                if (isModuleAware)
+                {
+                    v.add("-m");
+                    v.add(ModuleUtil.TOOLS_MODULE_NAME + "/" + mainClassName);
+                }
+                else
+                {
+                    v.addElement(mainClassName);
+                }
+                
                 // Now convert the vector into a string array
                 String[] sCmd = new String[v.size()];
                 for (int i = 0; i < v.size(); i++)
@@ -78,7 +94,7 @@ public class SysInfoLog
                     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

Modified: db/derby/code/trunk/java/org.apache.derby.tests/org/apache/derbyTesting/functionTests/harness/jdk100.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/org.apache.derby.tests/org/apache/derbyTesting/functionTests/harness/jdk100.java?rev=1839969&r1=1839968&r2=1839969&view=diff
==============================================================================
--- db/derby/code/trunk/java/org.apache.derby.tests/org/apache/derbyTesting/functionTests/harness/jdk100.java (original)
+++ db/derby/code/trunk/java/org.apache.derby.tests/org/apache/derbyTesting/functionTests/harness/jdk100.java Mon Sep  3 15:00:27 2018
@@ -24,6 +24,7 @@ package org.apache.derbyTesting.function
 import java.util.Vector;
 import java.util.StringTokenizer;
 
+import org.apache.derby.shared.common.info.JVMInfo;
 
 public class jdk100 extends jvm {
 
@@ -58,7 +59,10 @@ public class jdk100 extends jvm {
         return v;
     }
 
-    public void appendOtherFlags(StringBuffer sb) {
+    public void appendOtherFlags(StringBuffer sb)
+    {
+        boolean isModuleAware = JVMInfo.isModuleAware();
+      
         if (noasyncgc) warn(getName() + " does not support noasyncgc");
         if (verbosegc) sb.append(" -verbose:gc");
         if (noclassgc) sb.append(" -Xnoclassgc");
@@ -72,8 +76,10 @@ public class jdk100 extends jvm {
             sb.append(" -mx");
             sb.append(mx);
         }
-        if (classpath!=null) {
-            sb.append(" -classpath ");
+        if (classpath!=null)
+        {
+            if (isModuleAware) { sb.append(" -p "); }
+            else { sb.append(" -classpath "); }
             sb.append(classpath);
         }
         if (prof!=null) warn(getName() + " does not support prof");

Modified: db/derby/code/trunk/java/org.apache.derby.tests/org/apache/derbyTesting/functionTests/harness/jdk13.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/org.apache.derby.tests/org/apache/derbyTesting/functionTests/harness/jdk13.java?rev=1839969&r1=1839968&r2=1839969&view=diff
==============================================================================
--- db/derby/code/trunk/java/org.apache.derby.tests/org/apache/derbyTesting/functionTests/harness/jdk13.java (original)
+++ db/derby/code/trunk/java/org.apache.derby.tests/org/apache/derbyTesting/functionTests/harness/jdk13.java Mon Sep  3 15:00:27 2018
@@ -24,6 +24,8 @@ package org.apache.derbyTesting.function
 import java.util.Vector;
 import java.util.StringTokenizer;
 
+import org.apache.derby.shared.common.info.JVMInfo;
+
 /**
   <p>This class is for JDK1.3.
 
@@ -66,6 +68,8 @@ public class jdk13 extends jvm {
 
 	public void appendOtherFlags(StringBuffer sb)
 	{
+        boolean isModuleAware = JVMInfo.isModuleAware();
+        
         if (noasyncgc) warn("jdk13 does not support noasyncgc");
         if (verbosegc) sb.append(" -verbose:gc");
         if (noclassgc) sb.append(" -Xnoclassgc");
@@ -79,8 +83,10 @@ public class jdk13 extends jvm {
           sb.append(" -mx");
           sb.append(mx);
         }
-        if (classpath!=null) {
-          sb.append(" -classpath ");
+        if (classpath!=null)
+        {
+          if (isModuleAware) { sb.append(" -p "); }
+          else { sb.append(" -classpath "); }
           sb.append(classpath);
         }
         if (prof!=null) warn("jdk13 does not support prof");

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=1839969&r1=1839968&r2=1839969&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 Mon Sep  3 15:00:27 2018
@@ -40,7 +40,6 @@ import org.apache.derby.shared.common.in
 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;
 
 /**
  * Test decorator that starts the network server on startup

Modified: db/derby/code/trunk/java/org.apache.derby.tools/module-info.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/org.apache.derby.tools/module-info.java?rev=1839969&r1=1839968&r2=1839969&view=diff
==============================================================================
--- db/derby/code/trunk/java/org.apache.derby.tools/module-info.java (original)
+++ db/derby/code/trunk/java/org.apache.derby.tools/module-info.java Mon Sep  3 15:00:27 2018
@@ -59,6 +59,9 @@ module org.apache.derby.tools
     //
     opens org.apache.derby.loc.tools;
 
+    // ALLOW ACCESS TO info.properties
+    opens org.apache.derby.info.tools;
+
     //
     // DERBY INTERNAL EXPORTS
     //

Modified: db/derby/code/trunk/java/org.apache.derby.tools/org/apache/derby/impl/tools/ij/util.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/org.apache.derby.tools/org/apache/derby/impl/tools/ij/util.java?rev=1839969&r1=1839968&r2=1839969&view=diff
==============================================================================
--- db/derby/code/trunk/java/org.apache.derby.tools/org/apache/derby/impl/tools/ij/util.java (original)
+++ db/derby/code/trunk/java/org.apache.derby.tools/org/apache/derby/impl/tools/ij/util.java Mon Sep  3 15:00:27 2018
@@ -21,6 +21,9 @@
 
 package org.apache.derby.impl.tools.ij;
 
+import org.apache.derby.shared.common.info.JVMInfo;
+import org.apache.derby.shared.common.error.StandardException;
+import org.apache.derby.shared.common.reference.ModuleUtil;
 import org.apache.derby.tools.JDBCDisplayUtil;
 import org.apache.derby.iapi.tools.i18n.*;
 
@@ -163,18 +166,38 @@ public final class util implements java.
 	  */
     static InputStream getResourceAsStream(String resourceName)
 	{
+        boolean isModuleAware = JVMInfo.isModuleAware();
+      
 		final Class c = util.class;
 		final String resource = qualifyResourceName(resourceName,true);
-		if (resource == null) 
-			return null;
-		InputStream is = AccessController.doPrivileged(new PrivilegedAction<InputStream>() {
-            public InputStream run() { 
-                      InputStream locis = 
-                          c.getResourceAsStream(resource);
-                                  return locis;
+		if (resource == null) { return null; }
+		InputStream is = null;
+
+        if (isModuleAware)
+        {
+            try
+            {
+                is = ModuleUtil.getResourceAsStream(resource);
             }
+            catch (Exception ex)
+            {
+                System.out.println(ex.getMessage());
+            }
+        }
+        else
+        {
+            is = AccessController.doPrivileged
+              (
+               new PrivilegedAction<InputStream>()
+               {
+                   public InputStream run()
+                   { 
+                      InputStream locis = c.getResourceAsStream(resource);
+                      return locis;
+                   }
+               }
+               );
         }
-     );
 
 		if (is != null) 
 			is = new BufferedInputStream(is, utilMain.BUFFEREDFILESIZE);