package org.apache.cassandra.stress.settings; import java.util.ArrayList; import java.util.List; // Settings common to commands that operate over multiple keys at once public class SettingsCommandMulti extends SettingsCommand { public final int keysAtOnce; public SettingsCommandMulti(Command type, Options options) { super(type, options.parent); this.keysAtOnce = Integer.parseInt(options.maxKeys.value()); } // Option Declarations static final class Options extends GroupedOptions { final GroupedOptions parent; Options(GroupedOptions parent) { this.parent = parent; } final OptionSimple maxKeys = new OptionSimple("at-once=", "[0-9]+", "1000", "Number of keys per operation", false); @Override public List<? extends Option> options() { final List<Option> options = new ArrayList<>(); options.add(maxKeys); options.addAll(parent.options()); return options; } } // CLI Utility Methods public static SettingsCommand build(Command type, String[] params) { GroupedOptions options = GroupedOptions.select(params, new Options(new Uncertainty()), new Options(new Count())); if (options == null) { printHelp(type); System.out.println("Invalid " + type + " options provided, see output for valid options"); System.exit(1); } return new SettingsCommandMulti(type, (Options) options); } public static void printHelp(Command type) { GroupedOptions.printOptions(System.out, type.toString().toLowerCase(), new Options(new Uncertainty()), new Options(new Count())); } public static Runnable helpPrinter(final Command type) { return new Runnable() { @Override public void run() { printHelp(type); } }; } }