Modified:
trunk/connector-mxj/CHANGES
trunk/connector-mxj/src/ConnectorMXJUrlTestExample.java
trunk/connector-mxj/src/com/mysql/management/AcceptanceTest.java
trunk/connector-mxj/src/com/mysql/management/AllTestsSuite.java
trunk/connector-mxj/src/com/mysql/management/MysqldResource.java
trunk/connector-mxj/src/com/mysql/management/MysqldResourceTest.java
trunk/connector-mxj/src/com/mysql/management/MysqldResourceTestImpl.java
trunk/connector-mxj/src/com/mysql/management/driverlaunched/AcceptanceTest.java
trunk/connector-mxj/src/com/mysql/management/driverlaunched/MysqldFactory.java
trunk/connector-mxj/src/com/mysql/management/driverlaunched/ServerLauncherSocketFactory.java
trunk/connector-mxj/src/com/mysql/management/driverlaunched/ServerLauncherSocketFactoryTest.java
trunk/connector-mxj/src/com/mysql/management/jmx/MysqldDynamicMBeanTest.java
trunk/connector-mxj/src/com/mysql/management/jmx/SimpleMysqldDynamicMBeanTest.java
trunk/connector-mxj/src/com/mysql/management/jmx/jboss/JBossMysqldDynamicMBeanTest.java
trunk/connector-mxj/src/com/mysql/management/util/CommandLineOptionsParser.java
trunk/connector-mxj/src/com/mysql/management/util/Files.java
trunk/connector-mxj/src/com/mysql/management/util/FilesTest.java
trunk/connector-mxj/src/com/mysql/management/util/Str.java
Log:
MysqldResource now tied to dataDir as well as basedir (API CHANGE); moved PID file into datadir; ServerLauncherSocketFactory.shutdown API change: now takes 2 File: parameters (basedir, datadir); insulated users from problems with "." in basedir.
Modified: trunk/connector-mxj/CHANGES
===================================================================
--- trunk/connector-mxj/CHANGES 2006-04-22 17:00:51 UTC (rev 34)
+++ trunk/connector-mxj/CHANGES 2006-04-26 00:20:19 UTC (rev 35)
@@ -1,6 +1,12 @@
# Changelog
# $Id: CHANGES,v 1.14 2005/10/25 19:11:16 eherman Exp $
+2006-04-25 - MysqldResource now tied to dataDir as well as basedir (API CHANGE)
+ - moved PID file into datadir
+ - ServerLauncherSocketFactory.shutdown API change: now takes 2 File
+ parameters (basedir, datadir)
+ - insulated users from problems with "." in basedir
+
2006-04-18 - Made tests more robust be deleting the /tmp/test-c.mxj directory
before running tests.
- socket is now "mysql.sock" in datadir
Modified: trunk/connector-mxj/src/ConnectorMXJUrlTestExample.java
===================================================================
--- trunk/connector-mxj/src/ConnectorMXJUrlTestExample.java 2006-04-22 17:00:51 UTC (rev 34)
+++ trunk/connector-mxj/src/ConnectorMXJUrlTestExample.java 2006-04-26 00:20:19 UTC (rev 35)
@@ -37,7 +37,7 @@
e.printStackTrace();
}
- ServerLauncherSocketFactory.shutdown(databaseDir);
+ ServerLauncherSocketFactory.shutdown(databaseDir, null);
}
}
Modified: trunk/connector-mxj/src/com/mysql/management/AcceptanceTest.java
===================================================================
--- trunk/connector-mxj/src/com/mysql/management/AcceptanceTest.java 2006-04-22 17:00:51 UTC (rev 34)
+++ trunk/connector-mxj/src/com/mysql/management/AcceptanceTest.java 2006-04-26 00:20:19 UTC (rev 35)
@@ -102,6 +102,8 @@
String[] stopArgs1 = new String[] {
"--" + MysqldResourceI.BASEDIR + "=" + baseDir1, "--shutdown" };
+ MysqldResource.main(startArgs1);
+
int port2 = port1 + 1000;
String url2 = "jdbc:mysql://127.0.0.1:" + port2 + "/test";
File baseDir2 = new File(tmpDir, "cmxj-dir.2");
@@ -111,8 +113,8 @@
String[] stopArgs2 = new String[] {
"--" + MysqldResourceI.BASEDIR + "=" + baseDir2, "--shutdown" };
- MysqldResource.main(startArgs1);
MysqldResource.main(startArgs2);
+
testUtil.assertConnectViaJDBC(url1);
testUtil.assertConnectViaJDBC(url2);
Modified: trunk/connector-mxj/src/com/mysql/management/AllTestsSuite.java
===================================================================
--- trunk/connector-mxj/src/com/mysql/management/AllTestsSuite.java 2006-04-22 17:00:51 UTC (rev 34)
+++ trunk/connector-mxj/src/com/mysql/management/AllTestsSuite.java 2006-04-26 00:20:19 UTC (rev 35)
@@ -17,11 +17,11 @@
*/
package com.mysql.management;
-import com.mysql.management.util.Files;
-
import junit.framework.Test;
import junit.framework.TestSuite;
+import com.mysql.management.util.Files;
+
/**
* @author Eric Herman <eric@stripped>
* @version $Id: AllTestsSuite.java,v 1.6 2005/07/01 02:06:55 eherman Exp $
Modified: trunk/connector-mxj/src/com/mysql/management/MysqldResource.java
===================================================================
--- trunk/connector-mxj/src/com/mysql/management/MysqldResource.java 2006-04-22 17:00:51 UTC (rev 34)
+++ trunk/connector-mxj/src/com/mysql/management/MysqldResource.java 2006-04-26 00:20:19 UTC (rev 35)
@@ -48,6 +48,8 @@
public final class MysqldResource implements MysqldResourceI {
public static final String MYSQL_C_MXJ = "mysql-c.mxj";
+ public static final String DATA = "data";
+
private String versionString;
private Map options;
@@ -56,6 +58,8 @@
private File baseDir;
+ private File dataDir;
+
private File pidFile;
private String msgPrefix;
@@ -88,27 +92,36 @@
}
public MysqldResource(File baseDir) {
- this(baseDir, MysqldResourceI.DEFAULT_VERSION, System.out, System.err);
+ this(baseDir, new Files().nullFile(), MysqldResourceI.DEFAULT_VERSION,
+ System.out, System.err);
}
- public MysqldResource(File baseDir, String mysqlVersionString) {
- this(baseDir, mysqlVersionString, System.out, System.err);
+ public MysqldResource(File baseDir, File dataDir) {
+ this(baseDir, dataDir, MysqldResourceI.DEFAULT_VERSION, System.out,
+ System.err);
}
- public MysqldResource(File baseDir, String mysqlVersionString,
- PrintStream out, PrintStream err) {
- this(baseDir, mysqlVersionString, out, err, new Utils());
+ public MysqldResource(File baseDir, File dataDir, String mysqlVersionString) {
+ this(baseDir, dataDir, mysqlVersionString, System.out, System.err);
}
- MysqldResource(File baseDir, String mysqlVersionString, PrintStream out,
- PrintStream err, Utils util) {
+ public MysqldResource(File baseDir, File dataDir,
+ String mysqlVersionString, PrintStream out, PrintStream err) {
+ this(baseDir, dataDir, mysqlVersionString, out, err, new Utils());
+ }
+
+ MysqldResource(File baseDir, File dataDir, String mysqlVersionString,
+ PrintStream out, PrintStream err, Utils util) {
this.out = out;
this.err = err;
this.utils = util;
this.optionParser = new HelpOptionsParser(err, utils);
- setVersion(mysqlVersionString);
this.killDelay = 30000;
- this.baseDir = validBaseDir(baseDir);
+ this.baseDir = utils.files().validCononicalDir(baseDir,
+ utils.files().tmp(MYSQL_C_MXJ));
+ this.dataDir = utils.files().validCononicalDir(dataDir,
+ new File(this.baseDir, DATA));
+ setVersion(false, mysqlVersionString);
this.pidFile = null;
this.msgPrefix = "[" + utils.str().shortClassName(getClass()) + "] ";
this.options = new HashMap();
@@ -172,19 +185,6 @@
setReadyForConnection(ready);
}
- final File validBaseDir(File dir) {
- if (dir == null || dir.equals(utils.files().nullFile())) {
- dir = utils.files().tmp(MYSQL_C_MXJ);
- }
- if (!dir.exists()) {
- dir.mkdirs();
- }
- if (!dir.isDirectory()) {
- throw new IllegalArgumentException(dir + " not a directory");
- }
- return dir;
- }
-
private void setReadyForConnection(boolean ready) {
readyForConnections = ready;
}
@@ -347,10 +347,12 @@
return getVersion().replaceAll("\\.", "-");
}
- public synchronized void setVersion(String mysqlVersionString) {
- if (isRunning()) {
+ private synchronized void setVersion(boolean check,
+ String mysqlVersionString) {
+ if (check && isRunning()) {
throw new IllegalStateException("Already running");
}
+
if (mysqlVersionString == null) {
versionString = DEFAULT_VERSION;
} else {
@@ -358,6 +360,10 @@
}
}
+ public synchronized void setVersion(String mysqlVersionString) {
+ setVersion(true, mysqlVersionString);
+ }
+
private void printMessage(String msg) {
println(out, msg);
}
@@ -388,13 +394,14 @@
/** called from option parser as well */
synchronized Shell exec(String threadName, Map mysqldArgs,
PrintStream outStream, PrintStream errStream, boolean withListeners) {
- mysqldArgs.put(MysqldResourceI.BASEDIR, baseDir.getPath());
- mysqldArgs.put(MysqldResourceI.PID_FILE, pidFile().getPath());
- socket(mysqldArgs);
- File dataDir = dataDir(mysqldArgs);
+ ensureDir(mysqldArgs, baseDir, MysqldResourceI.BASEDIR);
+ ensureDir(mysqldArgs, dataDir, MysqldResourceI.DATADIR);
+ mysqldArgs.put(MysqldResourceI.PID_FILE, utils.files().getPath(
+ pidFile()));
+ ensureSocket(mysqldArgs);
makeMysqld();
- ensureEssentialFilesExist(dataDir);
+ ensureEssentialFilesExist();
String[] args = constructArgs(mysqldArgs);
outStream.println(new ListToString().toString(args));
Shell launch = utils.shellFactory().newShell(args, threadName,
@@ -444,36 +451,37 @@
return new File(bin, executableName());
}
- void ensureEssentialFilesExist(File dataDir) {
+ void ensureEssentialFilesExist() {
utils.streams().expandResourceJar(dataDir,
getVersionDir() + Streams.RESOURCE_SEPARATOR + "data_dir.jar");
utils.streams().expandResourceJar(baseDir,
getVersionDir() + Streams.RESOURCE_SEPARATOR + shareJar());
}
- void socket(Map mysqldArgs) {
+ void ensureSocket(Map mysqldArgs) {
String socketString = (String) mysqldArgs.get(MysqldResourceI.SOCKET);
if (socketString != null) {
return;
}
-
mysqldArgs.put(MysqldResourceI.SOCKET, "mysql.sock");
}
- File dataDir(Map mysqldArgs) {
- String dataDirString = (String) mysqldArgs.get(MysqldResourceI.DATADIR);
- if (dataDirString != null) {
- return new File(dataDirString);
+ private void ensureDir(Map mysqldArgs, File expected, String key) {
+ String dirString = (String) mysqldArgs.get(key);
+ if (dirString != null) {
+ File asConnonical = utils.files().validCononicalDir(
+ new File(dirString));
+ if (!expected.equals(asConnonical)) {
+ String msg = dirString + " not equal to " + expected;
+ throw new IllegalArgumentException(msg);
+ }
}
-
- File dataDir = new File(baseDir, "data");
- mysqldArgs.put(MysqldResourceI.DATADIR, dataDir.toString());
- return dataDir;
+ mysqldArgs.put(key, utils.files().getPath(expected));
}
String[] constructArgs(Map mysqldArgs) {
List strs = new ArrayList();
- strs.add(getMysqldFilePointer().getPath());
+ strs.add(utils.files().getPath(getMysqldFilePointer()));
strs.add("--no-defaults");
if (isWindows()) {
@@ -497,11 +505,11 @@
}
protected void finalize() throws Throwable {
- super.finalize();
if (getShell() != null) {
printWarning("resource released without closure.");
trace.printStackTrace(err);
}
+ super.finalize();
}
String shareJar() {
@@ -524,6 +532,10 @@
return baseDir;
}
+ public File getDataDir() {
+ return dataDir;
+ }
+
public synchronized void setKillDelay(int millis) {
this.killDelay = millis;
}
@@ -554,7 +566,7 @@
synchronized private File pidFile() {
if (pidFile == null) {
String className = utils.str().shortClassName(getClass());
- pidFile = new File(this.baseDir, className + ".pid");
+ pidFile = new File(this.dataDir, className + ".pid");
}
return pidFile;
}
@@ -602,7 +614,7 @@
}
MysqldResource mysqld = new MysqldResource(clop.getBaseDir(), clop
- .getVersion(), out, err);
+ .getDataDir(), clop.getVersion(), out, err);
if (clop.isShutdown()) {
mysqld.shutdown();
return;
Modified: trunk/connector-mxj/src/com/mysql/management/MysqldResourceTest.java
===================================================================
--- trunk/connector-mxj/src/com/mysql/management/MysqldResourceTest.java 2006-04-22 17:00:51 UTC (rev 34)
+++ trunk/connector-mxj/src/com/mysql/management/MysqldResourceTest.java 2006-04-26 00:20:19 UTC (rev 35)
@@ -19,7 +19,6 @@
import java.io.ByteArrayOutputStream;
import java.io.File;
-import java.io.FileOutputStream;
import java.io.PrintStream;
import java.util.ArrayList;
import java.util.HashMap;
@@ -54,6 +53,8 @@
private File baseDir;
+ private File dataDir;
+
protected void setUp() {
super.setUp();
testUtil = new TestUtil();
@@ -62,12 +63,13 @@
new Threads(), new Str());
baseDir = new File(fileUtil.testDir(), "MRTest");
+ dataDir = new File(baseDir, "data");
fileUtil.deleteTree(baseDir);
if (baseDir.exists()) {
warn("residual files");
}
- mysqldResource = new MysqldResource(baseDir,
+ mysqldResource = new MysqldResource(baseDir, dataDir,
MysqldResourceI.DEFAULT_VERSION, System.out, System.err, utils);
mysqldResource.setKillDelay(10000);
}
@@ -213,19 +215,16 @@
}
public void testCreateDbFiles() {
- File dataDir = new File(mysqldResource.getBaseDir(), "test-data");
+ File dataDir = mysqldResource.getDataDir();
+ new Files().deleteTree(dataDir);
+
File dbDataDir = new File(dataDir, "mysql");
File host_frm = new File(dbDataDir, "host.frm");
assertEquals(false, host_frm.exists());
assertEquals(false, dataDir.exists());
- Map args = new HashMap();
- args.put("datadir", dataDir.getPath());
+ mysqldResource.ensureEssentialFilesExist();
- File data = mysqldResource.dataDir(args);
- mysqldResource.ensureEssentialFilesExist(data);
- assertEquals(dataDir, data);
-
assertTrue(host_frm.exists());
}
@@ -262,8 +261,8 @@
public void testTestReporting() {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
PrintStream captured = new PrintStream(baos);
- mysqldResource = new MysqldResource(baseDir, null, captured, captured,
- utils);
+ mysqldResource = new MysqldResource(baseDir, dataDir, null, captured,
+ captured, utils);
mysqldResource.reportIfNoPidfile(true);
captured.flush();
@@ -310,7 +309,7 @@
ByteArrayOutputStream baos = new ByteArrayOutputStream();
PrintStream captured = new PrintStream(baos);
- mysqldResource = new MysqldResource(fileUtil.testDir(), null, captured,
+ mysqldResource = new MysqldResource(baseDir, dataDir, null, captured,
captured, utils);
mysqldResource.finalize();
captured.flush();
@@ -349,29 +348,6 @@
assertEquals("share_dir.jar", mysqldResource.shareJar());
}
- public void testValidBaseDir() throws Exception {
- File defaultBaseDir = fileUtil.tmp(MysqldResource.MYSQL_C_MXJ);
- assertEquals(defaultBaseDir, mysqldResource.validBaseDir(null));
- assertEquals(defaultBaseDir, mysqldResource.validBaseDir(fileUtil
- .nullFile()));
-
- File foo = new File(fileUtil.testDir(), "junkFile.txt");
- foo.deleteOnExit();
- FileOutputStream fos = new FileOutputStream(foo);
- PrintStream ps = new PrintStream(fos);
- ps.println("junk");
- ps.close();
-
- IllegalArgumentException expected = null;
- try {
- mysqldResource.validBaseDir(foo);
- } catch (IllegalArgumentException e) {
- expected = e;
- }
- assertNotNull(expected);
- testUtil.assertContainsIgnoreCase(expected.getMessage(), "directory");
- }
-
// -------------------
private static class TestFileUtil extends Files {
private List execFiles = new ArrayList();
Modified: trunk/connector-mxj/src/com/mysql/management/MysqldResourceTestImpl.java
===================================================================
--- trunk/connector-mxj/src/com/mysql/management/MysqldResourceTestImpl.java 2006-04-22 17:00:51 UTC (rev 34)
+++ trunk/connector-mxj/src/com/mysql/management/MysqldResourceTestImpl.java 2006-04-26 00:20:19 UTC (rev 35)
@@ -34,6 +34,8 @@
public class MysqldResourceTestImpl implements MysqldResourceI {
public File baseDir;
+ public File dataDir;
+
public Map runningFakeMysqlds;
private String running;
@@ -42,13 +44,19 @@
private List completionListensers;
- public MysqldResourceTestImpl(File baseDir, Map runningFakeMysqlds) {
- this(baseDir, new HashMap(), runningFakeMysqlds);
+ public MysqldResourceTestImpl(Map runningFakeMysqlds) {
+ this(null, null, new HashMap(), runningFakeMysqlds);
}
- public MysqldResourceTestImpl(File baseDir, Map options,
+ public MysqldResourceTestImpl(File baseDir, File dataDir,
Map runningFakeMysqlds) {
+ this(baseDir, dataDir, new HashMap(), runningFakeMysqlds);
+ }
+
+ public MysqldResourceTestImpl(File baseDir, File dataDir, Map options,
+ Map runningFakeMysqlds) {
this.baseDir = (baseDir == null) ? new Files().nullFile() : baseDir;
+ this.dataDir = dataDir;
this.running = null;
this.currentOptions = options;
this.completionListensers = new ArrayList();
Modified: trunk/connector-mxj/src/com/mysql/management/driverlaunched/AcceptanceTest.java
===================================================================
--- trunk/connector-mxj/src/com/mysql/management/driverlaunched/AcceptanceTest.java 2006-04-22 17:00:51 UTC (rev 34)
+++ trunk/connector-mxj/src/com/mysql/management/driverlaunched/AcceptanceTest.java 2006-04-26 00:20:19 UTC (rev 35)
@@ -51,7 +51,7 @@
super.tearDown();
try {
File defaultBaseDir = new Files().tmp(MysqldResource.MYSQL_C_MXJ);
- ServerLauncherSocketFactory.shutdown(defaultBaseDir);
+ ServerLauncherSocketFactory.shutdown(defaultBaseDir, null);
} catch (MysqldResourceNotFoundException e) {
warn(e);
} finally {
Modified: trunk/connector-mxj/src/com/mysql/management/driverlaunched/MysqldFactory.java
===================================================================
--- trunk/connector-mxj/src/com/mysql/management/driverlaunched/MysqldFactory.java 2006-04-22 17:00:51 UTC (rev 34)
+++ trunk/connector-mxj/src/com/mysql/management/driverlaunched/MysqldFactory.java 2006-04-26 00:20:19 UTC (rev 35)
@@ -23,11 +23,11 @@
import com.mysql.management.MysqldResourceI;
public interface MysqldFactory {
- MysqldResourceI newMysqldResource(File baseDir);
+ MysqldResourceI newMysqldResource(File baseDir, File dataDir);
public static final class Default implements MysqldFactory {
- public MysqldResourceI newMysqldResource(File baseDir) {
- return new MysqldResource(baseDir);
+ public MysqldResourceI newMysqldResource(File baseDir, File dataDir) {
+ return new MysqldResource(baseDir, dataDir);
}
}
}
\ No newline at end of file
Modified: trunk/connector-mxj/src/com/mysql/management/driverlaunched/ServerLauncherSocketFactory.java
===================================================================
--- trunk/connector-mxj/src/com/mysql/management/driverlaunched/ServerLauncherSocketFactory.java 2006-04-22 17:00:51 UTC (rev 34)
+++ trunk/connector-mxj/src/com/mysql/management/driverlaunched/ServerLauncherSocketFactory.java 2006-04-26 00:20:19 UTC (rev 35)
@@ -70,21 +70,29 @@
}
}
serverOpts.put(MysqldResourceI.PORT, Integer.toString(port));
- File baseDir = new Files().newFile(serverOpts
- .get(MysqldResourceI.BASEDIR));
+ Object baseDirStr = serverOpts.get(MysqldResourceI.BASEDIR);
+ File baseDir = new Files().newFile(baseDirStr);
- MysqldResourceI mysqld = resourceFactory.newMysqldResource(baseDir);
+ String dataDirString = (String) serverOpts.get(MysqldResourceI.DATADIR);
+ File dataDir = null;
+ if (dataDirString != null) {
+ File ddir = new File(dataDirString);
+ dataDir = new Files().validCononicalDir(ddir);
+ }
+
+ MysqldResourceI mysqld = resourceFactory.newMysqldResource(baseDir,
+ dataDir);
+
if (mysqld.isRunning()) {
Object runningPort = mysqld.getServerOptions().get(
MysqldResourceI.PORT);
- if (runningPort.equals(Integer.toString(port))) {
- return;
+ if (!runningPort.equals(Integer.toString(port))) {
+ String msg = "Mysqld at " + mysqld.getBaseDir()
+ + " is running on port " + runningPort + " not " + port;
+ throw new RuntimeException(msg);
}
- String msg = "Mysqld at " + mysqld.getBaseDir()
- + " is running on port " + runningPort + " not " + port;
- throw new RuntimeException(msg);
-
+ return;
}
mysqld.setVersion((String) serverOpts
@@ -120,8 +128,8 @@
}
// -------------------------------------------------------------
- public synchronized static boolean shutdown(File baseDir) {
- MysqldResource mysqld = new MysqldResource(baseDir);
+ public synchronized static boolean shutdown(File baseDir, File dataDir) {
+ MysqldResource mysqld = new MysqldResource(baseDir, dataDir);
mysqld.shutdown();
return mysqld.isRunning();
}
Modified: trunk/connector-mxj/src/com/mysql/management/driverlaunched/ServerLauncherSocketFactoryTest.java
===================================================================
--- trunk/connector-mxj/src/com/mysql/management/driverlaunched/ServerLauncherSocketFactoryTest.java 2006-04-22 17:00:51 UTC (rev 34)
+++ trunk/connector-mxj/src/com/mysql/management/driverlaunched/ServerLauncherSocketFactoryTest.java 2006-04-26 00:20:19 UTC (rev 35)
@@ -19,7 +19,6 @@
import java.io.File;
import java.net.Socket;
-import java.sql.SQLException;
import java.util.HashMap;
import java.util.Map;
import java.util.Properties;
@@ -41,8 +40,8 @@
this.fakeRunningMysqlds = new HashMap();
}
- public MysqldResourceI newMysqldResource(File base) {
- return new MysqldResourceTestImpl(base, fakeRunningMysqlds);
+ public MysqldResourceI newMysqldResource(File base, File data) {
+ return new MysqldResourceTestImpl(base, data, fakeRunningMysqlds);
}
}
Modified: trunk/connector-mxj/src/com/mysql/management/jmx/MysqldDynamicMBeanTest.java
===================================================================
--- trunk/connector-mxj/src/com/mysql/management/jmx/MysqldDynamicMBeanTest.java 2006-04-22 17:00:51 UTC (rev 34)
+++ trunk/connector-mxj/src/com/mysql/management/jmx/MysqldDynamicMBeanTest.java 2006-04-26 00:20:19 UTC (rev 35)
@@ -33,7 +33,8 @@
*/
public class MysqldDynamicMBeanTest extends TestCase {
public void testAutoStart() throws Exception {
- MysqldResourceI mysqld = new MysqldResourceTestImpl(null, new HashMap());
+ MysqldResourceI mysqld = new MysqldResourceTestImpl(null, null,
+ new HashMap());
MysqldDynamicMBean myBean = new MysqldDynamicMBean(mysqld);
assertFalse(mysqld.isRunning());
String autostart = SimpleMysqldDynamicMBean.AUTOSTART_ATTR;
Modified: trunk/connector-mxj/src/com/mysql/management/jmx/SimpleMysqldDynamicMBeanTest.java
===================================================================
--- trunk/connector-mxj/src/com/mysql/management/jmx/SimpleMysqldDynamicMBeanTest.java 2006-04-22 17:00:51 UTC (rev 34)
+++ trunk/connector-mxj/src/com/mysql/management/jmx/SimpleMysqldDynamicMBeanTest.java 2006-04-26 00:20:19 UTC (rev 35)
@@ -47,8 +47,8 @@
public void testGetMBeanInfo() throws Exception {
Map options = new HashMap();
options.put("foo", "bar");
- MysqldResourceI mysqld = new MysqldResourceTestImpl(null, options,
- new HashMap());
+ MysqldResourceI mysqld = new MysqldResourceTestImpl(null, null,
+ options, new HashMap());
SimpleMysqldDynamicMBean myBean = new SimpleMysqldDynamicMBean(mysqld);
@@ -110,8 +110,8 @@
public void testGetAttribute() throws Exception {
Map options = new HashMap();
options.put("foo", "bar");
- MysqldResourceI mysqld = new MysqldResourceTestImpl(null, options,
- new HashMap());
+ MysqldResourceI mysqld = new MysqldResourceTestImpl(null, null,
+ options, new HashMap());
SimpleMysqldDynamicMBean myBean = new SimpleMysqldDynamicMBean(mysqld);
assertEquals("bar", myBean.getAttribute("foo"));
@@ -128,8 +128,8 @@
options.put("foo", "bar");
options.put("baz", "wiz");
options.put("datadir", "/bogus/dir");
- MysqldResourceI mysqld = new MysqldResourceTestImpl(null, options,
- new HashMap());
+ MysqldResourceI mysqld = new MysqldResourceTestImpl(null, null,
+ options, new HashMap());
SimpleMysqldDynamicMBean myBean = new SimpleMysqldDynamicMBean(mysqld);
AttributeList attributeList = myBean.getAttributes(new String[] {
@@ -143,8 +143,8 @@
public void testGetAgentVersion() throws Exception {
Map options = new HashMap();
options.put("foo", "bar");
- MysqldResourceI mysqld = new MysqldResourceTestImpl(null, options,
- new HashMap());
+ MysqldResourceI mysqld = new MysqldResourceTestImpl(null, null,
+ options, new HashMap());
SimpleMysqldDynamicMBean myBean = new SimpleMysqldDynamicMBean(mysqld);
String verAttName = myBean.versionAttributeName();
@@ -173,8 +173,8 @@
options.put("foo", "bar");
options.put("baz", "wiz");
options.put("datadir", "/bogus/dir");
- MysqldResourceI mysqld = new MysqldResourceTestImpl(null, options,
- new HashMap());
+ MysqldResourceI mysqld = new MysqldResourceTestImpl(null, null,
+ options, new HashMap());
SimpleMysqldDynamicMBean myBean = new SimpleMysqldDynamicMBean(mysqld);
@@ -191,8 +191,8 @@
public void testSetAttribute() throws Exception {
Map options = new HashMap();
options.put("foo", "bar");
- MysqldResourceI mysqld = new MysqldResourceTestImpl(null, options,
- new HashMap());
+ MysqldResourceI mysqld = new MysqldResourceTestImpl(null, null,
+ options, new HashMap());
SimpleMysqldDynamicMBean myBean = new SimpleMysqldDynamicMBean(mysqld);
try {
myBean.setAttribute(new Attribute("bogus", "werid"));
@@ -203,7 +203,8 @@
}
public void testAutoStart() throws Exception {
- MysqldResourceI mysqld = new MysqldResourceTestImpl(null, new HashMap());
+ MysqldResourceI mysqld = new MysqldResourceTestImpl(null, null,
+ new HashMap());
SimpleMysqldDynamicMBean myBean = new SimpleMysqldDynamicMBean(mysqld);
assertFalse(mysqld.isRunning());
String autostart = SimpleMysqldDynamicMBean.AUTOSTART_ATTR;
@@ -214,7 +215,8 @@
}
public void testInvoke() throws Exception {
- MysqldResourceI mysqld = new MysqldResourceTestImpl(null, new HashMap());
+ MysqldResourceI mysqld = new MysqldResourceTestImpl(null, null,
+ new HashMap());
SimpleMysqldDynamicMBean myBean = new SimpleMysqldDynamicMBean(mysqld);
assertEquals(false, mysqld.isRunning());
myBean.invoke(SimpleMysqldDynamicMBean.START_METHOD, null, null);
@@ -236,8 +238,8 @@
options.put("baz", "wiz");
options.put("datadir", "/bogus/dir");
options.put("help", "");
- MysqldResourceI mysqld = new MysqldResourceTestImpl(null, options,
- new HashMap());
+ MysqldResourceI mysqld = new MysqldResourceTestImpl(null, null,
+ options, new HashMap());
SimpleMysqldDynamicMBean myBean = new SimpleMysqldDynamicMBean(mysqld);
myBean.setAttribute(new Attribute("foo", "changed"));
assertTrue(myBean.attributesToOpionMap().containsKey("foo"));
@@ -249,8 +251,8 @@
public void testFreezeAttributes() {
Map options = new HashMap();
options.put("foo", "bar");
- MysqldResourceI mysqld = new MysqldResourceTestImpl(null, options,
- new HashMap());
+ MysqldResourceI mysqld = new MysqldResourceTestImpl(null, null,
+ options, new HashMap());
SimpleMysqldDynamicMBean myBean = new SimpleMysqldDynamicMBean(mysqld);
MBeanInfo info = myBean.getMBeanInfo();
@@ -266,8 +268,8 @@
public void testAttributesFrozenWhenRunning() throws ReflectionException {
Map options = new HashMap();
options.put("foo", "bar");
- MysqldResourceI mysqld = new MysqldResourceTestImpl(null, options,
- new HashMap());
+ MysqldResourceI mysqld = new MysqldResourceTestImpl(null, null,
+ options, new HashMap());
SimpleMysqldDynamicMBean myBean = new SimpleMysqldDynamicMBean(mysqld);
MBeanInfo info = myBean.getMBeanInfo();
Modified: trunk/connector-mxj/src/com/mysql/management/jmx/jboss/JBossMysqldDynamicMBeanTest.java
===================================================================
--- trunk/connector-mxj/src/com/mysql/management/jmx/jboss/JBossMysqldDynamicMBeanTest.java 2006-04-22 17:00:51 UTC (rev 34)
+++ trunk/connector-mxj/src/com/mysql/management/jmx/jboss/JBossMysqldDynamicMBeanTest.java 2006-04-26 00:20:19 UTC (rev 35)
@@ -49,7 +49,7 @@
}
public void testNoAutoStart() throws Exception {
- MysqldResourceI mysqld = new MysqldResourceTestImpl(null, new HashMap());
+ MysqldResourceI mysqld = new MysqldResourceTestImpl(new HashMap());
JBossMysqldDynamicMBean myBean = new JBossMysqldDynamicMBean(mysqld);
assertFalse(mysqld.isRunning());
myBean.create();
@@ -57,7 +57,7 @@
}
public void testAutoStart() throws Exception {
- MysqldResourceI mysqld = new MysqldResourceTestImpl(null, new HashMap());
+ MysqldResourceI mysqld = new MysqldResourceTestImpl(new HashMap());
JBossMysqldDynamicMBean myBean = new JBossMysqldDynamicMBean(mysqld);
assertFalse(mysqld.isRunning());
@@ -74,7 +74,7 @@
Map atts = new HashMap();
atts.put(SimpleMysqldDynamicMBean.AUTOSTART_ATTR, Boolean.TRUE
.toString());
- MysqldResourceI mysqld = new MysqldResourceTestImpl(null, atts,
+ MysqldResourceI mysqld = new MysqldResourceTestImpl(null, null, atts,
new HashMap());
JBossMysqldDynamicMBean myBean = new JBossMysqldDynamicMBean(mysqld);
assertFalse(mysqld.isRunning());
Modified: trunk/connector-mxj/src/com/mysql/management/util/CommandLineOptionsParser.java
===================================================================
--- trunk/connector-mxj/src/com/mysql/management/util/CommandLineOptionsParser.java 2006-04-22 17:00:51 UTC (rev 34)
+++ trunk/connector-mxj/src/com/mysql/management/util/CommandLineOptionsParser.java 2006-04-26 00:20:19 UTC (rev 35)
@@ -79,9 +79,19 @@
}
public File getBaseDir() {
- return fileUtil.newFile(params.get(MysqldResourceI.BASEDIR));
+ return newFile(MysqldResourceI.BASEDIR);
}
+ public File getDataDir() {
+ return newFile(MysqldResourceI.DATADIR);
+ }
+
+ private File newFile(String key) {
+ if (!params.containsKey(key))
+ return fileUtil.nullFile();
+ return fileUtil.newFile(params.get(key));
+ }
+
public String getVersion() {
return (String) params.get(MysqldResourceI.MYSQLD_VERSION);
}
Modified: trunk/connector-mxj/src/com/mysql/management/util/Files.java
===================================================================
--- trunk/connector-mxj/src/com/mysql/management/util/Files.java 2006-04-22 17:00:51 UTC (rev 34)
+++ trunk/connector-mxj/src/com/mysql/management/util/Files.java 2006-04-26 00:20:19 UTC (rev 35)
@@ -53,7 +53,7 @@
}
public File tmp() {
- return new File(System.getProperty(JAVA_IO_TMPDIR));
+ return cononical(new File(System.getProperty(JAVA_IO_TMPDIR)));
}
public File tmp(String subdir) {
@@ -120,10 +120,49 @@
if (fileName == null) {
return nullFile();
}
- return new File(fileName.toString());
+ return cononical(new File(fileName.toString()));
}
+ public File cononical(final File file) {
+ if (file == null) {
+ throw new IllegalArgumentException("File may not be null");
+ }
+
+ return (File) new Exceptions.Block() {
+ protected Object inner() throws Exception {
+ return file.getCanonicalFile();
+ }
+ }.exec();
+ }
+
+ public String getPath(final File file) {
+ return (String) new Exceptions.Block() {
+ protected Object inner() throws Exception {
+ return file.getCanonicalPath();
+ }
+ }.exec();
+ }
+
public boolean cleanTestDir() {
return deleteTree(testDir());
}
+
+ public File validCononicalDir(File dir, File defaultDir) {
+ if (dir == null || dir.equals(nullFile())) {
+ dir = defaultDir;
+ }
+ return validCononicalDir(dir);
+ }
+
+ public File validCononicalDir(final File dir) {
+ File cononical = cononical(dir);
+
+ if (!cononical.exists()) {
+ cononical.mkdirs();
+ }
+ if (!cononical.isDirectory()) {
+ throw new IllegalArgumentException(cononical + " not a directory");
+ }
+ return cononical;
+ }
}
Modified: trunk/connector-mxj/src/com/mysql/management/util/FilesTest.java
===================================================================
--- trunk/connector-mxj/src/com/mysql/management/util/FilesTest.java 2006-04-22 17:00:51 UTC (rev 34)
+++ trunk/connector-mxj/src/com/mysql/management/util/FilesTest.java 2006-04-26 00:20:19 UTC (rev 35)
@@ -98,4 +98,46 @@
assertEquals("+x", shell.args[1]);
assertTrue(shell.args[2].indexOf("bogus") >= 0);
}
+
+ public void testValidCononicalDir() throws Exception {
+ File foo = fileUtil.tmp("foo");
+ File cononicalFoo = foo.getCanonicalFile();
+ File defaultDir = fileUtil.tmp("defaultDir");
+
+ File valid = fileUtil.validCononicalDir(foo);
+ assertEquals(cononicalFoo, valid);
+
+ valid = fileUtil.validCononicalDir(foo, defaultDir);
+ assertEquals(cononicalFoo, valid);
+
+ valid = fileUtil.validCononicalDir(null, defaultDir);
+ assertEquals(defaultDir, valid);
+
+ File bar = new File(fileUtil.testDir(), "junkFile.txt");
+ bar.deleteOnExit();
+ FileOutputStream fos = new FileOutputStream(bar);
+ PrintStream ps = new PrintStream(fos);
+ ps.println("junk");
+ ps.close();
+ TestUtil testUtil = new TestUtil();
+
+ Exception expected = null;
+ try {
+ fileUtil.validCononicalDir(bar);
+ } catch (IllegalArgumentException e) {
+ expected = e;
+ }
+ assertNotNull(expected);
+ testUtil.assertContainsIgnoreCase(expected.getMessage(), "directory");
+
+ expected = null;
+ try {
+ fileUtil.validCononicalDir(null);
+ } catch (IllegalArgumentException e) {
+ expected = e;
+ }
+ assertNotNull(expected);
+ testUtil.assertContainsIgnoreCase(expected.getMessage(), "null");
+ }
+
}
Modified: trunk/connector-mxj/src/com/mysql/management/util/Str.java
===================================================================
--- trunk/connector-mxj/src/com/mysql/management/util/Str.java 2006-04-22 17:00:51 UTC (rev 34)
+++ trunk/connector-mxj/src/com/mysql/management/util/Str.java 2006-04-26 00:20:19 UTC (rev 35)
@@ -41,6 +41,7 @@
public Str() {
newLine = System.getProperty("line.separator");
}
+
public boolean containsIgnoreCase(String searchIn, String searchFor) {
return searchIn.toLowerCase().indexOf(searchFor.toLowerCase()) != -1;
| Thread |
|---|
| • Connector/MXJ commit: r35 - in trunk/connector-mxj: . src src/com/mysql/management src/com/mysql/management/driverlaunched src/com/mysql/management/jm... | eherman | 26 Apr |