public void run()

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));
    }