alluxio.stress.cli.AbstractStressBench Maven / Gradle / Ivy
/*
* The Alluxio Open Foundation licenses this work under the Apache License, version 2.0
* (the "License"). You may not use this work except in compliance with the License, which is
* available at www.apache.org/licenses/LICENSE-2.0
*
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
* either express or implied, as more fully set forth in the License.
*
* See the NOTICE file distributed with this work for information regarding copyright ownership.
*/
package alluxio.stress.cli;
import alluxio.stress.TaskResult;
import alluxio.stress.common.FileSystemParameters;
import com.beust.jcommander.ParametersDelegate;
import com.google.common.collect.ImmutableList;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.List;
/**
* An abstraction for stress tests which generates a specific workload
* on a certain Alluxio component (master, worker, ClientIO).
*
* @param the type of task result
* @param the type of task parameter
*/
public abstract class AbstractStressBench
extends Benchmark {
private static final Logger LOG = LoggerFactory.getLogger(AbstractStressBench.class);
@ParametersDelegate
protected P mParameters;
/**
* Validates the parameters.
*/
public abstract void validateParams() throws Exception;
@Override
public String run(String[] args) throws Exception {
parseParameters(args);
validateParams();
// if the benchmark execute multiple tasks
if (mParameters.mWriteType.equals("ALL")) {
List writeTypes = ImmutableList.of("MUST_CACHE", "CACHE_THROUGH",
"ASYNC_THROUGH", "THROUGH");
System.out.format("Now executing %s with all possible write "
+ "types %s %n", getClass().toString(), writeTypes);
for (int i = 0; i < args.length; i++) {
if (args[i].equals("--write-type")) {
for (String type : writeTypes) {
// change write type argument
args[i + 1] = type;
mParameters.mWriteType = type;
System.out.println("-----------------------------------------------------");
System.out.format("Now executing write type %s... %n", type);
try {
String result = runSingleTask(args);
System.out.println(result);
} catch (Exception e) {
System.out.format("Exception occurred when executing parameter"
+ " --write-type %s %n", type);
System.out.println(e.getMessage());
}
}
System.out.println("-----------------------------------------------------");
return "All tasks finished. You can find the test results in the outputs above.";
}
}
}
// if this is a single task, just execute the task
return runSingleTask(args);
}
}