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 fu...@apache.org on 2006/07/08 06:31:24 UTC

svn commit: r420048 - in /db/derby/code/trunk/java/testing: ./ org/apache/derbyTesting/functionTests/harness/ org/apache/derbyTesting/functionTests/tests/lang/ org/apache/derbyTesting/functionTests/tests/largedata/ org/apache/derbyTesting/functionTests...

Author: fuzzylogic
Date: Fri Jul  7 21:31:23 2006
New Revision: 420048

URL: http://svn.apache.org/viewvc?rev=420048&view=rev
Log:
DERBY-1091: Test harness does not pass jvm flags properly if there are more
than 1 property in jvm flags

Committed for Myrna Van Lunteren <m....@gmail.com>

Modified:
    db/derby/code/trunk/java/testing/README.htm
    db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/NetServer.java
    db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/RunList.java
    db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/RunSuite.java
    db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/RunTest.java
    db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/largeCodeGen_app.properties
    db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/triggerStream_app.properties
    db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/wisconsin_app.properties
    db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/largedata/lobLengthTests_app.properties
    db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/store/streamingColumn_app.properties

Modified: db/derby/code/trunk/java/testing/README.htm
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/testing/README.htm?rev=420048&r1=420047&r2=420048&view=diff
==============================================================================
--- db/derby/code/trunk/java/testing/README.htm (original)
+++ db/derby/code/trunk/java/testing/README.htm Fri Jul  7 21:31:23 2006
@@ -1585,11 +1585,17 @@
           <br>
           <br>
         </li>
-        <li>jvmflags - sets specific jvm properties for the jvm used in
-the
-test harness, for instance initial memory, and heap size, or properties
-normally passed on with a -D. For instance: <br>
-          <small>java -Djvmflags=ms32M -mx128M
+        <li>jvmflags - sets specific jvm properties for each jvm instantiated by the
+test harness, for instance for setting initial memory, and heap size, or other properties
+that need to be passed on to the jvm, separated by '^'. This property
+can be set on the commandline for either RunTest or RunSuite, or in one
+of the properties files used by the tests. The property jvmflags
+when passed on at the command line supercedes the properties set in a suite's propertyfile, 
+and those supercede jvmflags properties set in a subsuite's or test's propertyfile,
+because the 'highest' level properties are passed to the jvm last. Setting this property
+for a test that runs with useprocess=false cannot have any effect.
+Example: <br>
+          <small>java -Djvmflags=ms32M^-mx128M
 org.apache.derbyTesting.functionTests.RunTest lang/streamingColumn.java</small><br>
           <br>
         </li>

Modified: db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/NetServer.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/NetServer.java?rev=420048&r1=420047&r2=420048&view=diff
==============================================================================
--- db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/NetServer.java (original)
+++ db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/NetServer.java Fri Jul  7 21:31:23 2006
@@ -173,10 +173,10 @@
 
         if (!jvmName.equals("jview"))
         {
-            if (setJvmFlags && (jvmflags.indexOf("-ms") == -1))
+            if (setJvmFlags && ((jvmflags.indexOf("-ms") == -1) || (jvmflags.indexOf("-Xms") == -1)))
             // only setMs if no starting memory was given
                 jvm.setMs(16*1024*1024); // -ms16m
-            if (setJvmFlags && (jvmflags.indexOf("-mx") == -1))
+            if (setJvmFlags && ((jvmflags.indexOf("-mx") == -1) || (jvmflags.indexOf("-Xmx") == -1)))
             // only setMx if no max memory was given
                 jvm.setMx(32*1024*1024); // -mx32m
             jvm.setNoasyncgc(true); // -noasyncgc

Modified: db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/RunList.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/RunList.java?rev=420048&r1=420047&r2=420048&view=diff
==============================================================================
--- db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/RunList.java (original)
+++ db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/RunList.java Fri Jul  7 21:31:23 2006
@@ -843,8 +843,25 @@
             javaCmd = "java";
         else
             p.put("javaCmd", javaCmd);
-    	if ( jvmflags != null )
-    		p.put("jvmflags", jvmflags);
+
+        // all jvmflags should get appended, with command line overwrite top suite 
+        // properties overwrite lower level suite properties
+        // but we're letting the jvm handle that by putting the cmdline last.
+        // note that at this point, the parentproperties already should have appended the
+        // jvmflags from the command line and the top suite properties file
+        // only need to add the lower suite properties in the mix
+        String totaljvmflags = jvmflags;
+        String subjvmflags = p.getProperty("jvmflags");
+        String parentjvmflags = parentProperties.getProperty("jvmflags");
+        if ((subjvmflags != null) && (parentjvmflags != null) && (!subjvmflags.equals(parentjvmflags)))
+        {
+            totaljvmflags = subjvmflags + "^" + totaljvmflags;
+        }
+        if (totaljvmflags != null)
+        {
+            jvmflags= totaljvmflags;
+        }
+
     	if ( classpath != null )
     		p.put("classpath", classpath);
     	if ( classpathServer != null )

Modified: db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/RunSuite.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/RunSuite.java?rev=420048&r1=420047&r2=420048&view=diff
==============================================================================
--- db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/RunSuite.java (original)
+++ db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/RunSuite.java Fri Jul  7 21:31:23 2006
@@ -93,7 +93,6 @@
 		{
 		 		javaCmd = "j9";
 				String javaHome = System.getProperty("java.home");
-				//jvmflags = "-Xiss16k -Xss512k -Xmso16k -Xmx392388k";
 		}
 		String j9config = System.getProperty("com.ibm.oti.configuration");
 		if (j9config != null) 
@@ -384,10 +383,13 @@
 		    javaCmd = jcmd;
 		    suiteProperties.put("javaCmd", javaCmd);
 		}
