List:Internals« Previous MessageNext Message »
From:mmatthews Date:October 11 2005 3:37pm
Subject:Connector/J commit: r4389 - branches/branch_3_1/connector-j/src/com/mysql/jdbc/util
View as plain text  
Added:
   branches/branch_3_1/connector-j/src/com/mysql/jdbc/util/VersionFSHierarchyMaker.java
Log:
Added from 5.0 branch to support multi-jvm test targets.

Added: branches/branch_3_1/connector-j/src/com/mysql/jdbc/util/VersionFSHierarchyMaker.java
===================================================================
--- branches/branch_3_1/connector-j/src/com/mysql/jdbc/util/VersionFSHierarchyMaker.java	2005-10-11 15:20:47 UTC (rev 4388)
+++ branches/branch_3_1/connector-j/src/com/mysql/jdbc/util/VersionFSHierarchyMaker.java	2005-10-11 15:37:01 UTC (rev 4389)
@@ -0,0 +1,129 @@
+/*
+ Copyright (C) 2005 MySQL AB
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of version 2 of the GNU General Public License as 
+ published by the Free Software Foundation.
+
+ There are special exceptions to the terms and conditions of the GPL 
+ as it is applied to this software. View the full text of the 
+ exception in file EXCEPTIONS-CONNECTOR-J in the directory of this 
+ software distribution.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+*/
+
+package com.mysql.jdbc.util;
+
+import java.io.File;
+import java.io.FileOutputStream;
+import java.sql.Connection;
+import java.sql.ResultSet;
+import java.util.Properties;
+
+import com.mysql.jdbc.NonRegisteringDriver;
+
+/**
+ * Creates output directory structure for multi-jvm, multi-url
+ * unit, regression and compliance tests.
+ */
+public class VersionFSHierarchyMaker {
+
+	/**
+	 * @param args
+	 */
+	public static void main(String[] args) throws Exception {
+		if (args.length < 3) {
+			usage();
+			System.exit(1);
+		}
+		
+		String jdbcUrl = null;
+
+		
+		jdbcUrl = System.getProperty("com.mysql.jdbc.testsuite.url");
+		
+		
+		Connection conn = new NonRegisteringDriver().connect(jdbcUrl, null);
+
+		ResultSet rs = conn.createStatement().executeQuery("SELECT VERSION()");
+		rs.next();
+		String mysqlVersion = removeWhitespaceChars(rs.getString(1));
+
+		String jvmVersion = removeWhitespaceChars(System.getProperty("java.version"));
+		String jvmVendor = removeWhitespaceChars(System.getProperty("java.vendor"));
+		String osName = removeWhitespaceChars(System.getProperty("os.name"));
+		String osArch = removeWhitespaceChars(System.getProperty("os.arch"));
+		String osVersion = removeWhitespaceChars(System.getProperty("os.version"));
+		
+		String jvmSubdirName = jvmVendor + "-" + jvmVersion;
+		String osSubdirName = osName + "-" + osArch + "-" + osVersion;
+		
+		File baseDir = new File(args[1]);
+		File mysqlVersionDir = new File(baseDir, mysqlVersion);
+		File osVersionDir = new File(mysqlVersionDir, osSubdirName);
+		File jvmVersionDir = new File(osVersionDir, jvmSubdirName);
+		
+		jvmVersionDir.mkdirs();
+
+		
+		FileOutputStream pathOut = null;
+		
+		try {
+			String propsOutputPath = args[2];
+			pathOut = new FileOutputStream(propsOutputPath);
+			String baseDirStr = baseDir.getAbsolutePath();
+			String jvmVersionDirStr = jvmVersionDir.getAbsolutePath();
+			
+			if (jvmVersionDirStr.startsWith(baseDirStr)) {
+				jvmVersionDirStr = jvmVersionDirStr.substring(baseDirStr.length() + 1);
+			}
+
+			pathOut.write(jvmVersionDirStr.getBytes());
+		} finally {
+			if (pathOut != null) {
+				pathOut.flush();
+				pathOut.close();
+			}
+		}
+	}
+
+	public static String removeWhitespaceChars(String input) {
+		if (input == null) {
+			return input;
+		}
+		
+		int strLen = input.length();
+		
+		StringBuffer output = new StringBuffer(strLen);
+		
+		for (int i = 0; i < strLen; i++) {
+			char c = input.charAt(i);
+			if (!Character.isDigit(c) && !Character.isLetter(c)) {
+				if (Character.isWhitespace(c)) {
+					output.append("_");
+				} else {
+					output.append(".");
+				}
+			} else {
+				output.append(c);
+			}
+		}
+		
+		return output.toString();
+	}
+	
+	private static void usage() {
+		System.err.println("Creates a fs hierarchy representing MySQL version, OS version and JVM version.");
+		System.err.println("Stores the full path as 'outputDirectory' property in file 'directoryPropPath'");
+		System.err.println();
+		System.err.println("Usage: java VersionFSHierarchyMaker unit|compliance baseDirectory directoryPropPath");
+	}
+}

Thread
Connector/J commit: r4389 - branches/branch_3_1/connector-j/src/com/mysql/jdbc/utilmmatthews11 Oct