blob: 1fd91510fb4d2f24babe5f2a73f9f70a40055d59 [file] [log] [blame]
/**
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.twitter.distributedlog.benchmark.stream;
import com.twitter.distributedlog.DistributedLogConstants;
import org.apache.commons.cli.CommandLine;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
abstract class AbstractReaderBenchmark extends StreamBenchmark {
protected static final Logger logger = LoggerFactory.getLogger(SyncReaderBenchmark.class);
protected ReadMode readMode = ReadMode.LATEST;
protected long fromTxId = DistributedLogConstants.INVALID_TXID;
protected long rewindMs = 0L;
protected int batchSize = 1;
protected AbstractReaderBenchmark() {
options.addOption("t", "tx-id", true, "Transaction ID to start read from when reading in mode 'position'");
options.addOption("r", "rewind", true, "Time to rewind back to read from when reading in mode 'rewind' (in milliseconds)");
options.addOption("m", "mode", true, "Read Mode : [oldest, latest, rewind, position]");
options.addOption("b", "batch-size", true, "Read batch size");
}
@Override
protected void parseCommandLine(CommandLine cmdline) {
if (cmdline.hasOption("m")) {
String mode = cmdline.getOptionValue("m");
try {
readMode = ReadMode.valueOf(mode.toUpperCase());
} catch (IllegalArgumentException iae) {
logger.error("Invalid read mode {}.", mode);
printUsage();
System.exit(0);
}
} else {
printUsage();
System.exit(0);
}
if (cmdline.hasOption("t")) {
fromTxId = Long.parseLong(cmdline.getOptionValue("t"));
}
if (cmdline.hasOption("r")) {
rewindMs = Long.parseLong(cmdline.getOptionValue("r"));
}
if (cmdline.hasOption("b")) {
batchSize = Integer.parseInt(cmdline.getOptionValue("b"));
}
logger.info("Start reading from transaction id {}, rewind {} ms.", fromTxId, rewindMs);
}
}