+		// get System properties for jvmflags, and put them to the end, thus
+		// when the time comes to have this converted into actual jvm flags
+		// the ones given at the command line will overwrite whatever's in the suite
 		String jflags = sp.getProperty("jvmflags");
 		if (jflags != null)
 		{
-		    jvmflags = jflags;
+		    jvmflags = jvmflags + "^" + jflags;
 		    suiteProperties.put("jvmflags", jvmflags);
 		}
 		String testflags = sp.getProperty("testJavaFlags");
@@ -403,7 +405,7 @@
 		if (testprops != null)
 		{
 		    if (testSpecialProps == null)
-		        testSpecialProps = testflags;
+		        testSpecialProps = testprops;
 		    else // add to testSpecialProps
 		        testSpecialProps = testSpecialProps + "^" + testprops;
 		    suiteProperties.put("testSpecialProps", testSpecialProps);

Modified: db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/RunTest.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/RunTest.java?rev=420048&r1=420047&r2=420048&view=diff
==============================================================================
--- db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/RunTest.java (original)
+++ db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/RunTest.java Fri Jul  7 21:31:23 2006
@@ -285,7 +285,13 @@
             // before going further, get the policy file copied and if
             // needed, modify it with the test's policy file
             composePolicyFile();
-     
+            String spacedJvmFlags = jvmflags;
+            // we now replace any '^' in jvmflags with ' '
+            if ((jvmflags != null) && (jvmflags.indexOf("^")>0))
+            {
+                spacedJvmFlags = spaceJvmFlags(jvmflags);   
+            }
+            
             System.out.println("Initialize for framework: "+ framework );
             if (jvmnet && framework.startsWith("DerbyNet"))
             {
@@ -298,11 +304,11 @@
                 }
 
                 ns = new NetServer(baseDir, jvmnetjvm, classpathServer, null,
-                                     jvmflags,framework, startServer);
+                                     spacedJvmFlags,framework, startServer);
             }
             else
                 ns = new NetServer(baseDir, jvmName, classpathServer, 
-                                     javaCmd, jvmflags,framework, startServer);
+                                     javaCmd, spacedJvmFlags,framework, startServer);
 
             //  With useprocess=true, we have a new dir for each test, and all files for
             // the test, including a clean database, go in that directory. So, network server
