mirror of
https://github.com/nosqlbench/nosqlbench.git
synced 2025-02-25 18:55:28 -06:00
support all cqld4 driver options as activity params when named as driver.name.
This commit is contained in:
parent
36eadce1e2
commit
a94273c689
@ -2,12 +2,15 @@ package io.nosqlbench.adapter.cqld4;
|
|||||||
|
|
||||||
import com.datastax.oss.driver.api.core.CqlSession;
|
import com.datastax.oss.driver.api.core.CqlSession;
|
||||||
import com.datastax.oss.driver.api.core.CqlSessionBuilder;
|
import com.datastax.oss.driver.api.core.CqlSessionBuilder;
|
||||||
import com.datastax.oss.driver.api.core.config.DriverConfigLoader;
|
import com.datastax.oss.driver.api.core.config.*;
|
||||||
import com.datastax.oss.driver.api.core.config.OptionsMap;
|
|
||||||
import com.datastax.oss.driver.api.core.config.TypedDriverOption;
|
|
||||||
import com.datastax.oss.driver.internal.core.config.composite.CompositeDriverConfigLoader;
|
import com.datastax.oss.driver.internal.core.config.composite.CompositeDriverConfigLoader;
|
||||||
|
import com.google.gson.Gson;
|
||||||
|
import com.google.gson.GsonBuilder;
|
||||||
import io.nosqlbench.engine.api.util.SSLKsFactory;
|
import io.nosqlbench.engine.api.util.SSLKsFactory;
|
||||||
import io.nosqlbench.nb.api.config.standard.*;
|
import io.nosqlbench.nb.api.config.standard.ConfigModel;
|
||||||
|
import io.nosqlbench.nb.api.config.standard.NBConfigModel;
|
||||||
|
import io.nosqlbench.nb.api.config.standard.NBConfiguration;
|
||||||
|
import io.nosqlbench.nb.api.config.standard.Param;
|
||||||
import io.nosqlbench.nb.api.content.Content;
|
import io.nosqlbench.nb.api.content.Content;
|
||||||
import io.nosqlbench.nb.api.content.NBIO;
|
import io.nosqlbench.nb.api.content.NBIO;
|
||||||
import io.nosqlbench.nb.api.errors.BasicError;
|
import io.nosqlbench.nb.api.errors.BasicError;
|
||||||
@ -36,16 +39,41 @@ public class Cqld4Space {
|
|||||||
session = createSession(cfg);
|
session = createSession(cfg);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static NBConfigModel getDriverOptionsModel() {
|
||||||
|
ConfigModel driverOpts = ConfigModel.of(DriverConfig.class);
|
||||||
|
Iterable<TypedDriverOption<?>> builtins = TypedDriverOption.builtInValues();
|
||||||
|
for (TypedDriverOption<?> builtin : builtins) {
|
||||||
|
String path = builtin.getRawOption().getPath();
|
||||||
|
Class<?> rawType = builtin.getExpectedType().getRawType();
|
||||||
|
driverOpts.add(Param.optional("driver."+path,rawType));
|
||||||
|
}
|
||||||
|
return driverOpts.asReadOnly();
|
||||||
|
}
|
||||||
|
|
||||||
private CqlSession createSession(NBConfiguration cfg) {
|
private CqlSession createSession(NBConfiguration cfg) {
|
||||||
CqlSessionBuilder builder = new CqlSessionBuilder();
|
CqlSessionBuilder builder = new CqlSessionBuilder();
|
||||||
|
|
||||||
|
// stop insights for testing
|
||||||
OptionsMap defaults = new OptionsMap();
|
OptionsMap defaults = new OptionsMap();
|
||||||
defaults.put(TypedDriverOption.MONITOR_REPORTING_ENABLED, false);
|
defaults.put(TypedDriverOption.MONITOR_REPORTING_ENABLED, false); // We don't need to do this every time we run a test or sanity check
|
||||||
DriverConfigLoader driverConfigLoader = DriverConfigLoader.fromMap(defaults);
|
DriverConfigLoader dcl = DriverConfigLoader.fromMap(defaults);
|
||||||
|
|
||||||
DriverConfigLoader mainCfgLoader = resolveConfigLoader(cfg).orElse(DriverConfigLoader.fromMap(OptionsMap.driverDefaults()));
|
// add user-provided parameters
|
||||||
driverConfigLoader = new CompositeDriverConfigLoader(driverConfigLoader,mainCfgLoader);
|
NBConfiguration driverCfg = getDriverOptionsModel().extractConfig(cfg);
|
||||||
builder.withConfigLoader(driverConfigLoader);
|
if (!driverCfg.isEmpty()) {
|
||||||
|
Map<String,Object> remapped = new LinkedHashMap<>();
|
||||||
|
driverCfg.getMap().forEach((k,v) -> remapped.put(k.substring("driver.".length()),v));
|
||||||
|
Gson gson = new GsonBuilder().setPrettyPrinting().create();
|
||||||
|
String remappedViaSerdesToSatisfyObtuseConfigAPI = gson.toJson(remapped);
|
||||||
|
DriverConfigLoader userProvidedOptions = DriverConfigLoader.fromString(remappedViaSerdesToSatisfyObtuseConfigAPI);
|
||||||
|
dcl = new CompositeDriverConfigLoader(dcl, userProvidedOptions);
|
||||||
|
}
|
||||||
|
|
||||||
|
// add referenced config from 'cfg' activity parameter
|
||||||
|
DriverConfigLoader cfgDefaults = resolveConfigLoader(cfg).orElse(DriverConfigLoader.fromMap(OptionsMap.driverDefaults()));
|
||||||
|
dcl = new CompositeDriverConfigLoader(dcl, cfgDefaults);
|
||||||
|
|
||||||
|
builder.withConfigLoader(dcl);
|
||||||
|
|
||||||
int port = cfg.getOrDefault("port", 9042);
|
int port = cfg.getOrDefault("port", 9042);
|
||||||
|
|
||||||
@ -224,6 +252,7 @@ public class Cqld4Space {
|
|||||||
.add(Param.optional("password"))
|
.add(Param.optional("password"))
|
||||||
.add(Param.optional("passfile"))
|
.add(Param.optional("passfile"))
|
||||||
.add(SSLKsFactory.get().getConfigModel())
|
.add(SSLKsFactory.get().getConfigModel())
|
||||||
|
.add(getDriverOptionsModel())
|
||||||
.asReadOnly();
|
.asReadOnly();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user