in src/main/java/com/uber/rss/tools/StreamServerStressToolLongRun.java [43:107]
public void run() {
long startTime = System.currentTimeMillis();
long numIterations = 0;
long elapsedMinutes = 0;
Random random = new Random();
String[] compressCodecValues = new String[] {"", Compression.COMPRESSION_CODEC_LZ4};
while (System.currentTimeMillis() - startTime < runMinutes * 60 * 1000) {
int writeClientQueueSize = 0;
int writeClientThreads = 0;
boolean useAsyncWriteClient = random.nextBoolean();
if (useAsyncWriteClient) {
writeClientQueueSize = 1 + random.nextInt(10000);
writeClientThreads = 1 + random.nextInt(10);
}
boolean useConnectionPool = random.nextBoolean();
StreamServerStressTool tool = new StreamServerStressTool();
int numServers = 1 + random.nextInt(maxNumServers);
int numReplicas = Math.min(1 + random.nextInt(maxNumReplicas), numServers);
int numServerGroups = numServers / numReplicas;
int partitionFanout = 1 + random.nextInt(numServerGroups);
logger.info(String.format("Using servers: %s, replicas: %s, partition fanout: %s", numServers, numReplicas, partitionFanout));
tool.setMaxWait(3600000L);
tool.setNumServers(numServers);
tool.setWorkDir(workDir);
tool.setNumServerThreads(1 + random.nextInt(100));
tool.setWriteClientQueueSize(writeClientQueueSize);
tool.setWriteClientThreads(writeClientThreads);
tool.setNumBytes((long)(random.nextFloat() * maxNumBytes));
tool.setNumMaps(1 + random.nextInt(maxNumMaps));
tool.setNumMapAttempts(1 + random.nextInt(maxNumMapAttempts));
tool.setMapDelay(1 + random.nextInt(10000));
tool.setNumPartitions(1 + random.nextInt(maxNumPartitions));
tool.setNumSplits(1 + random.nextInt(maxNumSplits));
tool.setNumReplicas(numReplicas);
tool.setPartitionFanout(partitionFanout);
tool.setUseConnectionPool(useConnectionPool);
try {
logger.info("Running tool: " + tool);
tool.run();
numIterations++;
} catch (Throwable ex) {
elapsedMinutes = (System.currentTimeMillis() - startTime)/(60 * 1000);
logger.error(String.format("Failed after running %s minutes with %s iterations, args: %s",
elapsedMinutes,
numIterations,
tool),
ex);
System.exit(-1);
} finally {
tool.cleanup();
}
}
elapsedMinutes = (System.currentTimeMillis() - startTime)/(60 * 1000);
logger.info(String.format("Succeeded after running %s minutes with %s iterations", elapsedMinutes, numIterations));
}