[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