@@ -896,6 +902,25 @@
         throws Exception
     {
         // Get any properties specified on the command line
+        
+        // before doing anything else, get jvmflags, evaluate any -D 
+        // see if there is anything useful to the test harness in jvmflags
+        if ((jvmflags != null) && (jvmflags.length() > 0))
+        {
+            StringTokenizer st = new StringTokenizer(jvmflags,"^");
+            while (st.hasMoreTokens())
+            {
+                String tmpstr = st.nextToken();
+                if ((tmpstr.indexOf("=")> 0) && (tmpstr.startsWith("-D")))
+                {
+                    // strip off the '-D'
+                    String key = tmpstr.substring(2, tmpstr.indexOf("="));
+                    String value = tmpstr.substring((tmpstr.indexOf("=") +1), tmpstr.length());
+                    sp.put(key, value);
+                }
+            }
+        }
+        
         searchCP = sp.getProperty("ij.searchClassPath");
 		String frameworkp = sp.getProperty("framework");
 		if (frameworkp != null)
@@ -1292,7 +1317,6 @@
 		// 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
@@ -1391,7 +1415,7 @@
 
 //System.out.println("clPropFile: " + clPropFile.getPath());
             bos = new BufferedOutputStream(new FileOutputStream(clPropFile));
-            clp.save(bos, "Derby Properties");
+            clp.store(bos, "Derby Properties");
         	bos.close();
         }
 
@@ -1435,6 +1459,7 @@
 //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 )
@@ -1532,8 +1557,39 @@
 		
 //System.out.println("appPropFile: " + appPropFile.getPath());
             bos = new BufferedOutputStream(new FileOutputStream(appPropFile));
-            ap.save(bos, "App Properties");
+            ap.store(bos, "App Properties");
             bos.close();
+            
+            // Check now through jvmflags for insteresting properties
+            // First grab jvmflags from _app.properties for the jvm process cannot
+            // use it if just in the test's _app.properties file
+            // note that it's already too late if useprocess is false
+            String apppropsjvmflags = ap.getProperty("jvmflags");
+            if (apppropsjvmflags != null)
+            {
+                if (jvmflags != null)
+                    jvmflags = apppropsjvmflags + "^" + jvmflags;
+                else
+                    jvmflags = apppropsjvmflags;
+            }
+            // see if there is anything useful for the test harness in jvmflags
+            // from commandline or suite properties
+            if ((jvmflags != null) && (jvmflags.length() > 0))
+            {
+                StringTokenizer st = new StringTokenizer(jvmflags,"^");
+                while (st.hasMoreTokens())
+                {
+                    
+                    String tmpstr = st.nextToken();
+                    if ((tmpstr.indexOf("=")> 0) && (tmpstr.startsWith("-D")))
+                    {
+                        // start at position 2, i.e. strip off the "-D"
+                        String key = tmpstr.substring(2, tmpstr.indexOf("="));
+                        String value = tmpstr.substring((tmpstr.indexOf("=")+1), tmpstr.length());
+                        ap.put(key, value);
+                    }
+                }
+            }
 
             // Depending on the framework, the app prop file may need editing
             if ( (framework.length()>0) || (encryption) )
@@ -1557,7 +1613,7 @@
         		try
         		{
             		bos = new BufferedOutputStream(new FileOutputStream(appPropFile));
-            		ap.save(bos, "Test Properties");
+            		ap.store(bos, "Test Properties");
             		bos.close();
                 }
             	catch(IOException ioe)
@@ -1632,19 +1688,6 @@
 				startServerProp.equalsIgnoreCase("false"))
 				startServer =false;
 			
-	        // 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 = "";
-	            }
-	        }
 	        //Check derbyTesting.encoding property
 	        if(testEncoding == null) {
 	            testEncoding = ap.getProperty("derbyTesting.encoding");
@@ -1653,7 +1696,7 @@
 	            {
 	                    jvmflags = (jvmflags==null?"":jvmflags+" ") 
 	                                + "-Dfile.encoding=" + testEncoding; 
-	                    ap.put("file.encoding",testEncoding);	
+	                    ap.put("file.encoding",testEncoding);
 	            }
 	        }
 	       
@@ -1762,7 +1805,7 @@
         while (st.hasMoreTokens())
         {
 	        String token = st.nextToken();
-            if ( ! (token.startsWith("-D") || token.startsWith("-X"))) { sb.append(dintro); }
+            if (! (token.startsWith("-"))) { sb.append(dintro); }
             sb.append(token);
             sb.append(" ");
         }
