public static void main()

in bookkeeper-server/src/main/java/org/apache/bookkeeper/verifier/BookkeeperVerifierMain.java [48:176]


    public static void main(String[] args) throws Exception {

        Options options = new Options();
        options.addOption(
                "ledger_path", true, "Hostname or IP of bookie to benchmark");
        options.addOption(
                "zookeeper",
                true,
                "Zookeeper ensemble, (default \"localhost:2181\")");
        options.addOption(
                "ensemble_size", true, "Bookkeeper client ensemble size");
        options.addOption(
                "write_quorum", true, "Bookkeeper client write quorum size");
        options.addOption("ack_quorum", true, "Bookkeeper client ack quorum size");
        options.addOption("duration", true, "Run duration in seconds");
        options.addOption("drain_timeout", true, "Seconds to wait for in progress ops to end");
        options.addOption(
                "target_concurrent_ledgers",
                true,
                "target number ledgers to write to concurrently");
        options.addOption(
                "target_concurrent_writes",
                true,
                "target number of concurrent writes per ledger");
        options.addOption(
                "target_write_group",
                true,
                "target number of entries to write at a time");
        options.addOption(
                "target_read_group",
                true,
                "target number of entries to read at a time");
        options.addOption("target_ledgers", true, "Target number of ledgers");
        options.addOption("target_ledger_size", true, "Target size per ledger");
        options.addOption("target_entry_size", true, "Target size per entry");
        options.addOption(
                "target_concurrent_reads", true, "Number of reads to maintain");
        options.addOption(
                "cold_to_hot_ratio", true, "Ratio of reads on open ledgers");
        options.addOption("help", false, "Print this help message");

        CommandLineParser parser = new PosixParser();
        CommandLine cmd = null;
        try {
            cmd = parser.parse(options, args);
        } catch (ParseException e) {
            printHelpAndExit(options, "Unable to parse command line", 1);
        }

        if (cmd.hasOption("help")) {
            printHelpAndExit(options, "Help:", 0);
        }

        String ledgerPath = cmd.getOptionValue("ledger_path", "/ledgers");
        String zkString = cmd.getOptionValue("zookeeper", "localhost:2181");
        int ensembleSize = 0;
        int writeQuorum = 0;
        int ackQuorum = 0;
        int duration = 0;
        int drainTimeout = 0;
        int targetConcurrentLedgers = 0;
        int targetConcurrentWrites = 0;
        int targetWriteGroup = 0;
        int targetReadGroup = 0;
        int targetLedgers = 0;
        long targetLedgerSize = 0;
        int targetEntrySize = 0;
        int targetConcurrentReads = 0;
        double coldToHotRatio = 0;

        try {
            ensembleSize = Integer.parseInt(cmd.getOptionValue("ensemble_size", "3"));
            writeQuorum = Integer.parseInt(cmd.getOptionValue("write_quorum", "3"));
            ackQuorum = Integer.parseInt(cmd.getOptionValue("ack_quorum", "2"));
            duration = Integer.parseInt(cmd.getOptionValue("duration", "600"));
            drainTimeout = Integer.parseInt(cmd.getOptionValue("drain_timeout", "10"));
            targetConcurrentLedgers =
                    Integer.parseInt(cmd.getOptionValue("target_concurrent_ledgers", "4"));
            targetConcurrentWrites =
                    Integer.parseInt(cmd.getOptionValue("target_concurrent_writes", "12"));
            targetWriteGroup =
                    Integer.parseInt(cmd.getOptionValue("target_write_group", "4"));
            targetReadGroup =
                    Integer.parseInt(cmd.getOptionValue("target_read_group", "4"));
            targetLedgers = Integer.parseInt(cmd.getOptionValue("target_ledgers", "32"));
            targetLedgerSize = Long.parseLong(cmd.getOptionValue(
                    "target_ledger_size",
                    "33554432"));
            targetEntrySize = Integer.parseInt(cmd.getOptionValue(
                    "target_entry_size",
                    "16384"));
            targetConcurrentReads = Integer.parseInt(cmd.getOptionValue(
                    "target_concurrent_reads",
                    "16"));
            coldToHotRatio = Double.parseDouble(
                    cmd.getOptionValue("cold_to_hot_ratio", "0.5"));
        } catch (NumberFormatException e) {
            printHelpAndExit(options, "Invalid argument", 0);
        }

        ClientConfiguration conf = new ClientConfiguration();
        conf.setMetadataServiceUri("zk://" + zkString + ledgerPath);
        BookKeeper bkclient = new BookKeeper(conf);

        BookkeeperVerifier verifier = new BookkeeperVerifier(
                new DirectBookkeeperDriver(bkclient),
                ensembleSize,
                writeQuorum,
                ackQuorum,
                duration,
                drainTimeout,
                targetConcurrentLedgers,
                targetConcurrentWrites,
                targetWriteGroup,
                targetReadGroup,
                targetLedgers,
                targetLedgerSize,
                targetEntrySize,
                targetConcurrentReads,
                coldToHotRatio);
        try {
            verifier.run();
        } catch (Exception e) {
            e.printStackTrace();
            System.exit(1);
        } finally {
            bkclient.close();
        }
    }