/*
Copyright (C) 2004 MySQL AB
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License version 2 as
published by the Free Software Foundation.
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.management;
import java.io.File;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import com.mysql.management.util.Files;
import com.mysql.management.util.ListToString;
/**
* @author Eric Herman <eric@mysql.com>
* @version $Id: MysqldResourceTestImpl.java,v 1.4 2005/04/13 19:53:24 eherman
* Exp $
*/
@SuppressWarnings({ "rawtypes", "unchecked" })
public class MysqldResourceTestImpl implements MysqldResourceI {
public File baseDir;
public File dataDir;
public Map runningFakeMysqlds;
private String running;
private Map currentOptions;
private List completionListensers;
private String version;
public MysqldResourceTestImpl(Map runningFakeMysqlds) {
this(null, null, new HashMap(), runningFakeMysqlds);
}
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();
this.runningFakeMysqlds = runningFakeMysqlds;
this.version = "5.2.23";
}
@Override
public void start(String threadName, Map mysqldArgs) {
start(threadName, mysqldArgs, false);
}
@Override
public void start(String threadName, Map mysqldArgs,
boolean populateAllOptions) {
if (running != null) {
String msg = "already running " + running + " mysqldArgs: "
+ new ListToString().toString(mysqldArgs);
throw new RuntimeException(msg);
}
currentOptions.putAll(mysqldArgs);
running = threadName;
runningFakeMysqlds.put(baseDir, this);
}
@Override
public void shutdown() {
runningFakeMysqlds.remove(baseDir);
running = null;
for (int i = 0; i < completionListensers.size(); i++) {
Runnable listener = (Runnable) completionListensers.get(i);
listener.run();
}
}
@Override
public Map getServerOptions() {
return new HashMap(currentOptions);
}
@Override
public boolean isRunning() {
return running != null;
}
@Override
public String getVersion() {
return version;
}
@Override
public void addCompletionListenser(Runnable listener) {
completionListensers.add(listener);
}
@Override
public void setVersion(String version) {
if (version == null) {
this.version = "5.2.23";
}
this.version = version;
}
@Override
public void setKillDelay(int millis) {
throw new RuntimeException("Millis: " + millis);
}
@Override
public boolean isReadyForConnections() {
return isRunning();
}
@Override
public File getBaseDir() {
return baseDir;
}
@Override
public File getDataDir() {
return dataDir;
}
@Override
public int getPort() {
return 0;
}
}