Ejemplo n.º 1
0
  /**
   * Initialize the workload. Called once, in the main client thread, before any operations are
   * started.
   *
   * @throws IOException
   * @throws ClassNotFoundException
   */
  public void init(Props props) throws IOException {
    CmdProvider cmdProvider;
    int readPercent = props.getInt(Benchmark.SELECT, 0);
    int writePercent = props.getInt(Benchmark.INSERT, 0);

    double readProportion = (double) readPercent / (double) 100;
    double writeProportion = (double) writePercent / (double) 100;

    if (readProportion + writeProportion > 0) {
      double sum = readProportion + writeProportion;
      readProportion = readProportion / sum;
      writeProportion = writeProportion / sum;
    }

    if (readProportion > 0) {
      cmdProvider = new QueryProvider(props);
      operationChooser.addValue(readProportion, cmdProvider.getName());
      operations.put(cmdProvider.getName(), cmdProvider);
    }
    if (writeProportion > 0) {
      cmdProvider = new InsertProvider(props);
      operationChooser.addValue(writeProportion, cmdProvider.getName());
      operations.put(cmdProvider.getName(), cmdProvider);
    }
    if (props.containsKey(Benchmark.RECORD_FILE)) {
      String cmd = props.getString(Benchmark.CMD_PROVIDER, "");
      if (StringUtils.startsWith(cmd, "ctu_minisearch")) {
        cmdProvider = new CtuMiniSearchProvider(props);
      } else {
        cmdProvider = new SqlFileProvider(props);
      }
      operationChooser.addValue(1.0, cmdProvider.getName());
      operations.put(cmdProvider.getName(), cmdProvider);
    }
  }
Ejemplo n.º 2
0
  public void initializeWorkload(Props workloadProps) throws MileException, IOException {

    if (!this.storeInitialized) {
      throw new MileException("Store not initialized correctly");
    }

    // Calculate perThreadThroughputPerMs = default unlimited (-1)
    this.targetThroughput = workloadProps.getInt(TARGET_THROUGHPUT, -1);
    this.perThreadThroughputPerMs = -1;
    if (targetThroughput > 0) {
      double targetperthread = ((double) targetThroughput) / ((double) numThreads);
      this.perThreadThroughputPerMs = targetperthread / 1000.0;
    }

    // Compulsory parameters
    if (workloadProps.containsKey(OPS_COUNT)) {
      this.opsCount = workloadProps.getInt(OPS_COUNT);
    } else {
      throw new MileException("Missing compulsory parameters - " + OPS_COUNT);
    }

    // Initialize measurement
    Metrics.setProperties(workloadProps);
    Metrics.getInstance().reset();

    // Initialize workload
    this.workLoad = new Workload();
    this.workLoad.init(workloadProps);
  }