From c46e097e502813e974f706b85064fe03d0a1d544 Mon Sep 17 00:00:00 2001 From: Jonathan Shook Date: Fri, 8 Dec 2023 19:37:06 -0600 Subject: [PATCH 01/26] remove deprecated CommandTemplate --- .../api/templating/CommandTemplate.java | 342 ------------------ devdocs/sketches/invokable_models.md | 2 +- .../api/activityimpl/SimpleActivity.java | 48 +-- .../api/templating/CommandTemplateTest.java | 63 ---- 4 files changed, 2 insertions(+), 453 deletions(-) delete mode 100644 adapters-api/src/main/java/io/nosqlbench/adapters/api/templating/CommandTemplate.java delete mode 100644 engine-core/src/test/java/io/nosqlbench/engine/api/templating/CommandTemplateTest.java diff --git a/adapters-api/src/main/java/io/nosqlbench/adapters/api/templating/CommandTemplate.java b/adapters-api/src/main/java/io/nosqlbench/adapters/api/templating/CommandTemplate.java deleted file mode 100644 index c29fb0a2e..000000000 --- a/adapters-api/src/main/java/io/nosqlbench/adapters/api/templating/CommandTemplate.java +++ /dev/null @@ -1,342 +0,0 @@ -/* - * Copyright (c) 2022-2023 nosqlbench - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package io.nosqlbench.adapters.api.templating; - -import io.nosqlbench.adapters.api.activityconfig.yaml.OpTemplate; -import io.nosqlbench.nb.api.config.params.ParamsParser; -import io.nosqlbench.nb.api.errors.BasicError; -import io.nosqlbench.virtdata.core.bindings.BindingsTemplate; -import io.nosqlbench.virtdata.core.templates.ParsedTemplateString; -import io.nosqlbench.virtdata.core.templates.StringBindings; -import io.nosqlbench.virtdata.core.templates.StringBindingsTemplate; -import org.apache.logging.log4j.Logger; -import org.apache.logging.log4j.LogManager; - -import java.util.*; -import java.util.function.Function; - -/** - * This is a general purpose template which uses a map of named parameters. - * The result is a template which is comprised of a map of names and values, which can - * be used to create a cycle-specific map of values that can describe a literal operation - * for some native driver. How this map is used is context dependent. - * - * Generally speaking, the properties in this map are taken as parameters or field values, - * or a command verb. How the keys in the resulting map are used to construct an operation - * for execution is entirely dependent on how a developer wants to map these fields to - * a native driver's API. - * - * A CommandTemplate can be crated directly, or from an OpTemplate. Additional map parsers - * may be provided when needed for specialized forms of syntax or variations which should also - * be supported. See the constructor docs for details on these variations. - */ -@Deprecated(forRemoval = true) -public class CommandTemplate { - - private final static Logger logger = LogManager.getLogger(CommandTemplate.class); - - private final String name; - private final Map statics = new HashMap<>(); - private final Map dynamics = new HashMap<>(); - - transient private final int mapsize; - - /** - * Create a CommandTemplate directly from an OpTemplate. - * - * In this form, if {@link OpTemplate#getOp()} - * is non-null, then it taken as a line-oriented value and parsed according to default {@link ParamsParser} behavior. - * - * Additionally, any op params provided are considered as entries to add to the command template's map. - * - * @param optpl An OpTemplate - */ - public CommandTemplate(OpTemplate optpl) { - this(optpl.getName(), optpl.getOp().toString(), optpl.getParamsAsValueType(String.class), optpl.getBindings(), List.of()); - } - - /** - * Create a CommandTemplate directly from an OpTemplate, as in {@link #CommandTemplate(OpTemplate)}, - * with added support for parsing the oneline form with the provided parsers. - * - * In this form, if {@link OpTemplate#getOp()} - * is non-null, then it taken as a line-oriented value and parsed according to default {@link ParamsParser} behavior. - * However, the provided parsers (if any) are used first in order to match alternate forms of syntax. - * - * See {@link CommandTemplate#CommandTemplate(String, String, Map, Map, List)} for full details on the provided - * parsers. - * - * @param optpl An OpTemplate - * @param parsers A list of parser functions - */ - public CommandTemplate(OpTemplate optpl, List>> parsers) { - this(optpl.getName(), optpl.getStmt().orElseThrow(), optpl.getParamsAsValueType(String.class), optpl.getBindings(), parsers); - } - - /** - * Create a command template from a set of optional properties. - * - *

The parsers provided should honor these expectations: - *

    - *
  • If the one-line format is not recognized, the parser should return null.
  • - *
  • If the one-line format is recognized, and the values provided are valid, then they should be - * returned as a {@link Map} of {@link String} to {@link String}.
  • - *
  • Otherwise the parser should throw an exception, signifying either an internal parser error or - * invalid data.
  • - *
- * - * If none of the provided parsers (if any) return a map of values for the one-line format, then the default - * behavior of {@link ParamsParser} is used. - *

- * - * @param name The name of the command template - * @param op An object version of the parameters to be parsed by {@link ParamsParser} - * @param params A set of named parameters and values in name:value form. - * @param bindings A set of named bindings in name:recipe form. - * @param optionalParsers A set of functions which, if provided, will be used to read the oneline form. - */ - public CommandTemplate( - String name, - String op, - Map params, - Map bindings, - List>> optionalParsers - ) { - - this.name = name; - Map cmd = new HashMap<>(); - - // Only parse and inject the one-line form if it is defined. - // The first parser to match and return a map will be the last one tried. - // If none of the supplemental parsers work, the default params parser is used - - String oneline; - - if (op instanceof CharSequence) { - oneline = op; - } else { - throw new BasicError("Unable to create a oneline version of the CommandTemplate with op type of " + op.getClass().getSimpleName()); - } - if (oneline != null) { - List>> parserlist = new ArrayList<>(optionalParsers); - parserlist.add(s -> ParamsParser.parse(s, false)); - boolean didParse = false; - for (Function> parser : parserlist) { - Map parsed = parser.apply(oneline); - if (parsed != null) { - logger.debug(() -> "parsed request: " + parsed); - cmd.putAll(parsed); - didParse = true; - break; - } - } - if (!didParse) { - throw new RuntimeException("A oneline form was provided for the command template, but none of the " + - "provided" + - " parsers were able to parse it, not even ParamsParser.parse(...)"); - } - } - - // Always add the named params, but warn if they overwrite any oneline named params - params.forEach((k, v) -> { - if (cmd.containsKey(k)) { - logger.warn("command property override: '" + k + "' superseded by param form with value '" + v + "'"); - } - }); - cmd.putAll(params); - - cmd.forEach((param, value) -> { - ParsedTemplateString paramTemplate = new ParsedTemplateString(value, bindings); - if (paramTemplate.getBindPoints().size() > 0) { - BindingsTemplate paramBindings = new BindingsTemplate(paramTemplate.getBindPoints()); - StringBindings paramStringBindings = new StringBindingsTemplate(value, paramBindings).resolve(); - dynamics.put(param, paramStringBindings); - } else { - statics.put(param, value); - } - }); - this.mapsize = statics.size() + dynamics.size(); - } - - - /** - * Apply the provided binding functions to the command template, yielding a map with concrete values - * to be used by a native command. - * - * @param cycle The cycle value which will be used by the binding functions - * @return A map of specific values - */ - public Map getCommand(long cycle) { - HashMap map = new HashMap<>(mapsize); - map.putAll(statics); - - dynamics.forEach((k, v) -> { - map.put(k, v.bind(cycle)); - }); - return map; - } - - /** - * The name of the operation - */ - public String getName() { - return name; - } - - /** - * True if the command template contains all static (non-binding) values. - */ - public boolean isStatic() { - return this.dynamics.size() == 0; - } - - public boolean isStatic(String keyname) { - return this.statics.containsKey(keyname); - } - - public boolean isStaticSet(String... keynames) { - for (String keyname : keynames) { - if (!isStatic(keyname)) { - return false; - } - } - return true; - } - - public boolean isDynamicSet(String... keynames) { - for (String keyname : keynames) { - if (!isDynamic(keyname)) { - return false; - } - } - return true; - } - - public boolean isDynamic(String keyname) { - return this.dynamics.containsKey(keyname); - } - - public boolean containsKey(String keyname) { - return this.statics.containsKey(keyname) || this.dynamics.containsKey(keyname); - } - - /** - * The set of key names known by this command template. - */ - public Set getPropertyNames() { - return this.statics.keySet(); - } - - - @Override - public String toString() { - return "CommandTemplate{" + - "name='" + name + '\'' + - ", statics=" + statics + - ", dynamics=" + dynamics + - '}'; - } - - public String getStatic(String staticVar) { - return statics.get(staticVar); - } - - public String getDynamic(String dynamicVar, long input) { - return dynamics.get(dynamicVar).bind(input); - } - - public String get(String var, long input) { - if (statics.containsKey(var)) { - return statics.get(var); - } - if (dynamics.containsKey(var)) { - return dynamics.get(var).bind(input); - } - return null; - } - - public String getOr(String var, long input, String defaultVal) { - if (statics.containsKey(var)) { - return statics.get(var); - } - if (dynamics.containsKey(var)) { - return dynamics.get(var).bind(input); - } - return defaultVal; - } - - public String getStaticOr(String staticVar, String defaultVal) { - if (statics.containsKey(staticVar)) { - return statics.get(staticVar); - } - return defaultVal; - } - - public String getDynamicOr(String dynamicVar, long input, String defaultVal) { - if (dynamics.containsKey(dynamicVar)) { - return getDynamic(dynamicVar, input); - } else { - return defaultVal; - } - } - - @Override - public boolean equals(Object o) { - if (this == o) return true; - if (o == null || getClass() != o.getClass()) return false; - CommandTemplate that = (CommandTemplate) o; - return Objects.equals(name, that.name) && Objects.equals(statics, that.statics) && Objects.equals(dynamics, that.dynamics); - } - - @Override - public int hashCode() { - return Objects.hash(name, statics, dynamics); - } - - public boolean containsAny(String... varNames) { - for (String varName : varNames) { - if (this.containsKey(varName)) { - return true; - } - } - return false; - } - - public boolean isStaticOrUnsetSet(String... varnames) { - for (String varname : varnames) { - if (isDynamic(varname)) { - return false; - } - } - return true; - } - - /** - * This should only be used to provide a view of a field definition, never for actual use in a payload. - * @param varname The field name which you want to explain - * @return A string representation of the field name - */ - public String getFieldDescription(String varname) { - if (this.isDynamic(varname)) { - return "dynamic: " + this.dynamics.get(varname).toString(); - } else if (this.isStatic(varname)) { - return "static: " + this.getStatic(varname); - } else { - return "UNDEFINED"; - } - } -} diff --git a/devdocs/sketches/invokable_models.md b/devdocs/sketches/invokable_models.md index 2590a5fec..48f77b53e 100644 --- a/devdocs/sketches/invokable_models.md +++ b/devdocs/sketches/invokable_models.md @@ -38,7 +38,7 @@ To clarify the differences, here are some basic examples: jmxOp.execute(); kafkaSequencer.get(cycle).write(cycle); mongoResultDoc = activity.getDatabase().runCommand(queryBson, rms.getReadPreference()); - WebDriverVerbs.execute(cycle, commandTemplate, context, dryrun); + WebDriverVerbs.execute(cycle, cmdTemplate, context, dryrun); ActivityType diff --git a/engine-core/src/main/java/io/nosqlbench/engine/api/activityimpl/SimpleActivity.java b/engine-core/src/main/java/io/nosqlbench/engine/api/activityimpl/SimpleActivity.java index ca3012efd..ba87a242b 100644 --- a/engine-core/src/main/java/io/nosqlbench/engine/api/activityimpl/SimpleActivity.java +++ b/engine-core/src/main/java/io/nosqlbench/engine/api/activityimpl/SimpleActivity.java @@ -51,7 +51,6 @@ import io.nosqlbench.adapters.api.activityimpl.uniform.DriverAdapter; import io.nosqlbench.adapters.api.activityimpl.uniform.DryRunOpDispenserWrapper; import io.nosqlbench.adapters.api.activityimpl.uniform.decorators.SyntheticOpTemplateProvider; import io.nosqlbench.adapters.api.activityimpl.uniform.flowtypes.Op; -import io.nosqlbench.adapters.api.templating.CommandTemplate; import io.nosqlbench.adapters.api.templating.ParsedOp; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; @@ -416,31 +415,6 @@ public class SimpleActivity extends NBBaseComponent implements Activity { } } - /** - * Given a function that can create an op of type from a CommandTemplate, generate - * an indexed sequence of ready to call operations. - *

- * This method works almost exactly like the , - * except that it uses the {@link CommandTemplate} semantics, which are more general and allow - * for map-based specification of operations with bindings in each field. - *

- * It is recommended to use the CommandTemplate form - * than the - * - * @param - * @param opinit - * @param strict - * @return - */ - protected OpSequence> createOpSequenceFromCommands( - Function> opinit, - boolean strict - ) { - Function f = CommandTemplate::new; - Function> opTemplateOFunction = f.andThen(opinit); - - return createOpSequence(opTemplateOFunction, strict, Optional.empty()); - } protected OpSequence> createOpSourceFromParsedOps( Map adapterCache, @@ -502,27 +476,7 @@ public class SimpleActivity extends NBBaseComponent implements Activity { } - - protected OpSequence> createOpSourceFromCommands( - Function> opinit, - NBConfiguration cfg, - List, Map>> parsers, - boolean strict - ) { - Function f = t -> new ParsedOp(t, cfg, parsers, this); - Function> opTemplateOFunction = f.andThen(opinit); - - return createOpSequence(opTemplateOFunction, strict, Optional.empty()); - } - - protected List loadParsedOps(NBConfiguration cfg, Optional defaultAdapter) { - List parsedOps = loadOpTemplates(defaultAdapter).stream().map( - ot -> new ParsedOp(ot, cfg, List.of(), this) - ).toList(); - return parsedOps; - } - - protected List loadOpTemplates(Optional defaultDriverAdapter) { + protected List loadOpTemplates(Optional> defaultDriverAdapter) { String tagfilter = activityDef.getParams().getOptionalString("tags").orElse(""); diff --git a/engine-core/src/test/java/io/nosqlbench/engine/api/templating/CommandTemplateTest.java b/engine-core/src/test/java/io/nosqlbench/engine/api/templating/CommandTemplateTest.java deleted file mode 100644 index 433e4e84a..000000000 --- a/engine-core/src/test/java/io/nosqlbench/engine/api/templating/CommandTemplateTest.java +++ /dev/null @@ -1,63 +0,0 @@ -/* - * Copyright (c) 2022-2023 nosqlbench - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package io.nosqlbench.engine.api.templating; - -import com.google.gson.Gson; -import com.google.gson.GsonBuilder; -import io.nosqlbench.adapters.api.activityconfig.OpsLoader; -import io.nosqlbench.adapters.api.activityconfig.yaml.OpTemplate; -import io.nosqlbench.adapters.api.activityconfig.yaml.OpTemplateFormat; -import io.nosqlbench.adapters.api.activityconfig.yaml.OpsDocList; -import io.nosqlbench.adapters.api.templating.CommandTemplate; -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; -import org.junit.jupiter.api.Test; - -import java.util.Map; - -import static org.assertj.core.api.Assertions.assertThat; - -public class CommandTemplateTest { - private final static Logger logger = LogManager.getLogger(CommandTemplateTest.class); - - @Test - public void testCommandTemplate() { - OpsDocList opsDocs = OpsLoader.loadString("ops:\n" + - " - s1: test1=foo test2=bar", - OpTemplateFormat.yaml, Map.of(), null); - OpTemplate optpl = opsDocs.getOps(true).get(0); - CommandTemplate ct = new CommandTemplate(optpl); - assertThat(ct.isStatic()).isTrue(); - } - - @Test - public void testCommandTemplateFormat() { - Gson gson = new GsonBuilder().setPrettyPrinting().create(); - OpsDocList stmtsDocs = OpsLoader.loadString("ops:\n" + - " - s1: test1=foo test2={bar}\n" + - " bindings:\n" + - " bar: NumberNameToString();\n", - OpTemplateFormat.yaml, Map.of(), null - ); - OpTemplate optpl = stmtsDocs.getOps(true).get(0); - CommandTemplate ct = new CommandTemplate(optpl); - String format = gson.toJson(ct); - logger.debug(format); - - } - -} From 4e407573ce484f1bcd80fe645287cef0e2088233 Mon Sep 17 00:00:00 2001 From: Jonathan Shook Date: Fri, 8 Dec 2023 19:37:09 -0600 Subject: [PATCH 02/26] minor syntax improvements --- .../engine/api/activityapi/core/Activity.java | 4 ++-- .../api/activityimpl/SimpleActivity.java | 18 ++++++++---------- 2 files changed, 10 insertions(+), 12 deletions(-) diff --git a/engine-core/src/main/java/io/nosqlbench/engine/api/activityapi/core/Activity.java b/engine-core/src/main/java/io/nosqlbench/engine/api/activityapi/core/Activity.java index 1476e2e95..1c27f5fa4 100644 --- a/engine-core/src/main/java/io/nosqlbench/engine/api/activityapi/core/Activity.java +++ b/engine-core/src/main/java/io/nosqlbench/engine/api/activityapi/core/Activity.java @@ -64,9 +64,9 @@ public interface Activity extends Comparable, ActivityDefObserver, Pro */ void closeAutoCloseables(); - MotorDispenser getMotorDispenserDelegate(); + MotorDispenser getMotorDispenserDelegate(); - void setMotorDispenserDelegate(MotorDispenser motorDispenser); + void setMotorDispenserDelegate(MotorDispenser motorDispenser); InputDispenser getInputDispenserDelegate(); diff --git a/engine-core/src/main/java/io/nosqlbench/engine/api/activityimpl/SimpleActivity.java b/engine-core/src/main/java/io/nosqlbench/engine/api/activityimpl/SimpleActivity.java index ba87a242b..71e0e396f 100644 --- a/engine-core/src/main/java/io/nosqlbench/engine/api/activityimpl/SimpleActivity.java +++ b/engine-core/src/main/java/io/nosqlbench/engine/api/activityimpl/SimpleActivity.java @@ -32,7 +32,6 @@ import io.nosqlbench.engine.api.activityapi.ratelimits.simrate.SimRateSpec; import io.nosqlbench.adapters.api.activityimpl.OpDispenser; import io.nosqlbench.adapters.api.activityimpl.OpMapper; import io.nosqlbench.nb.api.labels.NBLabels; -import io.nosqlbench.nb.api.config.standard.NBConfiguration; import io.nosqlbench.nb.api.engine.activityimpl.ActivityDef; import io.nosqlbench.nb.api.errors.BasicError; import io.nosqlbench.nb.api.errors.OpConfigError; @@ -146,12 +145,12 @@ public class SimpleActivity extends NBBaseComponent implements Activity { } @Override - public final MotorDispenser getMotorDispenserDelegate() { + public final MotorDispenser getMotorDispenserDelegate() { return motorDispenser; } @Override - public final void setMotorDispenserDelegate(MotorDispenser motorDispenser) { + public final void setMotorDispenserDelegate(MotorDispenser motorDispenser) { this.motorDispenser = motorDispenser; } @@ -485,19 +484,19 @@ public class SimpleActivity extends NBBaseComponent implements Activity { List unfilteredOps = opsDocList.getOps(false); List filteredOps = opsDocList.getOps(tagfilter, true); - if (0 == filteredOps.size()) { + if (filteredOps.isEmpty()) { // There were no ops, and it *wasn't* because they were all filtered out. // In this case, let's try to synthesize the ops as long as at least a default driver was provided // But if there were no ops, and there was no default driver provided, we can't continue // There were no ops, and it was because they were all filtered out - if (0 < unfilteredOps.size()) { + if (!unfilteredOps.isEmpty()) { throw new BasicError("There were no active op templates with tag filter '" + tagfilter + "', since all " + unfilteredOps.size() + " were filtered out."); } if (defaultDriverAdapter.isPresent() && defaultDriverAdapter.get() instanceof SyntheticOpTemplateProvider sotp) { filteredOps = sotp.getSyntheticOpTemplates(opsDocList, this.activityDef.getParams()); Objects.requireNonNull(filteredOps); - if (0 == filteredOps.size()) { + if (filteredOps.isEmpty()) { throw new BasicError("Attempted to create synthetic ops from driver '" + defaultDriverAdapter.get().getAdapterName() + '\'' + " but no ops were created. You must provide either a workload or an op parameter. Activities require op templates."); } @@ -508,13 +507,12 @@ public class SimpleActivity extends NBBaseComponent implements Activity { 2) op='inline template' 3) driver=stdout (or any other drive that can synthesize ops)"""); } - if (0 == filteredOps.size()) { - + if (filteredOps.isEmpty()) { throw new BasicError("There were no active op templates with tag filter '" + tagfilter + '\''); } } - if (0 == filteredOps.size()) { + if (filteredOps.isEmpty()) { throw new OpConfigError("No op templates found. You must provide either workload=... or op=..., or use " + "a default driver (driver=___). This includes " + ServiceLoader.load(DriverAdapter.class).stream() @@ -560,7 +558,7 @@ public class SimpleActivity extends NBBaseComponent implements Activity { * @return The sequence of operations as determined by filtering and ratios */ @Deprecated(forRemoval = true) - protected OpSequence> createOpSequence(Function> opinit, boolean strict, Optional defaultAdapter) { + protected OpSequence> createOpSequence(Function> opinit, boolean strict, Optional> defaultAdapter) { var stmts = loadOpTemplates(defaultAdapter); From 6dab0cb88d9b7e1e7ea6128d80d790f7a28b03ac Mon Sep 17 00:00:00 2001 From: Jonathan Shook Date: Fri, 8 Dec 2023 19:37:12 -0600 Subject: [PATCH 03/26] make op,stmt,workload more specific --- .../api/activityimpl/SimpleActivity.java | 38 +++++++++++-------- 1 file changed, 23 insertions(+), 15 deletions(-) diff --git a/engine-core/src/main/java/io/nosqlbench/engine/api/activityimpl/SimpleActivity.java b/engine-core/src/main/java/io/nosqlbench/engine/api/activityimpl/SimpleActivity.java index 71e0e396f..1b3408be8 100644 --- a/engine-core/src/main/java/io/nosqlbench/engine/api/activityimpl/SimpleActivity.java +++ b/engine-core/src/main/java/io/nosqlbench/engine/api/activityimpl/SimpleActivity.java @@ -596,23 +596,31 @@ public class SimpleActivity extends NBBaseComponent implements Activity { protected OpsDocList loadStmtsDocList() { try { - Optional stmt = activityDef.getParams().getOptionalString("op", "stmt", "statement"); - Optional op_yaml_loc = activityDef.getParams().getOptionalString("yaml", "workload"); - if (stmt.isPresent()) { - String op = stmt.get(); - workloadSource = "commandline:" + stmt.get(); - if (op.startsWith("{") || op.startsWith("[")) { - return OpsLoader.loadString(stmt.get(), OpTemplateFormat.json, activityDef.getParams(), null); - } else { - return OpsLoader.loadString(stmt.get(), OpTemplateFormat.inline, activityDef.getParams(), null); - } - } - if (op_yaml_loc.isPresent()) { - workloadSource = "yaml:" + op_yaml_loc.get(); - return OpsLoader.loadPath(op_yaml_loc.get(), activityDef.getParams(), "activities"); + String op = activityDef.getParams().getOptionalString("op").orElse(null); + String stmt = activityDef.getParams().getOptionalString("stmt", "statement").orElse(null); + String workload = activityDef.getParams().getOptionalString("workload").orElse(null); + if ((op!=null ? 1 : 0) + (stmt!=null ? 1 : 0) + (workload!=null ? 1 : 0) > 1) { + throw new OpConfigError("Only op, statement, or workload may be provided, not more than one."); } - return OpsDocList.none(); + if (op!=null && op.matches("^\\{[^}]+:[^}]+}$(?s)(?m)")) { + workloadSource = "commandline: (op/json): '" + op + "'"; + return OpsLoader.loadString(op, OpTemplateFormat.json, activityDef.getParams(), null); + } else if (op!=null && op.matches("^\\[[^]]+]$")) { + workloadSource = "commandline: (op/json): '" + op + "'"; + return OpsLoader.loadString(op, OpTemplateFormat.json, activityDef.getParams(), null); + } else if (op!=null) { + workloadSource = "commandline: (op/inline): '" + op + "'"; + return OpsLoader.loadString(op, OpTemplateFormat.inline, activityDef.getParams(), null); + } else if (stmt!=null) { + workloadSource = "commandline: (stmt/inline): '" + stmt + "'"; + return OpsLoader.loadString(stmt, OpTemplateFormat.inline, activityDef.getParams(), null); + } else if (workload!=null) { + workloadSource = "yaml:" + workload; + return OpsLoader.loadPath(workload, activityDef.getParams(), "activities"); + } else { + return OpsDocList.none(); + } } catch (Exception e) { throw new OpConfigError("Error loading op templates: " + e, workloadSource, e); From 5ae22195ba9bc4be2df3ac0864d6b2cb36c2a0ef Mon Sep 17 00:00:00 2001 From: Jonathan Shook Date: Sat, 9 Dec 2023 17:16:44 -0600 Subject: [PATCH 04/26] package factoring --- .../adapter/amqp/AmqpDriverAdapter.java | 2 +- .../adapter/amqp/AmqpDriverAdapterLoader.java | 2 +- .../adapter/cqld4/CqlDriverAdapterStub.java | 2 +- .../adapter/cqld4/Cqld4DriverAdapter.java | 2 +- .../cqld4/Cqld4DriverAdapterLoader.java | 2 +- .../cqlgen/api/CGModelTransformer.java | 2 +- .../cqlgen/model/CqlColumnBase.java | 2 +- .../cqlgen/model/CqlKeyspaceDef.java | 2 +- .../io/nosqlbench/cqlgen/model/CqlTable.java | 2 +- .../io/nosqlbench/cqlgen/model/CqlType.java | 2 +- .../extensions/vectormath/CqlUtils.java | 4 +- .../vectormath/CqlUtilsPluginInfo.java | 2 +- .../adapter/diag/DiagDriverAdapter.java | 2 +- .../adapter/diag/DiagDriverAdapterLoader.java | 2 +- .../adapter/diag/DiagOpDispenser.java | 2 +- .../adapter/diag/optasks/BaseDiagTask.java | 2 +- .../adapter/diag/optasks/DiagTask.java | 2 +- .../adapter/diag/optasks/DiagTask_gauge.java | 2 +- .../diag/optasks/DiagTask_gaugeTest.java | 2 +- .../dynamodb/DynamoDBDriverAdapter.java | 2 +- .../dynamodb/DynamoDBDriverAdapterLoader.java | 2 +- .../adapter/http/HttpDriverAdapter.java | 2 +- .../adapter/http/HttpDriverAdapterLoader.java | 2 +- .../adapter/http/core/HttpMetrics.java | 2 +- .../adapter/http/core/HttpSpace.java | 2 +- .../adapter/jdbc/JDBCDriverAdapter.java | 2 +- .../jdbc/utils/JDBCDriverAdapterLoader.java | 2 +- .../adapter/kafka/KafkaDriverAdapter.java | 2 +- .../kafka/KafkaDriverAdapterLoader.java | 2 +- .../core/MongoDriverAdapterLoader.java | 2 +- .../adapter/mongodb/core/MongoSpace.java | 2 +- .../mongodb/core/MongodbDriverAdapter.java | 2 +- .../pinecone/PineconeDriverAdapter.java | 2 +- .../pinecone/PineconeDriverAdapterLoader.java | 2 +- .../vectormath/PineconeScriptingUtils.java | 4 +- .../PineconeScriptingUtilsPluginInfo.java | 2 +- .../PineconeScriptingUtilsTest.java | 2 +- .../adapter/pulsar/PulsarDriverAdapter.java | 2 +- .../pulsar/PulsarDriverAdapterLoader.java | 2 +- .../adapter/s4j/S4JDriverAdapter.java | 2 +- .../adapter/s4j/S4JDriverAdapterLoader.java | 2 +- .../adapter/stdout/StdoutDriverAdapter.java | 2 +- .../stdout/StdoutDriverAdapterLoader.java | 2 +- .../tcpclient/TcpClientDriverAdapter.java | 2 +- .../TcpClientDriverAdapterLoader.java | 2 +- .../tcpserver/TcpServerDriverAdapter.java | 2 +- .../TcpServerDriverAdapterLoader.java | 2 +- .../adapter/diag/DriverAdapterLoader.java | 2 +- .../api/activityimpl/BaseOpDispenser.java | 3 +- .../docs/BundledDriverAdapterDocs.java | 2 +- .../uniform/BaseDriverAdapter.java | 4 +- .../activityimpl/uniform/DriverAdapter.java | 2 +- .../adapters/api/templating/ParsedOp.java | 4 +- .../adapters/api/templating/ParsedOpTest.java | 2 +- .../java/io/nosqlbench/engine/cli/NBCLI.java | 3 +- .../engine/api/activityapi/core/Activity.java | 2 +- .../api/activityapi/core/ActivityType.java | 2 +- .../errorhandling/ErrorMetrics.java | 2 +- .../activityapi/ratelimits/RateLimiters.java | 2 +- .../ratelimits/simrate/SimRate.java | 4 +- .../api/activityimpl/SimpleActivity.java | 4 +- .../api/activityimpl/input/AtomicInput.java | 4 +- .../uniform/StandardActivity.java | 2 +- .../uniform/StandardActivityType.java | 2 +- .../api/metrics/ExceptionCountMetrics.java | 2 +- ...tionExpectedResultVerificationMetrics.java | 2 +- .../api/metrics/ExceptionHistoMetrics.java | 2 +- .../api/metrics/ExceptionMeterMetrics.java | 2 +- .../api/metrics/ExceptionTimerMetrics.java | 2 +- .../engine/cmdstream/NBJavaCommandLoader.java | 2 +- .../clientload/ClientSystemMetricChecker.java | 4 +- .../lifecycle/ExecutionMetricsResult.java | 8 +- .../lifecycle/activity/ActivityExecutor.java | 2 +- .../lifecycle/activity/ActivityLoader.java | 2 +- .../activity/ActivityTypeLoader.java | 2 +- .../ContainerActivitiesController.java | 6 +- .../container/ContainerBuilderFacets.java | 2 +- .../container/NBBufferedContainer.java | 4 +- .../scenario/container/NBContainer.java | 2 +- .../container/NBScenarioContainerBuilder.java | 2 +- .../scenario/execution/NBCommandInfo.java | 2 +- .../execution/NBInvokableCommand.java | 2 +- .../scenario/execution/ScenarioSummary.java | 2 +- .../core/lifecycle/session/NBSession.java | 2 +- .../api/metrics/HistoIntervalLoggerTest.java | 2 +- .../engine/core/NBBaseCommandTest.java | 2 +- .../engine/sandbox/SimRateSanityTest.java | 2 +- .../engine/sandbox/SimRateTest.java | 2 +- .../ComputeFunctionPluginInfo.java | 2 +- .../computefunctions/ComputeFunctions.java | 4 +- .../extensions/example/ExamplePlugin.java | 4 +- .../extensions/example/ExamplePluginData.java | 2 +- ...lobalVarsScriptingExtensionPluginData.java | 2 +- .../csvoutput/CsvOutputPluginWriterTest.java | 2 +- .../nb/api/components/NBMetricsBuffer.java | 56 -------- .../{ => core}/NBBaseComponent.java | 37 +++++- .../{ => core}/NBBaseComponentMetrics.java | 2 +- .../components/{ => core}/NBComponent.java | 7 +- .../{ => core}/NBComponentErrorHandler.java | 2 +- .../{ => core}/NBComponentEvents.java | 2 +- .../{ => core}/NBComponentExecutionScope.java | 2 +- .../{ => core}/NBComponentFinder.java | 2 +- .../{ => core}/NBComponentFormats.java | 2 +- .../{ => core}/NBComponentLoader.java | 2 +- .../{ => core}/NBComponentMetrics.java | 2 +- .../{ => core}/NBComponentServices.java | 2 +- .../{ => core}/NBComponentTraversal.java | 2 +- .../api/components/{ => core}/NBCreators.java | 3 +- .../api/components/{ => core}/NBFinders.java | 2 +- .../api/components/core/NBMetricsBuffer.java | 122 ++++++++++++++++++ .../components/{ => core}/NBNamedElement.java | 2 +- .../NBParentComponentInjection.java | 2 +- .../{ => core}/PeriodicTaskComponent.java | 2 +- .../events/ComponentOutOfScope.java | 2 +- .../nb/api/config/standard/TestComponent.java | 4 +- .../api/csvoutput/CsvOutputPluginWriter.java | 4 +- .../api/engine/activityimpl/ActivityDef.java | 2 +- .../nb/api/engine/metrics/CapabilityHook.java | 4 +- .../engine/metrics/ClassicHistoListener.java | 2 +- .../engine/metrics/ClassicTimerListener.java | 2 +- .../engine/metrics/HistoIntervalLogger.java | 2 +- .../api/engine/metrics/HistoStatsLogger.java | 2 +- .../metrics/instruments/NBFunctionGauge.java | 2 +- .../metrics/instruments/NBVariableGauge.java | 2 +- .../metrics/reporters/ConsoleReporter.java | 6 +- .../engine/metrics/reporters/CsvReporter.java | 4 +- .../reporters/Log4JMetricsReporter.java | 8 +- .../reporters/PromPushReporterComponent.java | 4 +- .../metrics/wrappers/RelevancyMeasures.java | 2 +- .../ScriptingExtensionPluginInfo.java | 2 +- .../nosqlbench/nb/api/histo/HdrHistoLog.java | 4 +- .../nosqlbench/nb/api/histo/HistoStats.java | 4 +- .../io/nosqlbench/nb/api/http/HttpPlugin.java | 4 +- .../api/loaders/BundledExtensionsLoader.java | 2 +- .../optimizers/BobyqaOptimizerInstance.java | 4 +- .../nb/api/s3uploader/S3Uploader.java | 4 +- .../nb/api/shutdown/NBShutdownHook.java | 4 +- .../nosqlbench/nb/api/tagging/TagFilter.java | 2 +- .../AttachedMetricsSummaryReporterTest.java | 2 +- .../NBBaseComponentMetricsTest.java | 4 +- .../{ => core}/NBComponentFormatsTest.java | 6 +- .../{ => core}/NBComponentLifecycleTest.java | 2 +- .../NBComponentScaffoldingTest.java | 2 +- .../{ => core}/NBComponentServicesTest.java | 2 +- .../{ => core}/NBComponentTraversalTest.java | 6 +- .../{ => core}/NBMetricsQueryTest.java | 2 +- .../standard/TestComponentViewTest.java | 3 +- .../injava/NB_cocycledelay_bursty.java | 2 +- .../injavascript/ScriptExampleTests.java | 2 +- .../core/script/MetricsIntegrationTest.java | 2 +- 150 files changed, 346 insertions(+), 246 deletions(-) delete mode 100644 nb-api/src/main/java/io/nosqlbench/nb/api/components/NBMetricsBuffer.java rename nb-api/src/main/java/io/nosqlbench/nb/api/components/{ => core}/NBBaseComponent.java (86%) rename nb-api/src/main/java/io/nosqlbench/nb/api/components/{ => core}/NBBaseComponentMetrics.java (98%) rename nb-api/src/main/java/io/nosqlbench/nb/api/components/{ => core}/NBComponent.java (94%) rename nb-api/src/main/java/io/nosqlbench/nb/api/components/{ => core}/NBComponentErrorHandler.java (93%) rename nb-api/src/main/java/io/nosqlbench/nb/api/components/{ => core}/NBComponentEvents.java (94%) rename nb-api/src/main/java/io/nosqlbench/nb/api/components/{ => core}/NBComponentExecutionScope.java (97%) rename nb-api/src/main/java/io/nosqlbench/nb/api/components/{ => core}/NBComponentFinder.java (97%) rename nb-api/src/main/java/io/nosqlbench/nb/api/components/{ => core}/NBComponentFormats.java (97%) rename nb-api/src/main/java/io/nosqlbench/nb/api/components/{ => core}/NBComponentLoader.java (97%) rename nb-api/src/main/java/io/nosqlbench/nb/api/components/{ => core}/NBComponentMetrics.java (97%) rename nb-api/src/main/java/io/nosqlbench/nb/api/components/{ => core}/NBComponentServices.java (93%) rename nb-api/src/main/java/io/nosqlbench/nb/api/components/{ => core}/NBComponentTraversal.java (98%) rename nb-api/src/main/java/io/nosqlbench/nb/api/components/{ => core}/NBCreators.java (99%) rename nb-api/src/main/java/io/nosqlbench/nb/api/components/{ => core}/NBFinders.java (99%) create mode 100644 nb-api/src/main/java/io/nosqlbench/nb/api/components/core/NBMetricsBuffer.java rename nb-api/src/main/java/io/nosqlbench/nb/api/components/{ => core}/NBNamedElement.java (93%) rename nb-api/src/main/java/io/nosqlbench/nb/api/components/{ => core}/NBParentComponentInjection.java (93%) rename nb-api/src/main/java/io/nosqlbench/nb/api/components/{ => core}/PeriodicTaskComponent.java (98%) rename nb-api/src/test/java/io/nosqlbench/nb/api/components/{ => core}/AttachedMetricsSummaryReporterTest.java (98%) rename nb-api/src/test/java/io/nosqlbench/nb/api/components/{ => core}/NBBaseComponentMetricsTest.java (94%) rename nb-api/src/test/java/io/nosqlbench/nb/api/components/{ => core}/NBComponentFormatsTest.java (90%) rename nb-api/src/test/java/io/nosqlbench/nb/api/components/{ => core}/NBComponentLifecycleTest.java (97%) rename nb-api/src/test/java/io/nosqlbench/nb/api/components/{ => core}/NBComponentScaffoldingTest.java (97%) rename nb-api/src/test/java/io/nosqlbench/nb/api/components/{ => core}/NBComponentServicesTest.java (97%) rename nb-api/src/test/java/io/nosqlbench/nb/api/components/{ => core}/NBComponentTraversalTest.java (93%) rename nb-api/src/test/java/io/nosqlbench/nb/api/components/{ => core}/NBMetricsQueryTest.java (97%) diff --git a/adapter-amqp/src/main/java/io/nosqlbench/adapter/amqp/AmqpDriverAdapter.java b/adapter-amqp/src/main/java/io/nosqlbench/adapter/amqp/AmqpDriverAdapter.java index db9f93c3f..cba516a2e 100644 --- a/adapter-amqp/src/main/java/io/nosqlbench/adapter/amqp/AmqpDriverAdapter.java +++ b/adapter-amqp/src/main/java/io/nosqlbench/adapter/amqp/AmqpDriverAdapter.java @@ -24,7 +24,7 @@ import io.nosqlbench.adapters.api.activityimpl.uniform.BaseDriverAdapter; import io.nosqlbench.adapters.api.activityimpl.uniform.DriverAdapter; import io.nosqlbench.adapters.api.activityimpl.uniform.DriverSpaceCache; import io.nosqlbench.nb.api.labels.NBLabels; -import io.nosqlbench.nb.api.components.NBComponent; +import io.nosqlbench.nb.api.components.core.NBComponent; import io.nosqlbench.nb.annotations.Service; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; diff --git a/adapter-amqp/src/main/java/io/nosqlbench/adapter/amqp/AmqpDriverAdapterLoader.java b/adapter-amqp/src/main/java/io/nosqlbench/adapter/amqp/AmqpDriverAdapterLoader.java index 0dd4aeca2..9570b863a 100644 --- a/adapter-amqp/src/main/java/io/nosqlbench/adapter/amqp/AmqpDriverAdapterLoader.java +++ b/adapter-amqp/src/main/java/io/nosqlbench/adapter/amqp/AmqpDriverAdapterLoader.java @@ -20,7 +20,7 @@ package io.nosqlbench.adapter.amqp; import io.nosqlbench.adapter.diag.DriverAdapterLoader; import io.nosqlbench.nb.api.labels.NBLabels; -import io.nosqlbench.nb.api.components.NBComponent; +import io.nosqlbench.nb.api.components.core.NBComponent; import io.nosqlbench.nb.annotations.Service; @Service(value = DriverAdapterLoader.class, selector = "amqp") diff --git a/adapter-cqld4/src/main/java/io/nosqlbench/adapter/cqld4/CqlDriverAdapterStub.java b/adapter-cqld4/src/main/java/io/nosqlbench/adapter/cqld4/CqlDriverAdapterStub.java index 8da279000..3d0dd3bdb 100644 --- a/adapter-cqld4/src/main/java/io/nosqlbench/adapter/cqld4/CqlDriverAdapterStub.java +++ b/adapter-cqld4/src/main/java/io/nosqlbench/adapter/cqld4/CqlDriverAdapterStub.java @@ -18,7 +18,7 @@ package io.nosqlbench.adapter.cqld4; import io.nosqlbench.adapters.api.activityimpl.uniform.DriverAdapter; import io.nosqlbench.nb.api.labels.NBLabels; -import io.nosqlbench.nb.api.components.NBComponent; +import io.nosqlbench.nb.api.components.core.NBComponent; import io.nosqlbench.nb.annotations.Service; @Service(value = DriverAdapter.class, selector = "cql") diff --git a/adapter-cqld4/src/main/java/io/nosqlbench/adapter/cqld4/Cqld4DriverAdapter.java b/adapter-cqld4/src/main/java/io/nosqlbench/adapter/cqld4/Cqld4DriverAdapter.java index 7927cd73c..736e40ef5 100644 --- a/adapter-cqld4/src/main/java/io/nosqlbench/adapter/cqld4/Cqld4DriverAdapter.java +++ b/adapter-cqld4/src/main/java/io/nosqlbench/adapter/cqld4/Cqld4DriverAdapter.java @@ -25,7 +25,7 @@ import io.nosqlbench.adapters.api.activityimpl.uniform.DriverAdapter; import io.nosqlbench.adapters.api.activityimpl.uniform.DriverSpaceCache; import io.nosqlbench.adapters.api.activityimpl.uniform.flowtypes.Op; import io.nosqlbench.nb.api.labels.NBLabels; -import io.nosqlbench.nb.api.components.NBComponent; +import io.nosqlbench.nb.api.components.core.NBComponent; import io.nosqlbench.nb.annotations.Service; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; diff --git a/adapter-cqld4/src/main/java/io/nosqlbench/adapter/cqld4/Cqld4DriverAdapterLoader.java b/adapter-cqld4/src/main/java/io/nosqlbench/adapter/cqld4/Cqld4DriverAdapterLoader.java index 85342bb3c..96b93e291 100644 --- a/adapter-cqld4/src/main/java/io/nosqlbench/adapter/cqld4/Cqld4DriverAdapterLoader.java +++ b/adapter-cqld4/src/main/java/io/nosqlbench/adapter/cqld4/Cqld4DriverAdapterLoader.java @@ -20,7 +20,7 @@ package io.nosqlbench.adapter.cqld4; import io.nosqlbench.adapter.diag.DriverAdapterLoader; import io.nosqlbench.nb.api.labels.NBLabels; -import io.nosqlbench.nb.api.components.NBComponent; +import io.nosqlbench.nb.api.components.core.NBComponent; import io.nosqlbench.nb.annotations.Service; @Service(value = DriverAdapterLoader.class, selector = "cqld4") diff --git a/adapter-cqld4/src/main/java/io/nosqlbench/cqlgen/api/CGModelTransformer.java b/adapter-cqld4/src/main/java/io/nosqlbench/cqlgen/api/CGModelTransformer.java index 56493a469..705b7bd91 100644 --- a/adapter-cqld4/src/main/java/io/nosqlbench/cqlgen/api/CGModelTransformer.java +++ b/adapter-cqld4/src/main/java/io/nosqlbench/cqlgen/api/CGModelTransformer.java @@ -16,7 +16,7 @@ package io.nosqlbench.cqlgen.api; -import io.nosqlbench.nb.api.components.NBNamedElement; +import io.nosqlbench.nb.api.components.core.NBNamedElement; import io.nosqlbench.cqlgen.model.CqlModel; import java.util.function.Function; diff --git a/adapter-cqld4/src/main/java/io/nosqlbench/cqlgen/model/CqlColumnBase.java b/adapter-cqld4/src/main/java/io/nosqlbench/cqlgen/model/CqlColumnBase.java index 185df0177..f08dc4c68 100644 --- a/adapter-cqld4/src/main/java/io/nosqlbench/cqlgen/model/CqlColumnBase.java +++ b/adapter-cqld4/src/main/java/io/nosqlbench/cqlgen/model/CqlColumnBase.java @@ -17,7 +17,7 @@ package io.nosqlbench.cqlgen.model; import io.nosqlbench.nb.api.labels.NBLabels; -import io.nosqlbench.nb.api.components.NBNamedElement; +import io.nosqlbench.nb.api.components.core.NBNamedElement; import io.nosqlbench.nb.api.labels.NBLabeledElement; public abstract class CqlColumnBase implements NBNamedElement, NBLabeledElement { diff --git a/adapter-cqld4/src/main/java/io/nosqlbench/cqlgen/model/CqlKeyspaceDef.java b/adapter-cqld4/src/main/java/io/nosqlbench/cqlgen/model/CqlKeyspaceDef.java index 4e3ee7f1b..c0f14b926 100644 --- a/adapter-cqld4/src/main/java/io/nosqlbench/cqlgen/model/CqlKeyspaceDef.java +++ b/adapter-cqld4/src/main/java/io/nosqlbench/cqlgen/model/CqlKeyspaceDef.java @@ -18,7 +18,7 @@ package io.nosqlbench.cqlgen.model; import com.datastax.oss.driver.internal.core.util.Strings; import io.nosqlbench.nb.api.labels.NBLabels; -import io.nosqlbench.nb.api.components.NBNamedElement; +import io.nosqlbench.nb.api.components.core.NBNamedElement; import io.nosqlbench.nb.api.labels.NBLabeledElement; import io.nosqlbench.cqlgen.core.CGKeyspaceStats; diff --git a/adapter-cqld4/src/main/java/io/nosqlbench/cqlgen/model/CqlTable.java b/adapter-cqld4/src/main/java/io/nosqlbench/cqlgen/model/CqlTable.java index 8c2ecdd45..38d075f0d 100644 --- a/adapter-cqld4/src/main/java/io/nosqlbench/cqlgen/model/CqlTable.java +++ b/adapter-cqld4/src/main/java/io/nosqlbench/cqlgen/model/CqlTable.java @@ -17,7 +17,7 @@ package io.nosqlbench.cqlgen.model; import io.nosqlbench.nb.api.labels.NBLabels; -import io.nosqlbench.nb.api.components.NBNamedElement; +import io.nosqlbench.nb.api.components.core.NBNamedElement; import io.nosqlbench.nb.api.labels.NBLabeledElement; import io.nosqlbench.cqlgen.core.CGTableStats; import io.nosqlbench.cqlgen.transformers.ComputedTableStats; diff --git a/adapter-cqld4/src/main/java/io/nosqlbench/cqlgen/model/CqlType.java b/adapter-cqld4/src/main/java/io/nosqlbench/cqlgen/model/CqlType.java index 12866f4bc..fc56b3b5e 100644 --- a/adapter-cqld4/src/main/java/io/nosqlbench/cqlgen/model/CqlType.java +++ b/adapter-cqld4/src/main/java/io/nosqlbench/cqlgen/model/CqlType.java @@ -18,7 +18,7 @@ package io.nosqlbench.cqlgen.model; import io.nosqlbench.nb.api.labels.NBLabeledElement; import io.nosqlbench.nb.api.labels.NBLabels; -import io.nosqlbench.nb.api.components.NBNamedElement; +import io.nosqlbench.nb.api.components.core.NBNamedElement; import java.util.ArrayList; import java.util.List; diff --git a/adapter-cqld4/src/main/java/io/nosqlbench/engine/extensions/vectormath/CqlUtils.java b/adapter-cqld4/src/main/java/io/nosqlbench/engine/extensions/vectormath/CqlUtils.java index 838354549..ddcc692b4 100644 --- a/adapter-cqld4/src/main/java/io/nosqlbench/engine/extensions/vectormath/CqlUtils.java +++ b/adapter-cqld4/src/main/java/io/nosqlbench/engine/extensions/vectormath/CqlUtils.java @@ -17,8 +17,8 @@ package io.nosqlbench.engine.extensions.vectormath; import com.datastax.oss.driver.api.core.cql.Row; -import io.nosqlbench.nb.api.components.NBBaseComponent; -import io.nosqlbench.nb.api.components.NBComponent; +import io.nosqlbench.nb.api.components.core.NBBaseComponent; +import io.nosqlbench.nb.api.components.core.NBComponent; import java.util.List; import java.util.Objects; diff --git a/adapter-cqld4/src/main/java/io/nosqlbench/engine/extensions/vectormath/CqlUtilsPluginInfo.java b/adapter-cqld4/src/main/java/io/nosqlbench/engine/extensions/vectormath/CqlUtilsPluginInfo.java index 2663b808f..93fd7e6b1 100644 --- a/adapter-cqld4/src/main/java/io/nosqlbench/engine/extensions/vectormath/CqlUtilsPluginInfo.java +++ b/adapter-cqld4/src/main/java/io/nosqlbench/engine/extensions/vectormath/CqlUtilsPluginInfo.java @@ -17,7 +17,7 @@ package io.nosqlbench.engine.extensions.vectormath; import io.nosqlbench.nb.api.extensions.ScriptingExtensionPluginInfo; -import io.nosqlbench.nb.api.components.NBComponent; +import io.nosqlbench.nb.api.components.core.NBComponent; import io.nosqlbench.nb.annotations.Service; import org.apache.logging.log4j.Logger; diff --git a/adapter-diag/src/main/java/io/nosqlbench/adapter/diag/DiagDriverAdapter.java b/adapter-diag/src/main/java/io/nosqlbench/adapter/diag/DiagDriverAdapter.java index 5003ef1fc..c22077ac7 100644 --- a/adapter-diag/src/main/java/io/nosqlbench/adapter/diag/DiagDriverAdapter.java +++ b/adapter-diag/src/main/java/io/nosqlbench/adapter/diag/DiagDriverAdapter.java @@ -26,7 +26,7 @@ import io.nosqlbench.adapters.api.activityimpl.uniform.BaseDriverAdapter; import io.nosqlbench.adapters.api.activityimpl.uniform.DriverAdapter; import io.nosqlbench.adapters.api.activityimpl.uniform.decorators.SyntheticOpTemplateProvider; import io.nosqlbench.nb.api.labels.NBLabels; -import io.nosqlbench.nb.api.components.NBComponent; +import io.nosqlbench.nb.api.components.core.NBComponent; import io.nosqlbench.nb.annotations.Service; import io.nosqlbench.nb.api.config.params.NBParams; import io.nosqlbench.nb.api.config.standard.NBConfigModel; diff --git a/adapter-diag/src/main/java/io/nosqlbench/adapter/diag/DiagDriverAdapterLoader.java b/adapter-diag/src/main/java/io/nosqlbench/adapter/diag/DiagDriverAdapterLoader.java index e32c95ac4..b17258f14 100644 --- a/adapter-diag/src/main/java/io/nosqlbench/adapter/diag/DiagDriverAdapterLoader.java +++ b/adapter-diag/src/main/java/io/nosqlbench/adapter/diag/DiagDriverAdapterLoader.java @@ -19,7 +19,7 @@ package io.nosqlbench.adapter.diag; import io.nosqlbench.nb.api.labels.NBLabels; -import io.nosqlbench.nb.api.components.NBComponent; +import io.nosqlbench.nb.api.components.core.NBComponent; import io.nosqlbench.nb.annotations.Service; @Service(value = DriverAdapterLoader.class, selector = "diag") diff --git a/adapter-diag/src/main/java/io/nosqlbench/adapter/diag/DiagOpDispenser.java b/adapter-diag/src/main/java/io/nosqlbench/adapter/diag/DiagOpDispenser.java index e338c7f82..203604981 100644 --- a/adapter-diag/src/main/java/io/nosqlbench/adapter/diag/DiagOpDispenser.java +++ b/adapter-diag/src/main/java/io/nosqlbench/adapter/diag/DiagOpDispenser.java @@ -22,7 +22,7 @@ import io.nosqlbench.adapters.api.templating.ParsedOp; import io.nosqlbench.nb.api.config.standard.NBConfigModel; import io.nosqlbench.nb.api.config.standard.NBConfiguration; import io.nosqlbench.nb.api.config.standard.NBReconfigurable; -import io.nosqlbench.nb.api.components.NBParentComponentInjection; +import io.nosqlbench.nb.api.components.core.NBParentComponentInjection; import io.nosqlbench.engine.api.activityapi.ratelimits.RateLimiter; import io.nosqlbench.nb.annotations.ServiceSelector; import org.apache.logging.log4j.LogManager; diff --git a/adapter-diag/src/main/java/io/nosqlbench/adapter/diag/optasks/BaseDiagTask.java b/adapter-diag/src/main/java/io/nosqlbench/adapter/diag/optasks/BaseDiagTask.java index c9933b7ef..cfc0f941a 100644 --- a/adapter-diag/src/main/java/io/nosqlbench/adapter/diag/optasks/BaseDiagTask.java +++ b/adapter-diag/src/main/java/io/nosqlbench/adapter/diag/optasks/BaseDiagTask.java @@ -18,7 +18,7 @@ package io.nosqlbench.adapter.diag.optasks; import io.nosqlbench.nb.api.labels.NBLabeledElement; import io.nosqlbench.nb.api.labels.NBLabels; -import io.nosqlbench.nb.api.components.NBComponent; +import io.nosqlbench.nb.api.components.core.NBComponent; import java.util.Map; diff --git a/adapter-diag/src/main/java/io/nosqlbench/adapter/diag/optasks/DiagTask.java b/adapter-diag/src/main/java/io/nosqlbench/adapter/diag/optasks/DiagTask.java index 9cb53b88e..e4719596b 100644 --- a/adapter-diag/src/main/java/io/nosqlbench/adapter/diag/optasks/DiagTask.java +++ b/adapter-diag/src/main/java/io/nosqlbench/adapter/diag/optasks/DiagTask.java @@ -19,7 +19,7 @@ package io.nosqlbench.adapter.diag.optasks; import io.nosqlbench.nb.api.config.standard.NBConfigurable; import io.nosqlbench.nb.api.config.standard.NBReconfigurable; import io.nosqlbench.nb.api.labels.NBLabeledElement; -import io.nosqlbench.nb.api.components.NBParentComponentInjection; +import io.nosqlbench.nb.api.components.core.NBParentComponentInjection; import java.util.Map; import java.util.function.BiFunction; diff --git a/adapter-diag/src/main/java/io/nosqlbench/adapter/diag/optasks/DiagTask_gauge.java b/adapter-diag/src/main/java/io/nosqlbench/adapter/diag/optasks/DiagTask_gauge.java index 9bde8b89f..16cf3c0bc 100644 --- a/adapter-diag/src/main/java/io/nosqlbench/adapter/diag/optasks/DiagTask_gauge.java +++ b/adapter-diag/src/main/java/io/nosqlbench/adapter/diag/optasks/DiagTask_gauge.java @@ -22,7 +22,7 @@ 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.labels.NBLabels; -import io.nosqlbench.nb.api.components.NBParentComponentInjection; +import io.nosqlbench.nb.api.components.core.NBParentComponentInjection; import io.nosqlbench.nb.annotations.Service; import io.nosqlbench.virtdata.api.bindings.VirtDataConversions; import io.nosqlbench.virtdata.core.bindings.DataMapper; diff --git a/adapter-diag/src/test/java/io/nosqlbench/adapter/diag/optasks/DiagTask_gaugeTest.java b/adapter-diag/src/test/java/io/nosqlbench/adapter/diag/optasks/DiagTask_gaugeTest.java index ad55506ea..036752e16 100644 --- a/adapter-diag/src/test/java/io/nosqlbench/adapter/diag/optasks/DiagTask_gaugeTest.java +++ b/adapter-diag/src/test/java/io/nosqlbench/adapter/diag/optasks/DiagTask_gaugeTest.java @@ -19,7 +19,7 @@ package io.nosqlbench.adapter.diag.optasks; import io.nosqlbench.nb.api.config.standard.NBConfiguration; import io.nosqlbench.nb.api.config.standard.TestComponent; import io.nosqlbench.nb.api.labels.NBLabeledElement; -import io.nosqlbench.nb.api.components.NBComponent; +import io.nosqlbench.nb.api.components.core.NBComponent; import org.assertj.core.data.Offset; import org.junit.jupiter.api.Test; diff --git a/adapter-dynamodb/src/main/java/io/nosqlbench/adapter/dynamodb/DynamoDBDriverAdapter.java b/adapter-dynamodb/src/main/java/io/nosqlbench/adapter/dynamodb/DynamoDBDriverAdapter.java index 86e6d4a6a..0bd7802fe 100644 --- a/adapter-dynamodb/src/main/java/io/nosqlbench/adapter/dynamodb/DynamoDBDriverAdapter.java +++ b/adapter-dynamodb/src/main/java/io/nosqlbench/adapter/dynamodb/DynamoDBDriverAdapter.java @@ -22,7 +22,7 @@ import io.nosqlbench.adapters.api.activityimpl.uniform.BaseDriverAdapter; import io.nosqlbench.adapters.api.activityimpl.uniform.DriverAdapter; import io.nosqlbench.adapters.api.activityimpl.uniform.DriverSpaceCache; import io.nosqlbench.nb.api.labels.NBLabels; -import io.nosqlbench.nb.api.components.NBComponent; +import io.nosqlbench.nb.api.components.core.NBComponent; import io.nosqlbench.nb.annotations.Maturity; import io.nosqlbench.nb.annotations.Service; import io.nosqlbench.nb.api.config.standard.NBConfigModel; diff --git a/adapter-dynamodb/src/main/java/io/nosqlbench/adapter/dynamodb/DynamoDBDriverAdapterLoader.java b/adapter-dynamodb/src/main/java/io/nosqlbench/adapter/dynamodb/DynamoDBDriverAdapterLoader.java index f1feb993b..344846937 100644 --- a/adapter-dynamodb/src/main/java/io/nosqlbench/adapter/dynamodb/DynamoDBDriverAdapterLoader.java +++ b/adapter-dynamodb/src/main/java/io/nosqlbench/adapter/dynamodb/DynamoDBDriverAdapterLoader.java @@ -20,7 +20,7 @@ package io.nosqlbench.adapter.dynamodb; import io.nosqlbench.adapter.diag.DriverAdapterLoader; import io.nosqlbench.nb.api.labels.NBLabels; -import io.nosqlbench.nb.api.components.NBComponent; +import io.nosqlbench.nb.api.components.core.NBComponent; import io.nosqlbench.nb.annotations.Service; @Service(value = DriverAdapterLoader.class, selector = "dynamodb") diff --git a/adapter-http/src/main/java/io/nosqlbench/adapter/http/HttpDriverAdapter.java b/adapter-http/src/main/java/io/nosqlbench/adapter/http/HttpDriverAdapter.java index 0a328e79f..b443117fa 100644 --- a/adapter-http/src/main/java/io/nosqlbench/adapter/http/HttpDriverAdapter.java +++ b/adapter-http/src/main/java/io/nosqlbench/adapter/http/HttpDriverAdapter.java @@ -27,7 +27,7 @@ import io.nosqlbench.adapters.api.activityimpl.uniform.BaseDriverAdapter; import io.nosqlbench.adapters.api.activityimpl.uniform.DriverAdapter; import io.nosqlbench.adapters.api.activityimpl.uniform.DriverSpaceCache; import io.nosqlbench.nb.api.labels.NBLabels; -import io.nosqlbench.nb.api.components.NBComponent; +import io.nosqlbench.nb.api.components.core.NBComponent; import io.nosqlbench.nb.annotations.Service; import io.nosqlbench.nb.api.config.standard.NBConfigModel; import io.nosqlbench.nb.api.config.standard.NBConfiguration; diff --git a/adapter-http/src/main/java/io/nosqlbench/adapter/http/HttpDriverAdapterLoader.java b/adapter-http/src/main/java/io/nosqlbench/adapter/http/HttpDriverAdapterLoader.java index c4f783337..921e1e336 100644 --- a/adapter-http/src/main/java/io/nosqlbench/adapter/http/HttpDriverAdapterLoader.java +++ b/adapter-http/src/main/java/io/nosqlbench/adapter/http/HttpDriverAdapterLoader.java @@ -20,7 +20,7 @@ package io.nosqlbench.adapter.http; import io.nosqlbench.adapter.diag.DriverAdapterLoader; import io.nosqlbench.nb.api.labels.NBLabels; -import io.nosqlbench.nb.api.components.NBComponent; +import io.nosqlbench.nb.api.components.core.NBComponent; import io.nosqlbench.nb.annotations.Service; @Service(value = DriverAdapterLoader.class, selector = "http") diff --git a/adapter-http/src/main/java/io/nosqlbench/adapter/http/core/HttpMetrics.java b/adapter-http/src/main/java/io/nosqlbench/adapter/http/core/HttpMetrics.java index 3528c2562..7437bda6f 100644 --- a/adapter-http/src/main/java/io/nosqlbench/adapter/http/core/HttpMetrics.java +++ b/adapter-http/src/main/java/io/nosqlbench/adapter/http/core/HttpMetrics.java @@ -19,7 +19,7 @@ package io.nosqlbench.adapter.http.core; import com.codahale.metrics.Histogram; import io.nosqlbench.nb.api.labels.NBLabeledElement; import io.nosqlbench.nb.api.labels.NBLabels; -import io.nosqlbench.nb.api.components.NBComponent; +import io.nosqlbench.nb.api.components.core.NBComponent; public class HttpMetrics implements NBLabeledElement { private final NBComponent parent; diff --git a/adapter-http/src/main/java/io/nosqlbench/adapter/http/core/HttpSpace.java b/adapter-http/src/main/java/io/nosqlbench/adapter/http/core/HttpSpace.java index 2cdc8b542..63cffd03f 100644 --- a/adapter-http/src/main/java/io/nosqlbench/adapter/http/core/HttpSpace.java +++ b/adapter-http/src/main/java/io/nosqlbench/adapter/http/core/HttpSpace.java @@ -22,7 +22,7 @@ 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.components.NBComponent; +import io.nosqlbench.nb.api.components.core.NBComponent; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; diff --git a/adapter-jdbc/src/main/java/io/nosqlbench/adapter/jdbc/JDBCDriverAdapter.java b/adapter-jdbc/src/main/java/io/nosqlbench/adapter/jdbc/JDBCDriverAdapter.java index 1f3cca832..cbf51f176 100644 --- a/adapter-jdbc/src/main/java/io/nosqlbench/adapter/jdbc/JDBCDriverAdapter.java +++ b/adapter-jdbc/src/main/java/io/nosqlbench/adapter/jdbc/JDBCDriverAdapter.java @@ -24,7 +24,7 @@ import io.nosqlbench.adapters.api.activityimpl.uniform.BaseDriverAdapter; import io.nosqlbench.adapters.api.activityimpl.uniform.DriverAdapter; import io.nosqlbench.adapters.api.activityimpl.uniform.DriverSpaceCache; import io.nosqlbench.nb.api.labels.NBLabels; -import io.nosqlbench.nb.api.components.NBComponent; +import io.nosqlbench.nb.api.components.core.NBComponent; import io.nosqlbench.nb.annotations.Service; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; diff --git a/adapter-jdbc/src/main/java/io/nosqlbench/adapter/jdbc/utils/JDBCDriverAdapterLoader.java b/adapter-jdbc/src/main/java/io/nosqlbench/adapter/jdbc/utils/JDBCDriverAdapterLoader.java index d36cb9614..1d3a7daa0 100644 --- a/adapter-jdbc/src/main/java/io/nosqlbench/adapter/jdbc/utils/JDBCDriverAdapterLoader.java +++ b/adapter-jdbc/src/main/java/io/nosqlbench/adapter/jdbc/utils/JDBCDriverAdapterLoader.java @@ -21,7 +21,7 @@ package io.nosqlbench.adapter.jdbc.utils; import io.nosqlbench.adapter.diag.DriverAdapterLoader; import io.nosqlbench.adapter.jdbc.JDBCDriverAdapter; import io.nosqlbench.nb.api.labels.NBLabels; -import io.nosqlbench.nb.api.components.NBComponent; +import io.nosqlbench.nb.api.components.core.NBComponent; import io.nosqlbench.nb.annotations.Service; @Service(value = DriverAdapterLoader.class, selector = "jdbc") diff --git a/adapter-kafka/src/main/java/io/nosqlbench/adapter/kafka/KafkaDriverAdapter.java b/adapter-kafka/src/main/java/io/nosqlbench/adapter/kafka/KafkaDriverAdapter.java index d4bf488de..66afb8291 100644 --- a/adapter-kafka/src/main/java/io/nosqlbench/adapter/kafka/KafkaDriverAdapter.java +++ b/adapter-kafka/src/main/java/io/nosqlbench/adapter/kafka/KafkaDriverAdapter.java @@ -24,7 +24,7 @@ import io.nosqlbench.adapters.api.activityimpl.uniform.BaseDriverAdapter; import io.nosqlbench.adapters.api.activityimpl.uniform.DriverAdapter; import io.nosqlbench.adapters.api.activityimpl.uniform.DriverSpaceCache; import io.nosqlbench.nb.api.labels.NBLabels; -import io.nosqlbench.nb.api.components.NBComponent; +import io.nosqlbench.nb.api.components.core.NBComponent; import io.nosqlbench.nb.annotations.Service; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; diff --git a/adapter-kafka/src/main/java/io/nosqlbench/adapter/kafka/KafkaDriverAdapterLoader.java b/adapter-kafka/src/main/java/io/nosqlbench/adapter/kafka/KafkaDriverAdapterLoader.java index 2c4a7a23d..5b64c1e99 100644 --- a/adapter-kafka/src/main/java/io/nosqlbench/adapter/kafka/KafkaDriverAdapterLoader.java +++ b/adapter-kafka/src/main/java/io/nosqlbench/adapter/kafka/KafkaDriverAdapterLoader.java @@ -20,7 +20,7 @@ package io.nosqlbench.adapter.kafka; import io.nosqlbench.adapter.diag.DriverAdapterLoader; import io.nosqlbench.nb.api.labels.NBLabels; -import io.nosqlbench.nb.api.components.NBComponent; +import io.nosqlbench.nb.api.components.core.NBComponent; import io.nosqlbench.nb.annotations.Service; @Service(value = DriverAdapterLoader.class, selector = "kafka") diff --git a/adapter-mongodb/src/main/java/io/nosqlbench/adapter/mongodb/core/MongoDriverAdapterLoader.java b/adapter-mongodb/src/main/java/io/nosqlbench/adapter/mongodb/core/MongoDriverAdapterLoader.java index 5856881fd..9cd914f1a 100644 --- a/adapter-mongodb/src/main/java/io/nosqlbench/adapter/mongodb/core/MongoDriverAdapterLoader.java +++ b/adapter-mongodb/src/main/java/io/nosqlbench/adapter/mongodb/core/MongoDriverAdapterLoader.java @@ -20,7 +20,7 @@ package io.nosqlbench.adapter.mongodb.core; import io.nosqlbench.adapter.diag.DriverAdapterLoader; import io.nosqlbench.nb.api.labels.NBLabels; -import io.nosqlbench.nb.api.components.NBComponent; +import io.nosqlbench.nb.api.components.core.NBComponent; import io.nosqlbench.nb.annotations.Service; @Service(value = DriverAdapterLoader.class, selector = "mongodb") diff --git a/adapter-mongodb/src/main/java/io/nosqlbench/adapter/mongodb/core/MongoSpace.java b/adapter-mongodb/src/main/java/io/nosqlbench/adapter/mongodb/core/MongoSpace.java index e19cfa1c1..2c66c76e9 100644 --- a/adapter-mongodb/src/main/java/io/nosqlbench/adapter/mongodb/core/MongoSpace.java +++ b/adapter-mongodb/src/main/java/io/nosqlbench/adapter/mongodb/core/MongoSpace.java @@ -22,7 +22,7 @@ import com.mongodb.ServerApi; import com.mongodb.ServerApiVersion; import com.mongodb.client.MongoClient; import com.mongodb.client.MongoClients; -import io.nosqlbench.nb.api.components.NBNamedElement; +import io.nosqlbench.nb.api.components.core.NBNamedElement; import com.mongodb.client.MongoDatabase; import io.nosqlbench.nb.api.config.standard.ConfigModel; import io.nosqlbench.nb.api.config.standard.NBConfigModel; diff --git a/adapter-mongodb/src/main/java/io/nosqlbench/adapter/mongodb/core/MongodbDriverAdapter.java b/adapter-mongodb/src/main/java/io/nosqlbench/adapter/mongodb/core/MongodbDriverAdapter.java index f858973ed..71464108c 100644 --- a/adapter-mongodb/src/main/java/io/nosqlbench/adapter/mongodb/core/MongodbDriverAdapter.java +++ b/adapter-mongodb/src/main/java/io/nosqlbench/adapter/mongodb/core/MongodbDriverAdapter.java @@ -23,7 +23,7 @@ import io.nosqlbench.adapters.api.activityimpl.uniform.BaseDriverAdapter; import io.nosqlbench.adapters.api.activityimpl.uniform.DriverAdapter; import io.nosqlbench.adapters.api.activityimpl.uniform.flowtypes.Op; import io.nosqlbench.nb.api.labels.NBLabels; -import io.nosqlbench.nb.api.components.NBComponent; +import io.nosqlbench.nb.api.components.core.NBComponent; import io.nosqlbench.nb.annotations.Service; import java.util.function.Function; diff --git a/adapter-pinecone/src/main/java/io/nosqlbench/adapter/pinecone/PineconeDriverAdapter.java b/adapter-pinecone/src/main/java/io/nosqlbench/adapter/pinecone/PineconeDriverAdapter.java index 03f342f4f..ee8742839 100644 --- a/adapter-pinecone/src/main/java/io/nosqlbench/adapter/pinecone/PineconeDriverAdapter.java +++ b/adapter-pinecone/src/main/java/io/nosqlbench/adapter/pinecone/PineconeDriverAdapter.java @@ -24,7 +24,7 @@ import io.nosqlbench.adapters.api.activityimpl.uniform.BaseDriverAdapter; import io.nosqlbench.adapters.api.activityimpl.uniform.DriverAdapter; import io.nosqlbench.adapters.api.activityimpl.uniform.DriverSpaceCache; import io.nosqlbench.nb.api.labels.NBLabels; -import io.nosqlbench.nb.api.components.NBComponent; +import io.nosqlbench.nb.api.components.core.NBComponent; import io.nosqlbench.nb.annotations.Service; import java.util.function.Function; diff --git a/adapter-pinecone/src/main/java/io/nosqlbench/adapter/pinecone/PineconeDriverAdapterLoader.java b/adapter-pinecone/src/main/java/io/nosqlbench/adapter/pinecone/PineconeDriverAdapterLoader.java index f81cb9c00..f6e29ebc0 100644 --- a/adapter-pinecone/src/main/java/io/nosqlbench/adapter/pinecone/PineconeDriverAdapterLoader.java +++ b/adapter-pinecone/src/main/java/io/nosqlbench/adapter/pinecone/PineconeDriverAdapterLoader.java @@ -20,7 +20,7 @@ package io.nosqlbench.adapter.pinecone; import io.nosqlbench.adapter.diag.DriverAdapterLoader; import io.nosqlbench.nb.api.labels.NBLabels; -import io.nosqlbench.nb.api.components.NBComponent; +import io.nosqlbench.nb.api.components.core.NBComponent; import io.nosqlbench.nb.annotations.Service; @Service(value = DriverAdapterLoader.class, selector = "pinecone") diff --git a/adapter-pinecone/src/main/java/io/nosqlbench/engine/extensions/vectormath/PineconeScriptingUtils.java b/adapter-pinecone/src/main/java/io/nosqlbench/engine/extensions/vectormath/PineconeScriptingUtils.java index bcce67df4..bfb224553 100644 --- a/adapter-pinecone/src/main/java/io/nosqlbench/engine/extensions/vectormath/PineconeScriptingUtils.java +++ b/adapter-pinecone/src/main/java/io/nosqlbench/engine/extensions/vectormath/PineconeScriptingUtils.java @@ -16,8 +16,8 @@ package io.nosqlbench.engine.extensions.vectormath; -import io.nosqlbench.nb.api.components.NBBaseComponent; -import io.nosqlbench.nb.api.components.NBComponent; +import io.nosqlbench.nb.api.components.core.NBBaseComponent; +import io.nosqlbench.nb.api.components.core.NBComponent; import io.pinecone.proto.QueryResponse; import io.pinecone.proto.ScoredVector; diff --git a/adapter-pinecone/src/main/java/io/nosqlbench/engine/extensions/vectormath/PineconeScriptingUtilsPluginInfo.java b/adapter-pinecone/src/main/java/io/nosqlbench/engine/extensions/vectormath/PineconeScriptingUtilsPluginInfo.java index 02420c96e..a5b4e4fbe 100644 --- a/adapter-pinecone/src/main/java/io/nosqlbench/engine/extensions/vectormath/PineconeScriptingUtilsPluginInfo.java +++ b/adapter-pinecone/src/main/java/io/nosqlbench/engine/extensions/vectormath/PineconeScriptingUtilsPluginInfo.java @@ -17,7 +17,7 @@ package io.nosqlbench.engine.extensions.vectormath; import io.nosqlbench.nb.api.extensions.ScriptingExtensionPluginInfo; -import io.nosqlbench.nb.api.components.NBComponent; +import io.nosqlbench.nb.api.components.core.NBComponent; import io.nosqlbench.nb.annotations.Service; import org.apache.logging.log4j.Logger; diff --git a/adapter-pinecone/src/test/java/io/nosqlbench/engine/extensions/vectormath/PineconeScriptingUtilsTest.java b/adapter-pinecone/src/test/java/io/nosqlbench/engine/extensions/vectormath/PineconeScriptingUtilsTest.java index fdfbe0812..201ad1af5 100644 --- a/adapter-pinecone/src/test/java/io/nosqlbench/engine/extensions/vectormath/PineconeScriptingUtilsTest.java +++ b/adapter-pinecone/src/test/java/io/nosqlbench/engine/extensions/vectormath/PineconeScriptingUtilsTest.java @@ -19,7 +19,7 @@ package io.nosqlbench.engine.extensions.vectormath; import com.google.protobuf.Struct; import com.google.protobuf.Value; -import io.nosqlbench.nb.api.components.NBBaseComponent; +import io.nosqlbench.nb.api.components.core.NBBaseComponent; import io.pinecone.proto.QueryResponse; import io.pinecone.proto.ScoredVector; import org.junit.jupiter.api.Test; diff --git a/adapter-pulsar/src/main/java/io/nosqlbench/adapter/pulsar/PulsarDriverAdapter.java b/adapter-pulsar/src/main/java/io/nosqlbench/adapter/pulsar/PulsarDriverAdapter.java index 84853df1b..15df97bd1 100644 --- a/adapter-pulsar/src/main/java/io/nosqlbench/adapter/pulsar/PulsarDriverAdapter.java +++ b/adapter-pulsar/src/main/java/io/nosqlbench/adapter/pulsar/PulsarDriverAdapter.java @@ -22,7 +22,7 @@ import io.nosqlbench.adapters.api.activityimpl.uniform.BaseDriverAdapter; import io.nosqlbench.adapters.api.activityimpl.uniform.DriverAdapter; import io.nosqlbench.adapters.api.activityimpl.uniform.DriverSpaceCache; import io.nosqlbench.nb.api.labels.NBLabels; -import io.nosqlbench.nb.api.components.NBComponent; +import io.nosqlbench.nb.api.components.core.NBComponent; import io.nosqlbench.nb.annotations.Service; import io.nosqlbench.nb.api.config.standard.NBConfigModel; import io.nosqlbench.nb.api.config.standard.NBConfiguration; diff --git a/adapter-pulsar/src/main/java/io/nosqlbench/adapter/pulsar/PulsarDriverAdapterLoader.java b/adapter-pulsar/src/main/java/io/nosqlbench/adapter/pulsar/PulsarDriverAdapterLoader.java index 430942c3c..b12be9ead 100644 --- a/adapter-pulsar/src/main/java/io/nosqlbench/adapter/pulsar/PulsarDriverAdapterLoader.java +++ b/adapter-pulsar/src/main/java/io/nosqlbench/adapter/pulsar/PulsarDriverAdapterLoader.java @@ -20,7 +20,7 @@ package io.nosqlbench.adapter.pulsar; import io.nosqlbench.adapter.diag.DriverAdapterLoader; import io.nosqlbench.nb.api.labels.NBLabels; -import io.nosqlbench.nb.api.components.NBComponent; +import io.nosqlbench.nb.api.components.core.NBComponent; import io.nosqlbench.nb.annotations.Service; @Service(value = DriverAdapterLoader.class, selector = "pulsar") diff --git a/adapter-s4j/src/main/java/io/nosqlbench/adapter/s4j/S4JDriverAdapter.java b/adapter-s4j/src/main/java/io/nosqlbench/adapter/s4j/S4JDriverAdapter.java index 823d3a5d1..f995bc21e 100644 --- a/adapter-s4j/src/main/java/io/nosqlbench/adapter/s4j/S4JDriverAdapter.java +++ b/adapter-s4j/src/main/java/io/nosqlbench/adapter/s4j/S4JDriverAdapter.java @@ -24,7 +24,7 @@ import io.nosqlbench.adapters.api.activityimpl.uniform.BaseDriverAdapter; import io.nosqlbench.adapters.api.activityimpl.uniform.DriverAdapter; import io.nosqlbench.adapters.api.activityimpl.uniform.DriverSpaceCache; import io.nosqlbench.nb.api.labels.NBLabels; -import io.nosqlbench.nb.api.components.NBComponent; +import io.nosqlbench.nb.api.components.core.NBComponent; import io.nosqlbench.nb.annotations.Service; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; diff --git a/adapter-s4j/src/main/java/io/nosqlbench/adapter/s4j/S4JDriverAdapterLoader.java b/adapter-s4j/src/main/java/io/nosqlbench/adapter/s4j/S4JDriverAdapterLoader.java index 174ec78fa..094b8ee95 100644 --- a/adapter-s4j/src/main/java/io/nosqlbench/adapter/s4j/S4JDriverAdapterLoader.java +++ b/adapter-s4j/src/main/java/io/nosqlbench/adapter/s4j/S4JDriverAdapterLoader.java @@ -20,7 +20,7 @@ package io.nosqlbench.adapter.s4j; import io.nosqlbench.adapter.diag.DriverAdapterLoader; import io.nosqlbench.nb.api.labels.NBLabels; -import io.nosqlbench.nb.api.components.NBComponent; +import io.nosqlbench.nb.api.components.core.NBComponent; import io.nosqlbench.nb.annotations.Service; @Service(value = DriverAdapterLoader.class, selector = "s4j") diff --git a/adapter-stdout/src/main/java/io/nosqlbench/adapter/stdout/StdoutDriverAdapter.java b/adapter-stdout/src/main/java/io/nosqlbench/adapter/stdout/StdoutDriverAdapter.java index e5a39bb90..4f5180f05 100644 --- a/adapter-stdout/src/main/java/io/nosqlbench/adapter/stdout/StdoutDriverAdapter.java +++ b/adapter-stdout/src/main/java/io/nosqlbench/adapter/stdout/StdoutDriverAdapter.java @@ -25,7 +25,7 @@ import io.nosqlbench.adapters.api.activityimpl.uniform.DriverAdapter; import io.nosqlbench.adapters.api.activityimpl.uniform.DriverSpaceCache; import io.nosqlbench.adapters.api.activityimpl.uniform.decorators.SyntheticOpTemplateProvider; import io.nosqlbench.nb.api.labels.NBLabels; -import io.nosqlbench.nb.api.components.NBComponent; +import io.nosqlbench.nb.api.components.core.NBComponent; import io.nosqlbench.nb.annotations.Service; import io.nosqlbench.nb.api.config.standard.ConfigModel; import io.nosqlbench.nb.api.config.standard.NBConfigModel; diff --git a/adapter-stdout/src/main/java/io/nosqlbench/adapter/stdout/StdoutDriverAdapterLoader.java b/adapter-stdout/src/main/java/io/nosqlbench/adapter/stdout/StdoutDriverAdapterLoader.java index cc46f00be..0b89f925e 100644 --- a/adapter-stdout/src/main/java/io/nosqlbench/adapter/stdout/StdoutDriverAdapterLoader.java +++ b/adapter-stdout/src/main/java/io/nosqlbench/adapter/stdout/StdoutDriverAdapterLoader.java @@ -20,7 +20,7 @@ package io.nosqlbench.adapter.stdout; import io.nosqlbench.adapter.diag.DriverAdapterLoader; import io.nosqlbench.nb.api.labels.NBLabels; -import io.nosqlbench.nb.api.components.NBComponent; +import io.nosqlbench.nb.api.components.core.NBComponent; import io.nosqlbench.nb.annotations.Service; @Service(value = DriverAdapterLoader.class, selector = "stdout") diff --git a/adapter-tcp/src/main/java/io/nosqlbench/adapter/tcpclient/TcpClientDriverAdapter.java b/adapter-tcp/src/main/java/io/nosqlbench/adapter/tcpclient/TcpClientDriverAdapter.java index 076fd8286..80d854041 100644 --- a/adapter-tcp/src/main/java/io/nosqlbench/adapter/tcpclient/TcpClientDriverAdapter.java +++ b/adapter-tcp/src/main/java/io/nosqlbench/adapter/tcpclient/TcpClientDriverAdapter.java @@ -28,7 +28,7 @@ import io.nosqlbench.adapters.api.activityimpl.uniform.DriverAdapter; import io.nosqlbench.adapters.api.activityimpl.uniform.DriverSpaceCache; import io.nosqlbench.adapters.api.activityimpl.uniform.decorators.SyntheticOpTemplateProvider; import io.nosqlbench.nb.api.labels.NBLabels; -import io.nosqlbench.nb.api.components.NBComponent; +import io.nosqlbench.nb.api.components.core.NBComponent; import io.nosqlbench.nb.annotations.Service; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; diff --git a/adapter-tcp/src/main/java/io/nosqlbench/adapter/tcpclient/TcpClientDriverAdapterLoader.java b/adapter-tcp/src/main/java/io/nosqlbench/adapter/tcpclient/TcpClientDriverAdapterLoader.java index 4ee66f215..f11a86234 100644 --- a/adapter-tcp/src/main/java/io/nosqlbench/adapter/tcpclient/TcpClientDriverAdapterLoader.java +++ b/adapter-tcp/src/main/java/io/nosqlbench/adapter/tcpclient/TcpClientDriverAdapterLoader.java @@ -20,7 +20,7 @@ package io.nosqlbench.adapter.tcpclient; import io.nosqlbench.adapter.diag.DriverAdapterLoader; import io.nosqlbench.nb.api.labels.NBLabels; -import io.nosqlbench.nb.api.components.NBComponent; +import io.nosqlbench.nb.api.components.core.NBComponent; import io.nosqlbench.nb.annotations.Service; @Service(value = DriverAdapterLoader.class, selector = "tcpclient") diff --git a/adapter-tcp/src/main/java/io/nosqlbench/adapter/tcpserver/TcpServerDriverAdapter.java b/adapter-tcp/src/main/java/io/nosqlbench/adapter/tcpserver/TcpServerDriverAdapter.java index e02becf0f..f65d6c54e 100644 --- a/adapter-tcp/src/main/java/io/nosqlbench/adapter/tcpserver/TcpServerDriverAdapter.java +++ b/adapter-tcp/src/main/java/io/nosqlbench/adapter/tcpserver/TcpServerDriverAdapter.java @@ -27,7 +27,7 @@ import io.nosqlbench.adapters.api.activityimpl.uniform.DriverAdapter; import io.nosqlbench.adapters.api.activityimpl.uniform.DriverSpaceCache; import io.nosqlbench.adapters.api.activityimpl.uniform.decorators.SyntheticOpTemplateProvider; import io.nosqlbench.nb.api.labels.NBLabels; -import io.nosqlbench.nb.api.components.NBComponent; +import io.nosqlbench.nb.api.components.core.NBComponent; import io.nosqlbench.nb.annotations.Service; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; diff --git a/adapter-tcp/src/main/java/io/nosqlbench/adapter/tcpserver/TcpServerDriverAdapterLoader.java b/adapter-tcp/src/main/java/io/nosqlbench/adapter/tcpserver/TcpServerDriverAdapterLoader.java index e13b830dc..a71442789 100644 --- a/adapter-tcp/src/main/java/io/nosqlbench/adapter/tcpserver/TcpServerDriverAdapterLoader.java +++ b/adapter-tcp/src/main/java/io/nosqlbench/adapter/tcpserver/TcpServerDriverAdapterLoader.java @@ -20,7 +20,7 @@ package io.nosqlbench.adapter.tcpserver; import io.nosqlbench.adapter.diag.DriverAdapterLoader; import io.nosqlbench.nb.api.labels.NBLabels; -import io.nosqlbench.nb.api.components.NBComponent; +import io.nosqlbench.nb.api.components.core.NBComponent; import io.nosqlbench.nb.annotations.Service; @Service(value = DriverAdapterLoader.class, selector = "tcpserver") diff --git a/adapters-api/src/main/java/io/nosqlbench/adapter/diag/DriverAdapterLoader.java b/adapters-api/src/main/java/io/nosqlbench/adapter/diag/DriverAdapterLoader.java index a609d0c34..f16dd88f8 100644 --- a/adapters-api/src/main/java/io/nosqlbench/adapter/diag/DriverAdapterLoader.java +++ b/adapters-api/src/main/java/io/nosqlbench/adapter/diag/DriverAdapterLoader.java @@ -21,7 +21,7 @@ package io.nosqlbench.adapter.diag; import io.nosqlbench.adapters.api.activityimpl.uniform.DriverAdapter; import io.nosqlbench.adapters.api.activityimpl.uniform.flowtypes.Op; import io.nosqlbench.nb.api.labels.NBLabels; -import io.nosqlbench.nb.api.components.NBComponent; +import io.nosqlbench.nb.api.components.core.NBComponent; public interface DriverAdapterLoader { public DriverAdapter load(NBComponent parent, NBLabels childLabels); diff --git a/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityimpl/BaseOpDispenser.java b/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityimpl/BaseOpDispenser.java index 47c5ffb58..f514c240d 100644 --- a/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityimpl/BaseOpDispenser.java +++ b/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityimpl/BaseOpDispenser.java @@ -21,12 +21,11 @@ import groovy.lang.Binding; import io.nosqlbench.adapters.api.activityimpl.uniform.DriverAdapter; import io.nosqlbench.adapters.api.activityimpl.uniform.flowtypes.Op; import io.nosqlbench.adapters.api.evalctx.*; -import io.nosqlbench.adapters.api.evalctx.*; import io.nosqlbench.adapters.api.metrics.ThreadLocalNamedTimers; import io.nosqlbench.adapters.api.templating.ParsedOp; import io.nosqlbench.nb.api.labels.NBLabels; import io.nosqlbench.nb.api.errors.OpConfigError; -import io.nosqlbench.nb.api.components.NBBaseComponent; +import io.nosqlbench.nb.api.components.core.NBBaseComponent; import io.nosqlbench.virtdata.core.templates.ParsedTemplateString; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; diff --git a/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityimpl/docs/BundledDriverAdapterDocs.java b/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityimpl/docs/BundledDriverAdapterDocs.java index 6165b4f0a..457e950cd 100644 --- a/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityimpl/docs/BundledDriverAdapterDocs.java +++ b/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityimpl/docs/BundledDriverAdapterDocs.java @@ -24,7 +24,7 @@ import io.nosqlbench.nb.api.docsapi.Docs; import io.nosqlbench.nb.api.docsapi.DocsBinder; import io.nosqlbench.nb.api.labels.NBLabels; import io.nosqlbench.nb.api.spi.SimpleServiceLoader; -import io.nosqlbench.nb.api.components.NBComponent; +import io.nosqlbench.nb.api.components.core.NBComponent; import io.nosqlbench.nb.annotations.Maturity; import io.nosqlbench.nb.annotations.Service; diff --git a/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityimpl/uniform/BaseDriverAdapter.java b/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityimpl/uniform/BaseDriverAdapter.java index deaaed604..91a458bd0 100644 --- a/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityimpl/uniform/BaseDriverAdapter.java +++ b/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityimpl/uniform/BaseDriverAdapter.java @@ -21,8 +21,8 @@ import io.nosqlbench.adapters.api.activityimpl.uniform.fieldmappers.FieldDestruc import io.nosqlbench.adapters.api.templating.ParsedOp; import io.nosqlbench.nb.api.config.standard.*; import io.nosqlbench.nb.api.labels.NBLabels; -import io.nosqlbench.nb.api.components.NBComponent; -import io.nosqlbench.nb.api.components.NBBaseComponent; +import io.nosqlbench.nb.api.components.core.NBComponent; +import io.nosqlbench.nb.api.components.core.NBBaseComponent; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; diff --git a/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityimpl/uniform/DriverAdapter.java b/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityimpl/uniform/DriverAdapter.java index b5f5fee9c..0bd620bb3 100644 --- a/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityimpl/uniform/DriverAdapter.java +++ b/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityimpl/uniform/DriverAdapter.java @@ -22,7 +22,7 @@ import io.nosqlbench.adapters.api.activityimpl.uniform.flowtypes.Op; import io.nosqlbench.nb.api.docsapi.Docs; import io.nosqlbench.nb.api.docsapi.DocsBinder; import io.nosqlbench.adapters.api.templating.ParsedOp; -import io.nosqlbench.nb.api.components.NBComponent; +import io.nosqlbench.nb.api.components.core.NBComponent; import io.nosqlbench.nb.annotations.Maturity; import io.nosqlbench.nb.annotations.Service; import io.nosqlbench.nb.api.config.standard.NBConfiguration; diff --git a/adapters-api/src/main/java/io/nosqlbench/adapters/api/templating/ParsedOp.java b/adapters-api/src/main/java/io/nosqlbench/adapters/api/templating/ParsedOp.java index ebc5e3cb0..5f64c2c8b 100644 --- a/adapters-api/src/main/java/io/nosqlbench/adapters/api/templating/ParsedOp.java +++ b/adapters-api/src/main/java/io/nosqlbench/adapters/api/templating/ParsedOp.java @@ -24,8 +24,8 @@ import io.nosqlbench.nb.api.config.fieldreaders.StaticFieldReader; import io.nosqlbench.nb.api.config.standard.NBConfigError; import io.nosqlbench.nb.api.config.standard.NBConfiguration; import io.nosqlbench.nb.api.errors.OpConfigError; -import io.nosqlbench.nb.api.components.NBComponent; -import io.nosqlbench.nb.api.components.NBBaseComponent; +import io.nosqlbench.nb.api.components.core.NBComponent; +import io.nosqlbench.nb.api.components.core.NBBaseComponent; import io.nosqlbench.engine.api.templating.ObjectCache; import io.nosqlbench.engine.api.templating.ParsedTemplateMap; import io.nosqlbench.engine.api.templating.TypeAndTarget; diff --git a/adapters-api/src/test/java/io/nosqlbench/adapters/api/templating/ParsedOpTest.java b/adapters-api/src/test/java/io/nosqlbench/adapters/api/templating/ParsedOpTest.java index 65719e2d5..9bf906285 100644 --- a/adapters-api/src/test/java/io/nosqlbench/adapters/api/templating/ParsedOpTest.java +++ b/adapters-api/src/test/java/io/nosqlbench/adapters/api/templating/ParsedOpTest.java @@ -25,7 +25,7 @@ import io.nosqlbench.adapters.api.activityconfig.yaml.OpsDocList; import io.nosqlbench.nb.api.config.standard.ConfigModel; import io.nosqlbench.nb.api.config.standard.NBConfiguration; import io.nosqlbench.nb.api.config.standard.Param; -import io.nosqlbench.nb.api.components.NBComponent; +import io.nosqlbench.nb.api.components.core.NBComponent; import org.junit.jupiter.api.Test; import java.util.List; diff --git a/engine-cli/src/main/java/io/nosqlbench/engine/cli/NBCLI.java b/engine-cli/src/main/java/io/nosqlbench/engine/cli/NBCLI.java index 5ccfd08c7..395fda36e 100644 --- a/engine-cli/src/main/java/io/nosqlbench/engine/cli/NBCLI.java +++ b/engine-cli/src/main/java/io/nosqlbench/engine/cli/NBCLI.java @@ -34,7 +34,7 @@ import io.nosqlbench.nb.api.labels.NBLabels; import io.nosqlbench.nb.api.logging.NBLogLevel; import io.nosqlbench.nb.api.metadata.SessionNamer; import io.nosqlbench.nb.api.metadata.SystemId; -import io.nosqlbench.nb.api.components.NBBaseComponent; +import io.nosqlbench.nb.api.components.core.NBBaseComponent; import io.nosqlbench.engine.api.activityapi.cyclelog.outputs.cyclelog.CycleLogDumperUtility; import io.nosqlbench.engine.api.activityapi.cyclelog.outputs.cyclelog.CycleLogImporterUtility; import io.nosqlbench.engine.api.activityapi.input.InputType; @@ -42,7 +42,6 @@ import io.nosqlbench.engine.api.activityapi.output.OutputType; import io.nosqlbench.engine.cli.NBCLIOptions.Mode; import io.nosqlbench.engine.core.annotation.Annotators; import io.nosqlbench.engine.core.lifecycle.ExecutionResult; -import io.nosqlbench.engine.core.clientload.ClientSystemMetricChecker; import io.nosqlbench.engine.core.lifecycle.process.NBCLIErrorHandler; import io.nosqlbench.engine.core.lifecycle.activity.ActivityTypeLoader; import io.nosqlbench.engine.core.lifecycle.session.NBSession; diff --git a/engine-core/src/main/java/io/nosqlbench/engine/api/activityapi/core/Activity.java b/engine-core/src/main/java/io/nosqlbench/engine/api/activityapi/core/Activity.java index 1c27f5fa4..9dcd74d71 100644 --- a/engine-core/src/main/java/io/nosqlbench/engine/api/activityapi/core/Activity.java +++ b/engine-core/src/main/java/io/nosqlbench/engine/api/activityapi/core/Activity.java @@ -16,7 +16,7 @@ package io.nosqlbench.engine.api.activityapi.core; -import io.nosqlbench.nb.api.components.NBComponent; +import io.nosqlbench.nb.api.components.core.NBComponent; import io.nosqlbench.nb.api.engine.activityimpl.ActivityDef; import io.nosqlbench.nb.api.engine.activityimpl.ParameterMap; import io.nosqlbench.engine.api.activityapi.core.progress.ProgressCapable; diff --git a/engine-core/src/main/java/io/nosqlbench/engine/api/activityapi/core/ActivityType.java b/engine-core/src/main/java/io/nosqlbench/engine/api/activityapi/core/ActivityType.java index 39256d4a0..a6fe93b6b 100644 --- a/engine-core/src/main/java/io/nosqlbench/engine/api/activityapi/core/ActivityType.java +++ b/engine-core/src/main/java/io/nosqlbench/engine/api/activityapi/core/ActivityType.java @@ -16,7 +16,7 @@ package io.nosqlbench.engine.api.activityapi.core; -import io.nosqlbench.nb.api.components.NBComponent; +import io.nosqlbench.nb.api.components.core.NBComponent; import io.nosqlbench.nb.api.engine.activityimpl.ActivityDef; import io.nosqlbench.engine.api.activityapi.input.InputDispenser; import io.nosqlbench.engine.api.activityapi.output.OutputDispenser; diff --git a/engine-core/src/main/java/io/nosqlbench/engine/api/activityapi/errorhandling/ErrorMetrics.java b/engine-core/src/main/java/io/nosqlbench/engine/api/activityapi/errorhandling/ErrorMetrics.java index 5c68f679e..df6c4027f 100644 --- a/engine-core/src/main/java/io/nosqlbench/engine/api/activityapi/errorhandling/ErrorMetrics.java +++ b/engine-core/src/main/java/io/nosqlbench/engine/api/activityapi/errorhandling/ErrorMetrics.java @@ -17,7 +17,7 @@ package io.nosqlbench.engine.api.activityapi.errorhandling; import io.nosqlbench.nb.api.engine.activityimpl.ActivityDef; -import io.nosqlbench.nb.api.components.NBComponent; +import io.nosqlbench.nb.api.components.core.NBComponent; import io.nosqlbench.engine.api.metrics.ExceptionCountMetrics; import io.nosqlbench.engine.api.metrics.ExceptionExpectedResultVerificationMetrics; import io.nosqlbench.engine.api.metrics.ExceptionHistoMetrics; diff --git a/engine-core/src/main/java/io/nosqlbench/engine/api/activityapi/ratelimits/RateLimiters.java b/engine-core/src/main/java/io/nosqlbench/engine/api/activityapi/ratelimits/RateLimiters.java index 86670a009..1a52e0990 100644 --- a/engine-core/src/main/java/io/nosqlbench/engine/api/activityapi/ratelimits/RateLimiters.java +++ b/engine-core/src/main/java/io/nosqlbench/engine/api/activityapi/ratelimits/RateLimiters.java @@ -16,7 +16,7 @@ package io.nosqlbench.engine.api.activityapi.ratelimits; -import io.nosqlbench.nb.api.components.NBComponent; +import io.nosqlbench.nb.api.components.core.NBComponent; import io.nosqlbench.engine.api.activityapi.ratelimits.simrate.SimRate; import io.nosqlbench.engine.api.activityapi.ratelimits.simrate.SimRateSpec; import org.apache.logging.log4j.LogManager; diff --git a/engine-core/src/main/java/io/nosqlbench/engine/api/activityapi/ratelimits/simrate/SimRate.java b/engine-core/src/main/java/io/nosqlbench/engine/api/activityapi/ratelimits/simrate/SimRate.java index 031781f4b..646c2554c 100644 --- a/engine-core/src/main/java/io/nosqlbench/engine/api/activityapi/ratelimits/simrate/SimRate.java +++ b/engine-core/src/main/java/io/nosqlbench/engine/api/activityapi/ratelimits/simrate/SimRate.java @@ -17,8 +17,8 @@ package io.nosqlbench.engine.api.activityapi.ratelimits.simrate; import io.nosqlbench.nb.api.labels.NBLabels; -import io.nosqlbench.nb.api.components.NBBaseComponent; -import io.nosqlbench.nb.api.components.NBComponent; +import io.nosqlbench.nb.api.components.core.NBBaseComponent; +import io.nosqlbench.nb.api.components.core.NBComponent; import io.nosqlbench.engine.api.activityapi.ratelimits.RateLimiter; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; diff --git a/engine-core/src/main/java/io/nosqlbench/engine/api/activityimpl/SimpleActivity.java b/engine-core/src/main/java/io/nosqlbench/engine/api/activityimpl/SimpleActivity.java index 1b3408be8..95e2a983f 100644 --- a/engine-core/src/main/java/io/nosqlbench/engine/api/activityimpl/SimpleActivity.java +++ b/engine-core/src/main/java/io/nosqlbench/engine/api/activityimpl/SimpleActivity.java @@ -16,8 +16,8 @@ package io.nosqlbench.engine.api.activityimpl; -import io.nosqlbench.nb.api.components.NBComponent; -import io.nosqlbench.nb.api.components.NBBaseComponent; +import io.nosqlbench.nb.api.components.core.NBComponent; +import io.nosqlbench.nb.api.components.core.NBBaseComponent; import io.nosqlbench.nb.api.components.events.ParamChange; import io.nosqlbench.engine.api.activityapi.core.*; import io.nosqlbench.engine.api.activityapi.core.progress.ActivityMetricProgressMeter; diff --git a/engine-core/src/main/java/io/nosqlbench/engine/api/activityimpl/input/AtomicInput.java b/engine-core/src/main/java/io/nosqlbench/engine/api/activityimpl/input/AtomicInput.java index 643cff61e..85db5bde1 100644 --- a/engine-core/src/main/java/io/nosqlbench/engine/api/activityimpl/input/AtomicInput.java +++ b/engine-core/src/main/java/io/nosqlbench/engine/api/activityimpl/input/AtomicInput.java @@ -18,8 +18,8 @@ package io.nosqlbench.engine.api.activityimpl.input; import com.codahale.metrics.Gauge; import io.nosqlbench.nb.api.engine.activityimpl.ActivityDef; import io.nosqlbench.nb.api.engine.activityimpl.CyclesSpec; -import io.nosqlbench.nb.api.components.NBComponent; -import io.nosqlbench.nb.api.components.NBBaseComponent; +import io.nosqlbench.nb.api.components.core.NBComponent; +import io.nosqlbench.nb.api.components.core.NBBaseComponent; import io.nosqlbench.engine.api.activityapi.core.ActivityDefObserver; import io.nosqlbench.engine.api.activityapi.cyclelog.buffers.results.CycleSegment; import io.nosqlbench.engine.api.activityapi.input.Input; diff --git a/engine-core/src/main/java/io/nosqlbench/engine/api/activityimpl/uniform/StandardActivity.java b/engine-core/src/main/java/io/nosqlbench/engine/api/activityimpl/uniform/StandardActivity.java index d34c84243..0616d534e 100644 --- a/engine-core/src/main/java/io/nosqlbench/engine/api/activityimpl/uniform/StandardActivity.java +++ b/engine-core/src/main/java/io/nosqlbench/engine/api/activityimpl/uniform/StandardActivity.java @@ -28,7 +28,7 @@ import io.nosqlbench.adapters.api.activityimpl.uniform.decorators.SyntheticOpTem import io.nosqlbench.adapters.api.activityimpl.uniform.flowtypes.Op; import io.nosqlbench.adapters.api.templating.ParsedOp; import io.nosqlbench.nb.api.lifecycle.Shutdownable; -import io.nosqlbench.nb.api.components.NBComponent; +import io.nosqlbench.nb.api.components.core.NBComponent; import io.nosqlbench.nb.api.config.standard.*; import io.nosqlbench.nb.api.engine.activityimpl.ActivityDef; import io.nosqlbench.nb.api.errors.BasicError; diff --git a/engine-core/src/main/java/io/nosqlbench/engine/api/activityimpl/uniform/StandardActivityType.java b/engine-core/src/main/java/io/nosqlbench/engine/api/activityimpl/uniform/StandardActivityType.java index 644421d9e..a3e03db0d 100644 --- a/engine-core/src/main/java/io/nosqlbench/engine/api/activityimpl/uniform/StandardActivityType.java +++ b/engine-core/src/main/java/io/nosqlbench/engine/api/activityimpl/uniform/StandardActivityType.java @@ -17,7 +17,7 @@ package io.nosqlbench.engine.api.activityimpl.uniform; import io.nosqlbench.adapters.api.activityimpl.uniform.DriverAdapter; -import io.nosqlbench.nb.api.components.NBComponent; +import io.nosqlbench.nb.api.components.core.NBComponent; import io.nosqlbench.nb.api.engine.activityimpl.ActivityDef; import io.nosqlbench.engine.api.activityapi.core.ActionDispenser; import io.nosqlbench.engine.api.activityapi.core.ActivityType; diff --git a/engine-core/src/main/java/io/nosqlbench/engine/api/metrics/ExceptionCountMetrics.java b/engine-core/src/main/java/io/nosqlbench/engine/api/metrics/ExceptionCountMetrics.java index 7e591a674..c7cab5177 100644 --- a/engine-core/src/main/java/io/nosqlbench/engine/api/metrics/ExceptionCountMetrics.java +++ b/engine-core/src/main/java/io/nosqlbench/engine/api/metrics/ExceptionCountMetrics.java @@ -17,7 +17,7 @@ package io.nosqlbench.engine.api.metrics; import com.codahale.metrics.Counter; -import io.nosqlbench.nb.api.components.NBComponent; +import io.nosqlbench.nb.api.components.core.NBComponent; import java.util.ArrayList; import java.util.List; diff --git a/engine-core/src/main/java/io/nosqlbench/engine/api/metrics/ExceptionExpectedResultVerificationMetrics.java b/engine-core/src/main/java/io/nosqlbench/engine/api/metrics/ExceptionExpectedResultVerificationMetrics.java index e66f25d87..ccd8b212f 100644 --- a/engine-core/src/main/java/io/nosqlbench/engine/api/metrics/ExceptionExpectedResultVerificationMetrics.java +++ b/engine-core/src/main/java/io/nosqlbench/engine/api/metrics/ExceptionExpectedResultVerificationMetrics.java @@ -17,7 +17,7 @@ package io.nosqlbench.engine.api.metrics; import com.codahale.metrics.Counter; -import io.nosqlbench.nb.api.components.NBComponent; +import io.nosqlbench.nb.api.components.core.NBComponent; /** diff --git a/engine-core/src/main/java/io/nosqlbench/engine/api/metrics/ExceptionHistoMetrics.java b/engine-core/src/main/java/io/nosqlbench/engine/api/metrics/ExceptionHistoMetrics.java index a488942cb..4f60bf0c0 100644 --- a/engine-core/src/main/java/io/nosqlbench/engine/api/metrics/ExceptionHistoMetrics.java +++ b/engine-core/src/main/java/io/nosqlbench/engine/api/metrics/ExceptionHistoMetrics.java @@ -18,7 +18,7 @@ package io.nosqlbench.engine.api.metrics; import com.codahale.metrics.Histogram; import io.nosqlbench.nb.api.engine.activityimpl.ActivityDef; -import io.nosqlbench.nb.api.components.NBComponent; +import io.nosqlbench.nb.api.components.core.NBComponent; import java.util.ArrayList; import java.util.List; diff --git a/engine-core/src/main/java/io/nosqlbench/engine/api/metrics/ExceptionMeterMetrics.java b/engine-core/src/main/java/io/nosqlbench/engine/api/metrics/ExceptionMeterMetrics.java index 840eae18f..16186b5a1 100644 --- a/engine-core/src/main/java/io/nosqlbench/engine/api/metrics/ExceptionMeterMetrics.java +++ b/engine-core/src/main/java/io/nosqlbench/engine/api/metrics/ExceptionMeterMetrics.java @@ -17,7 +17,7 @@ package io.nosqlbench.engine.api.metrics; import com.codahale.metrics.Meter; -import io.nosqlbench.nb.api.components.NBComponent; +import io.nosqlbench.nb.api.components.core.NBComponent; import java.util.ArrayList; import java.util.List; diff --git a/engine-core/src/main/java/io/nosqlbench/engine/api/metrics/ExceptionTimerMetrics.java b/engine-core/src/main/java/io/nosqlbench/engine/api/metrics/ExceptionTimerMetrics.java index eb0935acb..3edcd751e 100644 --- a/engine-core/src/main/java/io/nosqlbench/engine/api/metrics/ExceptionTimerMetrics.java +++ b/engine-core/src/main/java/io/nosqlbench/engine/api/metrics/ExceptionTimerMetrics.java @@ -18,7 +18,7 @@ package io.nosqlbench.engine.api.metrics; import com.codahale.metrics.Timer; import io.nosqlbench.nb.api.engine.activityimpl.ActivityDef; -import io.nosqlbench.nb.api.components.NBComponent; +import io.nosqlbench.nb.api.components.core.NBComponent; import java.util.ArrayList; import java.util.List; diff --git a/engine-core/src/main/java/io/nosqlbench/engine/cmdstream/NBJavaCommandLoader.java b/engine-core/src/main/java/io/nosqlbench/engine/cmdstream/NBJavaCommandLoader.java index af296d461..391c51766 100644 --- a/engine-core/src/main/java/io/nosqlbench/engine/cmdstream/NBJavaCommandLoader.java +++ b/engine-core/src/main/java/io/nosqlbench/engine/cmdstream/NBJavaCommandLoader.java @@ -17,7 +17,7 @@ package io.nosqlbench.engine.cmdstream; import io.nosqlbench.engine.core.lifecycle.scenario.execution.NBInvokableCommand; -import io.nosqlbench.nb.api.components.NBComponent; +import io.nosqlbench.nb.api.components.core.NBComponent; import io.nosqlbench.engine.core.lifecycle.scenario.execution.NBCommandInfo; import io.nosqlbench.nb.annotations.ServiceSelector; diff --git a/engine-core/src/main/java/io/nosqlbench/engine/core/clientload/ClientSystemMetricChecker.java b/engine-core/src/main/java/io/nosqlbench/engine/core/clientload/ClientSystemMetricChecker.java index f07fc5a68..3f5371e26 100644 --- a/engine-core/src/main/java/io/nosqlbench/engine/core/clientload/ClientSystemMetricChecker.java +++ b/engine-core/src/main/java/io/nosqlbench/engine/core/clientload/ClientSystemMetricChecker.java @@ -18,8 +18,8 @@ package io.nosqlbench.engine.core.clientload; import io.nosqlbench.nb.api.engine.metrics.instruments.NBMetricGauge; import io.nosqlbench.nb.api.labels.NBLabels; -import io.nosqlbench.nb.api.components.NBBaseComponent; -import io.nosqlbench.nb.api.components.NBComponent; +import io.nosqlbench.nb.api.components.core.NBBaseComponent; +import io.nosqlbench.nb.api.components.core.NBComponent; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import java.util.concurrent.Executors; diff --git a/engine-core/src/main/java/io/nosqlbench/engine/core/lifecycle/ExecutionMetricsResult.java b/engine-core/src/main/java/io/nosqlbench/engine/core/lifecycle/ExecutionMetricsResult.java index a28bfae75..29ad67bbc 100644 --- a/engine-core/src/main/java/io/nosqlbench/engine/core/lifecycle/ExecutionMetricsResult.java +++ b/engine-core/src/main/java/io/nosqlbench/engine/core/lifecycle/ExecutionMetricsResult.java @@ -23,10 +23,10 @@ import com.codahale.metrics.MetricFilter; import io.nosqlbench.nb.api.engine.metrics.instruments.*; import io.nosqlbench.nb.api.engine.metrics.reporters.ConsoleReporter; import io.nosqlbench.nb.api.engine.metrics.reporters.Log4JMetricsReporter; -import io.nosqlbench.nb.api.components.NBCreators; -import io.nosqlbench.nb.api.components.NBComponent; -import io.nosqlbench.nb.api.components.NBComponentTraversal; -import io.nosqlbench.nb.api.components.NBFinders; +import io.nosqlbench.nb.api.components.core.NBCreators; +import io.nosqlbench.nb.api.components.core.NBComponent; +import io.nosqlbench.nb.api.components.core.NBComponentTraversal; +import io.nosqlbench.nb.api.components.core.NBFinders; import io.nosqlbench.engine.core.metrics.NBMetricsSummary; import java.io.ByteArrayOutputStream; diff --git a/engine-core/src/main/java/io/nosqlbench/engine/core/lifecycle/activity/ActivityExecutor.java b/engine-core/src/main/java/io/nosqlbench/engine/core/lifecycle/activity/ActivityExecutor.java index dc9310d1a..bd6e9743d 100644 --- a/engine-core/src/main/java/io/nosqlbench/engine/core/lifecycle/activity/ActivityExecutor.java +++ b/engine-core/src/main/java/io/nosqlbench/engine/core/lifecycle/activity/ActivityExecutor.java @@ -19,7 +19,7 @@ import com.codahale.metrics.Gauge; import io.nosqlbench.nb.api.engine.metrics.instruments.NBMetricGauge; import io.nosqlbench.nb.api.labels.NBLabeledElement; import io.nosqlbench.nb.api.labels.NBLabels; -import io.nosqlbench.nb.api.components.NBComponentExecutionScope; +import io.nosqlbench.nb.api.components.core.NBComponentExecutionScope; import io.nosqlbench.engine.api.activityapi.core.*; import io.nosqlbench.engine.api.activityimpl.MotorState; import io.nosqlbench.nb.api.annotations.Annotation; diff --git a/engine-core/src/main/java/io/nosqlbench/engine/core/lifecycle/activity/ActivityLoader.java b/engine-core/src/main/java/io/nosqlbench/engine/core/lifecycle/activity/ActivityLoader.java index c9268247c..4246ef46c 100644 --- a/engine-core/src/main/java/io/nosqlbench/engine/core/lifecycle/activity/ActivityLoader.java +++ b/engine-core/src/main/java/io/nosqlbench/engine/core/lifecycle/activity/ActivityLoader.java @@ -17,7 +17,7 @@ package io.nosqlbench.engine.core.lifecycle.activity; import io.nosqlbench.nb.api.engine.activityimpl.ActivityDef; -import io.nosqlbench.nb.api.components.NBComponent; +import io.nosqlbench.nb.api.components.core.NBComponent; import io.nosqlbench.engine.api.activityapi.core.Activity; import io.nosqlbench.engine.api.activityimpl.uniform.StandardActivityType; import org.apache.logging.log4j.LogManager; diff --git a/engine-core/src/main/java/io/nosqlbench/engine/core/lifecycle/activity/ActivityTypeLoader.java b/engine-core/src/main/java/io/nosqlbench/engine/core/lifecycle/activity/ActivityTypeLoader.java index e70b937fd..fc769df7a 100644 --- a/engine-core/src/main/java/io/nosqlbench/engine/core/lifecycle/activity/ActivityTypeLoader.java +++ b/engine-core/src/main/java/io/nosqlbench/engine/core/lifecycle/activity/ActivityTypeLoader.java @@ -18,7 +18,7 @@ package io.nosqlbench.engine.core.lifecycle.activity; import io.nosqlbench.adapter.diag.DriverAdapterLoader; import io.nosqlbench.adapters.api.activityimpl.uniform.DriverAdapter; -import io.nosqlbench.nb.api.components.NBComponent; +import io.nosqlbench.nb.api.components.core.NBComponent; import io.nosqlbench.nb.api.nbio.Content; import io.nosqlbench.nb.api.nbio.NBIO; import io.nosqlbench.nb.api.engine.activityimpl.ActivityDef; diff --git a/engine-core/src/main/java/io/nosqlbench/engine/core/lifecycle/scenario/container/ContainerActivitiesController.java b/engine-core/src/main/java/io/nosqlbench/engine/core/lifecycle/scenario/container/ContainerActivitiesController.java index a51930cb9..a721fe474 100644 --- a/engine-core/src/main/java/io/nosqlbench/engine/core/lifecycle/scenario/container/ContainerActivitiesController.java +++ b/engine-core/src/main/java/io/nosqlbench/engine/core/lifecycle/scenario/container/ContainerActivitiesController.java @@ -17,9 +17,9 @@ package io.nosqlbench.engine.core.lifecycle.scenario.container; import io.nosqlbench.nb.api.engine.activityimpl.ActivityDef; import io.nosqlbench.nb.api.engine.activityimpl.ParameterMap; -import io.nosqlbench.nb.api.components.NBComponent; -import io.nosqlbench.nb.api.components.NBBaseComponent; -import io.nosqlbench.nb.api.components.NBComponentErrorHandler; +import io.nosqlbench.nb.api.components.core.NBComponent; +import io.nosqlbench.nb.api.components.core.NBBaseComponent; +import io.nosqlbench.nb.api.components.core.NBComponentErrorHandler; import io.nosqlbench.engine.api.activityapi.core.Activity; import io.nosqlbench.engine.api.activityapi.core.progress.ProgressMeterDisplay; import io.nosqlbench.engine.core.lifecycle.ExecutionResult; diff --git a/engine-core/src/main/java/io/nosqlbench/engine/core/lifecycle/scenario/container/ContainerBuilderFacets.java b/engine-core/src/main/java/io/nosqlbench/engine/core/lifecycle/scenario/container/ContainerBuilderFacets.java index 1321639a8..c8c84c5fb 100644 --- a/engine-core/src/main/java/io/nosqlbench/engine/core/lifecycle/scenario/container/ContainerBuilderFacets.java +++ b/engine-core/src/main/java/io/nosqlbench/engine/core/lifecycle/scenario/container/ContainerBuilderFacets.java @@ -18,7 +18,7 @@ package io.nosqlbench.engine.core.lifecycle.scenario.container; */ -import io.nosqlbench.nb.api.components.NBComponent; +import io.nosqlbench.nb.api.components.core.NBComponent; import java.io.PrintWriter; import java.io.Reader; diff --git a/engine-core/src/main/java/io/nosqlbench/engine/core/lifecycle/scenario/container/NBBufferedContainer.java b/engine-core/src/main/java/io/nosqlbench/engine/core/lifecycle/scenario/container/NBBufferedContainer.java index 1b6add0a0..abc0a0730 100644 --- a/engine-core/src/main/java/io/nosqlbench/engine/core/lifecycle/scenario/container/NBBufferedContainer.java +++ b/engine-core/src/main/java/io/nosqlbench/engine/core/lifecycle/scenario/container/NBBufferedContainer.java @@ -24,8 +24,8 @@ import io.nosqlbench.engine.core.lifecycle.scenario.execution.NBInvokableCommand import io.nosqlbench.nb.api.annotations.Annotation; import io.nosqlbench.nb.api.annotations.Layer; import io.nosqlbench.nb.api.labels.NBLabels; -import io.nosqlbench.nb.api.components.NBBaseComponent; -import io.nosqlbench.nb.api.components.NBComponent; +import io.nosqlbench.nb.api.components.core.NBBaseComponent; +import io.nosqlbench.nb.api.components.core.NBComponent; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; diff --git a/engine-core/src/main/java/io/nosqlbench/engine/core/lifecycle/scenario/container/NBContainer.java b/engine-core/src/main/java/io/nosqlbench/engine/core/lifecycle/scenario/container/NBContainer.java index ff0b126ba..4d0c78bd2 100644 --- a/engine-core/src/main/java/io/nosqlbench/engine/core/lifecycle/scenario/container/NBContainer.java +++ b/engine-core/src/main/java/io/nosqlbench/engine/core/lifecycle/scenario/container/NBContainer.java @@ -18,7 +18,7 @@ package io.nosqlbench.engine.core.lifecycle.scenario.container; import io.nosqlbench.engine.core.lifecycle.scenario.execution.NBCommandResult; import io.nosqlbench.engine.core.lifecycle.scenario.execution.NBInvokableCommand; -import io.nosqlbench.nb.api.components.NBComponent; +import io.nosqlbench.nb.api.components.core.NBComponent; import java.io.PrintWriter; import java.io.Reader; diff --git a/engine-core/src/main/java/io/nosqlbench/engine/core/lifecycle/scenario/container/NBScenarioContainerBuilder.java b/engine-core/src/main/java/io/nosqlbench/engine/core/lifecycle/scenario/container/NBScenarioContainerBuilder.java index 84b97b72e..0523c9855 100644 --- a/engine-core/src/main/java/io/nosqlbench/engine/core/lifecycle/scenario/container/NBScenarioContainerBuilder.java +++ b/engine-core/src/main/java/io/nosqlbench/engine/core/lifecycle/scenario/container/NBScenarioContainerBuilder.java @@ -18,7 +18,7 @@ package io.nosqlbench.engine.core.lifecycle.scenario.container; */ -import io.nosqlbench.nb.api.components.NBComponent; +import io.nosqlbench.nb.api.components.core.NBComponent; import java.io.InputStreamReader; import java.io.PrintWriter; diff --git a/engine-core/src/main/java/io/nosqlbench/engine/core/lifecycle/scenario/execution/NBCommandInfo.java b/engine-core/src/main/java/io/nosqlbench/engine/core/lifecycle/scenario/execution/NBCommandInfo.java index 5c0fc9078..b98d57601 100644 --- a/engine-core/src/main/java/io/nosqlbench/engine/core/lifecycle/scenario/execution/NBCommandInfo.java +++ b/engine-core/src/main/java/io/nosqlbench/engine/core/lifecycle/scenario/execution/NBCommandInfo.java @@ -17,7 +17,7 @@ package io.nosqlbench.engine.core.lifecycle.scenario.execution; import io.nosqlbench.engine.core.lifecycle.scenario.container.NBBufferedContainer; -import io.nosqlbench.nb.api.components.NBComponent; +import io.nosqlbench.nb.api.components.core.NBComponent; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; diff --git a/engine-core/src/main/java/io/nosqlbench/engine/core/lifecycle/scenario/execution/NBInvokableCommand.java b/engine-core/src/main/java/io/nosqlbench/engine/core/lifecycle/scenario/execution/NBInvokableCommand.java index b94310980..c8e52c3e6 100644 --- a/engine-core/src/main/java/io/nosqlbench/engine/core/lifecycle/scenario/execution/NBInvokableCommand.java +++ b/engine-core/src/main/java/io/nosqlbench/engine/core/lifecycle/scenario/execution/NBInvokableCommand.java @@ -18,7 +18,7 @@ package io.nosqlbench.engine.core.lifecycle.scenario.execution; import io.nosqlbench.engine.core.lifecycle.scenario.container.NBBufferedContainer; import io.nosqlbench.engine.core.lifecycle.scenario.container.NBCommandParams; -import io.nosqlbench.nb.api.components.NBBaseComponent; +import io.nosqlbench.nb.api.components.core.NBBaseComponent; import io.nosqlbench.nb.api.labels.NBLabels; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; diff --git a/engine-core/src/main/java/io/nosqlbench/engine/core/lifecycle/scenario/execution/ScenarioSummary.java b/engine-core/src/main/java/io/nosqlbench/engine/core/lifecycle/scenario/execution/ScenarioSummary.java index b9d33d3f0..21342b3f3 100644 --- a/engine-core/src/main/java/io/nosqlbench/engine/core/lifecycle/scenario/execution/ScenarioSummary.java +++ b/engine-core/src/main/java/io/nosqlbench/engine/core/lifecycle/scenario/execution/ScenarioSummary.java @@ -16,7 +16,7 @@ package io.nosqlbench.engine.core.lifecycle.scenario.execution; -import io.nosqlbench.nb.api.components.NBComponent; +import io.nosqlbench.nb.api.components.core.NBComponent; import io.nosqlbench.engine.core.lifecycle.ExecutionMetricsResult; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; diff --git a/engine-core/src/main/java/io/nosqlbench/engine/core/lifecycle/session/NBSession.java b/engine-core/src/main/java/io/nosqlbench/engine/core/lifecycle/session/NBSession.java index 61b688d85..8b3e07bf0 100644 --- a/engine-core/src/main/java/io/nosqlbench/engine/core/lifecycle/session/NBSession.java +++ b/engine-core/src/main/java/io/nosqlbench/engine/core/lifecycle/session/NBSession.java @@ -21,7 +21,7 @@ import io.nosqlbench.nb.api.engine.metrics.instruments.NBFunctionGauge; import io.nosqlbench.nb.api.engine.metrics.instruments.NBMetricGauge; import io.nosqlbench.nb.api.labels.NBLabeledElement; import io.nosqlbench.nb.api.labels.NBLabels; -import io.nosqlbench.nb.api.components.NBBaseComponent; +import io.nosqlbench.nb.api.components.core.NBBaseComponent; import io.nosqlbench.nb.api.components.decorators.NBTokenWords; import io.nosqlbench.engine.cmdstream.Cmd; import io.nosqlbench.engine.core.clientload.*; diff --git a/engine-core/src/test/java/io/nosqlbench/engine/api/metrics/HistoIntervalLoggerTest.java b/engine-core/src/test/java/io/nosqlbench/engine/api/metrics/HistoIntervalLoggerTest.java index 2b855ae93..b97187cdd 100644 --- a/engine-core/src/test/java/io/nosqlbench/engine/api/metrics/HistoIntervalLoggerTest.java +++ b/engine-core/src/test/java/io/nosqlbench/engine/api/metrics/HistoIntervalLoggerTest.java @@ -20,7 +20,7 @@ import io.nosqlbench.nb.api.labels.NBLabels; import io.nosqlbench.nb.api.engine.metrics.DeltaHdrHistogramReservoir; import io.nosqlbench.nb.api.engine.metrics.HistoIntervalLogger; import io.nosqlbench.nb.api.engine.metrics.instruments.NBMetricHistogram; -import io.nosqlbench.nb.api.components.NBBaseComponent; +import io.nosqlbench.nb.api.components.core.NBBaseComponent; import org.HdrHistogram.EncodableHistogram; import org.HdrHistogram.Histogram; import org.HdrHistogram.HistogramLogReader; diff --git a/engine-core/src/test/java/io/nosqlbench/engine/core/NBBaseCommandTest.java b/engine-core/src/test/java/io/nosqlbench/engine/core/NBBaseCommandTest.java index 06da29283..3dcbd9bdc 100644 --- a/engine-core/src/test/java/io/nosqlbench/engine/core/NBBaseCommandTest.java +++ b/engine-core/src/test/java/io/nosqlbench/engine/core/NBBaseCommandTest.java @@ -20,7 +20,7 @@ import io.nosqlbench.engine.cmdstream.Cmd; import io.nosqlbench.engine.cmdstream.CmdArg; import io.nosqlbench.engine.cmdstream.CmdParam; import io.nosqlbench.engine.core.lifecycle.session.NBCommandInvoker; -import io.nosqlbench.nb.api.components.NBComponent; +import io.nosqlbench.nb.api.components.core.NBComponent; import io.nosqlbench.engine.core.lifecycle.scenario.container.NBBufferedContainer; import io.nosqlbench.engine.core.lifecycle.scenario.container.NBContainer; import io.nosqlbench.engine.core.lifecycle.scenario.execution.NBCommandResult; diff --git a/engine-core/src/test/java/io/nosqlbench/engine/sandbox/SimRateSanityTest.java b/engine-core/src/test/java/io/nosqlbench/engine/sandbox/SimRateSanityTest.java index fd799a3b4..761624069 100644 --- a/engine-core/src/test/java/io/nosqlbench/engine/sandbox/SimRateSanityTest.java +++ b/engine-core/src/test/java/io/nosqlbench/engine/sandbox/SimRateSanityTest.java @@ -17,7 +17,7 @@ package io.nosqlbench.engine.sandbox; import io.nosqlbench.nb.api.config.standard.TestComponent; -import io.nosqlbench.nb.api.components.NBComponent; +import io.nosqlbench.nb.api.components.core.NBComponent; import io.nosqlbench.engine.api.activityapi.ratelimits.simrate.SimRate; import io.nosqlbench.engine.api.activityapi.ratelimits.simrate.SimRateSpec; import org.junit.jupiter.api.Disabled; diff --git a/engine-core/src/test/java/io/nosqlbench/engine/sandbox/SimRateTest.java b/engine-core/src/test/java/io/nosqlbench/engine/sandbox/SimRateTest.java index 2ce0a99a2..dddef78be 100644 --- a/engine-core/src/test/java/io/nosqlbench/engine/sandbox/SimRateTest.java +++ b/engine-core/src/test/java/io/nosqlbench/engine/sandbox/SimRateTest.java @@ -17,7 +17,7 @@ package io.nosqlbench.engine.sandbox; import io.nosqlbench.nb.api.config.standard.TestComponent; -import io.nosqlbench.nb.api.components.NBComponent; +import io.nosqlbench.nb.api.components.core.NBComponent; import io.nosqlbench.engine.api.activityapi.ratelimits.simrate.SimRateSpec; import io.nosqlbench.engine.api.activityapi.ratelimits.simrate.SimRate; import org.junit.jupiter.api.Disabled; diff --git a/engine-extensions/src/main/java/io/nosqlbench/engine/extensions/computefunctions/ComputeFunctionPluginInfo.java b/engine-extensions/src/main/java/io/nosqlbench/engine/extensions/computefunctions/ComputeFunctionPluginInfo.java index b674d315a..3c706fae5 100644 --- a/engine-extensions/src/main/java/io/nosqlbench/engine/extensions/computefunctions/ComputeFunctionPluginInfo.java +++ b/engine-extensions/src/main/java/io/nosqlbench/engine/extensions/computefunctions/ComputeFunctionPluginInfo.java @@ -17,7 +17,7 @@ package io.nosqlbench.engine.extensions.computefunctions; import io.nosqlbench.nb.api.extensions.ScriptingExtensionPluginInfo; -import io.nosqlbench.nb.api.components.NBComponent; +import io.nosqlbench.nb.api.components.core.NBComponent; import io.nosqlbench.nb.annotations.Service; import org.apache.logging.log4j.Logger; diff --git a/engine-extensions/src/main/java/io/nosqlbench/engine/extensions/computefunctions/ComputeFunctions.java b/engine-extensions/src/main/java/io/nosqlbench/engine/extensions/computefunctions/ComputeFunctions.java index 6d18539de..647940ef9 100644 --- a/engine-extensions/src/main/java/io/nosqlbench/engine/extensions/computefunctions/ComputeFunctions.java +++ b/engine-extensions/src/main/java/io/nosqlbench/engine/extensions/computefunctions/ComputeFunctions.java @@ -16,8 +16,8 @@ package io.nosqlbench.engine.extensions.computefunctions; -import io.nosqlbench.nb.api.components.NBBaseComponent; -import io.nosqlbench.nb.api.components.NBComponent; +import io.nosqlbench.nb.api.components.core.NBBaseComponent; +import io.nosqlbench.nb.api.components.core.NBComponent; import java.util.Arrays; import java.util.DoubleSummaryStatistics; diff --git a/engine-extensions/src/main/java/io/nosqlbench/engine/extensions/example/ExamplePlugin.java b/engine-extensions/src/main/java/io/nosqlbench/engine/extensions/example/ExamplePlugin.java index e6ffa6f08..df0c0094f 100644 --- a/engine-extensions/src/main/java/io/nosqlbench/engine/extensions/example/ExamplePlugin.java +++ b/engine-extensions/src/main/java/io/nosqlbench/engine/extensions/example/ExamplePlugin.java @@ -17,8 +17,8 @@ package io.nosqlbench.engine.extensions.example; import io.nosqlbench.nb.api.extensions.SandboxPlugin; -import io.nosqlbench.nb.api.components.NBBaseComponent; -import io.nosqlbench.nb.api.components.NBComponent; +import io.nosqlbench.nb.api.components.core.NBBaseComponent; +import io.nosqlbench.nb.api.components.core.NBComponent; public class ExamplePlugin extends NBBaseComponent implements SandboxPlugin { diff --git a/engine-extensions/src/main/java/io/nosqlbench/engine/extensions/example/ExamplePluginData.java b/engine-extensions/src/main/java/io/nosqlbench/engine/extensions/example/ExamplePluginData.java index 41a8535db..182ef0ba2 100644 --- a/engine-extensions/src/main/java/io/nosqlbench/engine/extensions/example/ExamplePluginData.java +++ b/engine-extensions/src/main/java/io/nosqlbench/engine/extensions/example/ExamplePluginData.java @@ -17,7 +17,7 @@ package io.nosqlbench.engine.extensions.example; import io.nosqlbench.nb.api.extensions.ScriptingExtensionPluginInfo; -import io.nosqlbench.nb.api.components.NBComponent; +import io.nosqlbench.nb.api.components.core.NBComponent; import io.nosqlbench.nb.annotations.Service; import org.apache.logging.log4j.Logger; diff --git a/engine-extensions/src/main/java/io/nosqlbench/engine/extensions/globalvars/GlobalVarsScriptingExtensionPluginData.java b/engine-extensions/src/main/java/io/nosqlbench/engine/extensions/globalvars/GlobalVarsScriptingExtensionPluginData.java index a7fff201d..a7b1bdde2 100644 --- a/engine-extensions/src/main/java/io/nosqlbench/engine/extensions/globalvars/GlobalVarsScriptingExtensionPluginData.java +++ b/engine-extensions/src/main/java/io/nosqlbench/engine/extensions/globalvars/GlobalVarsScriptingExtensionPluginData.java @@ -17,7 +17,7 @@ package io.nosqlbench.engine.extensions.globalvars; import io.nosqlbench.nb.api.extensions.ScriptingExtensionPluginInfo; -import io.nosqlbench.nb.api.components.NBComponent; +import io.nosqlbench.nb.api.components.core.NBComponent; import io.nosqlbench.nb.annotations.Service; import io.nosqlbench.virtdata.library.basics.core.threadstate.SharedState; import org.apache.logging.log4j.Logger; diff --git a/engine-extensions/src/test/java/io/nosqlbench/engine/extensions/csvoutput/CsvOutputPluginWriterTest.java b/engine-extensions/src/test/java/io/nosqlbench/engine/extensions/csvoutput/CsvOutputPluginWriterTest.java index 95c66af8d..a4581fe7c 100644 --- a/engine-extensions/src/test/java/io/nosqlbench/engine/extensions/csvoutput/CsvOutputPluginWriterTest.java +++ b/engine-extensions/src/test/java/io/nosqlbench/engine/extensions/csvoutput/CsvOutputPluginWriterTest.java @@ -17,7 +17,7 @@ package io.nosqlbench.engine.extensions.csvoutput; import io.nosqlbench.nb.api.csvoutput.CsvOutputPluginWriter; -import io.nosqlbench.nb.api.components.NBBaseComponent; +import io.nosqlbench.nb.api.components.core.NBBaseComponent; import org.assertj.core.util.Files; import org.graalvm.polyglot.Value; import org.junit.jupiter.api.Test; diff --git a/nb-api/src/main/java/io/nosqlbench/nb/api/components/NBMetricsBuffer.java b/nb-api/src/main/java/io/nosqlbench/nb/api/components/NBMetricsBuffer.java deleted file mode 100644 index 901e573ad..000000000 --- a/nb-api/src/main/java/io/nosqlbench/nb/api/components/NBMetricsBuffer.java +++ /dev/null @@ -1,56 +0,0 @@ -/* - * Copyright (c) 2023 nosqlbench - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ - -package io.nosqlbench.nb.api.components; - -import io.nosqlbench.nb.api.engine.metrics.instruments.NBMetric; -import io.nosqlbench.nb.api.engine.metrics.reporters.ConsoleReporter; - -import java.io.PrintStream; -import java.util.ArrayList; -import java.util.List; - -public class NBMetricsBuffer { - private List summaryMetrics = new ArrayList<>(); - private PrintStream out = System.out; - - public void setPrintStream(PrintStream out) { - this.out = out; - } - - public List getSummaryMetrics() { - return summaryMetrics; - } - - public void setSummaryMetrics(List summaryMetrics) { - this.summaryMetrics = summaryMetrics; - } - - public void addSummaryMetric(NBMetric metric) { - this.summaryMetrics.add(metric); - } - - public void clearSummaryMetrics() { - this.summaryMetrics.clear(); - } - - public void printMetricSummary(NBComponent caller) { - try(ConsoleReporter summaryReporter = new NBCreators.ConsoleReporterBuilder(caller, this.out).build()) { - summaryReporter.reportOnce(summaryMetrics); - } - } -} diff --git a/nb-api/src/main/java/io/nosqlbench/nb/api/components/NBBaseComponent.java b/nb-api/src/main/java/io/nosqlbench/nb/api/components/core/NBBaseComponent.java similarity index 86% rename from nb-api/src/main/java/io/nosqlbench/nb/api/components/NBBaseComponent.java rename to nb-api/src/main/java/io/nosqlbench/nb/api/components/core/NBBaseComponent.java index ea6d2739c..fcd0efbf5 100644 --- a/nb-api/src/main/java/io/nosqlbench/nb/api/components/NBBaseComponent.java +++ b/nb-api/src/main/java/io/nosqlbench/nb/api/components/core/NBBaseComponent.java @@ -14,27 +14,32 @@ * limitations under the License. */ -package io.nosqlbench.nb.api.components; +package io.nosqlbench.nb.api.components.core; import io.nosqlbench.nb.api.components.decorators.NBTokenWords; import io.nosqlbench.nb.api.components.events.ComponentOutOfScope; import io.nosqlbench.nb.api.components.events.DownEvent; import io.nosqlbench.nb.api.components.events.NBEvent; import io.nosqlbench.nb.api.components.events.UpEvent; +import io.nosqlbench.nb.api.config.params.ElementData; import io.nosqlbench.nb.api.engine.metrics.instruments.NBMetric; import io.nosqlbench.nb.api.labels.NBLabels; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import java.util.*; +import java.util.concurrent.ConcurrentHashMap; public class NBBaseComponent extends NBBaseComponentMetrics implements NBComponent, NBTokenWords { private final static Logger logger = LogManager.getLogger("RUNTIME"); protected final NBComponent parent; protected final NBLabels labels; private final List children = new ArrayList<>(); + private long endAt=0L; + private final long startAt; protected NBMetricsBuffer metricsBuffer = new NBMetricsBuffer(); protected boolean bufferOrphanedMetrics = false; + private ConcurrentHashMap props = new ConcurrentHashMap<>(); public NBBaseComponent(NBComponent parentComponent) { this(parentComponent, NBLabels.forKV()); @@ -42,6 +47,7 @@ public class NBBaseComponent extends NBBaseComponentMetrics implements NBCompone public NBBaseComponent(NBComponent parentComponent, NBLabels componentSpecificLabelsOnly) { this.labels = componentSpecificLabelsOnly; + this.startAt = System.nanoTime(); if (parentComponent != null) { parent = parentComponent; parent.attachChild(this); @@ -134,6 +140,7 @@ public class NBBaseComponent extends NBBaseComponentMetrics implements NBCompone */ protected void teardown() { logger.debug("tearing down " + description()); + this.endAt = System.nanoTime(); } @Override @@ -220,4 +227,32 @@ public class NBBaseComponent extends NBBaseComponentMetrics implements NBCompone } } + @Override + public long getNanosSinceStart() { + if (endAt==0) { + return System.nanoTime()-startAt; + } else { + return endAt-startAt; + } + } + + @Override + public Optional getComponentProp(String name) { + if (this.props!=null && this.props.containsKey(name)) { + return Optional.ofNullable(this.props.get(name)); + } else if (this.getParent()!=null) { + return this.getParent().getComponentProp(name); + } else { + return Optional.empty(); + } + } + + @Override + public NBComponentProps setComponentProp(String name, String value) { + if (this.props==null) { + this.props = new ConcurrentHashMap<>(); + } + props.put(name, value); + return this; + } } diff --git a/nb-api/src/main/java/io/nosqlbench/nb/api/components/NBBaseComponentMetrics.java b/nb-api/src/main/java/io/nosqlbench/nb/api/components/core/NBBaseComponentMetrics.java similarity index 98% rename from nb-api/src/main/java/io/nosqlbench/nb/api/components/NBBaseComponentMetrics.java rename to nb-api/src/main/java/io/nosqlbench/nb/api/components/core/NBBaseComponentMetrics.java index b297f3ba8..48ab89a65 100644 --- a/nb-api/src/main/java/io/nosqlbench/nb/api/components/NBBaseComponentMetrics.java +++ b/nb-api/src/main/java/io/nosqlbench/nb/api/components/core/NBBaseComponentMetrics.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package io.nosqlbench.nb.api.components; +package io.nosqlbench.nb.api.components.core; import io.nosqlbench.nb.api.tagging.TagFilter; import io.nosqlbench.nb.api.engine.metrics.instruments.NBMetric; diff --git a/nb-api/src/main/java/io/nosqlbench/nb/api/components/NBComponent.java b/nb-api/src/main/java/io/nosqlbench/nb/api/components/core/NBComponent.java similarity index 94% rename from nb-api/src/main/java/io/nosqlbench/nb/api/components/NBComponent.java rename to nb-api/src/main/java/io/nosqlbench/nb/api/components/core/NBComponent.java index 56f0ac300..d3a407092 100644 --- a/nb-api/src/main/java/io/nosqlbench/nb/api/components/NBComponent.java +++ b/nb-api/src/main/java/io/nosqlbench/nb/api/components/core/NBComponent.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package io.nosqlbench.nb.api.components; +package io.nosqlbench.nb.api.components.core; import io.nosqlbench.nb.api.components.decorators.NBProviderSearch; import io.nosqlbench.nb.api.engine.metrics.instruments.NBMetric; @@ -42,7 +42,8 @@ public interface NBComponent extends NBComponentMetrics, NBComponentServices, NBComponentEvents, - NBProviderSearch { + NBProviderSearch, + NBComponentProps { NBComponent EMPTY_COMPONENT = new NBBaseComponent(null); @@ -62,4 +63,6 @@ public interface NBComponent extends void close() throws RuntimeException; void reportExecutionMetric(NBMetric m); + + long getNanosSinceStart(); } diff --git a/nb-api/src/main/java/io/nosqlbench/nb/api/components/NBComponentErrorHandler.java b/nb-api/src/main/java/io/nosqlbench/nb/api/components/core/NBComponentErrorHandler.java similarity index 93% rename from nb-api/src/main/java/io/nosqlbench/nb/api/components/NBComponentErrorHandler.java rename to nb-api/src/main/java/io/nosqlbench/nb/api/components/core/NBComponentErrorHandler.java index 8e02f1862..8ef790e5c 100644 --- a/nb-api/src/main/java/io/nosqlbench/nb/api/components/NBComponentErrorHandler.java +++ b/nb-api/src/main/java/io/nosqlbench/nb/api/components/core/NBComponentErrorHandler.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package io.nosqlbench.nb.api.components; +package io.nosqlbench.nb.api.components.core; public interface NBComponentErrorHandler { public void notifyException(Thread t, Throwable e); diff --git a/nb-api/src/main/java/io/nosqlbench/nb/api/components/NBComponentEvents.java b/nb-api/src/main/java/io/nosqlbench/nb/api/components/core/NBComponentEvents.java similarity index 94% rename from nb-api/src/main/java/io/nosqlbench/nb/api/components/NBComponentEvents.java rename to nb-api/src/main/java/io/nosqlbench/nb/api/components/core/NBComponentEvents.java index ee04142ab..e4508e16f 100644 --- a/nb-api/src/main/java/io/nosqlbench/nb/api/components/NBComponentEvents.java +++ b/nb-api/src/main/java/io/nosqlbench/nb/api/components/core/NBComponentEvents.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package io.nosqlbench.nb.api.components; +package io.nosqlbench.nb.api.components.core; import io.nosqlbench.nb.api.components.events.NBEvent; diff --git a/nb-api/src/main/java/io/nosqlbench/nb/api/components/NBComponentExecutionScope.java b/nb-api/src/main/java/io/nosqlbench/nb/api/components/core/NBComponentExecutionScope.java similarity index 97% rename from nb-api/src/main/java/io/nosqlbench/nb/api/components/NBComponentExecutionScope.java rename to nb-api/src/main/java/io/nosqlbench/nb/api/components/core/NBComponentExecutionScope.java index d8d00e16c..a2ae8e5fb 100644 --- a/nb-api/src/main/java/io/nosqlbench/nb/api/components/NBComponentExecutionScope.java +++ b/nb-api/src/main/java/io/nosqlbench/nb/api/components/core/NBComponentExecutionScope.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package io.nosqlbench.nb.api.components; +package io.nosqlbench.nb.api.components.core; import io.nosqlbench.nb.api.components.events.ComponentOutOfScope; import io.nosqlbench.nb.api.config.standard.TestComponent; diff --git a/nb-api/src/main/java/io/nosqlbench/nb/api/components/NBComponentFinder.java b/nb-api/src/main/java/io/nosqlbench/nb/api/components/core/NBComponentFinder.java similarity index 97% rename from nb-api/src/main/java/io/nosqlbench/nb/api/components/NBComponentFinder.java rename to nb-api/src/main/java/io/nosqlbench/nb/api/components/core/NBComponentFinder.java index 75a3f4e60..d8c50c7b5 100644 --- a/nb-api/src/main/java/io/nosqlbench/nb/api/components/NBComponentFinder.java +++ b/nb-api/src/main/java/io/nosqlbench/nb/api/components/core/NBComponentFinder.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package io.nosqlbench.nb.api.components; +package io.nosqlbench.nb.api.components.core; import io.nosqlbench.nb.api.tagging.TagFilter; diff --git a/nb-api/src/main/java/io/nosqlbench/nb/api/components/NBComponentFormats.java b/nb-api/src/main/java/io/nosqlbench/nb/api/components/core/NBComponentFormats.java similarity index 97% rename from nb-api/src/main/java/io/nosqlbench/nb/api/components/NBComponentFormats.java rename to nb-api/src/main/java/io/nosqlbench/nb/api/components/core/NBComponentFormats.java index ea95b9871..040267e71 100644 --- a/nb-api/src/main/java/io/nosqlbench/nb/api/components/NBComponentFormats.java +++ b/nb-api/src/main/java/io/nosqlbench/nb/api/components/core/NBComponentFormats.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package io.nosqlbench.nb.api.components; +package io.nosqlbench.nb.api.components.core; import io.nosqlbench.nb.api.engine.metrics.instruments.NBMetric; diff --git a/nb-api/src/main/java/io/nosqlbench/nb/api/components/NBComponentLoader.java b/nb-api/src/main/java/io/nosqlbench/nb/api/components/core/NBComponentLoader.java similarity index 97% rename from nb-api/src/main/java/io/nosqlbench/nb/api/components/NBComponentLoader.java rename to nb-api/src/main/java/io/nosqlbench/nb/api/components/core/NBComponentLoader.java index 17c1f4987..9701d05b3 100644 --- a/nb-api/src/main/java/io/nosqlbench/nb/api/components/NBComponentLoader.java +++ b/nb-api/src/main/java/io/nosqlbench/nb/api/components/core/NBComponentLoader.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package io.nosqlbench.nb.api.components; +package io.nosqlbench.nb.api.components.core; import io.nosqlbench.nb.annotations.Service; diff --git a/nb-api/src/main/java/io/nosqlbench/nb/api/components/NBComponentMetrics.java b/nb-api/src/main/java/io/nosqlbench/nb/api/components/core/NBComponentMetrics.java similarity index 97% rename from nb-api/src/main/java/io/nosqlbench/nb/api/components/NBComponentMetrics.java rename to nb-api/src/main/java/io/nosqlbench/nb/api/components/core/NBComponentMetrics.java index 8a9c357c3..47689cbca 100644 --- a/nb-api/src/main/java/io/nosqlbench/nb/api/components/NBComponentMetrics.java +++ b/nb-api/src/main/java/io/nosqlbench/nb/api/components/core/NBComponentMetrics.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package io.nosqlbench.nb.api.components; +package io.nosqlbench.nb.api.components.core; import io.nosqlbench.nb.api.engine.metrics.instruments.NBMetric; diff --git a/nb-api/src/main/java/io/nosqlbench/nb/api/components/NBComponentServices.java b/nb-api/src/main/java/io/nosqlbench/nb/api/components/core/NBComponentServices.java similarity index 93% rename from nb-api/src/main/java/io/nosqlbench/nb/api/components/NBComponentServices.java rename to nb-api/src/main/java/io/nosqlbench/nb/api/components/core/NBComponentServices.java index e191ea1e5..052d993f7 100644 --- a/nb-api/src/main/java/io/nosqlbench/nb/api/components/NBComponentServices.java +++ b/nb-api/src/main/java/io/nosqlbench/nb/api/components/core/NBComponentServices.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package io.nosqlbench.nb.api.components; +package io.nosqlbench.nb.api.components.core; public interface NBComponentServices { diff --git a/nb-api/src/main/java/io/nosqlbench/nb/api/components/NBComponentTraversal.java b/nb-api/src/main/java/io/nosqlbench/nb/api/components/core/NBComponentTraversal.java similarity index 98% rename from nb-api/src/main/java/io/nosqlbench/nb/api/components/NBComponentTraversal.java rename to nb-api/src/main/java/io/nosqlbench/nb/api/components/core/NBComponentTraversal.java index 9df67b9b4..52defc699 100644 --- a/nb-api/src/main/java/io/nosqlbench/nb/api/components/NBComponentTraversal.java +++ b/nb-api/src/main/java/io/nosqlbench/nb/api/components/core/NBComponentTraversal.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package io.nosqlbench.nb.api.components; +package io.nosqlbench.nb.api.components.core; import java.util.Iterator; import java.util.LinkedList; diff --git a/nb-api/src/main/java/io/nosqlbench/nb/api/components/NBCreators.java b/nb-api/src/main/java/io/nosqlbench/nb/api/components/core/NBCreators.java similarity index 99% rename from nb-api/src/main/java/io/nosqlbench/nb/api/components/NBCreators.java rename to nb-api/src/main/java/io/nosqlbench/nb/api/components/core/NBCreators.java index 1a7103472..e52502471 100644 --- a/nb-api/src/main/java/io/nosqlbench/nb/api/components/NBCreators.java +++ b/nb-api/src/main/java/io/nosqlbench/nb/api/components/core/NBCreators.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package io.nosqlbench.nb.api.components; +package io.nosqlbench.nb.api.components.core; import io.nosqlbench.nb.api.csvoutput.CsvOutputPluginWriter; import com.codahale.metrics.Meter; @@ -38,7 +38,6 @@ import com.codahale.metrics.MetricFilter; import org.apache.logging.log4j.Marker; import java.io.PrintStream; -import java.net.URI; import java.util.*; import java.nio.file.Path; diff --git a/nb-api/src/main/java/io/nosqlbench/nb/api/components/NBFinders.java b/nb-api/src/main/java/io/nosqlbench/nb/api/components/core/NBFinders.java similarity index 99% rename from nb-api/src/main/java/io/nosqlbench/nb/api/components/NBFinders.java rename to nb-api/src/main/java/io/nosqlbench/nb/api/components/core/NBFinders.java index dc452dce5..7e03c3e5c 100644 --- a/nb-api/src/main/java/io/nosqlbench/nb/api/components/NBFinders.java +++ b/nb-api/src/main/java/io/nosqlbench/nb/api/components/core/NBFinders.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package io.nosqlbench.nb.api.components; +package io.nosqlbench.nb.api.components.core; import io.nosqlbench.nb.api.engine.metrics.instruments.*; diff --git a/nb-api/src/main/java/io/nosqlbench/nb/api/components/core/NBMetricsBuffer.java b/nb-api/src/main/java/io/nosqlbench/nb/api/components/core/NBMetricsBuffer.java new file mode 100644 index 000000000..67998a274 --- /dev/null +++ b/nb-api/src/main/java/io/nosqlbench/nb/api/components/core/NBMetricsBuffer.java @@ -0,0 +1,122 @@ +/* + * Copyright (c) 2023 nosqlbench + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package io.nosqlbench.nb.api.components.core; + +import io.nosqlbench.nb.api.engine.metrics.instruments.NBMetric; +import io.nosqlbench.nb.api.engine.metrics.reporters.ConsoleReporter; +import io.nosqlbench.nb.api.engine.util.Unit; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +import java.io.FileNotFoundException; +import java.io.FileOutputStream; +import java.io.PrintStream; +import java.util.ArrayList; +import java.util.List; +import java.util.Optional; + +public class NBMetricsBuffer { + + private final static Logger logger = LogManager.getLogger(NBMetricsBuffer.class); + private List summaryMetrics = new ArrayList<>(); +// private PrintStream out = System.out; + +// public void setPrintStream(PrintStream out) { +// this.out = out; +// } + + public List getSummaryMetrics() { + return summaryMetrics; + } + + public void setSummaryMetrics(List summaryMetrics) { + this.summaryMetrics = summaryMetrics; + } + + public void addSummaryMetric(NBMetric metric) { + this.summaryMetrics.add(metric); + } + + public void clearSummaryMetrics() { + this.summaryMetrics.clear(); + } + + public void printMetricSummary(NBComponent caller) { + caller.getComponentProp(NBComponentProps.SUMMARY).ifPresent( + summary -> { + Config config = new Config(caller, summary); + for (PrintStream channel : config.fullChannels) { + try (ConsoleReporter summaryReporter = new NBCreators.ConsoleReporterBuilder(caller, channel).build()) { + summaryReporter.reportOnce(summaryMetrics); + } + } + for (PrintStream channel : config.briefChannels) { + try (ConsoleReporter summaryReporter = new NBCreators.ConsoleReporterBuilder(caller, channel).build()) { + summaryReporter.reportCountsOnce(summaryMetrics); + } + } + + } + ); + } + + private static class Config { + final List fullChannels = new ArrayList<>(); + final List briefChannels = new ArrayList<>(); + + public Config(NBComponent caller, String reportSummaryTo) { + final String[] destinationSpecs = reportSummaryTo.split(", *"); + long seconds = caller.getNanosSinceStart() / 1_000_000_000; + + for (final String spec : destinationSpecs) + if ((null != spec) && !spec.isBlank()) { + final String[] split = spec.split(":", 2); + final String summaryTo = split[0]; + final long summaryWhen = (2 == split.length) ? (Unit.secondsFor(split[1]).orElseThrow()) : 0; + + PrintStream out = null; + switch (summaryTo.toLowerCase()) { + case "console": + case "stdout": + out = System.out; + break; + case "stderr": + out = System.err; + break; + default: + final String outName = summaryTo + .replaceAll("_SESSION_", caller.getLabels().valueOf("session")) + .replaceAll("_LOGS_", caller.getComponentProp("logsdir").orElseThrow()); + try { + out = new PrintStream(new FileOutputStream(outName)); + break; + } catch (final FileNotFoundException e) { + throw new RuntimeException(e); + } + } + + if (seconds > summaryWhen) fullChannels.add(out); + else { + logger.debug("Summarizing counting metrics only to {} with scenario duration of {}S (<{})", spec, summaryWhen, summaryWhen); + briefChannels.add(out); + } + } + + } + } + +} diff --git a/nb-api/src/main/java/io/nosqlbench/nb/api/components/NBNamedElement.java b/nb-api/src/main/java/io/nosqlbench/nb/api/components/core/NBNamedElement.java similarity index 93% rename from nb-api/src/main/java/io/nosqlbench/nb/api/components/NBNamedElement.java rename to nb-api/src/main/java/io/nosqlbench/nb/api/components/core/NBNamedElement.java index fa4bde533..f67cf9c33 100644 --- a/nb-api/src/main/java/io/nosqlbench/nb/api/components/NBNamedElement.java +++ b/nb-api/src/main/java/io/nosqlbench/nb/api/components/core/NBNamedElement.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package io.nosqlbench.nb.api.components; +package io.nosqlbench.nb.api.components.core; public interface NBNamedElement { String getName(); diff --git a/nb-api/src/main/java/io/nosqlbench/nb/api/components/NBParentComponentInjection.java b/nb-api/src/main/java/io/nosqlbench/nb/api/components/core/NBParentComponentInjection.java similarity index 93% rename from nb-api/src/main/java/io/nosqlbench/nb/api/components/NBParentComponentInjection.java rename to nb-api/src/main/java/io/nosqlbench/nb/api/components/core/NBParentComponentInjection.java index 95e122d83..62a11001f 100644 --- a/nb-api/src/main/java/io/nosqlbench/nb/api/components/NBParentComponentInjection.java +++ b/nb-api/src/main/java/io/nosqlbench/nb/api/components/core/NBParentComponentInjection.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package io.nosqlbench.nb.api.components; +package io.nosqlbench.nb.api.components.core; public interface NBParentComponentInjection { void applyParentComponent(NBComponent component); diff --git a/nb-api/src/main/java/io/nosqlbench/nb/api/components/PeriodicTaskComponent.java b/nb-api/src/main/java/io/nosqlbench/nb/api/components/core/PeriodicTaskComponent.java similarity index 98% rename from nb-api/src/main/java/io/nosqlbench/nb/api/components/PeriodicTaskComponent.java rename to nb-api/src/main/java/io/nosqlbench/nb/api/components/core/PeriodicTaskComponent.java index f86cee2df..06bdd6c61 100644 --- a/nb-api/src/main/java/io/nosqlbench/nb/api/components/PeriodicTaskComponent.java +++ b/nb-api/src/main/java/io/nosqlbench/nb/api/components/core/PeriodicTaskComponent.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package io.nosqlbench.nb.api.components; +package io.nosqlbench.nb.api.components.core; import io.nosqlbench.nb.api.labels.NBLabels; import org.apache.logging.log4j.LogManager; diff --git a/nb-api/src/main/java/io/nosqlbench/nb/api/components/events/ComponentOutOfScope.java b/nb-api/src/main/java/io/nosqlbench/nb/api/components/events/ComponentOutOfScope.java index 1f2c70069..171208434 100644 --- a/nb-api/src/main/java/io/nosqlbench/nb/api/components/events/ComponentOutOfScope.java +++ b/nb-api/src/main/java/io/nosqlbench/nb/api/components/events/ComponentOutOfScope.java @@ -17,7 +17,7 @@ package io.nosqlbench.nb.api.components.events; -import io.nosqlbench.nb.api.components.NBComponent; +import io.nosqlbench.nb.api.components.core.NBComponent; public class ComponentOutOfScope implements NBEvent { private final NBComponent component; diff --git a/nb-api/src/main/java/io/nosqlbench/nb/api/config/standard/TestComponent.java b/nb-api/src/main/java/io/nosqlbench/nb/api/config/standard/TestComponent.java index c00c58888..f7fa6f6cc 100644 --- a/nb-api/src/main/java/io/nosqlbench/nb/api/config/standard/TestComponent.java +++ b/nb-api/src/main/java/io/nosqlbench/nb/api/config/standard/TestComponent.java @@ -17,8 +17,8 @@ package io.nosqlbench.nb.api.config.standard; import io.nosqlbench.nb.api.labels.NBLabels; -import io.nosqlbench.nb.api.components.NBComponent; -import io.nosqlbench.nb.api.components.NBBaseComponent; +import io.nosqlbench.nb.api.components.core.NBComponent; +import io.nosqlbench.nb.api.components.core.NBBaseComponent; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; diff --git a/nb-api/src/main/java/io/nosqlbench/nb/api/csvoutput/CsvOutputPluginWriter.java b/nb-api/src/main/java/io/nosqlbench/nb/api/csvoutput/CsvOutputPluginWriter.java index a670bfdde..5330b0ddc 100644 --- a/nb-api/src/main/java/io/nosqlbench/nb/api/csvoutput/CsvOutputPluginWriter.java +++ b/nb-api/src/main/java/io/nosqlbench/nb/api/csvoutput/CsvOutputPluginWriter.java @@ -16,8 +16,8 @@ package io.nosqlbench.nb.api.csvoutput; -import io.nosqlbench.nb.api.components.NBBaseComponent; -import io.nosqlbench.nb.api.components.NBComponent; +import io.nosqlbench.nb.api.components.core.NBBaseComponent; +import io.nosqlbench.nb.api.components.core.NBComponent; import org.apache.commons.csv.CSVFormat; import org.apache.commons.csv.CSVPrinter; import org.graalvm.polyglot.Value; diff --git a/nb-api/src/main/java/io/nosqlbench/nb/api/engine/activityimpl/ActivityDef.java b/nb-api/src/main/java/io/nosqlbench/nb/api/engine/activityimpl/ActivityDef.java index ddc2db66f..945bd70ab 100644 --- a/nb-api/src/main/java/io/nosqlbench/nb/api/engine/activityimpl/ActivityDef.java +++ b/nb-api/src/main/java/io/nosqlbench/nb/api/engine/activityimpl/ActivityDef.java @@ -16,7 +16,7 @@ package io.nosqlbench.nb.api.engine.activityimpl; -import io.nosqlbench.nb.api.components.NBNamedElement; +import io.nosqlbench.nb.api.components.core.NBNamedElement; import io.nosqlbench.nb.api.errors.BasicError; import io.nosqlbench.nb.api.labels.NBLabelSpec; import io.nosqlbench.nb.api.labels.NBLabels; diff --git a/nb-api/src/main/java/io/nosqlbench/nb/api/engine/metrics/CapabilityHook.java b/nb-api/src/main/java/io/nosqlbench/nb/api/engine/metrics/CapabilityHook.java index f29fdf7f7..37781f34a 100644 --- a/nb-api/src/main/java/io/nosqlbench/nb/api/engine/metrics/CapabilityHook.java +++ b/nb-api/src/main/java/io/nosqlbench/nb/api/engine/metrics/CapabilityHook.java @@ -17,8 +17,8 @@ package io.nosqlbench.nb.api.engine.metrics; import com.codahale.metrics.*; -import io.nosqlbench.nb.api.components.NBBaseComponent; -import io.nosqlbench.nb.api.components.NBComponent; +import io.nosqlbench.nb.api.components.core.NBBaseComponent; +import io.nosqlbench.nb.api.components.core.NBComponent; import java.util.HashMap; import java.util.Map; diff --git a/nb-api/src/main/java/io/nosqlbench/nb/api/engine/metrics/ClassicHistoListener.java b/nb-api/src/main/java/io/nosqlbench/nb/api/engine/metrics/ClassicHistoListener.java index 10b5efe50..cf5c9563a 100644 --- a/nb-api/src/main/java/io/nosqlbench/nb/api/engine/metrics/ClassicHistoListener.java +++ b/nb-api/src/main/java/io/nosqlbench/nb/api/engine/metrics/ClassicHistoListener.java @@ -17,7 +17,7 @@ package io.nosqlbench.nb.api.engine.metrics; import com.codahale.metrics.*; -import io.nosqlbench.nb.api.components.NBComponent; +import io.nosqlbench.nb.api.components.core.NBComponent; import org.apache.logging.log4j.Logger; import org.apache.logging.log4j.LogManager; diff --git a/nb-api/src/main/java/io/nosqlbench/nb/api/engine/metrics/ClassicTimerListener.java b/nb-api/src/main/java/io/nosqlbench/nb/api/engine/metrics/ClassicTimerListener.java index 43d6af01a..ef5cb3ae2 100644 --- a/nb-api/src/main/java/io/nosqlbench/nb/api/engine/metrics/ClassicTimerListener.java +++ b/nb-api/src/main/java/io/nosqlbench/nb/api/engine/metrics/ClassicTimerListener.java @@ -19,7 +19,7 @@ package io.nosqlbench.nb.api.engine.metrics; import com.codahale.metrics.ExponentiallyDecayingReservoir; import com.codahale.metrics.MetricRegistry; import com.codahale.metrics.Timer; -import io.nosqlbench.nb.api.components.NBComponent; +import io.nosqlbench.nb.api.components.core.NBComponent; import org.apache.logging.log4j.Logger; import org.apache.logging.log4j.LogManager; diff --git a/nb-api/src/main/java/io/nosqlbench/nb/api/engine/metrics/HistoIntervalLogger.java b/nb-api/src/main/java/io/nosqlbench/nb/api/engine/metrics/HistoIntervalLogger.java index 15a656217..3ba20a6cd 100644 --- a/nb-api/src/main/java/io/nosqlbench/nb/api/engine/metrics/HistoIntervalLogger.java +++ b/nb-api/src/main/java/io/nosqlbench/nb/api/engine/metrics/HistoIntervalLogger.java @@ -16,7 +16,7 @@ package io.nosqlbench.nb.api.engine.metrics; -import io.nosqlbench.nb.api.components.NBComponent; +import io.nosqlbench.nb.api.components.core.NBComponent; import org.HdrHistogram.EncodableHistogram; import org.HdrHistogram.HistogramLogWriter; import org.apache.logging.log4j.Logger; diff --git a/nb-api/src/main/java/io/nosqlbench/nb/api/engine/metrics/HistoStatsLogger.java b/nb-api/src/main/java/io/nosqlbench/nb/api/engine/metrics/HistoStatsLogger.java index dc8da52cd..5fa381451 100644 --- a/nb-api/src/main/java/io/nosqlbench/nb/api/engine/metrics/HistoStatsLogger.java +++ b/nb-api/src/main/java/io/nosqlbench/nb/api/engine/metrics/HistoStatsLogger.java @@ -16,7 +16,7 @@ package io.nosqlbench.nb.api.engine.metrics; -import io.nosqlbench.nb.api.components.NBComponent; +import io.nosqlbench.nb.api.components.core.NBComponent; import org.HdrHistogram.EncodableHistogram; import org.HdrHistogram.Histogram; import org.apache.logging.log4j.Logger; diff --git a/nb-api/src/main/java/io/nosqlbench/nb/api/engine/metrics/instruments/NBFunctionGauge.java b/nb-api/src/main/java/io/nosqlbench/nb/api/engine/metrics/instruments/NBFunctionGauge.java index e69824c35..5e9b14300 100644 --- a/nb-api/src/main/java/io/nosqlbench/nb/api/engine/metrics/instruments/NBFunctionGauge.java +++ b/nb-api/src/main/java/io/nosqlbench/nb/api/engine/metrics/instruments/NBFunctionGauge.java @@ -18,7 +18,7 @@ package io.nosqlbench.nb.api.engine.metrics.instruments; import io.nosqlbench.nb.api.labels.NBLabeledElement; import io.nosqlbench.nb.api.labels.NBLabels; -import io.nosqlbench.nb.api.components.NBComponent; +import io.nosqlbench.nb.api.components.core.NBComponent; import java.util.Map; import java.util.function.Supplier; diff --git a/nb-api/src/main/java/io/nosqlbench/nb/api/engine/metrics/instruments/NBVariableGauge.java b/nb-api/src/main/java/io/nosqlbench/nb/api/engine/metrics/instruments/NBVariableGauge.java index 19e92238d..94c7d498d 100644 --- a/nb-api/src/main/java/io/nosqlbench/nb/api/engine/metrics/instruments/NBVariableGauge.java +++ b/nb-api/src/main/java/io/nosqlbench/nb/api/engine/metrics/instruments/NBVariableGauge.java @@ -18,7 +18,7 @@ package io.nosqlbench.nb.api.engine.metrics.instruments; import io.nosqlbench.nb.api.labels.NBLabeledElement; import io.nosqlbench.nb.api.labels.NBLabels; -import io.nosqlbench.nb.api.components.NBComponent; +import io.nosqlbench.nb.api.components.core.NBComponent; /** * Use this gauge type when you are setting the gauge value directly. It is merely a holder diff --git a/nb-api/src/main/java/io/nosqlbench/nb/api/engine/metrics/reporters/ConsoleReporter.java b/nb-api/src/main/java/io/nosqlbench/nb/api/engine/metrics/reporters/ConsoleReporter.java index ab6c7b434..bd5b0f163 100644 --- a/nb-api/src/main/java/io/nosqlbench/nb/api/engine/metrics/reporters/ConsoleReporter.java +++ b/nb-api/src/main/java/io/nosqlbench/nb/api/engine/metrics/reporters/ConsoleReporter.java @@ -19,9 +19,9 @@ package io.nosqlbench.nb.api.engine.metrics.reporters; import com.codahale.metrics.Timer; import com.codahale.metrics.*; import io.nosqlbench.nb.api.labels.NBLabels; -import io.nosqlbench.nb.api.components.NBComponent; -import io.nosqlbench.nb.api.components.NBFinders; -import io.nosqlbench.nb.api.components.PeriodicTaskComponent; +import io.nosqlbench.nb.api.components.core.NBComponent; +import io.nosqlbench.nb.api.components.core.NBFinders; +import io.nosqlbench.nb.api.components.core.PeriodicTaskComponent; import io.nosqlbench.nb.api.engine.metrics.instruments.*; import java.io.PrintStream; diff --git a/nb-api/src/main/java/io/nosqlbench/nb/api/engine/metrics/reporters/CsvReporter.java b/nb-api/src/main/java/io/nosqlbench/nb/api/engine/metrics/reporters/CsvReporter.java index 20b7839ee..e51ccd9fd 100644 --- a/nb-api/src/main/java/io/nosqlbench/nb/api/engine/metrics/reporters/CsvReporter.java +++ b/nb-api/src/main/java/io/nosqlbench/nb/api/engine/metrics/reporters/CsvReporter.java @@ -19,8 +19,8 @@ package io.nosqlbench.nb.api.engine.metrics.reporters; import com.codahale.metrics.*; import io.nosqlbench.nb.api.labels.NBLabelUtils; import io.nosqlbench.nb.api.labels.NBLabels; -import io.nosqlbench.nb.api.components.NBComponent; -import io.nosqlbench.nb.api.components.PeriodicTaskComponent; +import io.nosqlbench.nb.api.components.core.NBComponent; +import io.nosqlbench.nb.api.components.core.PeriodicTaskComponent; import io.nosqlbench.nb.api.engine.metrics.instruments.*; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; diff --git a/nb-api/src/main/java/io/nosqlbench/nb/api/engine/metrics/reporters/Log4JMetricsReporter.java b/nb-api/src/main/java/io/nosqlbench/nb/api/engine/metrics/reporters/Log4JMetricsReporter.java index cbaf8bafb..e9fee0442 100644 --- a/nb-api/src/main/java/io/nosqlbench/nb/api/engine/metrics/reporters/Log4JMetricsReporter.java +++ b/nb-api/src/main/java/io/nosqlbench/nb/api/engine/metrics/reporters/Log4JMetricsReporter.java @@ -18,10 +18,10 @@ package io.nosqlbench.nb.api.engine.metrics.reporters; import com.codahale.metrics.*; import io.nosqlbench.nb.api.labels.NBLabels; -import io.nosqlbench.nb.api.components.NBCreators; -import io.nosqlbench.nb.api.components.NBComponent; -import io.nosqlbench.nb.api.components.NBFinders; -import io.nosqlbench.nb.api.components.PeriodicTaskComponent; +import io.nosqlbench.nb.api.components.core.NBCreators; +import io.nosqlbench.nb.api.components.core.NBComponent; +import io.nosqlbench.nb.api.components.core.NBFinders; +import io.nosqlbench.nb.api.components.core.PeriodicTaskComponent; import io.nosqlbench.nb.api.engine.metrics.instruments.*; import org.apache.logging.log4j.Marker; diff --git a/nb-api/src/main/java/io/nosqlbench/nb/api/engine/metrics/reporters/PromPushReporterComponent.java b/nb-api/src/main/java/io/nosqlbench/nb/api/engine/metrics/reporters/PromPushReporterComponent.java index 2c4b2921c..587ea2d4c 100644 --- a/nb-api/src/main/java/io/nosqlbench/nb/api/engine/metrics/reporters/PromPushReporterComponent.java +++ b/nb-api/src/main/java/io/nosqlbench/nb/api/engine/metrics/reporters/PromPushReporterComponent.java @@ -19,8 +19,8 @@ package io.nosqlbench.nb.api.engine.metrics.reporters; import io.nosqlbench.nb.api.errors.BasicError; import io.nosqlbench.nb.api.labels.NBLabels; import io.nosqlbench.nb.api.system.NBEnvironment; -import io.nosqlbench.nb.api.components.NBComponent; -import io.nosqlbench.nb.api.components.PeriodicTaskComponent; +import io.nosqlbench.nb.api.components.core.NBComponent; +import io.nosqlbench.nb.api.components.core.PeriodicTaskComponent; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; diff --git a/nb-api/src/main/java/io/nosqlbench/nb/api/engine/metrics/wrappers/RelevancyMeasures.java b/nb-api/src/main/java/io/nosqlbench/nb/api/engine/metrics/wrappers/RelevancyMeasures.java index 85735988e..c0e2d4ba3 100644 --- a/nb-api/src/main/java/io/nosqlbench/nb/api/engine/metrics/wrappers/RelevancyMeasures.java +++ b/nb-api/src/main/java/io/nosqlbench/nb/api/engine/metrics/wrappers/RelevancyMeasures.java @@ -19,7 +19,7 @@ package io.nosqlbench.nb.api.engine.metrics.wrappers; import io.nosqlbench.nb.api.labels.NBLabeledElement; import io.nosqlbench.nb.api.labels.NBLabels; import io.nosqlbench.nb.api.engine.metrics.DoubleSummaryGauge; -import io.nosqlbench.nb.api.components.NBComponent; +import io.nosqlbench.nb.api.components.core.NBComponent; import java.util.ArrayList; import java.util.List; diff --git a/nb-api/src/main/java/io/nosqlbench/nb/api/extensions/ScriptingExtensionPluginInfo.java b/nb-api/src/main/java/io/nosqlbench/nb/api/extensions/ScriptingExtensionPluginInfo.java index 6def00895..4b4013f15 100644 --- a/nb-api/src/main/java/io/nosqlbench/nb/api/extensions/ScriptingExtensionPluginInfo.java +++ b/nb-api/src/main/java/io/nosqlbench/nb/api/extensions/ScriptingExtensionPluginInfo.java @@ -16,7 +16,7 @@ package io.nosqlbench.nb.api.extensions; -import io.nosqlbench.nb.api.components.NBComponent; +import io.nosqlbench.nb.api.components.core.NBComponent; import io.nosqlbench.nb.annotations.Service; import org.apache.logging.log4j.Logger; diff --git a/nb-api/src/main/java/io/nosqlbench/nb/api/histo/HdrHistoLog.java b/nb-api/src/main/java/io/nosqlbench/nb/api/histo/HdrHistoLog.java index b4fc5fcc2..721e286d3 100644 --- a/nb-api/src/main/java/io/nosqlbench/nb/api/histo/HdrHistoLog.java +++ b/nb-api/src/main/java/io/nosqlbench/nb/api/histo/HdrHistoLog.java @@ -18,8 +18,8 @@ package io.nosqlbench.nb.api.histo; import io.nosqlbench.nb.api.engine.metrics.HistoIntervalLogger; import io.nosqlbench.nb.api.engine.util.Unit; -import io.nosqlbench.nb.api.components.NBBaseComponent; -import io.nosqlbench.nb.api.components.NBComponent; +import io.nosqlbench.nb.api.components.core.NBBaseComponent; +import io.nosqlbench.nb.api.components.core.NBComponent; import java.io.File; import java.util.regex.Pattern; diff --git a/nb-api/src/main/java/io/nosqlbench/nb/api/histo/HistoStats.java b/nb-api/src/main/java/io/nosqlbench/nb/api/histo/HistoStats.java index 44e24d719..6d02c2773 100644 --- a/nb-api/src/main/java/io/nosqlbench/nb/api/histo/HistoStats.java +++ b/nb-api/src/main/java/io/nosqlbench/nb/api/histo/HistoStats.java @@ -18,8 +18,8 @@ package io.nosqlbench.nb.api.histo; import io.nosqlbench.nb.api.engine.metrics.HistoStatsLogger; import io.nosqlbench.nb.api.engine.util.Unit; -import io.nosqlbench.nb.api.components.NBBaseComponent; -import io.nosqlbench.nb.api.components.NBComponent; +import io.nosqlbench.nb.api.components.core.NBBaseComponent; +import io.nosqlbench.nb.api.components.core.NBComponent; import java.io.File; import java.util.concurrent.TimeUnit; diff --git a/nb-api/src/main/java/io/nosqlbench/nb/api/http/HttpPlugin.java b/nb-api/src/main/java/io/nosqlbench/nb/api/http/HttpPlugin.java index b272edc15..d1db122df 100644 --- a/nb-api/src/main/java/io/nosqlbench/nb/api/http/HttpPlugin.java +++ b/nb-api/src/main/java/io/nosqlbench/nb/api/http/HttpPlugin.java @@ -16,8 +16,8 @@ package io.nosqlbench.nb.api.http; -import io.nosqlbench.nb.api.components.NBBaseComponent; -import io.nosqlbench.nb.api.components.NBComponent; +import io.nosqlbench.nb.api.components.core.NBBaseComponent; +import io.nosqlbench.nb.api.components.core.NBComponent; import java.io.IOException; import java.net.URI; diff --git a/nb-api/src/main/java/io/nosqlbench/nb/api/loaders/BundledExtensionsLoader.java b/nb-api/src/main/java/io/nosqlbench/nb/api/loaders/BundledExtensionsLoader.java index c375c0ead..562ddea1d 100644 --- a/nb-api/src/main/java/io/nosqlbench/nb/api/loaders/BundledExtensionsLoader.java +++ b/nb-api/src/main/java/io/nosqlbench/nb/api/loaders/BundledExtensionsLoader.java @@ -17,7 +17,7 @@ package io.nosqlbench.nb.api.loaders; import io.nosqlbench.nb.api.extensions.ScriptingExtensionPluginInfo; -import io.nosqlbench.nb.api.components.NBComponent; +import io.nosqlbench.nb.api.components.core.NBComponent; import io.nosqlbench.nb.annotations.Service; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; diff --git a/nb-api/src/main/java/io/nosqlbench/nb/api/optimizers/BobyqaOptimizerInstance.java b/nb-api/src/main/java/io/nosqlbench/nb/api/optimizers/BobyqaOptimizerInstance.java index ee03381a8..29f7b41d5 100644 --- a/nb-api/src/main/java/io/nosqlbench/nb/api/optimizers/BobyqaOptimizerInstance.java +++ b/nb-api/src/main/java/io/nosqlbench/nb/api/optimizers/BobyqaOptimizerInstance.java @@ -16,8 +16,8 @@ package io.nosqlbench.nb.api.optimizers; -import io.nosqlbench.nb.api.components.NBBaseComponent; -import io.nosqlbench.nb.api.components.NBComponent; +import io.nosqlbench.nb.api.components.core.NBBaseComponent; +import io.nosqlbench.nb.api.components.core.NBComponent; import org.apache.commons.math4.legacy.optim.*; import org.apache.commons.math4.legacy.optim.nonlinear.scalar.GoalType; import org.apache.commons.math4.legacy.optim.nonlinear.scalar.ObjectiveFunction; diff --git a/nb-api/src/main/java/io/nosqlbench/nb/api/s3uploader/S3Uploader.java b/nb-api/src/main/java/io/nosqlbench/nb/api/s3uploader/S3Uploader.java index faaf34913..1dd1ab4f8 100644 --- a/nb-api/src/main/java/io/nosqlbench/nb/api/s3uploader/S3Uploader.java +++ b/nb-api/src/main/java/io/nosqlbench/nb/api/s3uploader/S3Uploader.java @@ -24,8 +24,8 @@ import io.nosqlbench.nb.api.addins.s3.s3urlhandler.S3ClientCache; import io.nosqlbench.nb.api.addins.s3.s3urlhandler.S3UrlFields; import io.nosqlbench.nb.api.metadata.ScenarioMetadata; import io.nosqlbench.nb.api.system.NBEnvironment; -import io.nosqlbench.nb.api.components.NBBaseComponent; -import io.nosqlbench.nb.api.components.NBComponent; +import io.nosqlbench.nb.api.components.core.NBBaseComponent; +import io.nosqlbench.nb.api.components.core.NBComponent; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; diff --git a/nb-api/src/main/java/io/nosqlbench/nb/api/shutdown/NBShutdownHook.java b/nb-api/src/main/java/io/nosqlbench/nb/api/shutdown/NBShutdownHook.java index d52e31391..22862e40c 100644 --- a/nb-api/src/main/java/io/nosqlbench/nb/api/shutdown/NBShutdownHook.java +++ b/nb-api/src/main/java/io/nosqlbench/nb/api/shutdown/NBShutdownHook.java @@ -16,8 +16,8 @@ package io.nosqlbench.nb.api.shutdown; -import io.nosqlbench.nb.api.components.NBBaseComponent; -import io.nosqlbench.nb.api.components.NBComponent; +import io.nosqlbench.nb.api.components.core.NBBaseComponent; +import io.nosqlbench.nb.api.components.core.NBComponent; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; diff --git a/nb-api/src/main/java/io/nosqlbench/nb/api/tagging/TagFilter.java b/nb-api/src/main/java/io/nosqlbench/nb/api/tagging/TagFilter.java index e4527b484..4de51c322 100644 --- a/nb-api/src/main/java/io/nosqlbench/nb/api/tagging/TagFilter.java +++ b/nb-api/src/main/java/io/nosqlbench/nb/api/tagging/TagFilter.java @@ -18,7 +18,7 @@ package io.nosqlbench.nb.api.tagging; import io.nosqlbench.nb.api.engine.util.Tagged; import io.nosqlbench.nb.api.labels.NBLabeledElement; -import io.nosqlbench.nb.api.components.NBComponent; +import io.nosqlbench.nb.api.components.core.NBComponent; import java.util.*; import java.util.function.BiFunction; diff --git a/nb-api/src/test/java/io/nosqlbench/nb/api/components/AttachedMetricsSummaryReporterTest.java b/nb-api/src/test/java/io/nosqlbench/nb/api/components/core/AttachedMetricsSummaryReporterTest.java similarity index 98% rename from nb-api/src/test/java/io/nosqlbench/nb/api/components/AttachedMetricsSummaryReporterTest.java rename to nb-api/src/test/java/io/nosqlbench/nb/api/components/core/AttachedMetricsSummaryReporterTest.java index 062a32500..ade28a4b1 100644 --- a/nb-api/src/test/java/io/nosqlbench/nb/api/components/AttachedMetricsSummaryReporterTest.java +++ b/nb-api/src/test/java/io/nosqlbench/nb/api/components/core/AttachedMetricsSummaryReporterTest.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package io.nosqlbench.nb.api.components; +package io.nosqlbench.nb.api.components.core; import io.nosqlbench.nb.api.config.standard.TestComponent; import io.nosqlbench.nb.api.engine.metrics.instruments.NBFunctionGauge; diff --git a/nb-api/src/test/java/io/nosqlbench/nb/api/components/NBBaseComponentMetricsTest.java b/nb-api/src/test/java/io/nosqlbench/nb/api/components/core/NBBaseComponentMetricsTest.java similarity index 94% rename from nb-api/src/test/java/io/nosqlbench/nb/api/components/NBBaseComponentMetricsTest.java rename to nb-api/src/test/java/io/nosqlbench/nb/api/components/core/NBBaseComponentMetricsTest.java index 8dde44523..0c4df26ff 100644 --- a/nb-api/src/test/java/io/nosqlbench/nb/api/components/NBBaseComponentMetricsTest.java +++ b/nb-api/src/test/java/io/nosqlbench/nb/api/components/core/NBBaseComponentMetricsTest.java @@ -14,9 +14,9 @@ * limitations under the License. */ -package io.nosqlbench.nb.api.components; +package io.nosqlbench.nb.api.components.core; -import io.nosqlbench.nb.api.components.NBBaseComponentMetrics; +import io.nosqlbench.nb.api.components.core.NBBaseComponentMetrics; import io.nosqlbench.nb.api.engine.metrics.instruments.NBBaseMetric; import io.nosqlbench.nb.api.engine.metrics.instruments.NBMetric; import org.junit.jupiter.api.Test; diff --git a/nb-api/src/test/java/io/nosqlbench/nb/api/components/NBComponentFormatsTest.java b/nb-api/src/test/java/io/nosqlbench/nb/api/components/core/NBComponentFormatsTest.java similarity index 90% rename from nb-api/src/test/java/io/nosqlbench/nb/api/components/NBComponentFormatsTest.java rename to nb-api/src/test/java/io/nosqlbench/nb/api/components/core/NBComponentFormatsTest.java index 0c82ec9c9..ed748371d 100644 --- a/nb-api/src/test/java/io/nosqlbench/nb/api/components/NBComponentFormatsTest.java +++ b/nb-api/src/test/java/io/nosqlbench/nb/api/components/core/NBComponentFormatsTest.java @@ -14,12 +14,12 @@ * limitations under the License. */ -package io.nosqlbench.nb.api.components; +package io.nosqlbench.nb.api.components.core; import static org.assertj.core.api.Assertions.assertThat; -import io.nosqlbench.nb.api.components.NBComponent; -import io.nosqlbench.nb.api.components.NBComponentFormats; +import io.nosqlbench.nb.api.components.core.NBComponent; +import io.nosqlbench.nb.api.components.core.NBComponentFormats; import io.nosqlbench.nb.api.config.standard.TestComponent; import org.junit.jupiter.api.Test; public class NBComponentFormatsTest { diff --git a/nb-api/src/test/java/io/nosqlbench/nb/api/components/NBComponentLifecycleTest.java b/nb-api/src/test/java/io/nosqlbench/nb/api/components/core/NBComponentLifecycleTest.java similarity index 97% rename from nb-api/src/test/java/io/nosqlbench/nb/api/components/NBComponentLifecycleTest.java rename to nb-api/src/test/java/io/nosqlbench/nb/api/components/core/NBComponentLifecycleTest.java index 8d1636f58..74ea4ebc3 100644 --- a/nb-api/src/test/java/io/nosqlbench/nb/api/components/NBComponentLifecycleTest.java +++ b/nb-api/src/test/java/io/nosqlbench/nb/api/components/core/NBComponentLifecycleTest.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package io.nosqlbench.nb.api.components; +package io.nosqlbench.nb.api.components.core; import io.nosqlbench.nb.api.config.standard.TestComponent; import org.apache.logging.log4j.LogManager; diff --git a/nb-api/src/test/java/io/nosqlbench/nb/api/components/NBComponentScaffoldingTest.java b/nb-api/src/test/java/io/nosqlbench/nb/api/components/core/NBComponentScaffoldingTest.java similarity index 97% rename from nb-api/src/test/java/io/nosqlbench/nb/api/components/NBComponentScaffoldingTest.java rename to nb-api/src/test/java/io/nosqlbench/nb/api/components/core/NBComponentScaffoldingTest.java index 619023d94..cc6a5d8e4 100644 --- a/nb-api/src/test/java/io/nosqlbench/nb/api/components/NBComponentScaffoldingTest.java +++ b/nb-api/src/test/java/io/nosqlbench/nb/api/components/core/NBComponentScaffoldingTest.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package io.nosqlbench.nb.api.components; +package io.nosqlbench.nb.api.components.core; import io.nosqlbench.nb.api.config.standard.TestComponent; import org.apache.logging.log4j.LogManager; diff --git a/nb-api/src/test/java/io/nosqlbench/nb/api/components/NBComponentServicesTest.java b/nb-api/src/test/java/io/nosqlbench/nb/api/components/core/NBComponentServicesTest.java similarity index 97% rename from nb-api/src/test/java/io/nosqlbench/nb/api/components/NBComponentServicesTest.java rename to nb-api/src/test/java/io/nosqlbench/nb/api/components/core/NBComponentServicesTest.java index 4ded98415..16662e928 100644 --- a/nb-api/src/test/java/io/nosqlbench/nb/api/components/NBComponentServicesTest.java +++ b/nb-api/src/test/java/io/nosqlbench/nb/api/components/core/NBComponentServicesTest.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package io.nosqlbench.nb.api.components; +package io.nosqlbench.nb.api.components.core; import io.nosqlbench.nb.api.config.standard.TestComponent; import io.nosqlbench.nb.api.engine.metrics.instruments.NBFunctionGauge; diff --git a/nb-api/src/test/java/io/nosqlbench/nb/api/components/NBComponentTraversalTest.java b/nb-api/src/test/java/io/nosqlbench/nb/api/components/core/NBComponentTraversalTest.java similarity index 93% rename from nb-api/src/test/java/io/nosqlbench/nb/api/components/NBComponentTraversalTest.java rename to nb-api/src/test/java/io/nosqlbench/nb/api/components/core/NBComponentTraversalTest.java index a8c963f09..adfb481fc 100644 --- a/nb-api/src/test/java/io/nosqlbench/nb/api/components/NBComponentTraversalTest.java +++ b/nb-api/src/test/java/io/nosqlbench/nb/api/components/core/NBComponentTraversalTest.java @@ -14,10 +14,10 @@ * limitations under the License. */ -package io.nosqlbench.nb.api.components; +package io.nosqlbench.nb.api.components.core; -import io.nosqlbench.nb.api.components.NBComponent; -import io.nosqlbench.nb.api.components.NBComponentTraversal; +import io.nosqlbench.nb.api.components.core.NBComponent; +import io.nosqlbench.nb.api.components.core.NBComponentTraversal; import io.nosqlbench.nb.api.config.standard.TestComponent; import org.junit.jupiter.api.Test; diff --git a/nb-api/src/test/java/io/nosqlbench/nb/api/components/NBMetricsQueryTest.java b/nb-api/src/test/java/io/nosqlbench/nb/api/components/core/NBMetricsQueryTest.java similarity index 97% rename from nb-api/src/test/java/io/nosqlbench/nb/api/components/NBMetricsQueryTest.java rename to nb-api/src/test/java/io/nosqlbench/nb/api/components/core/NBMetricsQueryTest.java index ae250d3ac..beecdfc05 100644 --- a/nb-api/src/test/java/io/nosqlbench/nb/api/components/NBMetricsQueryTest.java +++ b/nb-api/src/test/java/io/nosqlbench/nb/api/components/core/NBMetricsQueryTest.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package io.nosqlbench.nb.api.components; +package io.nosqlbench.nb.api.components.core; import io.nosqlbench.nb.api.config.standard.TestComponent; import io.nosqlbench.nb.api.engine.metrics.instruments.NBBaseMetric; diff --git a/nb-api/src/test/java/io/nosqlbench/nb/api/config/standard/TestComponentViewTest.java b/nb-api/src/test/java/io/nosqlbench/nb/api/config/standard/TestComponentViewTest.java index ce95bd530..68045f3c5 100644 --- a/nb-api/src/test/java/io/nosqlbench/nb/api/config/standard/TestComponentViewTest.java +++ b/nb-api/src/test/java/io/nosqlbench/nb/api/config/standard/TestComponentViewTest.java @@ -16,8 +16,7 @@ package io.nosqlbench.nb.api.config.standard; -import io.nosqlbench.nb.api.components.NBComponent; -import io.nosqlbench.nb.api.config.standard.TestComponent; +import io.nosqlbench.nb.api.components.core.NBComponent; import org.junit.jupiter.api.Test; import static org.assertj.core.api.Assertions.assertThat; diff --git a/nbr-examples/src/test/java/io/nosqlbench/nbr/examples/injava/NB_cocycledelay_bursty.java b/nbr-examples/src/test/java/io/nosqlbench/nbr/examples/injava/NB_cocycledelay_bursty.java index c571ab878..eda7766f6 100644 --- a/nbr-examples/src/test/java/io/nosqlbench/nbr/examples/injava/NB_cocycledelay_bursty.java +++ b/nbr-examples/src/test/java/io/nosqlbench/nbr/examples/injava/NB_cocycledelay_bursty.java @@ -21,7 +21,7 @@ import io.nosqlbench.engine.core.lifecycle.scenario.container.NBBufferedContaine import io.nosqlbench.engine.core.lifecycle.scenario.execution.NBBaseCommand; import io.nosqlbench.nb.api.engine.metrics.instruments.NBMetricGauge; import io.nosqlbench.nb.api.engine.metrics.instruments.NBMetricTimer; -import io.nosqlbench.nb.api.components.NBComponent; +import io.nosqlbench.nb.api.components.core.NBComponent; import io.nosqlbench.nb.api.components.events.ParamChange; import io.nosqlbench.engine.api.activityapi.core.Activity; import io.nosqlbench.engine.api.activityapi.ratelimits.simrate.CycleRateSpec; diff --git a/nbr-examples/src/test/java/io/nosqlbench/nbr/examples/injavascript/ScriptExampleTests.java b/nbr-examples/src/test/java/io/nosqlbench/nbr/examples/injavascript/ScriptExampleTests.java index 0e69c3a9c..0ac9a9995 100644 --- a/nbr-examples/src/test/java/io/nosqlbench/nbr/examples/injavascript/ScriptExampleTests.java +++ b/nbr-examples/src/test/java/io/nosqlbench/nbr/examples/injavascript/ScriptExampleTests.java @@ -19,7 +19,7 @@ package io.nosqlbench.nbr.examples.injavascript; import io.nosqlbench.engine.cmdstream.BasicScriptBuffer; import io.nosqlbench.engine.core.lifecycle.scenario.container.NBBufferedContainer; import io.nosqlbench.nb.api.config.standard.TestComponent; -import io.nosqlbench.nb.api.components.NBComponent; +import io.nosqlbench.nb.api.components.core.NBComponent; import io.nosqlbench.engine.core.lifecycle.scenario.container.NBContainer; import io.nosqlbench.engine.core.lifecycle.scenario.container.NBCommandParams; import io.nosqlbench.engine.core.lifecycle.scenario.execution.NBCommandResult; diff --git a/nbr/src/test/java/io/nosqlbench/engine/core/script/MetricsIntegrationTest.java b/nbr/src/test/java/io/nosqlbench/engine/core/script/MetricsIntegrationTest.java index 7aa42a54b..87426d9e1 100644 --- a/nbr/src/test/java/io/nosqlbench/engine/core/script/MetricsIntegrationTest.java +++ b/nbr/src/test/java/io/nosqlbench/engine/core/script/MetricsIntegrationTest.java @@ -18,7 +18,7 @@ package io.nosqlbench.engine.core.script; import com.codahale.metrics.Histogram; import io.nosqlbench.nb.api.config.standard.TestComponent; -import io.nosqlbench.nb.api.components.NBComponent; +import io.nosqlbench.nb.api.components.core.NBComponent; import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.Test; From 54631474bdb1f2d33004e72ca055c404301042b2 Mon Sep 17 00:00:00 2001 From: Jonathan Shook Date: Sat, 9 Dec 2023 17:16:57 -0600 Subject: [PATCH 05/26] add Component Properties --- .../core/lifecycle/session/NBSession.java | 1 + .../api/components/core/NBComponentProps.java | 26 +++++++++++++++++++ 2 files changed, 27 insertions(+) create mode 100644 nb-api/src/main/java/io/nosqlbench/nb/api/components/core/NBComponentProps.java diff --git a/engine-core/src/main/java/io/nosqlbench/engine/core/lifecycle/session/NBSession.java b/engine-core/src/main/java/io/nosqlbench/engine/core/lifecycle/session/NBSession.java index 8b3e07bf0..db0328578 100644 --- a/engine-core/src/main/java/io/nosqlbench/engine/core/lifecycle/session/NBSession.java +++ b/engine-core/src/main/java/io/nosqlbench/engine/core/lifecycle/session/NBSession.java @@ -16,6 +16,7 @@ package io.nosqlbench.engine.core.lifecycle.session; +import io.nosqlbench.nb.api.components.core.NBComponentProps; import io.nosqlbench.nb.api.engine.activityimpl.ActivityDef; import io.nosqlbench.nb.api.engine.metrics.instruments.NBFunctionGauge; import io.nosqlbench.nb.api.engine.metrics.instruments.NBMetricGauge; diff --git a/nb-api/src/main/java/io/nosqlbench/nb/api/components/core/NBComponentProps.java b/nb-api/src/main/java/io/nosqlbench/nb/api/components/core/NBComponentProps.java new file mode 100644 index 000000000..2546fab01 --- /dev/null +++ b/nb-api/src/main/java/io/nosqlbench/nb/api/components/core/NBComponentProps.java @@ -0,0 +1,26 @@ +/* + * Copyright (c) 2023 nosqlbench + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package io.nosqlbench.nb.api.components.core; + +import java.util.Optional; + +public interface NBComponentProps { + String SUMMARY = "summary"; + + Optional getComponentProp(String name); + NBComponentProps setComponentProp(String name, String value); +} From 57129e89687b8c4bd78d4fec42b14b43e415b586 Mon Sep 17 00:00:00 2001 From: Jonathan Shook Date: Sat, 9 Dec 2023 17:17:03 -0600 Subject: [PATCH 06/26] avoid mandatory console output --- .../java/io/nosqlbench/engine/cli/NBCLI.java | 23 +++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/engine-cli/src/main/java/io/nosqlbench/engine/cli/NBCLI.java b/engine-cli/src/main/java/io/nosqlbench/engine/cli/NBCLI.java index 395fda36e..646d730d3 100644 --- a/engine-cli/src/main/java/io/nosqlbench/engine/cli/NBCLI.java +++ b/engine-cli/src/main/java/io/nosqlbench/engine/cli/NBCLI.java @@ -272,6 +272,29 @@ public class NBCLI implements Function, NBLabeledElement { return NBCLI.EXIT_OK; } + if (options.wantsToCatResource()) { + final String resourceToCat = options.wantsToCatResourceNamed(); + NBCLI.logger.debug(() -> "user requests to cat " + resourceToCat); + + Optional> tocat = NBIO.classpath() + .searchPrefixes("activities") + .searchPrefixes(options.wantsIncludes()) + .pathname(resourceToCat).extensionSet(RawOpsLoader.YAML_EXTENSIONS).first(); + + if (tocat.isEmpty()) tocat = NBIO.classpath() + .searchPrefixes().searchPrefixes(options.wantsIncludes()) + .searchPrefixes(options.wantsIncludes()) + .pathname(resourceToCat).first(); + + final Content data = tocat.orElseThrow( + () -> new BasicError("Unable to find " + resourceToCat + + " in classpath to cat out")); + + System.out.println(data.get()); + NBCLI.logger.info(() -> "Dumped internal resource '" + data.asPath() + "' to stdout"); + return NBCLI.EXIT_OK; + } + if (options.wantsToCopyResource()) { final String resourceToCopy = options.wantsToCopyResourceNamed(); NBCLI.logger.debug(() -> "user requests to copy out " + resourceToCopy); From 725a9b5d8808b14f296421190b3cb9e0c1c5996e Mon Sep 17 00:00:00 2001 From: Jonathan Shook Date: Sat, 9 Dec 2023 17:17:06 -0600 Subject: [PATCH 07/26] doc updates --- .../nb/api/components/package-info.java | 87 ++++++++++++------- 1 file changed, 57 insertions(+), 30 deletions(-) diff --git a/nb-api/src/main/java/io/nosqlbench/nb/api/components/package-info.java b/nb-api/src/main/java/io/nosqlbench/nb/api/components/package-info.java index 49c7384d8..dfd693b6e 100644 --- a/nb-api/src/main/java/io/nosqlbench/nb/api/components/package-info.java +++ b/nb-api/src/main/java/io/nosqlbench/nb/api/components/package-info.java @@ -32,21 +32,24 @@ * *

Components Defined

*

There can be different layers or types of components, but there is only one component hierarchy in each - * NoSQLBench process. Basically the Session is a component. The Scenario is a component. Each activity within a - * scenario is a component. Whether something is meaningful as a component depends on whether the management facilities - * provided by the component API make using, interacting with, or understanding that element better for users. However - * there is a limit to how fine-grained the component hierarchy should be allowed to get. This is because maintaining - * the component structure at runtime incurs a cost, and most feature of the component types are related to assemblage - * of fixtures in the runtime which are configured and initialized before steady state processing begins. For example, - * it makes sense to wire an activity as component, but not an operation, since an operation is ephemeral and - * short-lived. Apart from these trade-offs, make a layer a component layer if it makes sense for the user and/or the - * developer, as consolidating the logic into the component layer is beneficial to both.

+ * NoSQLBench process. Basically the Session is a component. Each activity container within a session is a component. + * Each activity within a container is a component. Whether something is meaningful as a component depends on whether + * the management facilities provided by the component API make using, interacting with, or understanding that element + * better for users. However there is a limit to how fine-grained the component hierarchy should be allowed to get. + * This + * is because maintaining the component structure at runtime incurs a cost, and most features of the component types + * are + * related to assemblage of fixtures in the runtime which are configured and initialized before steady state processing + * begins. For example, it makes sense to wire an activity as component, but not an operation, since an operation is + * ephemeral and short lived. Apart from these trade-offs, make a layer a component layer if it makes sense for the + * user + * and/or the developer, as consolidating the logic into the component layer is beneficial to both.

* *

Adoption Strategy

*

Consolidating existing logic to use the component types will be an incremental process. The base contract type - * {@link io.nosqlbench.nb.api.components.NBComponent} establishes the contract for any conforming types. As contract facets - * are added to this type, common logic can be implemented on the base implementation types where possible, allowing - * for the elision of duplicitous code from prior functionality.

+ * {@link io.nosqlbench.nb.api.components.core.NBComponent} establishes the contract for any conforming types. As + * contract facets are added to this type, common logic can be implemented on the base implementation types where + * possible, allowing for the elision of duplicitous code from prior functionality.

*

*

*


@@ -56,13 +59,18 @@ * *

Components are structured hierarchically. All components exist within the scope of their parent, with the only * exception being the root component, which has no parent. Components always know their parent from construction time. - * After a component is constructed, it is informed of children components being added and removed via - * {@link io.nosqlbench.nb.api.components.NBComponent#attachChild} and {@link io.nosqlbench.nb.api.components.NBComponent#detachChild} + * After a component is constructed, it is informed of child components being added and removed via + * {@link io.nosqlbench.nb.api.components.core.NBComponent#attachChild} and + * {@link io.nosqlbench.nb.api.components.core.NBComponent#detachChild} * methods.

* - *

Component logic should interact with other components using the component interfaces and types. No contextual - * typing or casting should be allowed within the component layer methods. Components only understand components by - * design, and breaking this abstraction is counter-productive at best.

+ *

Component-specific logic should interact with other components using the component interfaces and types. No + * contextual typing or casting should be allowed within the component layer methods, except in the case that types + * outside of the component type system are leveraging component layers for features of other non-component types. In + * other words, Component APIs should be thought of as a layer of primitives which sit on top of low-level Java + * primitive, and below those types which use them. Component logic can't understand higher types without breaking the + * seal on a useful abstraction. Components only understand components by design, and breaking this abstraction is + * counter-productive at best.

* *

Utility classes which understand how to interact with components should be used where possible when the * capabilities they provide are well-themed and cohesive. A Corollary to this is that each interface added to the core @@ -76,21 +84,40 @@ *

Life-cycle Oriented Components

*

Life-cycle components represent executions of some user-managed scope, like session, scenarios, or activities. * These components model the nesting structure of threads of execution, or for activities, groups of threads. As such, - * any sub-components they have are generally there to augment or contextualize the execution of the life-cycle component. - * In this case, the life-cycle component controls the life-line of its sub-components. When the life-cycle component is - * ready to finish its own execution, it will directly inform all components attached to it that it is time for them - * to do final housekeeping, including any final buffering and sending, connection tear-down, etc. As components, the parent - * component may not know what the details of these housekeeping steps are directly. But components are always something else too, - * and in the type-specific implementations which are triggered by component methods, appropriate integrations can take place.

+ * any sub-components they have are generally there to augment or contextualize the execution of the life-cycle + * component.

+ *

Life-cycle components may control the life-line of its sub-components. In that case, when the life-cycle + * component + * is ready to finish its own execution, it should directly inform all components attached to it that it is time for + * them to do final housekeeping, including any final buffering and sending, connection tear-down, etc. As components, + * the parent + * component may not know what the details of these housekeeping steps are directly. But components are always + * something else too, and in the type-specific implementations which are triggered by component methods, appropriate + * integrations can take place indirectly through the component API or events.

+ *

In other life-cycle components, the parent component can be thought of as a passive container over child + * components which + * may exit on their own terms. In this case, the parent component should have appropriate eventing and state tracking + * so that + * its life-cycle is properly bounded around the sub components. In other words, it would be a bug if all the sub + * components + * had completed their work and the parent component sat idle in the component hierarchy without completing itself or + * alternately + * sending events to trigger some other life-cycle cleanup. How this is handled is not specific explicitly for all + * components. + * Still, it is a design error to have idle components in the hierarchy with no durable life-cycle cleanup + * mechanism.

* *

Service Oriented Components

- *

Service components are those which are created as an attachment to other components. They may or may not have additional asynchronous - * behavior with respect to their parent component, but they are always in service of the parent component. For example, metrics instruments - * like counters are passive, but reporters which send these metrics outside of the system are active and on a schedule. - * Service-oriented components generally do not control the duration of their lifetimes. When they are working properly, they exist - * along-side and attached to their parent component for the full lifetime of that parent, and then are reaped on demand by the parent - * component.

- * + *

Service components are those which are created as an attachment to other components. They may or may not have + * additional asynchronous behavior with respect to their parent component, but they are always in service of the parent + * component. For example, metrics instruments like counters are passive, but reporters which send these metrics outside + * of the system are active and on a schedule. Service-oriented components generally do not control the duration of + * their lifetimes. When they are working properly, they exist along-side and attached to their parent component for the + * full lifetime of that parent, and then are reaped on demand by the parent component.

+ *

Ideally reaping of sub-components like this occurs naturally because of standard GC reachability rules. For this to + * work reliably, it is important that you attach components and their children correctly with the component tree, and + * avoid creating extraneous references across unrelated components or across component layers.

+ *

*


*

Labeling Consistency and interlocks

* TODO: labeling consistency From 16e3e587aa84005ee1dbaf9b21aecf8a9fb7297c Mon Sep 17 00:00:00 2001 From: Jonathan Shook Date: Sat, 9 Dec 2023 17:17:08 -0600 Subject: [PATCH 08/26] enhance console reporter --- .../main/java/io/nosqlbench/engine/cli/NBCLI.java | 8 +++++++- .../engine/metrics/reporters/ConsoleReporter.java | 14 +++++++++++--- 2 files changed, 18 insertions(+), 4 deletions(-) diff --git a/engine-cli/src/main/java/io/nosqlbench/engine/cli/NBCLI.java b/engine-cli/src/main/java/io/nosqlbench/engine/cli/NBCLI.java index 646d730d3..09534b25d 100644 --- a/engine-cli/src/main/java/io/nosqlbench/engine/cli/NBCLI.java +++ b/engine-cli/src/main/java/io/nosqlbench/engine/cli/NBCLI.java @@ -413,6 +413,11 @@ public class NBCLI implements Function, NBLabeledElement { ), sessionName ); + // TODO: Decide whether this should be part of ctor consistency + Map.of( + "summary", options.getReportSummaryTo(), + "logsdir", options.getLogsDirectory().toString() + ).forEach(session::setComponentProp); options.wantsReportCsvTo().ifPresent(cfg -> { MetricInstanceFilter filter = new MetricInstanceFilter(); @@ -439,7 +444,8 @@ public class NBCLI implements Function, NBLabeledElement { ExecutionResult sessionResult = session.apply(options.getCommands()); - sessionResult.printSummary(System.out); +// sessionResult.printSummary(System.out); + logger.info(sessionResult); return sessionResult.getStatus().code; } diff --git a/nb-api/src/main/java/io/nosqlbench/nb/api/engine/metrics/reporters/ConsoleReporter.java b/nb-api/src/main/java/io/nosqlbench/nb/api/engine/metrics/reporters/ConsoleReporter.java index bd5b0f163..3209bc499 100644 --- a/nb-api/src/main/java/io/nosqlbench/nb/api/engine/metrics/reporters/ConsoleReporter.java +++ b/nb-api/src/main/java/io/nosqlbench/nb/api/engine/metrics/reporters/ConsoleReporter.java @@ -41,9 +41,10 @@ public class ConsoleReporter extends PeriodicTaskComponent { private final long rateFactor; private final String durationUnit = TimeUnit.NANOSECONDS.toString().toLowerCase(Locale.US); private final long durationFactor = TimeUnit.NANOSECONDS.toNanos(1); + public ConsoleReporter(NBComponent node, NBLabels extraLabels, long millis, boolean oneLastTime, PrintStream output, Set disabledMetricAttributes) { - super(node, extraLabels, millis, oneLastTime,"REPORT-CONSOLE"); + super(node, extraLabels, millis, oneLastTime, "REPORT-CONSOLE"); this.output = output; this.dateFormat = DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.MEDIUM, @@ -190,8 +191,10 @@ public class ConsoleReporter extends PeriodicTaskComponent { /** * Print only if the attribute is enabled * - * @param type Metric attribute - * @param status Status to be logged + * @param type + * Metric attribute + * @param status + * Status to be logged */ private void printIfEnabled(MetricAttribute type, String status) { if (getDisabledMetricAttributes().contains(type)) { @@ -242,4 +245,9 @@ public class ConsoleReporter extends PeriodicTaskComponent { } report(gauges, counters, histograms, meters, timers); } + + public void reportCountsOnce(List summaryMetrics) { + // TODO: implement counts only renderer + // TODO: resolve ambiguity around reporting counts only or reporting nothing for short sessions + } } From aad06bed09ffca46a35d102e90b36e4ddc48f60c Mon Sep 17 00:00:00 2001 From: Jonathan Shook Date: Sat, 9 Dec 2023 17:17:11 -0600 Subject: [PATCH 09/26] formatting --- .../engine/core/lifecycle/session/NBSession.java | 14 +++++++------- .../engine/metrics/reporters/ConsoleReporter.java | 12 ++++++++---- 2 files changed, 15 insertions(+), 11 deletions(-) diff --git a/engine-core/src/main/java/io/nosqlbench/engine/core/lifecycle/session/NBSession.java b/engine-core/src/main/java/io/nosqlbench/engine/core/lifecycle/session/NBSession.java index db0328578..221c8124c 100644 --- a/engine-core/src/main/java/io/nosqlbench/engine/core/lifecycle/session/NBSession.java +++ b/engine-core/src/main/java/io/nosqlbench/engine/core/lifecycle/session/NBSession.java @@ -56,13 +56,6 @@ public class NBSession extends NBBaseComponent implements Function, Ex ERROR } - private NBBufferedContainer getContext(String name) { - return containers.computeIfAbsent( - name, - n -> NBContainer.builder().name(n).build(this) - ); - } - public NBSession( NBLabeledElement labelContext, String sessionName @@ -206,5 +199,12 @@ public class NBSession extends NBBaseComponent implements Function, Ex clientMetricChecker.addRatioMetricToCheck(cpuUserGauge, cpuTotalGauge, 50.0, true); } + private NBBufferedContainer getContext(String name) { + return containers.computeIfAbsent( + name, + n -> NBContainer.builder().name(n).build(this) + ); + } + } diff --git a/nb-api/src/main/java/io/nosqlbench/nb/api/engine/metrics/reporters/ConsoleReporter.java b/nb-api/src/main/java/io/nosqlbench/nb/api/engine/metrics/reporters/ConsoleReporter.java index 3209bc499..2eb724350 100644 --- a/nb-api/src/main/java/io/nosqlbench/nb/api/engine/metrics/reporters/ConsoleReporter.java +++ b/nb-api/src/main/java/io/nosqlbench/nb/api/engine/metrics/reporters/ConsoleReporter.java @@ -233,13 +233,17 @@ public class ConsoleReporter extends PeriodicTaskComponent { for (NBMetric metric : summaryMetrics) { if (metric instanceof NBMetricGauge) { gauges.add((NBMetricGauge) metric); - } if (metric instanceof NBMetricCounter) { + } + if (metric instanceof NBMetricCounter) { counters.add((NBMetricCounter) metric); - } if (metric instanceof NBMetricHistogram) { + } + if (metric instanceof NBMetricHistogram) { histograms.add((NBMetricHistogram) metric); - } if (metric instanceof NBMetricMeter) { + } + if (metric instanceof NBMetricMeter) { meters.add((NBMetricMeter) metric); - } if (metric instanceof NBMetricTimer) { + } + if (metric instanceof NBMetricTimer) { timers.add((NBMetricTimer) metric); } } From c23878a0e6502764aec06a85ad5effdfbe9a5235 Mon Sep 17 00:00:00 2001 From: Jonathan Shook Date: Sat, 9 Dec 2023 17:17:13 -0600 Subject: [PATCH 10/26] implement --cat --- .../io/nosqlbench/engine/cli/NBCLIOptions.java | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/engine-cli/src/main/java/io/nosqlbench/engine/cli/NBCLIOptions.java b/engine-cli/src/main/java/io/nosqlbench/engine/cli/NBCLIOptions.java index 5f1ecc7ed..9562b14f2 100644 --- a/engine-cli/src/main/java/io/nosqlbench/engine/cli/NBCLIOptions.java +++ b/engine-cli/src/main/java/io/nosqlbench/engine/cli/NBCLIOptions.java @@ -84,6 +84,7 @@ public class NBCLIOptions { private static final String COMPILE_SCRIPT = "--compile-script"; private static final String SCRIPT_FILE = "--script-file"; private static final String COPY = "--copy"; + private static final String CAT = "--cat"; private static final String SHOW_STACKTRACES = "--show-stacktraces"; private static final String EXPERIMENTAL = "--experimental"; private static final String MATURITY = "--maturity"; @@ -199,6 +200,7 @@ public class NBCLIOptions { private boolean wantsConsoleMetrics = true; private String annotateLabelSpec = ""; private String metricsLabelSpec = ""; + private String wantsToCatResource =""; public boolean wantsLoggedMetrics() { return this.wantsConsoleMetrics; @@ -264,6 +266,10 @@ public class NBCLIOptions { return this.labels; } + public boolean wantsToCatResource() { + return this.wantsToCatResource!=null && !this.wantsToCatResource.isEmpty(); + } + public enum Mode { ParseGlobalsOnly, ParseAllOptions @@ -629,6 +635,10 @@ public class NBCLIOptions { arglist.removeFirst(); this.wantsToCopyWorkload = this.readWordOrThrow(arglist, "workload to copy"); break; + case NBCLIOptions.CAT: + arglist.removeFirst(); + this.wantsToCatResource = this.readWordOrThrow(arglist, "workload to cat"); + break; default: nonincludes.addLast(arglist.removeFirst()); } @@ -887,6 +897,11 @@ public class NBCLIOptions { return this.wantsToCopyWorkload; } + public String wantsToCatResourceNamed() { + return this.wantsToCatResource; + } + + public boolean wantsWorkloadsList() { return this.wantsWorkloadsList; } From 3547c04c419a5e00b9e903b4ed29511b278308e9 Mon Sep 17 00:00:00 2001 From: Jonathan Shook Date: Sat, 9 Dec 2023 17:17:20 -0600 Subject: [PATCH 11/26] minor syntax improvements --- .../engine/api/activityimpl/uniform/StandardActivity.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/engine-core/src/main/java/io/nosqlbench/engine/api/activityimpl/uniform/StandardActivity.java b/engine-core/src/main/java/io/nosqlbench/engine/api/activityimpl/uniform/StandardActivity.java index 0616d534e..f00354703 100644 --- a/engine-core/src/main/java/io/nosqlbench/engine/api/activityimpl/uniform/StandardActivity.java +++ b/engine-core/src/main/java/io/nosqlbench/engine/api/activityimpl/uniform/StandardActivity.java @@ -83,7 +83,7 @@ public class StandardActivity extends SimpleActivity implements } Optional defaultDriverName = activityDef.getParams().getOptionalString("driver"); - Optional defaultAdapter = activityDef.getParams().getOptionalString("driver") + Optional> defaultAdapter = activityDef.getParams().getOptionalString("driver") .flatMap(name -> ServiceSelector.of(name,ServiceLoader.load(DriverAdapterLoader.class)).get()) .map(l -> l.load(this,NBLabels.forKV())); From 5ab00a2c112dbaa45fecf7fa96c6f8378f676a1a Mon Sep 17 00:00:00 2001 From: Jonathan Shook Date: Sat, 9 Dec 2023 23:29:27 -0600 Subject: [PATCH 12/26] add dryrun=emit support --- .../adapter/cqld4/optypes/Cqld4CqlOp.java | 19 +- .../uniform/BaseDriverAdapter.java | 2 +- .../api/activityimpl/uniform/EmitterOp.java | 34 +++ .../uniform/EmitterOpDispenserWrapper.java | 38 ++++ .../api/activityimpl/SimpleActivity.java | 202 ++++++++++-------- 5 files changed, 197 insertions(+), 98 deletions(-) create mode 100644 adapters-api/src/main/java/io/nosqlbench/adapters/api/activityimpl/uniform/EmitterOp.java create mode 100644 adapters-api/src/main/java/io/nosqlbench/adapters/api/activityimpl/uniform/EmitterOpDispenserWrapper.java diff --git a/adapter-cqld4/src/main/java/io/nosqlbench/adapter/cqld4/optypes/Cqld4CqlOp.java b/adapter-cqld4/src/main/java/io/nosqlbench/adapter/cqld4/optypes/Cqld4CqlOp.java index 106cf61df..689c6b6fc 100644 --- a/adapter-cqld4/src/main/java/io/nosqlbench/adapter/cqld4/optypes/Cqld4CqlOp.java +++ b/adapter-cqld4/src/main/java/io/nosqlbench/adapter/cqld4/optypes/Cqld4CqlOp.java @@ -99,7 +99,7 @@ public abstract class Cqld4CqlOp implements CycleOp>, VariableCapture, this.metrics = metrics; } - public final List apply(long cycle) { + public final ArrayList apply(long cycle) { Statement statement = getStmt(); logger.trace(() -> "apply() invoked, statement obtained, executing async with page size: " + statement.getPageSize() + " thread local rows: "); @@ -118,7 +118,7 @@ public abstract class Cqld4CqlOp implements CycleOp>, VariableCapture, }); try { - return rowsStage.toCompletableFuture().get(300, TimeUnit.SECONDS); + return new PrintableRowList(rowsStage.toCompletableFuture().get(300, TimeUnit.SECONDS)); } catch (ExecutionException exe) { Throwable ee = exe.getCause(); if (ee instanceof RuntimeException re) { @@ -142,6 +142,21 @@ public abstract class Cqld4CqlOp implements CycleOp>, VariableCapture, // processors.flush(); } + private static class PrintableRowList extends ArrayList { + public PrintableRowList(List values) { + super(values); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + for (Row row : this) { + sb.append(row.getFormattedContents()); + } + return sb.toString(); + } + } + // private BiFunction handler @Override public Op getNextOp() { diff --git a/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityimpl/uniform/BaseDriverAdapter.java b/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityimpl/uniform/BaseDriverAdapter.java index 91a458bd0..6fe41ffcf 100644 --- a/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityimpl/uniform/BaseDriverAdapter.java +++ b/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityimpl/uniform/BaseDriverAdapter.java @@ -176,7 +176,7 @@ public abstract class BaseDriverAdapter extends NBBaseComponent .add(Param.optional("instrument", Boolean.class)) .add(Param.optional(List.of("workload", "yaml"), String.class, "location of workload yaml file")) .add(Param.optional("driver", String.class)) - .add(Param.defaultTo("dryrun", "none").setRegex("(op|jsonnet|none)")) + .add(Param.defaultTo("dryrun", "none").setRegex("(op|jsonnet|emit|none)")) .add(Param.optional("maxtries", Integer.class)) .asReadOnly(); } diff --git a/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityimpl/uniform/EmitterOp.java b/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityimpl/uniform/EmitterOp.java new file mode 100644 index 000000000..9abbda81a --- /dev/null +++ b/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityimpl/uniform/EmitterOp.java @@ -0,0 +1,34 @@ +/* + * Copyright (c) 2022-2023 nosqlbench + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package io.nosqlbench.adapters.api.activityimpl.uniform; + +import io.nosqlbench.adapters.api.activityimpl.uniform.flowtypes.CycleOp; + +public class EmitterOp implements CycleOp { + + private final CycleOp cycleOp; + public EmitterOp(CycleOp cycleOp) { + this.cycleOp = cycleOp; + } + + @Override + public Object apply(long value) { + Object result = cycleOp.apply(value); + System.out.println("result from cycle " + value + ":\n"+result); + return result; + } +} diff --git a/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityimpl/uniform/EmitterOpDispenserWrapper.java b/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityimpl/uniform/EmitterOpDispenserWrapper.java new file mode 100644 index 000000000..c82c5b1a9 --- /dev/null +++ b/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityimpl/uniform/EmitterOpDispenserWrapper.java @@ -0,0 +1,38 @@ +/* + * Copyright (c) 2022-2023 nosqlbench + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package io.nosqlbench.adapters.api.activityimpl.uniform; + +import io.nosqlbench.adapters.api.activityimpl.BaseOpDispenser; +import io.nosqlbench.adapters.api.activityimpl.OpDispenser; +import io.nosqlbench.adapters.api.activityimpl.uniform.flowtypes.CycleOp; +import io.nosqlbench.adapters.api.activityimpl.uniform.flowtypes.Op; +import io.nosqlbench.adapters.api.templating.ParsedOp; + +public class EmitterOpDispenserWrapper extends BaseOpDispenser { + + private final OpDispenser> realDispenser; + + public EmitterOpDispenserWrapper(DriverAdapter adapter, ParsedOp pop, OpDispenser> realDispenser) { + super(adapter, pop); + this.realDispenser = realDispenser; + } + @Override + public EmitterOp apply(long cycle) { + CycleOp cycleOp = realDispenser.apply(cycle); + return new EmitterOp(cycleOp); + } +} diff --git a/engine-core/src/main/java/io/nosqlbench/engine/api/activityimpl/SimpleActivity.java b/engine-core/src/main/java/io/nosqlbench/engine/api/activityimpl/SimpleActivity.java index 95e2a983f..771f25228 100644 --- a/engine-core/src/main/java/io/nosqlbench/engine/api/activityimpl/SimpleActivity.java +++ b/engine-core/src/main/java/io/nosqlbench/engine/api/activityimpl/SimpleActivity.java @@ -16,6 +16,8 @@ package io.nosqlbench.engine.api.activityimpl; +import io.nosqlbench.adapters.api.activityimpl.uniform.EmitterOpDispenserWrapper; +import io.nosqlbench.adapters.api.activityimpl.uniform.flowtypes.CycleOp; import io.nosqlbench.nb.api.components.core.NBComponent; import io.nosqlbench.nb.api.components.core.NBBaseComponent; import io.nosqlbench.nb.api.components.events.ParamChange; @@ -56,12 +58,10 @@ import org.apache.logging.log4j.Logger; import java.io.InputStream; import java.io.PrintWriter; -import java.lang.reflect.AnnotatedType; import java.nio.charset.StandardCharsets; import java.util.*; import java.util.function.Function; import java.util.function.Supplier; -import java.util.stream.Collectors; /** * A default implementation of an Activity, suitable for building upon. @@ -71,7 +71,7 @@ public class SimpleActivity extends NBBaseComponent implements Activity { protected ActivityDef activityDef; private final List closeables = new ArrayList<>(); - private MotorDispenser motorDispenser; + private MotorDispenser motorDispenser; private InputDispenser inputDispenser; private ActionDispenser actionDispenser; private OutputDispenser markerDispenser; @@ -90,26 +90,26 @@ public class SimpleActivity extends NBBaseComponent implements Activity { private final RunStateTally tally = new RunStateTally(); public SimpleActivity(NBComponent parent, ActivityDef activityDef) { - super(parent,NBLabels.forKV("activity",activityDef.getAlias()).and(activityDef.auxLabels())); + super(parent, NBLabels.forKV("activity", activityDef.getAlias()).and(activityDef.auxLabels())); this.activityDef = activityDef; if (activityDef.getAlias().equals(ActivityDef.DEFAULT_ALIAS)) { Optional workloadOpt = activityDef.getParams().getOptionalString( - "workload", - "yaml" + "workload", + "yaml" ); if (workloadOpt.isPresent()) { activityDef.getParams().set("alias", workloadOpt.get()); } else { activityDef.getParams().set("alias", - activityDef.getActivityType().toUpperCase(Locale.ROOT) - + nameEnumerator); + activityDef.getActivityType().toUpperCase(Locale.ROOT) + + nameEnumerator); nameEnumerator++; } } } public SimpleActivity(NBComponent parent, String activityDefString) { - this(parent,ActivityDef.parseActivityDef(activityDefString)); + this(parent, ActivityDef.parseActivityDef(activityDefString)); } @Override @@ -120,8 +120,8 @@ public class SimpleActivity extends NBBaseComponent implements Activity { public synchronized NBErrorHandler getErrorHandler() { if (null == this.errorHandler) { errorHandler = new NBErrorHandler( - () -> activityDef.getParams().getOptionalString("errors").orElse("stop"), - () -> getExceptionMetrics()); + () -> activityDef.getParams().getOptionalString("errors").orElse("stop"), + this::getExceptionMetrics); } return errorHandler; } @@ -200,7 +200,7 @@ public class SimpleActivity extends NBBaseComponent implements Activity { } public String toString() { - return (activityDef!=null ? activityDef.getAlias() : "unset_alias" ) + ':' + this.runState + ':' + this.tally ; + return (activityDef != null ? activityDef.getAlias() : "unset_alias") + ':' + this.runState + ':' + this.tally; } @Override @@ -306,16 +306,17 @@ public class SimpleActivity extends NBBaseComponent implements Activity { public synchronized void initOrUpdateRateLimiters(ActivityDef activityDef) { activityDef.getParams().getOptionalNamedParameter("striderate") - .map(StrideRateSpec::new).ifPresent(sr -> this.onEvent(new ParamChange<>(sr))); + .map(StrideRateSpec::new).ifPresent(sr -> this.onEvent(new ParamChange<>(sr))); activityDef.getParams().getOptionalNamedParameter("cyclerate", "targetrate", "rate") - .map(CycleRateSpec::new).ifPresent(sr -> this.onEvent(new ParamChange<>(sr))); + .map(CycleRateSpec::new).ifPresent(sr -> this.onEvent(new ParamChange<>(sr))); } public void createOrUpdateStrideLimiter(SimRateSpec spec) { strideLimiter = RateLimiters.createOrUpdate(this, strideLimiter, spec); } + public void createOrUpdateCycleLimiter(SimRateSpec spec) { cycleLimiter = RateLimiters.createOrUpdate(this, cycleLimiter, spec); } @@ -326,7 +327,7 @@ public class SimpleActivity extends NBBaseComponent implements Activity { * defaults when requested. * * @param seq - * - The {@link OpSequence} to derive the defaults from + * - The {@link OpSequence} to derive the defaults from */ public synchronized void setDefaultsFromOpSequence(OpSequence seq) { Optional strideOpt = getParams().getOptionalString("stride"); @@ -349,15 +350,15 @@ public class SimpleActivity extends NBBaseComponent implements Activity { } else { if (0 == activityDef.getCycleCount()) { throw new RuntimeException( - "You specified cycles, but the range specified means zero cycles: " + getParams().get("cycles") + "You specified cycles, but the range specified means zero cycles: " + getParams().get("cycles") ); } long stride = getParams().getOptionalLong("stride").orElseThrow(); long cycles = this.activityDef.getCycleCount(); if (cycles < stride) { throw new RuntimeException( - "The specified cycles (" + cycles + ") are less than the stride (" + stride + "). This means there aren't enough cycles to cause a stride to be executed." + - " If this was intended, then set stride low enough to allow it." + "The specified cycles (" + cycles + ") are less than the stride (" + stride + "). This means there aren't enough cycles to cause a stride to be executed." + + " If this was intended, then set stride low enough to allow it." ); } } @@ -367,7 +368,7 @@ public class SimpleActivity extends NBBaseComponent implements Activity { if (0 < stride && 0 != cycleCount % stride) { logger.warn(() -> "The stride does not evenly divide cycles. Only full strides will be executed," + - "leaving some cycles unused. (stride=" + stride + ", cycles=" + cycleCount + ')'); + "leaving some cycles unused. (stride=" + stride + ", cycles=" + cycleCount + ')'); } Optional threadSpec = activityDef.getParams().getOptionalString("threads"); @@ -398,43 +399,42 @@ public class SimpleActivity extends NBBaseComponent implements Activity { if (activityDef.getThreads() > activityDef.getCycleCount()) { logger.warn(() -> "threads=" + activityDef.getThreads() + " and cycles=" + activityDef.getCycleSummary() - + ", you should have more cycles than threads."); + + ", you should have more cycles than threads."); } } else if (1000 < cycleCount) { logger.warn(() -> "For testing at scale, it is highly recommended that you " + - "set threads to a value higher than the default of 1." + - " hint: you can use threads=auto for reasonable default, or" + - " consult the topic on threads with `help threads` for" + - " more information."); + "set threads to a value higher than the default of 1." + + " hint: you can use threads=auto for reasonable default, or" + + " consult the topic on threads with `help threads` for" + + " more information."); } - if (0 < this.activityDef.getCycleCount() && 0 == seq.getOps().size()) { + if (0 < this.activityDef.getCycleCount() && seq.getOps().isEmpty()) { throw new BasicError("You have configured a zero-length sequence and non-zero cycles. Tt is not possible to continue with this activity."); } } protected OpSequence> createOpSourceFromParsedOps( - Map adapterCache, - Map> mapperCache, - List adapters, - List pops +// Map> adapterCache, +// Map> mapperCache, + List> adapters, + List pops ) { try { List ratios = new ArrayList<>(pops.size()); - for (int i = 0; i < pops.size(); i++) { - ParsedOp pop = pops.get(i); + for (ParsedOp pop : pops) { long ratio = pop.takeStaticConfigOr("ratio", 1); ratios.add(ratio); } SequencerType sequencerType = getParams() - .getOptionalString("seq") - .map(SequencerType::valueOf) - .orElse(SequencerType.bucket); + .getOptionalString("seq") + .map(SequencerType::valueOf) + .orElse(SequencerType.bucket); SequencePlanner> planner = new SequencePlanner<>(sequencerType); int dryrunCount = 0; @@ -445,16 +445,21 @@ public class SimpleActivity extends NBBaseComponent implements Activity { logger.info(() -> "skipped mapping op '" + pop.getName() + '\''); continue; } - String dryrunSpec = pop.takeStaticConfigOr("dryrun", "none"); - boolean dryrun = "op".equalsIgnoreCase(dryrunSpec); - DriverAdapter adapter = adapters.get(i); - OpMapper opMapper = adapter.getOpMapper(); + DriverAdapter adapter = adapters.get(i); + OpMapper opMapper = adapter.getOpMapper(); OpDispenser dispenser = opMapper.apply(pop); - if (dryrun) { - dispenser = new DryRunOpDispenserWrapper(adapter, pop, dispenser); + String dryrunSpec = pop.takeStaticConfigOr("dryrun", "none"); + if ("op".equalsIgnoreCase(dryrunSpec)) { + dispenser = new DryRunOpDispenserWrapper((DriverAdapter)adapter, pop, dispenser); dryrunCount++; + } else if ("emit".equalsIgnoreCase(dryrunSpec)) { + dispenser = new EmitterOpDispenserWrapper( + (DriverAdapter)adapter, + pop, + (OpDispenser>) dispenser + ); } // if (strict) { @@ -475,7 +480,7 @@ public class SimpleActivity extends NBBaseComponent implements Activity { } - protected List loadOpTemplates(Optional> defaultDriverAdapter) { + protected List loadOpTemplates(DriverAdapter defaultDriverAdapter) { String tagfilter = activityDef.getParams().getOptionalString("tags").orElse(""); @@ -491,44 +496,44 @@ public class SimpleActivity extends NBBaseComponent implements Activity { // There were no ops, and it was because they were all filtered out if (!unfilteredOps.isEmpty()) { throw new BasicError("There were no active op templates with tag filter '" - + tagfilter + "', since all " + unfilteredOps.size() + " were filtered out."); + + tagfilter + "', since all " + unfilteredOps.size() + " were filtered out."); } - if (defaultDriverAdapter.isPresent() && defaultDriverAdapter.get() instanceof SyntheticOpTemplateProvider sotp) { + if (defaultDriverAdapter instanceof SyntheticOpTemplateProvider sotp) { filteredOps = sotp.getSyntheticOpTemplates(opsDocList, this.activityDef.getParams()); Objects.requireNonNull(filteredOps); if (filteredOps.isEmpty()) { - throw new BasicError("Attempted to create synthetic ops from driver '" + defaultDriverAdapter.get().getAdapterName() + '\'' + - " but no ops were created. You must provide either a workload or an op parameter. Activities require op templates."); + throw new BasicError("Attempted to create synthetic ops from driver '" + defaultDriverAdapter.getAdapterName() + '\'' + + " but no ops were created. You must provide either a workload or an op parameter. Activities require op templates."); } } else { throw new BasicError(""" - No op templates were provided. You must provide one of these activity parameters: - 1) workload=some.yaml - 2) op='inline template' - 3) driver=stdout (or any other drive that can synthesize ops)"""); - } - if (filteredOps.isEmpty()) { - throw new BasicError("There were no active op templates with tag filter '" + tagfilter + '\''); + No op templates were provided. You must provide one of these activity parameters: + 1) workload=some.yaml + 2) op='inline template' + 3) driver=stdout (or any other drive that can synthesize ops)"""); } } +// if (filteredOps.isEmpty()) { +// throw new BasicError("There were no active op templates with tag filter '" + tagfilter + '\''); +// } - if (filteredOps.isEmpty()) { - throw new OpConfigError("No op templates found. You must provide either workload=... or op=..., or use " + - "a default driver (driver=___). This includes " + - ServiceLoader.load(DriverAdapter.class).stream() - .filter(p -> { - AnnotatedType[] annotatedInterfaces = p.type().getAnnotatedInterfaces(); - for (AnnotatedType ai : annotatedInterfaces) { - if (ai.getType().equals(SyntheticOpTemplateProvider.class)) { - return true; - } - } - return false; - }) - .map(d -> d.get().getAdapterName()) - .collect(Collectors.joining(","))); - } - +// if (filteredOps.isEmpty()) { +// throw new OpConfigError("No op templates found. You must provide either workload=... or op=..., or use " + +// "a default driver (driver=___). This includes " + +// ServiceLoader.load(DriverAdapter.class).stream() +// .filter(p -> { +// AnnotatedType[] annotatedInterfaces = p.type().getAnnotatedInterfaces(); +// for (AnnotatedType ai : annotatedInterfaces) { +// if (ai.getType().equals(SyntheticOpTemplateProvider.class)) { +// return true; +// } +// } +// return false; +// }) +// .map(d -> d.get().getAdapterName()) +// .collect(Collectors.joining(","))); +// } +// return filteredOps; } @@ -550,30 +555,29 @@ public class SimpleActivity extends NBBaseComponent implements Activity { * * * @param - * A holder for an executable operation for the native driver used by this activity. + * A holder for an executable operation for the native driver used by this activity. * @param opinit - * A function to map an OpTemplate to the executable operation form required by - * the native driver for this activity. - * @param defaultAdapter + * A function to map an OpTemplate to the executable operation form required by + * the native driver for this activity. + * @param defaultAdapter The adapter which will be used for any op templates with no explicit adapter * @return The sequence of operations as determined by filtering and ratios */ @Deprecated(forRemoval = true) - protected OpSequence> createOpSequence(Function> opinit, boolean strict, Optional> defaultAdapter) { + protected OpSequence> createOpSequence(Function> opinit, boolean strict, DriverAdapter defaultAdapter) { var stmts = loadOpTemplates(defaultAdapter); List ratios = new ArrayList<>(stmts.size()); - for (int i = 0; i < stmts.size(); i++) { - OpTemplate opTemplate = stmts.get(i); + for (OpTemplate opTemplate : stmts) { long ratio = opTemplate.removeParamOrDefault("ratio", 1); ratios.add(ratio); } SequencerType sequencerType = getParams() - .getOptionalString("seq") - .map(SequencerType::valueOf) - .orElse(SequencerType.bucket); + .getOptionalString("seq") + .map(SequencerType::valueOf) + .orElse(SequencerType.bucket); SequencePlanner> planner = new SequencePlanner<>(sequencerType); try { @@ -599,29 +603,37 @@ public class SimpleActivity extends NBBaseComponent implements Activity { String op = activityDef.getParams().getOptionalString("op").orElse(null); String stmt = activityDef.getParams().getOptionalString("stmt", "statement").orElse(null); String workload = activityDef.getParams().getOptionalString("workload").orElse(null); - if ((op!=null ? 1 : 0) + (stmt!=null ? 1 : 0) + (workload!=null ? 1 : 0) > 1) { + + if ((op != null ? 1 : 0) + (stmt != null ? 1 : 0) + (workload != null ? 1 : 0) > 1) { throw new OpConfigError("Only op, statement, or workload may be provided, not more than one."); } - if (op!=null && op.matches("^\\{[^}]+:[^}]+}$(?s)(?m)")) { - workloadSource = "commandline: (op/json): '" + op + "'"; - return OpsLoader.loadString(op, OpTemplateFormat.json, activityDef.getParams(), null); - } else if (op!=null && op.matches("^\\[[^]]+]$")) { - workloadSource = "commandline: (op/json): '" + op + "'"; - return OpsLoader.loadString(op, OpTemplateFormat.json, activityDef.getParams(), null); - } else if (op!=null) { - workloadSource = "commandline: (op/inline): '" + op + "'"; - return OpsLoader.loadString(op, OpTemplateFormat.inline, activityDef.getParams(), null); - } else if (stmt!=null) { + + if (workload != null && OpsLoader.isJson(workload)) { + workloadSource = "commandline: (workload/json):" + workload; + return OpsLoader.loadString(workload, OpTemplateFormat.json, activityDef.getParams(), null); + } else if (workload != null && OpsLoader.isYaml(workload)) { + workloadSource = "commandline: (workload/yaml):" + workload; + return OpsLoader.loadString(workload, OpTemplateFormat.yaml, activityDef.getParams(), null); + } else if (workload != null) { + return OpsLoader.loadPath(workload, activityDef.getParams(), "activities"); + } + + if (stmt != null) { workloadSource = "commandline: (stmt/inline): '" + stmt + "'"; return OpsLoader.loadString(stmt, OpTemplateFormat.inline, activityDef.getParams(), null); - } else if (workload!=null) { - workloadSource = "yaml:" + workload; - return OpsLoader.loadPath(workload, activityDef.getParams(), "activities"); - } else { - return OpsDocList.none(); } + if (op != null && OpsLoader.isJson(op)) { + workloadSource = "commandline: (op/json): '" + op + "'"; + return OpsLoader.loadString(op, OpTemplateFormat.json, activityDef.getParams(), null); + } + else if (op != null) { + workloadSource = "commandline: (op/inline): '" + op + "'"; + return OpsLoader.loadString(op, OpTemplateFormat.inline, activityDef.getParams(), null); + } + return OpsDocList.none(); + } catch (Exception e) { throw new OpConfigError("Error loading op templates: " + e, workloadSource, e); } From 6125c390aefe42fafe6e4a637e8a15b9842592d4 Mon Sep 17 00:00:00 2001 From: Jonathan Shook Date: Sat, 9 Dec 2023 23:29:30 -0600 Subject: [PATCH 13/26] cleanup on aisle StandardActivity --- .../uniform/StandardActivity.java | 41 ++++++++----------- 1 file changed, 17 insertions(+), 24 deletions(-) diff --git a/engine-core/src/main/java/io/nosqlbench/engine/api/activityimpl/uniform/StandardActivity.java b/engine-core/src/main/java/io/nosqlbench/engine/api/activityimpl/uniform/StandardActivity.java index f00354703..62531a882 100644 --- a/engine-core/src/main/java/io/nosqlbench/engine/api/activityimpl/uniform/StandardActivity.java +++ b/engine-core/src/main/java/io/nosqlbench/engine/api/activityimpl/uniform/StandardActivity.java @@ -16,7 +16,6 @@ package io.nosqlbench.engine.api.activityimpl.uniform; -import com.codahale.metrics.Gauge; import io.nosqlbench.adapter.diag.DriverAdapterLoader; import io.nosqlbench.adapters.api.activityconfig.OpsLoader; import io.nosqlbench.adapters.api.activityconfig.yaml.OpTemplate; @@ -59,21 +58,15 @@ import java.util.concurrent.ConcurrentHashMap; */ public class StandardActivity extends SimpleActivity implements SyntheticOpTemplateProvider, ActivityDefObserver { private static final Logger logger = LogManager.getLogger("ACTIVITY"); - private final OpSequence> sequence; - private final NBConfigModel yamlmodel; - private final ConcurrentHashMap adapters = new ConcurrentHashMap<>(); - private final ConcurrentHashMap> mappers = new ConcurrentHashMap<>(); - - private final Gauge pendingOpsGauge; - private final Gauge activeOpsGauge; - private final Gauge completeOpsGauge; + private final ConcurrentHashMap> adapters = new ConcurrentHashMap<>(); public StandardActivity(NBComponent parent, ActivityDef activityDef) { super(parent,activityDef); OpsDocList workload; Optional yaml_loc = activityDef.getParams().getOptionalString("yaml", "workload"); + NBConfigModel yamlmodel; if (yaml_loc.isPresent()) { Map disposable = new LinkedHashMap<>(activityDef.getParams()); workload = OpsLoader.loadPath(yaml_loc.get(), disposable, "activities"); @@ -92,14 +85,15 @@ public class StandardActivity extends SimpleActivity implements } // HERE, op templates are loaded before drivers are loaded - List opTemplates = loadOpTemplates(defaultAdapter); + List opTemplates = loadOpTemplates(defaultAdapter.orElse(null)); List pops = new ArrayList<>(); - List adapterlist = new ArrayList<>(); + List> adapterlist = new ArrayList<>(); NBConfigModel supersetConfig = ConfigModel.of(StandardActivity.class).add(yamlmodel); Optional defaultDriverOption = activityDef.getParams().getOptionalString("driver"); + ConcurrentHashMap> mappers = new ConcurrentHashMap<>(); for (OpTemplate ot : opTemplates) { // ParsedOp incompleteOpDef = new ParsedOp(ot, NBConfiguration.empty(), List.of(), this); String driverName = ot.getOptionalStringParam("driver", String.class) @@ -116,7 +110,7 @@ public class StandardActivity extends SimpleActivity implements // HERE if (!adapters.containsKey(driverName)) { - DriverAdapter adapter = Optional.of(driverName) + DriverAdapter adapter = Optional.of(driverName) .flatMap(name -> ServiceSelector.of(name,ServiceLoader.load(DriverAdapterLoader.class)).get()) .map(l -> l.load(this,NBLabels.forKV())).orElseThrow(); @@ -137,7 +131,7 @@ public class StandardActivity extends SimpleActivity implements supersetConfig.assertValidConfig(activityDef.getParams().getStringStringMap()); - DriverAdapter adapter = adapters.get(driverName); + DriverAdapter adapter = adapters.get(driverName); adapterlist.add(adapter); ParsedOp pop = new ParsedOp(ot, adapter.getConfiguration(), List.of(adapter.getPreprocessor()), this); Optional discard = pop.takeOptionalStaticValue("driver", String.class); @@ -152,8 +146,7 @@ public class StandardActivity extends SimpleActivity implements } try { - boolean strict = activityDef.getParams().getOptionalBoolean("strict").orElse(false); - sequence = createOpSourceFromParsedOps(adapters, mappers, adapterlist, pops); + sequence = createOpSourceFromParsedOps(adapterlist, pops); } catch (Exception e) { if (e instanceof OpConfigError) { throw e; @@ -161,12 +154,12 @@ public class StandardActivity extends SimpleActivity implements throw new OpConfigError("Error mapping workload template to operations: " + e.getMessage(), null, e); } - this.pendingOpsGauge = create().gauge( - "ops_pending",() -> this.getProgressMeter().getSummary().pending()); - this.activeOpsGauge = create().gauge( - "ops_active",() -> this.getProgressMeter().getSummary().current()); - this.completeOpsGauge = create().gauge( - "ops_complete",() -> this.getProgressMeter().getSummary().complete()); + create().gauge( + "ops_pending", () -> this.getProgressMeter().getSummary().pending()); + create().gauge( + "ops_active", () -> this.getProgressMeter().getSummary().current()); + create().gauge( + "ops_complete", () -> this.getProgressMeter().getSummary().complete()); } @Override @@ -196,7 +189,7 @@ public class StandardActivity extends SimpleActivity implements public synchronized void onActivityDefUpdate(ActivityDef activityDef) { super.onActivityDefUpdate(activityDef); - for (DriverAdapter adapter : adapters.values()) { + for (DriverAdapter adapter : adapters.values()) { if (adapter instanceof NBReconfigurable configurable) { NBConfigModel cfgModel = configurable.getReconfigModel(); NBConfiguration cfg = cfgModel.matchConfig(activityDef.getParams()); @@ -227,7 +220,7 @@ public class StandardActivity extends SimpleActivity implements @Override public List getSyntheticOpTemplates(OpsDocList opsDocList, Map cfg) { List opTemplates = new ArrayList<>(); - for (DriverAdapter adapter : adapters.values()) { + for (DriverAdapter adapter : adapters.values()) { if (adapter instanceof SyntheticOpTemplateProvider sotp) { List newTemplates = sotp.getSyntheticOpTemplates(opsDocList, cfg); opTemplates.addAll(newTemplates); @@ -243,7 +236,7 @@ public class StandardActivity extends SimpleActivity implements */ @Override public void shutdownActivity() { - for (Map.Entry entry : adapters.entrySet()) { + for (Map.Entry> entry : adapters.entrySet()) { String adapterName = entry.getKey(); DriverAdapter adapter = entry.getValue(); adapter.getSpaceCache().getElements().forEach((spaceName, space) -> { From a6f6a4f71c496dfaab448dbac5f247fd28469745 Mon Sep 17 00:00:00 2001 From: Jonathan Shook Date: Sat, 9 Dec 2023 23:29:32 -0600 Subject: [PATCH 14/26] reduce ambiguous warnings --- .../nosqlbench/nb/api/engine/activityimpl/CyclesSpec.java | 6 +++--- .../nosqlbench/nb/api/engine/activityimpl/ParameterMap.java | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/nb-api/src/main/java/io/nosqlbench/nb/api/engine/activityimpl/CyclesSpec.java b/nb-api/src/main/java/io/nosqlbench/nb/api/engine/activityimpl/CyclesSpec.java index 2a1dd951f..c5edc8ddc 100644 --- a/nb-api/src/main/java/io/nosqlbench/nb/api/engine/activityimpl/CyclesSpec.java +++ b/nb-api/src/main/java/io/nosqlbench/nb/api/engine/activityimpl/CyclesSpec.java @@ -28,9 +28,9 @@ public record CyclesSpec(long first_inclusive, long last_exclusive, String first if (first_inclusive>last_exclusive) { throw new InvalidParameterException("cycles must start with a lower first cycle than last cycle"); } - if (first_inclusive==last_exclusive) { - logger.warn("This cycles interval means zero total:" + this); - } +// if (first_inclusive==last_exclusive) { +// logger.warn("This cycles interval means zero total:" + this); +// } } public static CyclesSpec parse(String spec) { diff --git a/nb-api/src/main/java/io/nosqlbench/nb/api/engine/activityimpl/ParameterMap.java b/nb-api/src/main/java/io/nosqlbench/nb/api/engine/activityimpl/ParameterMap.java index c92922249..29d7beedf 100644 --- a/nb-api/src/main/java/io/nosqlbench/nb/api/engine/activityimpl/ParameterMap.java +++ b/nb-api/src/main/java/io/nosqlbench/nb/api/engine/activityimpl/ParameterMap.java @@ -181,9 +181,9 @@ public class ParameterMap extends ConcurrentHashMap implements B public void set(String paramName, Object newValue) { - if (paramName.equals("cycles")) { - logger.warn("Setting 'cycles' on the parameter map is likely causing a bug in your activity. Call setCycles on the def instead."); - } +// if (paramName.equals("cycles")) { +// logger.warn("Setting 'cycles' on the parameter map is likely causing a bug in your activity. Call setCycles on the def instead."); +// } super.put(paramName, String.valueOf(newValue)); logger.info(() -> "setting param " + paramName + "=" + newValue); markMutation(); From 353f4306e5ad9aaca833637c0ac61f2aaa973a60 Mon Sep 17 00:00:00 2001 From: Jonathan Shook Date: Sat, 9 Dec 2023 23:29:35 -0600 Subject: [PATCH 15/26] remove broken slf4j-simple inclusions via openapi libs --- adapter-http/pom.xml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/adapter-http/pom.xml b/adapter-http/pom.xml index 11753f963..3b21715d1 100644 --- a/adapter-http/pom.xml +++ b/adapter-http/pom.xml @@ -57,6 +57,12 @@ org.openapitools openapi-generator 7.0.0-beta + + + org.slf4j + * + + io.swagger.parser.v3 From 612d7e49411a6c9c2c6243c76eaa0031b637d5c0 Mon Sep 17 00:00:00 2001 From: Jonathan Shook Date: Sat, 9 Dec 2023 23:29:38 -0600 Subject: [PATCH 16/26] specialize use of op,stmt,workload on CLI --- .../api/activityconfig/OpsLoader.java | 24 +++++++++++++++++++ .../api/activityconfig/rawyaml/OpsOwner.java | 2 +- .../activityconfig/rawyaml/RawOpsLoader.java | 18 ++++++++++++-- 3 files changed, 41 insertions(+), 3 deletions(-) diff --git a/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityconfig/OpsLoader.java b/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityconfig/OpsLoader.java index 99169836b..cb99faf90 100644 --- a/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityconfig/OpsLoader.java +++ b/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityconfig/OpsLoader.java @@ -17,6 +17,7 @@ package io.nosqlbench.adapters.api.activityconfig; import com.amazonaws.util.StringInputStream; +import com.google.gson.GsonBuilder; import io.nosqlbench.nb.api.nbio.Content; import io.nosqlbench.nb.api.nbio.NBIO; import io.nosqlbench.nb.api.errors.BasicError; @@ -27,6 +28,8 @@ import io.nosqlbench.adapters.api.activityconfig.yaml.OpsDocList; import io.nosqlbench.adapters.api.templating.StrInterpolator; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; +import org.snakeyaml.engine.v2.api.Load; +import org.snakeyaml.engine.v2.api.LoadSettings; import scala.Option; import sjsonnet.DefaultParseCache; import sjsonnet.SjsonnetMain; @@ -146,4 +149,25 @@ public class OpsLoader { return stdoutOutput; } + // TODO These should not be exception based, use explicit pattern checks instead, or tap + // into the parsers in a non-exception way + public static boolean isJson(String workload) { + try { + new GsonBuilder().setPrettyPrinting().create().fromJson(workload, Map.class); + return true; + } catch (Exception e) { + return false; + } + } + + // TODO These should not be exception based, use explicit pattern checks instead, or tap + // into the parsers in a non-exception way + public static boolean isYaml(String workload) { + try { + new Load(LoadSettings.builder().build()).loadFromString(workload); + return true; + } catch (Exception e) { + return false; + } + } } diff --git a/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityconfig/rawyaml/OpsOwner.java b/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityconfig/rawyaml/OpsOwner.java index b355a4be6..223372f1a 100644 --- a/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityconfig/rawyaml/OpsOwner.java +++ b/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityconfig/rawyaml/OpsOwner.java @@ -22,7 +22,7 @@ import java.util.*; public class OpsOwner extends RawOpFields { - private final static List opsFieldNames = List.of("op","ops","operation","statement","statements"); + private final static List opsFieldNames = List.of("op","ops","operation","stmt","statement","statements"); private List rawOpDefs = new ArrayList<>(); diff --git a/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityconfig/rawyaml/RawOpsLoader.java b/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityconfig/rawyaml/RawOpsLoader.java index 32bd76f65..b7fc11ab3 100644 --- a/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityconfig/rawyaml/RawOpsLoader.java +++ b/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityconfig/rawyaml/RawOpsLoader.java @@ -16,6 +16,8 @@ package io.nosqlbench.adapters.api.activityconfig.rawyaml; +import com.google.gson.Gson; +import com.google.gson.GsonBuilder; import io.nosqlbench.nb.api.nbio.Content; import io.nosqlbench.nb.api.nbio.NBIO; import io.nosqlbench.nb.api.errors.BasicError; @@ -36,6 +38,11 @@ public class RawOpsLoader { private final ArrayList> transformers = new ArrayList<>(); + private static LoadSettings loadSettings = LoadSettings.builder().build(); + private final Load yaml = new Load(loadSettings); + private final Gson gson = new GsonBuilder().setPrettyPrinting().create(); + + public RawOpsLoader(Function transformer) { addTransformer(transformer); } @@ -44,6 +51,15 @@ public class RawOpsLoader { addTransformer(new StrInterpolator()); } + public boolean isJson(String workload) { + try { + Object canLoad = gson.fromJson(workload, Object.class); + } catch (Exception e) { + return false; + } + return true; + } + private void addTransformer(Function newTransformer) { Collections.addAll(this.transformers, newTransformer); } @@ -79,8 +95,6 @@ public class RawOpsLoader { } public RawOpsDocList parseYaml(String data) { - LoadSettings loadSettings = LoadSettings.builder().build(); - Load yaml = new Load(loadSettings); Iterable objects = yaml.loadAllFromString(data); List newDocList = new ArrayList<>(); From 2d505e5ad7b0b763c6b8b26caea56a66ed7992cd Mon Sep 17 00:00:00 2001 From: Jonathan Shook Date: Sun, 10 Dec 2023 21:15:04 -0600 Subject: [PATCH 17/26] add cql docs stub --- adapter-cqld4/src/main/resources/cql.md | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 adapter-cqld4/src/main/resources/cql.md diff --git a/adapter-cqld4/src/main/resources/cql.md b/adapter-cqld4/src/main/resources/cql.md new file mode 100644 index 000000000..d728bea10 --- /dev/null +++ b/adapter-cqld4/src/main/resources/cql.md @@ -0,0 +1,12 @@ +# cql + +In this version of NoSQLBench, the CQL driver is fully +based on version 4 of the +[Java Driver for Apache Cassandra](https://github.com/apache/cassandra-java-driver) +version 4.X. + +This `cqld4` driver has replaced the older CQL driver under the name `cql`. +Previous versions of the CQL drivers are no longer bundled with NB5. Instead, +when you specify either `cql` or `cqld4`, the version 4 drivers is used. + +See the help for `cqld4` for more details. From 5e5c48f1ff2b73600140ddafc007e3838a821e7c Mon Sep 17 00:00:00 2001 From: Jonathan Shook Date: Sun, 10 Dec 2023 21:17:25 -0600 Subject: [PATCH 18/26] allow "cql" to resolve as a selector for DriverAdapterLoader --- .../adapter/cqld4/CqlDriverAdapterLoader.java | 32 +++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 adapter-cqld4/src/main/java/io/nosqlbench/adapter/cqld4/CqlDriverAdapterLoader.java diff --git a/adapter-cqld4/src/main/java/io/nosqlbench/adapter/cqld4/CqlDriverAdapterLoader.java b/adapter-cqld4/src/main/java/io/nosqlbench/adapter/cqld4/CqlDriverAdapterLoader.java new file mode 100644 index 000000000..92a760345 --- /dev/null +++ b/adapter-cqld4/src/main/java/io/nosqlbench/adapter/cqld4/CqlDriverAdapterLoader.java @@ -0,0 +1,32 @@ +package io.nosqlbench.adapter.cqld4; + +/* + * Copyright (c) 2022 nosqlbench + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + + +import io.nosqlbench.adapter.diag.DriverAdapterLoader; +import io.nosqlbench.nb.annotations.Service; +import io.nosqlbench.nb.api.components.core.NBComponent; +import io.nosqlbench.nb.api.labels.NBLabels; + +@Service(value = DriverAdapterLoader.class, selector = "cql") +public class CqlDriverAdapterLoader implements DriverAdapterLoader { + @Override + public Cqld4DriverAdapter load(NBComponent parent, NBLabels childLabels) { + return new Cqld4DriverAdapter(parent, childLabels); + } +} From 309cb675879d0e8ca40e39100cb6152a0f47d90e Mon Sep 17 00:00:00 2001 From: Jonathan Shook Date: Sun, 10 Dec 2023 21:17:27 -0600 Subject: [PATCH 19/26] Allow progress indicator to be configured --- engine-cli/src/main/java/io/nosqlbench/engine/cli/NBCLI.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/engine-cli/src/main/java/io/nosqlbench/engine/cli/NBCLI.java b/engine-cli/src/main/java/io/nosqlbench/engine/cli/NBCLI.java index 09534b25d..afc422be1 100644 --- a/engine-cli/src/main/java/io/nosqlbench/engine/cli/NBCLI.java +++ b/engine-cli/src/main/java/io/nosqlbench/engine/cli/NBCLI.java @@ -416,7 +416,8 @@ public class NBCLI implements Function, NBLabeledElement { // TODO: Decide whether this should be part of ctor consistency Map.of( "summary", options.getReportSummaryTo(), - "logsdir", options.getLogsDirectory().toString() + "logsdir", options.getLogsDirectory().toString(), + "progress", options.getProgressSpec() ).forEach(session::setComponentProp); options.wantsReportCsvTo().ifPresent(cfg -> { From a0eaf9758b06a5a40ca16efd7a4c51fbddfe24e3 Mon Sep 17 00:00:00 2001 From: Jonathan Shook Date: Sun, 10 Dec 2023 21:17:29 -0600 Subject: [PATCH 20/26] make map format checker for workload specific to map structures --- .../io/nosqlbench/adapters/api/activityconfig/OpsLoader.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityconfig/OpsLoader.java b/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityconfig/OpsLoader.java index cb99faf90..95863216c 100644 --- a/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityconfig/OpsLoader.java +++ b/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityconfig/OpsLoader.java @@ -164,8 +164,8 @@ public class OpsLoader { // into the parsers in a non-exception way public static boolean isYaml(String workload) { try { - new Load(LoadSettings.builder().build()).loadFromString(workload); - return true; + Object result = new Load(LoadSettings.builder().build()).loadFromString(workload); + return (result instanceof Map); } catch (Exception e) { return false; } From 7606cb94fcda6da23601f9c2b0914d0c88201736 Mon Sep 17 00:00:00 2001 From: Jonathan Shook Date: Sun, 10 Dec 2023 21:17:32 -0600 Subject: [PATCH 21/26] make progress reporter send a final report --- .../lifecycle/activity/ActivitiesProgressIndicator.java | 7 +++++++ .../lifecycle/scenario/container/NBBufferedContainer.java | 6 ++++-- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/engine-core/src/main/java/io/nosqlbench/engine/core/lifecycle/activity/ActivitiesProgressIndicator.java b/engine-core/src/main/java/io/nosqlbench/engine/core/lifecycle/activity/ActivitiesProgressIndicator.java index b6c034b04..7a2103371 100644 --- a/engine-core/src/main/java/io/nosqlbench/engine/core/lifecycle/activity/ActivitiesProgressIndicator.java +++ b/engine-core/src/main/java/io/nosqlbench/engine/core/lifecycle/activity/ActivitiesProgressIndicator.java @@ -80,6 +80,10 @@ public class ActivitiesProgressIndicator implements Runnable { @Override public void run() { + report(); + } + + private void report() { Collection progressMeterDisplays = sc.getProgressMeters(); for (ProgressMeterDisplay meter : progressMeterDisplays) { @@ -117,4 +121,7 @@ public class ActivitiesProgressIndicator implements Runnable { return "ProgressIndicator/" + this.indicatorSpec; } + public void finish() { + report(); + } } diff --git a/engine-core/src/main/java/io/nosqlbench/engine/core/lifecycle/scenario/container/NBBufferedContainer.java b/engine-core/src/main/java/io/nosqlbench/engine/core/lifecycle/scenario/container/NBBufferedContainer.java index abc0a0730..e441facbf 100644 --- a/engine-core/src/main/java/io/nosqlbench/engine/core/lifecycle/scenario/container/NBBufferedContainer.java +++ b/engine-core/src/main/java/io/nosqlbench/engine/core/lifecycle/scenario/container/NBBufferedContainer.java @@ -95,7 +95,8 @@ public class NBBufferedContainer extends NBBaseComponent implements NBContainer .build() ); - this.activitiesProgressIndicator = new ActivitiesProgressIndicator(this.controller, "console:10s"); + String progress = getComponentProp("progress").orElse("console:10s"); + this.activitiesProgressIndicator = new ActivitiesProgressIndicator(this.controller, progress); } @@ -175,6 +176,7 @@ public class NBBufferedContainer extends NBBaseComponent implements NBContainer logger.debug("no object was provided to set the container result"); } + activitiesProgressIndicator.finish(); return safeCmdResult; } @@ -195,6 +197,6 @@ public class NBBufferedContainer extends NBBaseComponent implements NBContainer final var retiringScenarioShutdownHook = this.containerShutdownHook; this.containerShutdownHook = null; retiringScenarioShutdownHook.run(); - this.logger.debug("removing container shutdown hook"); + logger.debug("removing container shutdown hook"); } } From 4fa099fb4578d662e307c6e1ca77884715266ba3 Mon Sep 17 00:00:00 2001 From: Jonathan Shook Date: Sun, 10 Dec 2023 21:17:34 -0600 Subject: [PATCH 22/26] move markdown finder over to DriverAdapterLoader --- .../engine/core/metadata/MarkdownFinder.java | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/engine-core/src/main/java/io/nosqlbench/engine/core/metadata/MarkdownFinder.java b/engine-core/src/main/java/io/nosqlbench/engine/core/metadata/MarkdownFinder.java index a98a3574f..9a7aefd90 100644 --- a/engine-core/src/main/java/io/nosqlbench/engine/core/metadata/MarkdownFinder.java +++ b/engine-core/src/main/java/io/nosqlbench/engine/core/metadata/MarkdownFinder.java @@ -16,7 +16,11 @@ package io.nosqlbench.engine.core.metadata; +import io.nosqlbench.adapter.diag.DriverAdapterLoader; +import io.nosqlbench.adapters.api.activityimpl.uniform.DriverAdapter; +import io.nosqlbench.nb.annotations.ServiceSelector; import io.nosqlbench.nb.api.config.standard.TestComponent; +import io.nosqlbench.nb.api.labels.NBLabels; import io.nosqlbench.nb.api.nbio.Content; import io.nosqlbench.nb.api.nbio.NBIO; import io.nosqlbench.nb.api.engine.activityimpl.ActivityDef; @@ -28,6 +32,7 @@ import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import java.util.Optional; +import java.util.ServiceLoader; public class MarkdownFinder { private static final Logger logger = LogManager.getLogger(MarkdownFinder.class); @@ -35,7 +40,7 @@ public class MarkdownFinder { public static Optional forHelpTopic(final String topic) { String help = null; try { - help = new MarkdownFinder().forActivityInstance(topic); + help = new MarkdownFinder().forDriverAdapterType(topic); return Optional.ofNullable(help); } catch (final Exception e) { MarkdownFinder.logger.debug("Did not find help topic for activity instance: {}", topic); @@ -63,12 +68,11 @@ public class MarkdownFinder { return docs.map(Content::asString).orElse(null); } - public String forActivityInstance(final String s) { - final ActivityType activityType = new ActivityTypeLoader().load(ActivityDef.parseActivityDef("driver="+s), TestComponent.INSTANCE).orElseThrow( - () -> new BasicError("Unable to find driver for '" + s + '\'') - ); - return this.forResourceMarkdown(activityType.getClass().getAnnotation(Service.class) - .selector() + ".md", "docs/"); + public String forDriverAdapterType(final String selector) { + + ServiceSelector.of(selector, ServiceLoader.load(DriverAdapterLoader.class)).get() + .orElseThrow(() -> new BasicError("Unable to find driver for '" + selector + "'")); + return this.forResourceMarkdown(selector + ".md", "docs/"); } } From 42127a9d521cb701620296e478934cb821e96f66 Mon Sep 17 00:00:00 2001 From: Jonathan Shook Date: Sun, 10 Dec 2023 21:17:36 -0600 Subject: [PATCH 23/26] unbreak --pin option for bar commands --- .../src/main/java/io/nosqlbench/engine/cli/NBCLIArgsFile.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/engine-cli/src/main/java/io/nosqlbench/engine/cli/NBCLIArgsFile.java b/engine-cli/src/main/java/io/nosqlbench/engine/cli/NBCLIArgsFile.java index 1063792fa..f0dce30c8 100644 --- a/engine-cli/src/main/java/io/nosqlbench/engine/cli/NBCLIArgsFile.java +++ b/engine-cli/src/main/java/io/nosqlbench/engine/cli/NBCLIArgsFile.java @@ -496,7 +496,7 @@ public class NBCLIArgsFile { } String opt = iter.next(); - if (!opt.startsWith("-") || reservedPredicate.test(opt)) { + if (!opt.startsWith("-")) { throw new RuntimeException("Arguments following the --pin option must not" + " be commands like '" + opt + "'"); } From 6d93155ce13a07ac55e2c7b7b29f7f7cfbf28b2e Mon Sep 17 00:00:00 2001 From: Jonathan Shook Date: Sun, 10 Dec 2023 21:17:38 -0600 Subject: [PATCH 24/26] use correct parameter for container command --- .../engine/core/lifecycle/session/NBCommandAssembly.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/engine-core/src/main/java/io/nosqlbench/engine/core/lifecycle/session/NBCommandAssembly.java b/engine-core/src/main/java/io/nosqlbench/engine/core/lifecycle/session/NBCommandAssembly.java index f3b3fea93..8d3e8c8f2 100644 --- a/engine-core/src/main/java/io/nosqlbench/engine/core/lifecycle/session/NBCommandAssembly.java +++ b/engine-core/src/main/java/io/nosqlbench/engine/core/lifecycle/session/NBCommandAssembly.java @@ -46,11 +46,11 @@ public class NBCommandAssembly { for (Cmd cmd : cmds) { if (cmd.getArgs().containsKey("container")) { - String ctx = cmd.getArgs().remove("container").getValue(); + String specificContainer = cmd.getArgs().remove("container").getValue(); String step = cmd.getArgs().containsKey("step") ? cmd.getArgs().remove("step").getValue() : "no-step"; - tagged.add(cmd.forContainer(ctx, step)); + tagged.add(cmd.forContainer(specificContainer, step)); } else if (cmd.getCmdType() == CmdType.container) { - containerName = cmd.getArgValue("container"); + containerName = cmd.getArgValue("name"); if (containerName.equals(Cmd.DEFAULT_TARGET_CONTEXT)) { logger.warn("You are explicitly setting the scenario name to " + Cmd.DEFAULT_TARGET_CONTEXT + "'. This is likely an error. " + "This is the default scenario name, and if you are using different scenario names you should pick something that is different and specific."); From 842cca0d9dc738c9b00efc37bf9c8d74aa679f06 Mon Sep 17 00:00:00 2001 From: Jonathan Shook Date: Sun, 10 Dec 2023 22:07:11 -0600 Subject: [PATCH 25/26] make virtdata microbench easier to read --- .../virtdata/userlibs/apps/valuechecker/RunData.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/virtdata-userlibs/src/main/java/io/nosqlbench/virtdata/userlibs/apps/valuechecker/RunData.java b/virtdata-userlibs/src/main/java/io/nosqlbench/virtdata/userlibs/apps/valuechecker/RunData.java index da58f2bbf..58cf31d3b 100644 --- a/virtdata-userlibs/src/main/java/io/nosqlbench/virtdata/userlibs/apps/valuechecker/RunData.java +++ b/virtdata-userlibs/src/main/java/io/nosqlbench/virtdata/userlibs/apps/valuechecker/RunData.java @@ -42,10 +42,10 @@ public class RunData { public String toString() { return " run data = [derived values in brackets]\n" + " specifier = '" + spec + "'\n" + + " cycles = [" + min + ".." + max + ")\n" + " threads = " + threads + "\n" + - " min = " + min + "\n" + - " max = " + max + "\n" + - " [count] = " + (max - min) + "\n" + + " [count/thread] = " + (max - min) + "\n" + + " [total] = " + (max - min) * threads + "\n" + " buffersize = " + buffersize + "\n" + " [totalGenTimeMs] = " + totalGenTimeMs + "\n" + " [totalCmpTimeMs] = " + totalCmpTimeMs + "\n" + From 8cb3051af2aab8b4f445ca8dfa4edfc01c1d817b Mon Sep 17 00:00:00 2001 From: Jonathan Shook Date: Fri, 15 Dec 2023 12:57:03 -0600 Subject: [PATCH 26/26] fixes from PR and export-docs fix --- .../activityimpl/uniform/actions/StandardAction.java | 2 +- .../nb/api/engine/activityimpl/CyclesSpec.java | 3 --- .../nb/api/engine/activityimpl/ParameterMap.java | 6 ------ .../docexporter/BundledMarkdownZipExporter.java | 10 ++++++---- 4 files changed, 7 insertions(+), 14 deletions(-) diff --git a/engine-core/src/main/java/io/nosqlbench/engine/api/activityimpl/uniform/actions/StandardAction.java b/engine-core/src/main/java/io/nosqlbench/engine/api/activityimpl/uniform/actions/StandardAction.java index c07c5e7fe..3e0b2eedc 100644 --- a/engine-core/src/main/java/io/nosqlbench/engine/api/activityimpl/uniform/actions/StandardAction.java +++ b/engine-core/src/main/java/io/nosqlbench/engine/api/activityimpl/uniform/actions/StandardAction.java @@ -103,7 +103,7 @@ public class StandardAction, R extends Op> impl if (op instanceof RunnableOp) { ((RunnableOp) op).run(); } else if (op instanceof CycleOp) { - result = ((CycleOp) op).apply(cycle); + result = ((CycleOp) op).apply(cycle); } else if (op instanceof ChainingOp) { result = ((ChainingOp) op).apply(result); } else { diff --git a/nb-api/src/main/java/io/nosqlbench/nb/api/engine/activityimpl/CyclesSpec.java b/nb-api/src/main/java/io/nosqlbench/nb/api/engine/activityimpl/CyclesSpec.java index c5edc8ddc..3c03c561f 100644 --- a/nb-api/src/main/java/io/nosqlbench/nb/api/engine/activityimpl/CyclesSpec.java +++ b/nb-api/src/main/java/io/nosqlbench/nb/api/engine/activityimpl/CyclesSpec.java @@ -28,9 +28,6 @@ public record CyclesSpec(long first_inclusive, long last_exclusive, String first if (first_inclusive>last_exclusive) { throw new InvalidParameterException("cycles must start with a lower first cycle than last cycle"); } -// if (first_inclusive==last_exclusive) { -// logger.warn("This cycles interval means zero total:" + this); -// } } public static CyclesSpec parse(String spec) { diff --git a/nb-api/src/main/java/io/nosqlbench/nb/api/engine/activityimpl/ParameterMap.java b/nb-api/src/main/java/io/nosqlbench/nb/api/engine/activityimpl/ParameterMap.java index 29d7beedf..694f24dc9 100644 --- a/nb-api/src/main/java/io/nosqlbench/nb/api/engine/activityimpl/ParameterMap.java +++ b/nb-api/src/main/java/io/nosqlbench/nb/api/engine/activityimpl/ParameterMap.java @@ -47,8 +47,6 @@ public class ParameterMap extends ConcurrentHashMap implements B private final static Logger logger = LogManager.getLogger("PARAMS"); private final static Gson gson = new GsonBuilder().create(); - - // private final ConcurrentHashMap paramMap = new ConcurrentHashMap<>(10); private final AtomicLong changeCounter; private final LinkedList listeners = new LinkedList<>(); @@ -73,7 +71,6 @@ public class ParameterMap extends ConcurrentHashMap implements B + ". Just use one of them."); } return Arrays.stream(objects).map(String::valueOf).findAny(); - //return Optional.ofNullable(super.get(paramName)).map(String::valueOf); } public Optional removeOptionalString(String... paramName) { @@ -181,9 +178,6 @@ public class ParameterMap extends ConcurrentHashMap implements B public void set(String paramName, Object newValue) { -// if (paramName.equals("cycles")) { -// logger.warn("Setting 'cycles' on the parameter map is likely causing a bug in your activity. Call setCycles on the def instead."); -// } super.put(paramName, String.valueOf(newValue)); logger.info(() -> "setting param " + paramName + "=" + newValue); markMutation(); diff --git a/nbr/src/main/java/io/nosqlbench/api/docsapi/docexporter/BundledMarkdownZipExporter.java b/nbr/src/main/java/io/nosqlbench/api/docsapi/docexporter/BundledMarkdownZipExporter.java index 93d026658..5e6963fec 100644 --- a/nbr/src/main/java/io/nosqlbench/api/docsapi/docexporter/BundledMarkdownZipExporter.java +++ b/nbr/src/main/java/io/nosqlbench/api/docsapi/docexporter/BundledMarkdownZipExporter.java @@ -30,9 +30,7 @@ import java.nio.file.DirectoryStream; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.StandardOpenOption; -import java.util.Date; -import java.util.Locale; -import java.util.Map; +import java.util.*; import java.util.function.Function; import java.util.zip.ZipEntry; import java.util.zip.ZipOutputStream; @@ -56,9 +54,13 @@ public class BundledMarkdownZipExporter { DocsBinder docsNameSpaces = BundledMarkdownLoader.loadBundledMarkdown(); //Loads the drivers under @Service Annotation + Set loaded = new HashSet<>(); for (DocsNameSpace docs_ns : docsNameSpaces) { for (Path p : docs_ns) { - addEntry(p, p.getParent(), zipstream, docs_ns.getName() + "/"); + if (!loaded.contains(p)) { + addEntry(p, p.getParent(), zipstream, docs_ns.getName() + "/"); + loaded.add(p); + } } }