Package jmt.engine.testSystem

Source Code of jmt.engine.testSystem.BatchTest

/**   
  * Copyright (C) 2006, Laboratorio di Valutazione delle Prestazioni - Politecnico di Milano

  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or
  * (at your option) any later version.

  * 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., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
  */

package jmt.engine.testSystem;

import java.io.File;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;

import org.apache.log4j.FileAppender;
import org.apache.log4j.Level;
import org.apache.log4j.Logger;
import org.apache.log4j.PatternLayout;

/**
* Test engine for simulator.
* It offers different choices:
* <ul>
* <li>more simulation runs of the same model</li>
* <li>one simulation run for different models</li>
* <li>test with fixed simulation seed</li>
* <li>ecc...</li>
*
* </ul>
*
* @author Stefano
* @version 7-mar-2005 9.24.30
*/
public class BatchTest {

  //Log4J logger
  private Logger logger;
  //logger level
  private Level loggerLevel = Level.INFO;
  //true if you want to receive extended info about confidence intervals
  private boolean extendedInfo = true;

  /**
   * Creates a BatchTest object with the corresponding logger
   * @param level logger level
   * @param extendedInfo if true, extended info about confidence intervals are logged
   */
  public BatchTest(Level level, boolean extendedInfo) {

    loggerLevel = level;
    logger = Logger.getLogger(BatchTest.class);
    logger.setLevel(level);

    //for example: 20050307_204315 -> 7 March 2005, 20:43:15
    String datePattern = "yyyyMMdd_HHmmss";
    SimpleDateFormat formatter = new SimpleDateFormat(datePattern);

    Date today = new Date();
    String todayString = formatter.format(today);

    String logName = todayString + "_batch_test.csv";

    try {
      //standard
      //PatternLayout pattern = new PatternLayout("%r [%t] %p %c %x - %m%n");
      //PatternLayout pattern = new PatternLayout("%r - %p %x - %m%n");
      PatternLayout pattern = new PatternLayout("%m%n");

      File logFile = new File(logName);
      if (!logFile.createNewFile()) {
        throw new IOException("trying to overwrite an existing file");
      };

      FileAppender app = new FileAppender(pattern, logName, false);
      logger.addAppender(app);
      logger.setAdditivity(false);

    } catch (IOException e) {
      System.out.println("Error in creating log file");
      return;
    };

  }

  public static void test_fixedPath(String path) {
    BatchTest btest = new BatchTest(Level.INFO, true);
    ResultsCheck check = new ResultsCheck(path, true);
    check.checkRes();
  }

  /**
   * Executes multiple runs for a set of models.
   * The seeds used for model generation and for simulation
   * are automatically generated.
   * @param classN number of classes for each random model
   * @param statN number of stations for each random model
   * @param modelN number of random models
   * @param modelType type of random models
   * @param simRuns number of simulation runs for each model
   */
  public static void comboTest(int classN, int statN, int modelN, int modelType, int simRuns) {

    //debug level = INFO with extended info.
    BatchTest btest = new BatchTest(Level.INFO, true);

    for (int m = 0; m < modelN; m++) {

      //Creates a random model of the specified type
      //uses automatic seed for model generation
      RandomMVAModelGenerator randomGen = new RandomMVAModelGenerator(classN, statN, modelType, -1);
      File model = randomGen.saveToFile();

      //result check with extended info
      ResultsCheck check = new ResultsCheck(model.getAbsolutePath(), true);
      //multiple runs
      check.checkRes(simRuns);
    }

  }

  /**
   * Executes multiple runs for one model, generated with the passed seed.
   * The seed used for simulations is automatically generated.
   * @param classN number of classes for the random model
   * @param statN number of stations for the random model
   * @param modelGenSeed the seed used to generate the random model
   * @param modelType type of random model
   * @param simRuns number of simulation runs for the model
   */
  public static void test_fixedModelSeed(int classN, int statN, long modelGenSeed, int modelType, int simRuns) {

    //debug level = INFO with extended info.
    BatchTest btest = new BatchTest(Level.INFO, true);

    //Creates a random model of the specified type
    //uses passed seed for model generation
    RandomMVAModelGenerator randomGen = new RandomMVAModelGenerator(classN, statN, modelType, modelGenSeed);
    File model = randomGen.saveToFile();

    //result check with extended info
    ResultsCheck check = new ResultsCheck(model.getAbsolutePath(), true);
    //multiple runs (of course with automatic seed)
    check.checkRes(simRuns);

  }

  /**
   * Executes a single test with the passed simulation seed. The seeds used
   * for model generation is automatically generated.
   * @param classN number of classes for each random model
   * @param statN number of stations for each random model
   * @param modelType type of random models
   * @param simSeed the simulation seed
   */
  public static void test_fixedSimSeed(int classN, int statN, int modelType, long simSeed) {

    //debug level = INFO with extended info.
    BatchTest btest = new BatchTest(Level.INFO, true);

    //Creates a random model of the specified type
    //uses automatic seed for model generation
    RandomMVAModelGenerator randomGen = new RandomMVAModelGenerator(classN, statN, modelType, -1);
    File model = randomGen.saveToFile();

    //result check with extended info and fixed seed
    ResultsCheck check = new ResultsCheck(model.getAbsolutePath(), true, simSeed);
    //fixed seed -> only one run
    check.checkRes();
  }

  /**
   * Executes a single test with the passed seeds for model generation and for simulation.
   * @param classN number of classes for each random model
   * @param statN number of stations for each random model
   * @param modelGenSeed the seed used to generate the random model
   * @param modelType type of random models
   * @param simSeed the simulation seed
   */
  public static void test_fixedSimSeedAndModelSeed(int classN, int statN, long modelGenSeed, int modelType, long simSeed) {

    //debug level = INFO with extended info.
    BatchTest btest = new BatchTest(Level.INFO, true);

    //Creates a random model of the specified type
    //uses the fixed seed for model generation
    RandomMVAModelGenerator randomGen = new RandomMVAModelGenerator(classN, statN, modelType, modelGenSeed);
    File model = randomGen.saveToFile();

    //result check with extended info and fixed seed
    ResultsCheck check = new ResultsCheck(model.getAbsolutePath(), true, simSeed);
    //fixed seed -> only one run
    check.checkRes();

  }

  /**
   * Executes a single test with the passed seeds for model generation and for simulation.
   * Of course all the sim runs will be exactly the same: this method is used only to
   * test jsim performance.
   * @param classN number of classes for each random model
   * @param statN number of stations for each random model
   * @param modelGenSeed the seed used to generate the random model
   * @param modelType type of random models
   * @param runs number of runs
   * @param simSeed the simulation seed
   */
  public static void test_fixedSimSeedAndModelSeed_runs(int classN, int statN, long modelGenSeed, int modelType, int runs, long simSeed) {

    //debug level = INFO with extended info.
    BatchTest btest = new BatchTest(Level.INFO, true);

    //Creates a random model of the specified type
    //uses the fixed seed for model generation
    RandomMVAModelGenerator randomGen = new RandomMVAModelGenerator(classN, statN, modelType, modelGenSeed);
    File model = randomGen.saveToFile();

    //result check with extended info and fixed seed
    ResultsCheck check = new ResultsCheck(model.getAbsolutePath(), true, simSeed);
    //fixed seed -> only one run
    check.checkRes(runs);

  }

}
TOP

Related Classes of jmt.engine.testSystem.BatchTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.