[jboss-cvs] CacheBenchFwk/src/org/cachebench ...
Manik Surtani
manik at jboss.org
Tue Mar 13 10:43:05 EDT 2007
User: msurtani
Date: 07/03/13 10:43:05
Added: src/org/cachebench CacheBenchMarkerSlave.java
Log:
Updated
Revision Changes Path
1.1 date: 2007/03/13 14:43:05; author: msurtani; state: Exp;CacheBenchFwk/src/org/cachebench/CacheBenchMarkerSlave.java
Index: CacheBenchMarkerSlave.java
===================================================================
package org.cachebench;
import org.cachebench.config.Configuration;
import org.cachebench.config.TestCase;
import org.cachebench.config.TestConfig;
import org.cachebench.config.Report;
import org.cachebench.tests.CacheTest;
import org.cachebench.reportgenerators.ReportGenerator;
import org.cachebench.utils.Instantiator;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.commons.digester.Digester;
import java.net.URL;
import java.net.MalformedURLException;
import java.util.List;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.Date;
import java.io.File;
/**
* @author Manik Surtani (manik at surtani.org)
* @version $Id: CacheBenchMarkerSlave.java,v 1.1 2007/03/13 14:43:05 msurtani Exp $
*/
public class CacheBenchMarkerSlave
{
private Configuration conf;
private Log logger = LogFactory.getLog("org.cachebench.CacheBenchMarker");
private Log errorLogger = LogFactory.getLog("CacheException");
public static void main(String[] args)
{
String conf = null;
if (args.length == 1)
{
conf = args[0];
}
if (conf != null && conf.toLowerCase().endsWith(".xml"))
{
new CacheBenchMarkerSlave(conf);
}
else
{
new CacheBenchMarkerSlave();
}
}
private CacheBenchMarkerSlave()
{
this("cachebench.xml");
}
private CacheBenchMarkerSlave(String s)
{
// first, try and find the configuration on the filesystem.
URL confFile = findOnFS(s);
if (confFile == null)
{
confFile = findInClasspath(s);
}
if (confFile == null)
{
logger.warn("Unable to locate a configuration file; Application terminated");
}
else
{
if (logger.isDebugEnabled()) logger.debug("Using configuration " + confFile);
logger.debug("Parsing configuration");
try
{
conf = parseConfiguration(confFile);
logger.info("Starting Slave....");
// will only start the first valid test. Slaves don't support more than one test at a time
TestCase[] cases = conf.getTestCases();
if (cases.length == 0) throw new RuntimeException("Unable to proceed; no tests configured!");
if (cases.length != 1) logger.warn("Slaves only support running one test case at a time. You have " + cases.length + " cases configured. Will only attempt the first one.");
logger.info("Benchmarking Completed. Hope you enjoyed using this!");
}
catch (Exception e)
{
logger.warn("Unable to parse configuration file " + confFile + ". Application terminated");
errorLogger.fatal("Unable to parse configuration file " + confFile, e);
}
}
}
private Configuration parseConfiguration(URL url) throws Exception
{
Digester digester = new Digester();
// set up the digester rules.
digester.setValidating(false);
digester.addObjectCreate("cachebench", "org.cachebench.config.Configuration");
digester.addSetProperties("cachebench");
digester.addObjectCreate("cachebench/testcase", "org.cachebench.config.TestCase");
digester.addSetProperties("cachebench/testcase");
digester.addObjectCreate("cachebench/testcase/test", "org.cachebench.config.TestConfig");
digester.addSetProperties("cachebench/testcase/test");
digester.addSetNext("cachebench/testcase/test", "addTest", "org.cachebench.config.TestConfig");
digester.addObjectCreate("cachebench/testcase/param", "org.cachebench.config.NVPair");
digester.addSetProperties("cachebench/testcase/param");
digester.addSetNext("cachebench/testcase/param", "addParam", "org.cachebench.config.NVPair");
digester.addSetNext("cachebench/testcase", "addTestCase", "org.cachebench.config.TestCase");
digester.addObjectCreate("cachebench/report", "org.cachebench.config.Report");
digester.addSetProperties("cachebench/report");
digester.addSetNext("cachebench/report", "addReport", "org.cachebench.config.Report");
return (Configuration) digester.parse(url.openStream());
}
/**
* Util method to locate a resource on the filesystem as a URL
*
* @param filename
* @return The URL object of the file
*/
private URL findOnFS(String filename)
{
File f = new File(filename);
try
{
if (f.exists()) return f.toURL();
}
catch (MalformedURLException mue)
{
// bad URL
}
return null;
}
/**
* Util method to locate a resource in your classpath
*
* @param filename
* @return The URL object of the file
*/
private URL findInClasspath(String filename)
{
return getClass().getClassLoader().getResource(filename);
}
private CacheWrapper getCacheWrapperInstance(TestCase testCaseClass) {
CacheWrapper cache = null;
try
{
cache = (CacheWrapper) Instantiator.getInstance().createClass(testCaseClass.getCacheWrapper());
}
catch (Exception e)
{
logger.warn("Unable to instantiate CacheWrapper class: " + testCaseClass.getCacheWrapper() + " - Not Running any tests");
errorLogger.error("Unable to instantiate CacheWrapper class: " + testCaseClass.getCacheWrapper(), e);
errorLogger.error("Skipping this test");
}
return cache;
}
}
More information about the jboss-cvs-commits
mailing list