in benchmark-java/src/main/java/org/apache/pekko/grpc/benchmarks/qps/AbstractConfigurationBuilder.java [104:142]
public final T build(String[] args) {
T config = newConfiguration();
Map<String, Param> paramMap = getParamMap();
Set<String> appliedParams = new TreeSet<String>(CASE_INSENSITIVE_ORDER);
for (String arg : args) {
if (!arg.startsWith("--")) {
throw new IllegalArgumentException("All arguments must start with '--': " + arg);
}
String[] pair = arg.substring(2).split("=", 2);
String key = pair[0];
String value = "";
if (pair.length == 2) {
value = pair[1];
}
// If help was requested, just throw now to print out the usage.
if (HELP.getName().equalsIgnoreCase(key)) {
throw new IllegalArgumentException("Help requested");
}
Param param = paramMap.get(key);
if (param == null) {
throw new IllegalArgumentException("Unsupported argument: " + key);
}
param.setValue(config, value);
appliedParams.add(key);
}
// Ensure that all required options have been provided.
for (Param param : getParams()) {
if (param.isRequired() && !appliedParams.contains(param.getName())) {
throw new IllegalArgumentException("Missing required option '--"
+ param.getName() + "'.");
}
}
return build0(config);
}