@@ -2242,13 +2285,18 @@
             
         if ( (jvmflags != null) && (jvmflags.length()>0) )
         {
+            // We now replace any '^' in jvmflags with ' '
+            if (jvmflags.indexOf("^")>0)
+            {
+                jvmflags = spaceJvmFlags(jvmflags);
+            }
             jvm.setFlags(jvmflags);
         }
         
         
         if (testType.equals("multi"))
         {
-            if ( (jvmflags != null) && (jvmflags.indexOf("mx") == -1) )
+            if ( (jvmflags != null) && (jvmflags.indexOf("mx") == -1) && (jvmflags.indexOf("Xmx") == -1))
                 jvm.setMx(64*1024*1024); // -mx64m
             
             // MultiTest is special case, so pass on properties
@@ -2344,6 +2392,19 @@
         return sCmd;
     }
 
+    public static String spaceJvmFlags(String caretedJvmFlags)
+    {
+    	String spacedJvmFlags = "";
+    	// there must at least be one
+    	StringTokenizer st = new StringTokenizer(jvmflags,"^");
+    	while (st.hasMoreTokens())
+    	{
+    	    spacedJvmFlags += st.nextToken() + " ";
+    	}
+    	spacedJvmFlags = spacedJvmFlags.substring(0,spacedJvmFlags.length() -1);
+    	return spacedJvmFlags;    
+    }
+    
     public static void composePolicyFile() throws ClassNotFoundException
     {
         try{

Modified: db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/largeCodeGen_app.properties
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/largeCodeGen_app.properties?rev=420048&r1=420047&r2=420048&view=diff
==============================================================================
--- db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/largeCodeGen_app.properties (original)
+++ db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/largeCodeGen_app.properties Fri Jul  7 21:31:23 2006
@@ -1,2 +1,2 @@
 usedefaults=true
-jvmflags=-Xmx512M -Xms512M
+jvmflags=-Xmx512M^-Xms512M

Modified: db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/triggerStream_app.properties
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/triggerStream_app.properties?rev=420048&r1=420047&r2=420048&view=diff
==============================================================================
--- db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/triggerStream_app.properties (original)
+++ db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/triggerStream_app.properties Fri Jul  7 21:31:23 2006
@@ -1,2 +1,2 @@
 usedefaults=true
-jvmflags=-ms32M -mx128M
+jvmflags=-ms32M^-mx128M

Modified: db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/wisconsin_app.properties
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/wisconsin_app.properties?rev=420048&r1=420047&r2=420048&view=diff
==============================================================================
--- db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/wisconsin_app.properties (original)
+++ db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/wisconsin_app.properties Fri Jul  7 21:31:23 2006
@@ -11,7 +11,7 @@
 
 # flags specific to this test: it runs out of memory on jdk118 sometimes
 # so give the JVM more memory always:
-jvmflags=-ms32M -mx128M
+jvmflags=-ms32M^-mx128M
 
 usedefaults=true
 

Modified: db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/largedata/lobLengthTests_app.properties
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/largedata/lobLengthTests_app.properties?rev=420048&r1=420047&r2=420048&view=diff
==============================================================================
--- db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/largedata/lobLengthTests_app.properties (original)
+++ db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/largedata/lobLengthTests_app.properties Fri Jul  7 21:31:23 2006
@@ -11,4 +11,4 @@
 # to process the property file.  See any of the .java tests for this code.
 #
 database=jdbc:derby:wombat;create=true
-jvmflags=-mx128M -ms128M
+jvmflags=-mx128M^-ms128M

Modified: db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/store/streamingColumn_app.properties
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/store/streamingColumn_app.properties?rev=420048&r1=420047&r2=420048&view=diff
==============================================================================
--- db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/store/streamingColumn_app.properties (original)
+++ db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/store/streamingColumn_app.properties Fri Jul  7 21:31:23 2006
@@ -1,4 +1,4 @@
 supportfiles=tests/store/short.data,tests/store/shortbanner,tests/store/derby.banner,tests/store/empty.data,tests/store/char32703.data,tests/store/char32703trailingblanks.data,tests/store/char32675.data,tests/store/char32675trailingblanks.data
 usedefaults=true
-jvmflags=-ms32M -mx128M
+jvmflags=-ms32M^-mx128M
 useextdirs=true