From 4fdd39fff992830fc446a5191234ac7dbb3e8775 Mon Sep 17 00:00:00 2001 From: Jonathan Shook Date: Tue, 25 Jul 2023 11:31:46 -0500 Subject: [PATCH 01/14] adapters api changes for vector branch and other fixes --- adapters-api/pom.xml | 5 + .../api/activityconfig/MultiMapLookup.java | 4 +- .../api/activityconfig/OpsLoader.java | 16 +- .../api/activityconfig/rawyaml/OpsOwner.java | 2 +- .../api/activityconfig/rawyaml/RawOpDef.java | 28 ++- .../activityconfig/rawyaml/RawOpFields.java | 2 +- .../activityconfig/rawyaml/RawOpsBlock.java | 2 +- .../api/activityconfig/rawyaml/RawOpsDoc.java | 4 +- .../activityconfig/rawyaml/RawOpsDocList.java | 2 +- .../activityconfig/rawyaml/RawOpsLoader.java | 4 +- .../activityconfig/rawyaml/RawScenarios.java | 4 +- .../activityconfig/rawyaml/RawYamlLoader.java | 4 +- .../api/activityconfig/rawyaml/Tags.java | 4 +- .../api/activityconfig/yaml/OpData.java | 4 +- .../api/activityconfig/yaml/OpDef.java | 6 +- .../api/activityconfig/yaml/OpTemplate.java | 9 +- .../activityconfig/yaml/OpTemplateFormat.java | 6 +- .../api/activityconfig/yaml/OpsBlock.java | 8 +- .../api/activityconfig/yaml/OpsDoc.java | 6 +- .../api/activityconfig/yaml/OpsDocList.java | 10 +- .../api/activityconfig/yaml/Scenarios.java | 6 +- .../api/activityimpl/BaseOpDispenser.java | 201 ++++++++++++++++++ .../api/activityimpl/OpDispenser.java | 8 +- .../api/activityimpl/OpMapper.java | 11 +- .../api/activityimpl/OpResultTracker.java | 4 +- .../api/activityimpl/StandardCycleOp.java | 6 +- .../docs/BundledDriverAdapterDocs.java | 4 +- .../uniform/BaseDriverAdapter.java | 8 +- .../activityimpl/uniform/DriverAdapter.java | 12 +- .../uniform/DriverSpaceCache.java | 2 +- .../api/activityimpl/uniform/DryRunOp.java | 26 +-- .../uniform/DryRunOpDispenserWrapper.java | 37 ++++ .../activityimpl/uniform/ResultProcessor.java | 4 +- .../SyntheticOpTemplateProvider.java | 8 +- .../FieldDestructuringMapper.java | 4 +- .../uniform/flowtypes/ChainingOp.java | 4 +- .../uniform/flowtypes/CycleOp.java | 11 +- .../activityimpl/uniform/flowtypes/Op.java | 2 +- .../uniform/flowtypes/OpGenerator.java | 4 +- .../uniform/flowtypes/OpResultSize.java | 4 +- .../uniform/flowtypes/RunnableOp.java | 4 +- .../uniform/flowtypes/RunnableSource.java | 4 +- .../uniform/flowtypes/VariableCapture.java | 2 +- .../evalcontext/CompoundCycleFunction.java | 69 ++++++ .../api/evalcontext/CycleFunction.java | 38 ++++ .../api/evalcontext/CycleFunctions.java | 59 +++++ .../api/evalcontext/ExpressionDetails.java | 8 +- .../GroovyBooleanCycleFunction.java | 34 +++ .../api/evalcontext/GroovyCycleFunction.java | 146 +++++++++++++ .../GroovyObjectEqualityFunction.java | 58 +++++ .../api/evalcontext/ResultMismatchError.java | 50 +++++ .../evalcontext/ResultVerificationError.java | 50 +++++ .../api/evalcontext/VariableInjectable.java | 28 +++ .../metrics/EndToEndMetricsAdapterUtil.java | 2 +- .../MessageSequenceNumberSendingHandler.java | 4 +- .../ReceivedMessageSequenceTracker.java | 2 +- .../api/metrics/ThreadLocalNamedTimers.java | 4 +- .../api/specifications/SpecDocsManifest.java | 2 +- .../api/templating/CommandTemplate.java | 4 +- .../templating/DriverAdapterDecorators.java | 8 +- .../api/templating/EnumSetter.java | 4 +- .../api/templating/ParsedOp.java | 15 +- .../api/templating/StrInterpolator.java | 4 +- .../api/util/AdaptersApiVersionInfo.java | 2 +- .../api/util/TagFilter.java | 2 +- .../api/activityimpl/BaseOpDispenser.java | 139 ------------ .../api/activityimpl/uniform/DryRunOp.java | 33 --- .../uniform/DryRunOpDispenserWrapper.java | 38 ---- .../02_workload_structure.md | 8 +- .../07_template_variables.md | 77 ++++--- .../activityconfig/MultiMapLookupTest.java | 4 +- .../api/activityconfig/OpsLoaderTest.java | 6 +- .../rawyaml/BindingEscapingTest.java | 4 +- .../api/activityconfig/rawyaml/OpDefTest.java | 12 +- .../rawyaml/OpEscapingTest.java | 9 +- .../rawyaml/OpVariationTests.java | 2 +- .../rawyaml/RawYamlTemplateLoaderTest.java | 7 +- .../SpecificationDocsManifest.java | 2 +- .../UniformWorkloadSpecificationTest.java | 2 +- .../specifications/YamlSpecValidator.java | 12 +- .../yaml/OpDetailOverrideTest.java | 4 +- .../activityconfig/yaml/OpsDocListTest.java | 13 +- .../yaml/ParsedWorkloadTemplateTest.java | 4 +- .../CompoundCycleFunctionTest.java | 65 ++++++ .../GroovyBooleanCycleFunctionTest.java | 57 +++++ ...ssageSequenceNumberSendingHandlerTest.java | 4 +- .../ReceivedMessageSequenceTrackerTest.java | 2 +- .../api/templating/ParsedOpTest.java | 12 +- .../api/templating/StrInterpolatorTest.java | 9 +- .../adapters}/api/util/TagFilterTest.java | 4 +- 90 files changed, 1190 insertions(+), 438 deletions(-) rename adapters-api/src/main/java/io/nosqlbench/{engine => adapters}/api/activityconfig/MultiMapLookup.java (97%) rename adapters-api/src/main/java/io/nosqlbench/{engine => adapters}/api/activityconfig/OpsLoader.java (92%) rename adapters-api/src/main/java/io/nosqlbench/{engine => adapters}/api/activityconfig/rawyaml/OpsOwner.java (98%) rename adapters-api/src/main/java/io/nosqlbench/{engine => adapters}/api/activityconfig/rawyaml/RawOpDef.java (78%) rename adapters-api/src/main/java/io/nosqlbench/{engine => adapters}/api/activityconfig/rawyaml/RawOpFields.java (98%) rename adapters-api/src/main/java/io/nosqlbench/{engine => adapters}/api/activityconfig/rawyaml/RawOpsBlock.java (94%) rename adapters-api/src/main/java/io/nosqlbench/{engine => adapters}/api/activityconfig/rawyaml/RawOpsDoc.java (97%) rename adapters-api/src/main/java/io/nosqlbench/{engine => adapters}/api/activityconfig/rawyaml/RawOpsDocList.java (96%) rename adapters-api/src/main/java/io/nosqlbench/{engine => adapters}/api/activityconfig/rawyaml/RawOpsLoader.java (96%) rename adapters-api/src/main/java/io/nosqlbench/{engine => adapters}/api/activityconfig/rawyaml/RawScenarios.java (96%) rename adapters-api/src/main/java/io/nosqlbench/{engine => adapters}/api/activityconfig/rawyaml/RawYamlLoader.java (96%) rename adapters-api/src/main/java/io/nosqlbench/{engine => adapters}/api/activityconfig/rawyaml/Tags.java (94%) rename adapters-api/src/main/java/io/nosqlbench/{engine => adapters}/api/activityconfig/yaml/OpData.java (98%) rename adapters-api/src/main/java/io/nosqlbench/{engine => adapters}/api/activityconfig/yaml/OpDef.java (95%) rename adapters-api/src/main/java/io/nosqlbench/{engine => adapters}/api/activityconfig/yaml/OpTemplate.java (97%) rename adapters-api/src/main/java/io/nosqlbench/{engine => adapters}/api/activityconfig/yaml/OpTemplateFormat.java (93%) rename adapters-api/src/main/java/io/nosqlbench/{engine => adapters}/api/activityconfig/yaml/OpsBlock.java (93%) rename adapters-api/src/main/java/io/nosqlbench/{engine => adapters}/api/activityconfig/yaml/OpsDoc.java (94%) rename adapters-api/src/main/java/io/nosqlbench/{engine => adapters}/api/activityconfig/yaml/OpsDocList.java (94%) rename adapters-api/src/main/java/io/nosqlbench/{engine => adapters}/api/activityconfig/yaml/Scenarios.java (86%) create mode 100644 adapters-api/src/main/java/io/nosqlbench/adapters/api/activityimpl/BaseOpDispenser.java rename adapters-api/src/main/java/io/nosqlbench/{engine => adapters}/api/activityimpl/OpDispenser.java (95%) rename adapters-api/src/main/java/io/nosqlbench/{engine => adapters}/api/activityimpl/OpMapper.java (92%) rename adapters-api/src/main/java/io/nosqlbench/{engine => adapters}/api/activityimpl/OpResultTracker.java (89%) rename adapters-api/src/main/java/io/nosqlbench/{engine => adapters}/api/activityimpl/StandardCycleOp.java (84%) rename adapters-api/src/main/java/io/nosqlbench/{engine => adapters}/api/activityimpl/docs/BundledDriverAdapterDocs.java (93%) rename adapters-api/src/main/java/io/nosqlbench/{engine => adapters}/api/activityimpl/uniform/BaseDriverAdapter.java (96%) rename adapters-api/src/main/java/io/nosqlbench/{engine => adapters}/api/activityimpl/uniform/DriverAdapter.java (96%) rename adapters-api/src/main/java/io/nosqlbench/{engine => adapters}/api/activityimpl/uniform/DriverSpaceCache.java (97%) rename nb-api/src/main/java/io/nosqlbench/api/errors/ExpectedResultVerificationError.java => adapters-api/src/main/java/io/nosqlbench/adapters/api/activityimpl/uniform/DryRunOp.java (51%) create mode 100644 adapters-api/src/main/java/io/nosqlbench/adapters/api/activityimpl/uniform/DryRunOpDispenserWrapper.java rename adapters-api/src/main/java/io/nosqlbench/{engine => adapters}/api/activityimpl/uniform/ResultProcessor.java (94%) rename adapters-api/src/main/java/io/nosqlbench/{engine => adapters}/api/activityimpl/uniform/decorators/SyntheticOpTemplateProvider.java (86%) rename adapters-api/src/main/java/io/nosqlbench/{engine => adapters}/api/activityimpl/uniform/fieldmappers/FieldDestructuringMapper.java (95%) rename adapters-api/src/main/java/io/nosqlbench/{engine => adapters}/api/activityimpl/uniform/flowtypes/ChainingOp.java (93%) rename adapters-api/src/main/java/io/nosqlbench/{engine => adapters}/api/activityimpl/uniform/flowtypes/CycleOp.java (84%) rename adapters-api/src/main/java/io/nosqlbench/{engine => adapters}/api/activityimpl/uniform/flowtypes/Op.java (95%) rename adapters-api/src/main/java/io/nosqlbench/{engine => adapters}/api/activityimpl/uniform/flowtypes/OpGenerator.java (92%) rename adapters-api/src/main/java/io/nosqlbench/{engine => adapters}/api/activityimpl/uniform/flowtypes/OpResultSize.java (90%) rename adapters-api/src/main/java/io/nosqlbench/{engine => adapters}/api/activityimpl/uniform/flowtypes/RunnableOp.java (91%) rename adapters-api/src/main/java/io/nosqlbench/{engine => adapters}/api/activityimpl/uniform/flowtypes/RunnableSource.java (86%) rename adapters-api/src/main/java/io/nosqlbench/{engine => adapters}/api/activityimpl/uniform/flowtypes/VariableCapture.java (94%) create mode 100644 adapters-api/src/main/java/io/nosqlbench/adapters/api/evalcontext/CompoundCycleFunction.java create mode 100644 adapters-api/src/main/java/io/nosqlbench/adapters/api/evalcontext/CycleFunction.java create mode 100644 adapters-api/src/main/java/io/nosqlbench/adapters/api/evalcontext/CycleFunctions.java rename engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/core/ops/fluent/FluentOp.java => adapters-api/src/main/java/io/nosqlbench/adapters/api/evalcontext/ExpressionDetails.java (78%) create mode 100644 adapters-api/src/main/java/io/nosqlbench/adapters/api/evalcontext/GroovyBooleanCycleFunction.java create mode 100644 adapters-api/src/main/java/io/nosqlbench/adapters/api/evalcontext/GroovyCycleFunction.java create mode 100644 adapters-api/src/main/java/io/nosqlbench/adapters/api/evalcontext/GroovyObjectEqualityFunction.java create mode 100644 adapters-api/src/main/java/io/nosqlbench/adapters/api/evalcontext/ResultMismatchError.java create mode 100644 adapters-api/src/main/java/io/nosqlbench/adapters/api/evalcontext/ResultVerificationError.java create mode 100644 adapters-api/src/main/java/io/nosqlbench/adapters/api/evalcontext/VariableInjectable.java rename adapters-api/src/main/java/io/nosqlbench/{engine => adapters}/api/metrics/EndToEndMetricsAdapterUtil.java (97%) rename adapters-api/src/main/java/io/nosqlbench/{engine => adapters}/api/metrics/MessageSequenceNumberSendingHandler.java (96%) rename adapters-api/src/main/java/io/nosqlbench/{engine => adapters}/api/metrics/ReceivedMessageSequenceTracker.java (99%) rename adapters-api/src/main/java/io/nosqlbench/{engine => adapters}/api/metrics/ThreadLocalNamedTimers.java (96%) rename adapters-api/src/main/java/io/nosqlbench/{engine => adapters}/api/specifications/SpecDocsManifest.java (96%) rename adapters-api/src/main/java/io/nosqlbench/{engine => adapters}/api/templating/CommandTemplate.java (99%) rename adapters-api/src/main/java/io/nosqlbench/{engine => adapters}/api/templating/DriverAdapterDecorators.java (82%) rename adapters-api/src/main/java/io/nosqlbench/{engine => adapters}/api/templating/EnumSetter.java (96%) rename adapters-api/src/main/java/io/nosqlbench/{engine => adapters}/api/templating/ParsedOp.java (98%) rename adapters-api/src/main/java/io/nosqlbench/{engine => adapters}/api/templating/StrInterpolator.java (98%) rename adapters-api/src/main/java/io/nosqlbench/{engine => adapters}/api/util/AdaptersApiVersionInfo.java (98%) rename adapters-api/src/main/java/io/nosqlbench/{engine => adapters}/api/util/TagFilter.java (99%) delete mode 100644 adapters-api/src/main/java/io/nosqlbench/engine/api/activityimpl/BaseOpDispenser.java delete mode 100644 adapters-api/src/main/java/io/nosqlbench/engine/api/activityimpl/uniform/DryRunOp.java delete mode 100644 adapters-api/src/main/java/io/nosqlbench/engine/api/activityimpl/uniform/DryRunOpDispenserWrapper.java rename adapters-api/src/test/java/io/nosqlbench/{engine => adapters}/api/activityconfig/MultiMapLookupTest.java (92%) rename adapters-api/src/test/java/io/nosqlbench/{engine => adapters}/api/activityconfig/OpsLoaderTest.java (90%) rename adapters-api/src/test/java/io/nosqlbench/{engine => adapters}/api/activityconfig/rawyaml/BindingEscapingTest.java (94%) rename adapters-api/src/test/java/io/nosqlbench/{engine => adapters}/api/activityconfig/rawyaml/OpDefTest.java (94%) rename adapters-api/src/test/java/io/nosqlbench/{engine => adapters}/api/activityconfig/rawyaml/OpEscapingTest.java (85%) rename adapters-api/src/test/java/io/nosqlbench/{engine => adapters}/api/activityconfig/rawyaml/OpVariationTests.java (98%) rename adapters-api/src/test/java/io/nosqlbench/{engine => adapters}/api/activityconfig/rawyaml/RawYamlTemplateLoaderTest.java (94%) rename adapters-api/src/test/java/io/nosqlbench/{engine => adapters}/api/activityconfig/specifications/SpecificationDocsManifest.java (93%) rename adapters-api/src/test/java/io/nosqlbench/{engine => adapters}/api/activityconfig/specifications/UniformWorkloadSpecificationTest.java (96%) rename adapters-api/src/test/java/io/nosqlbench/{engine => adapters}/api/activityconfig/specifications/YamlSpecValidator.java (94%) rename adapters-api/src/test/java/io/nosqlbench/{engine => adapters}/api/activityconfig/yaml/OpDetailOverrideTest.java (96%) rename adapters-api/src/test/java/io/nosqlbench/{engine => adapters}/api/activityconfig/yaml/OpsDocListTest.java (93%) rename adapters-api/src/test/java/io/nosqlbench/{engine => adapters}/api/activityconfig/yaml/ParsedWorkloadTemplateTest.java (95%) create mode 100644 adapters-api/src/test/java/io/nosqlbench/adapters/api/evalcontext/CompoundCycleFunctionTest.java create mode 100644 adapters-api/src/test/java/io/nosqlbench/adapters/api/evalcontext/GroovyBooleanCycleFunctionTest.java rename adapters-api/src/test/java/io/nosqlbench/{engine => adapters}/api/metrics/MessageSequenceNumberSendingHandlerTest.java (96%) rename adapters-api/src/test/java/io/nosqlbench/{engine => adapters}/api/metrics/ReceivedMessageSequenceTrackerTest.java (99%) rename adapters-api/src/test/java/io/nosqlbench/{engine => adapters}/api/templating/ParsedOpTest.java (95%) rename {engine-api/src/test/java/io/nosqlbench/engine => adapters-api/src/test/java/io/nosqlbench/adapters}/api/templating/StrInterpolatorTest.java (96%) rename {engine-api/src/test/java/io/nosqlbench/engine => adapters-api/src/test/java/io/nosqlbench/adapters}/api/util/TagFilterTest.java (98%) diff --git a/adapters-api/pom.xml b/adapters-api/pom.xml index e4d21ee10..44a598aca 100644 --- a/adapters-api/pom.xml +++ b/adapters-api/pom.xml @@ -72,6 +72,11 @@ 2.13.11 + + org.apache.groovy + groovy + + diff --git a/adapters-api/src/main/java/io/nosqlbench/engine/api/activityconfig/MultiMapLookup.java b/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityconfig/MultiMapLookup.java similarity index 97% rename from adapters-api/src/main/java/io/nosqlbench/engine/api/activityconfig/MultiMapLookup.java rename to adapters-api/src/main/java/io/nosqlbench/adapters/api/activityconfig/MultiMapLookup.java index cf60f74b0..ff404bd50 100644 --- a/adapters-api/src/main/java/io/nosqlbench/engine/api/activityconfig/MultiMapLookup.java +++ b/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityconfig/MultiMapLookup.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. @@ -14,7 +14,7 @@ * limitations under the License. */ -package io.nosqlbench.engine.api.activityconfig; +package io.nosqlbench.adapters.api.activityconfig; import org.jetbrains.annotations.NotNull; diff --git a/adapters-api/src/main/java/io/nosqlbench/engine/api/activityconfig/OpsLoader.java b/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityconfig/OpsLoader.java similarity index 92% rename from adapters-api/src/main/java/io/nosqlbench/engine/api/activityconfig/OpsLoader.java rename to adapters-api/src/main/java/io/nosqlbench/adapters/api/activityconfig/OpsLoader.java index cd64f1606..f0e51337f 100644 --- a/adapters-api/src/main/java/io/nosqlbench/engine/api/activityconfig/OpsLoader.java +++ b/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityconfig/OpsLoader.java @@ -14,17 +14,17 @@ * limitations under the License. */ -package io.nosqlbench.engine.api.activityconfig; +package io.nosqlbench.adapters.api.activityconfig; import com.amazonaws.util.StringInputStream; import io.nosqlbench.api.content.Content; import io.nosqlbench.api.content.NBIO; import io.nosqlbench.api.errors.BasicError; -import io.nosqlbench.engine.api.activityconfig.rawyaml.RawOpsDocList; -import io.nosqlbench.engine.api.activityconfig.rawyaml.RawOpsLoader; -import io.nosqlbench.engine.api.activityconfig.yaml.OpTemplateFormat; -import io.nosqlbench.engine.api.activityconfig.yaml.OpsDocList; -import io.nosqlbench.engine.api.templating.StrInterpolator; +import io.nosqlbench.adapters.api.activityconfig.rawyaml.RawOpsDocList; +import io.nosqlbench.adapters.api.activityconfig.rawyaml.RawOpsLoader; +import io.nosqlbench.adapters.api.activityconfig.yaml.OpTemplateFormat; +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 scala.Option; @@ -81,9 +81,7 @@ public class OpsLoader { transformer.checkpointAccesses().forEach((k, v) -> { layered.addTemplateVariable(k, v); - if (params.containsKey(k)) { - params.remove(k); - } + params.remove(k); }); return layered; diff --git a/adapters-api/src/main/java/io/nosqlbench/engine/api/activityconfig/rawyaml/OpsOwner.java b/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityconfig/rawyaml/OpsOwner.java similarity index 98% rename from adapters-api/src/main/java/io/nosqlbench/engine/api/activityconfig/rawyaml/OpsOwner.java rename to adapters-api/src/main/java/io/nosqlbench/adapters/api/activityconfig/rawyaml/OpsOwner.java index 420a57a67..1d3270810 100644 --- a/adapters-api/src/main/java/io/nosqlbench/engine/api/activityconfig/rawyaml/OpsOwner.java +++ b/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityconfig/rawyaml/OpsOwner.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package io.nosqlbench.engine.api.activityconfig.rawyaml; +package io.nosqlbench.adapters.api.activityconfig.rawyaml; import io.nosqlbench.api.errors.BasicError; diff --git a/adapters-api/src/main/java/io/nosqlbench/engine/api/activityconfig/rawyaml/RawOpDef.java b/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityconfig/rawyaml/RawOpDef.java similarity index 78% rename from adapters-api/src/main/java/io/nosqlbench/engine/api/activityconfig/rawyaml/RawOpDef.java rename to adapters-api/src/main/java/io/nosqlbench/adapters/api/activityconfig/rawyaml/RawOpDef.java index 07fa007f2..ae8931c3d 100644 --- a/adapters-api/src/main/java/io/nosqlbench/engine/api/activityconfig/rawyaml/RawOpDef.java +++ b/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityconfig/rawyaml/RawOpDef.java @@ -14,10 +14,12 @@ * limitations under the License. */ -package io.nosqlbench.engine.api.activityconfig.rawyaml; +package io.nosqlbench.adapters.api.activityconfig.rawyaml; import io.nosqlbench.api.errors.BasicError; import io.nosqlbench.api.errors.OpConfigError; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; import java.util.*; @@ -25,7 +27,13 @@ import java.util.*; * See specification for what this should do in UniformWorkloadSpecificationTest */ public class RawOpDef extends RawOpFields { + private final static Logger logger = LogManager.getLogger(RawOpDef.class); + /** + * Contains all the op fields. If the key params is used, then fields are divided + * between the op fields map and the params map, with the non-specified one soaking up the dangling + * op fields. (Those not under 'op' or 'params' and which are not reserverd words) + */ private Object op; private final static List opFieldSynonyms = List.of("stmt", "statement", "op", "operation"); @@ -57,9 +65,19 @@ public class RawOpDef extends RawOpFields { } } if (found.size() == 1) { - Object op = map.remove(found.iterator().next()); - setOp(op); - } else if (found.size() > 1) { + String keyName = found.iterator().next(); + Object op = map.remove(keyName); + if (op instanceof CharSequence s) { + if (!keyName.equals("stmt")) { + logger.warn("Used implied stmt field under name '" + keyName + "'. You can just use 'stmt: ... "+ s +"' or the equivalent to avoid this warning."); + } + map.put("stmt",s.toString()); +// setOp(new LinkedHashMap(Map.of("stmt",s.toString()))); + } else { + setOp(op); + } + } + if (found.size() > 1) { throw new BasicError("You used " + found + " as an op name, but only one of these is allowed at a time."); } else if ((getName() == null || getName().isEmpty()) && op == null && map.size() > 0) { Map.Entry first = map.entrySet().iterator().next(); @@ -93,6 +111,8 @@ public class RawOpDef extends RawOpFields { public String getStmt() { if (op instanceof CharSequence) { return op.toString(); + } else if (op instanceof Map m && m.get("stmt") instanceof CharSequence cs) { + return cs.toString(); } else { throw new BasicError("tried to access a non-char statement definition with #getStmt()"); } diff --git a/adapters-api/src/main/java/io/nosqlbench/engine/api/activityconfig/rawyaml/RawOpFields.java b/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityconfig/rawyaml/RawOpFields.java similarity index 98% rename from adapters-api/src/main/java/io/nosqlbench/engine/api/activityconfig/rawyaml/RawOpFields.java rename to adapters-api/src/main/java/io/nosqlbench/adapters/api/activityconfig/rawyaml/RawOpFields.java index 3491dce09..0e34a45cf 100644 --- a/adapters-api/src/main/java/io/nosqlbench/engine/api/activityconfig/rawyaml/RawOpFields.java +++ b/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityconfig/rawyaml/RawOpFields.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package io.nosqlbench.engine.api.activityconfig.rawyaml; +package io.nosqlbench.adapters.api.activityconfig.rawyaml; import io.nosqlbench.api.errors.BasicError; import org.apache.logging.log4j.Logger; diff --git a/adapters-api/src/main/java/io/nosqlbench/engine/api/activityconfig/rawyaml/RawOpsBlock.java b/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityconfig/rawyaml/RawOpsBlock.java similarity index 94% rename from adapters-api/src/main/java/io/nosqlbench/engine/api/activityconfig/rawyaml/RawOpsBlock.java rename to adapters-api/src/main/java/io/nosqlbench/adapters/api/activityconfig/rawyaml/RawOpsBlock.java index 5384202b7..8ec2db8e5 100644 --- a/adapters-api/src/main/java/io/nosqlbench/engine/api/activityconfig/rawyaml/RawOpsBlock.java +++ b/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityconfig/rawyaml/RawOpsBlock.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package io.nosqlbench.engine.api.activityconfig.rawyaml; +package io.nosqlbench.adapters.api.activityconfig.rawyaml; import java.util.Map; diff --git a/adapters-api/src/main/java/io/nosqlbench/engine/api/activityconfig/rawyaml/RawOpsDoc.java b/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityconfig/rawyaml/RawOpsDoc.java similarity index 97% rename from adapters-api/src/main/java/io/nosqlbench/engine/api/activityconfig/rawyaml/RawOpsDoc.java rename to adapters-api/src/main/java/io/nosqlbench/adapters/api/activityconfig/rawyaml/RawOpsDoc.java index ec21a7008..8bbfa3d4e 100644 --- a/adapters-api/src/main/java/io/nosqlbench/engine/api/activityconfig/rawyaml/RawOpsDoc.java +++ b/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityconfig/rawyaml/RawOpsDoc.java @@ -14,9 +14,9 @@ * limitations under the License. */ -package io.nosqlbench.engine.api.activityconfig.rawyaml; +package io.nosqlbench.adapters.api.activityconfig.rawyaml; -import io.nosqlbench.engine.api.util.AdaptersApiVersionInfo; +import io.nosqlbench.adapters.api.util.AdaptersApiVersionInfo; import java.util.ArrayList; import java.util.List; diff --git a/adapters-api/src/main/java/io/nosqlbench/engine/api/activityconfig/rawyaml/RawOpsDocList.java b/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityconfig/rawyaml/RawOpsDocList.java similarity index 96% rename from adapters-api/src/main/java/io/nosqlbench/engine/api/activityconfig/rawyaml/RawOpsDocList.java rename to adapters-api/src/main/java/io/nosqlbench/adapters/api/activityconfig/rawyaml/RawOpsDocList.java index 6cf742f77..f9db92dda 100644 --- a/adapters-api/src/main/java/io/nosqlbench/engine/api/activityconfig/rawyaml/RawOpsDocList.java +++ b/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityconfig/rawyaml/RawOpsDocList.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package io.nosqlbench.engine.api.activityconfig.rawyaml; +package io.nosqlbench.adapters.api.activityconfig.rawyaml; import java.util.List; diff --git a/adapters-api/src/main/java/io/nosqlbench/engine/api/activityconfig/rawyaml/RawOpsLoader.java b/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityconfig/rawyaml/RawOpsLoader.java similarity index 96% rename from adapters-api/src/main/java/io/nosqlbench/engine/api/activityconfig/rawyaml/RawOpsLoader.java rename to adapters-api/src/main/java/io/nosqlbench/adapters/api/activityconfig/rawyaml/RawOpsLoader.java index be513c25d..f5157ce29 100644 --- a/adapters-api/src/main/java/io/nosqlbench/engine/api/activityconfig/rawyaml/RawOpsLoader.java +++ b/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityconfig/rawyaml/RawOpsLoader.java @@ -14,13 +14,13 @@ * limitations under the License. */ -package io.nosqlbench.engine.api.activityconfig.rawyaml; +package io.nosqlbench.adapters.api.activityconfig.rawyaml; import io.nosqlbench.api.content.Content; import io.nosqlbench.api.content.NBIO; import io.nosqlbench.api.errors.BasicError; import io.nosqlbench.api.errors.OpConfigError; -import io.nosqlbench.engine.api.templating.StrInterpolator; +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; diff --git a/adapters-api/src/main/java/io/nosqlbench/engine/api/activityconfig/rawyaml/RawScenarios.java b/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityconfig/rawyaml/RawScenarios.java similarity index 96% rename from adapters-api/src/main/java/io/nosqlbench/engine/api/activityconfig/rawyaml/RawScenarios.java rename to adapters-api/src/main/java/io/nosqlbench/adapters/api/activityconfig/rawyaml/RawScenarios.java index f23d2ccd5..3ae64577c 100644 --- a/adapters-api/src/main/java/io/nosqlbench/engine/api/activityconfig/rawyaml/RawScenarios.java +++ b/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityconfig/rawyaml/RawScenarios.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. @@ -14,7 +14,7 @@ * limitations under the License. */ -package io.nosqlbench.engine.api.activityconfig.rawyaml; +package io.nosqlbench.adapters.api.activityconfig.rawyaml; import io.nosqlbench.api.errors.BasicError; diff --git a/adapters-api/src/main/java/io/nosqlbench/engine/api/activityconfig/rawyaml/RawYamlLoader.java b/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityconfig/rawyaml/RawYamlLoader.java similarity index 96% rename from adapters-api/src/main/java/io/nosqlbench/engine/api/activityconfig/rawyaml/RawYamlLoader.java rename to adapters-api/src/main/java/io/nosqlbench/adapters/api/activityconfig/rawyaml/RawYamlLoader.java index fa91b3b97..02d7437f8 100644 --- a/adapters-api/src/main/java/io/nosqlbench/engine/api/activityconfig/rawyaml/RawYamlLoader.java +++ b/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityconfig/rawyaml/RawYamlLoader.java @@ -14,13 +14,13 @@ * limitations under the License. */ -package io.nosqlbench.engine.api.activityconfig.rawyaml; +package io.nosqlbench.adapters.api.activityconfig.rawyaml; import io.nosqlbench.api.content.Content; import io.nosqlbench.api.content.NBIO; import io.nosqlbench.api.errors.BasicError; import io.nosqlbench.api.errors.OpConfigError; -import io.nosqlbench.engine.api.templating.StrInterpolator; +import io.nosqlbench.adapters.api.templating.StrInterpolator; import org.apache.logging.log4j.Logger; import org.snakeyaml.engine.v2.api.Load; import org.snakeyaml.engine.v2.api.LoadSettings; diff --git a/adapters-api/src/main/java/io/nosqlbench/engine/api/activityconfig/rawyaml/Tags.java b/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityconfig/rawyaml/Tags.java similarity index 94% rename from adapters-api/src/main/java/io/nosqlbench/engine/api/activityconfig/rawyaml/Tags.java rename to adapters-api/src/main/java/io/nosqlbench/adapters/api/activityconfig/rawyaml/Tags.java index 86450650e..c581205a0 100644 --- a/adapters-api/src/main/java/io/nosqlbench/engine/api/activityconfig/rawyaml/Tags.java +++ b/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityconfig/rawyaml/Tags.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. @@ -14,7 +14,7 @@ * limitations under the License. */ -package io.nosqlbench.engine.api.activityconfig.rawyaml; +package io.nosqlbench.adapters.api.activityconfig.rawyaml; import io.nosqlbench.api.engine.util.Tagged; diff --git a/adapters-api/src/main/java/io/nosqlbench/engine/api/activityconfig/yaml/OpData.java b/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityconfig/yaml/OpData.java similarity index 98% rename from adapters-api/src/main/java/io/nosqlbench/engine/api/activityconfig/yaml/OpData.java rename to adapters-api/src/main/java/io/nosqlbench/adapters/api/activityconfig/yaml/OpData.java index 7908b19d8..20d4abd21 100644 --- a/adapters-api/src/main/java/io/nosqlbench/engine/api/activityconfig/yaml/OpData.java +++ b/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityconfig/yaml/OpData.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. @@ -14,7 +14,7 @@ * limitations under the License. */ -package io.nosqlbench.engine.api.activityconfig.yaml; +package io.nosqlbench.adapters.api.activityconfig.yaml; import java.security.InvalidParameterException; import java.util.LinkedHashMap; diff --git a/adapters-api/src/main/java/io/nosqlbench/engine/api/activityconfig/yaml/OpDef.java b/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityconfig/yaml/OpDef.java similarity index 95% rename from adapters-api/src/main/java/io/nosqlbench/engine/api/activityconfig/yaml/OpDef.java rename to adapters-api/src/main/java/io/nosqlbench/adapters/api/activityconfig/yaml/OpDef.java index 59e445460..6ffdca805 100644 --- a/adapters-api/src/main/java/io/nosqlbench/engine/api/activityconfig/yaml/OpDef.java +++ b/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityconfig/yaml/OpDef.java @@ -14,10 +14,10 @@ * limitations under the License. */ -package io.nosqlbench.engine.api.activityconfig.yaml; +package io.nosqlbench.adapters.api.activityconfig.yaml; -import io.nosqlbench.engine.api.activityconfig.MultiMapLookup; -import io.nosqlbench.engine.api.activityconfig.rawyaml.RawOpDef; +import io.nosqlbench.adapters.api.activityconfig.MultiMapLookup; +import io.nosqlbench.adapters.api.activityconfig.rawyaml.RawOpDef; import io.nosqlbench.api.errors.BasicError; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; diff --git a/adapters-api/src/main/java/io/nosqlbench/engine/api/activityconfig/yaml/OpTemplate.java b/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityconfig/yaml/OpTemplate.java similarity index 97% rename from adapters-api/src/main/java/io/nosqlbench/engine/api/activityconfig/yaml/OpTemplate.java rename to adapters-api/src/main/java/io/nosqlbench/adapters/api/activityconfig/yaml/OpTemplate.java index b827f6ade..a81830acf 100644 --- a/adapters-api/src/main/java/io/nosqlbench/engine/api/activityconfig/yaml/OpTemplate.java +++ b/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityconfig/yaml/OpTemplate.java @@ -14,10 +14,11 @@ * limitations under the License. */ -package io.nosqlbench.engine.api.activityconfig.yaml; +package io.nosqlbench.adapters.api.activityconfig.yaml; import com.google.gson.Gson; import com.google.gson.GsonBuilder; +import io.nosqlbench.adapters.api.templating.ParsedOp; import io.nosqlbench.api.engine.util.Tagged; import io.nosqlbench.api.config.params.Element; import io.nosqlbench.api.config.params.NBParams; @@ -35,7 +36,7 @@ import java.util.function.Function; *

* The OpTemplate is a structurally normalized type which presents the user-provided op template to the NoSQLBench * loading and templating mechanisms. This type is not generally used directly for new driver development. It is the - * backing data which is used by {@link io.nosqlbench.engine.api.templating.ParsedOp}, which is used in drivers to map + * backing data which is used by {@link ParsedOp}, which is used in drivers to map * op templates to function to be used for a given cycle value. *

* @@ -86,8 +87,8 @@ public abstract class OpTemplate implements Tagged { if (type.isAssignableFrom(object.getClass())) { map.put(pname, type.cast(object)); } else { - throw new RuntimeException("With param named '" + pname + "" + - "' You can't assign an object of type '" + object.getClass().getSimpleName() + "" + + throw new RuntimeException("With param named '" + pname + + "' You can't assign an object of type '" + object.getClass().getSimpleName() + "' to '" + type.getSimpleName() + "'. Maybe the YAML format is suggesting the wrong type."); } } diff --git a/adapters-api/src/main/java/io/nosqlbench/engine/api/activityconfig/yaml/OpTemplateFormat.java b/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityconfig/yaml/OpTemplateFormat.java similarity index 93% rename from adapters-api/src/main/java/io/nosqlbench/engine/api/activityconfig/yaml/OpTemplateFormat.java rename to adapters-api/src/main/java/io/nosqlbench/adapters/api/activityconfig/yaml/OpTemplateFormat.java index fc3e5e098..e0257a1ac 100644 --- a/adapters-api/src/main/java/io/nosqlbench/engine/api/activityconfig/yaml/OpTemplateFormat.java +++ b/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityconfig/yaml/OpTemplateFormat.java @@ -14,14 +14,16 @@ * limitations under the License. */ -package io.nosqlbench.engine.api.activityconfig.yaml; +package io.nosqlbench.adapters.api.activityconfig.yaml; + +import io.nosqlbench.adapters.api.activityconfig.rawyaml.RawOpsDocList; import java.net.URI; import java.nio.file.Path; /** * The formats which are recognized as source data for the workload. Any serialization may be supported - * which can be converted from a character string to an {@link io.nosqlbench.engine.api.activityconfig.rawyaml.RawOpsDocList} structure. + * which can be converted from a character string to an {@link RawOpsDocList} structure. * * Those which are derived from paths may be determined by their filename extension. Others, which are provided from internal * NoSQLBench sources, may only be invoked explicitly. diff --git a/adapters-api/src/main/java/io/nosqlbench/engine/api/activityconfig/yaml/OpsBlock.java b/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityconfig/yaml/OpsBlock.java similarity index 93% rename from adapters-api/src/main/java/io/nosqlbench/engine/api/activityconfig/yaml/OpsBlock.java rename to adapters-api/src/main/java/io/nosqlbench/adapters/api/activityconfig/yaml/OpsBlock.java index 6143d6a5f..e125516a2 100644 --- a/adapters-api/src/main/java/io/nosqlbench/engine/api/activityconfig/yaml/OpsBlock.java +++ b/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityconfig/yaml/OpsBlock.java @@ -14,11 +14,11 @@ * limitations under the License. */ -package io.nosqlbench.engine.api.activityconfig.yaml; +package io.nosqlbench.adapters.api.activityconfig.yaml; -import io.nosqlbench.engine.api.activityconfig.MultiMapLookup; -import io.nosqlbench.engine.api.activityconfig.rawyaml.RawOpDef; -import io.nosqlbench.engine.api.activityconfig.rawyaml.RawOpsBlock; +import io.nosqlbench.adapters.api.activityconfig.MultiMapLookup; +import io.nosqlbench.adapters.api.activityconfig.rawyaml.RawOpDef; +import io.nosqlbench.adapters.api.activityconfig.rawyaml.RawOpsBlock; import io.nosqlbench.api.engine.util.Tagged; import org.jetbrains.annotations.NotNull; diff --git a/adapters-api/src/main/java/io/nosqlbench/engine/api/activityconfig/yaml/OpsDoc.java b/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityconfig/yaml/OpsDoc.java similarity index 94% rename from adapters-api/src/main/java/io/nosqlbench/engine/api/activityconfig/yaml/OpsDoc.java rename to adapters-api/src/main/java/io/nosqlbench/adapters/api/activityconfig/yaml/OpsDoc.java index 4b0d00b2f..d527fb702 100644 --- a/adapters-api/src/main/java/io/nosqlbench/engine/api/activityconfig/yaml/OpsDoc.java +++ b/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityconfig/yaml/OpsDoc.java @@ -14,10 +14,10 @@ * limitations under the License. */ -package io.nosqlbench.engine.api.activityconfig.yaml; +package io.nosqlbench.adapters.api.activityconfig.yaml; -import io.nosqlbench.engine.api.activityconfig.rawyaml.RawOpsBlock; -import io.nosqlbench.engine.api.activityconfig.rawyaml.RawOpsDoc; +import io.nosqlbench.adapters.api.activityconfig.rawyaml.RawOpsBlock; +import io.nosqlbench.adapters.api.activityconfig.rawyaml.RawOpsDoc; import io.nosqlbench.api.engine.util.Tagged; import java.util.ArrayList; diff --git a/adapters-api/src/main/java/io/nosqlbench/engine/api/activityconfig/yaml/OpsDocList.java b/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityconfig/yaml/OpsDocList.java similarity index 94% rename from adapters-api/src/main/java/io/nosqlbench/engine/api/activityconfig/yaml/OpsDocList.java rename to adapters-api/src/main/java/io/nosqlbench/adapters/api/activityconfig/yaml/OpsDocList.java index 9c2923041..c09f444f2 100644 --- a/adapters-api/src/main/java/io/nosqlbench/engine/api/activityconfig/yaml/OpsDocList.java +++ b/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityconfig/yaml/OpsDocList.java @@ -14,12 +14,12 @@ * limitations under the License. */ -package io.nosqlbench.engine.api.activityconfig.yaml; +package io.nosqlbench.adapters.api.activityconfig.yaml; -import io.nosqlbench.engine.api.activityconfig.OpsLoader; -import io.nosqlbench.engine.api.activityconfig.rawyaml.RawOpsDoc; -import io.nosqlbench.engine.api.activityconfig.rawyaml.RawOpsDocList; -import io.nosqlbench.engine.api.util.TagFilter; +import io.nosqlbench.adapters.api.activityconfig.OpsLoader; +import io.nosqlbench.adapters.api.activityconfig.rawyaml.RawOpsDoc; +import io.nosqlbench.adapters.api.activityconfig.rawyaml.RawOpsDocList; +import io.nosqlbench.adapters.api.util.TagFilter; import io.nosqlbench.api.config.standard.ConfigModel; import io.nosqlbench.api.config.standard.NBConfigModel; import io.nosqlbench.api.config.standard.NBConfigModelExpander; diff --git a/adapters-api/src/main/java/io/nosqlbench/engine/api/activityconfig/yaml/Scenarios.java b/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityconfig/yaml/Scenarios.java similarity index 86% rename from adapters-api/src/main/java/io/nosqlbench/engine/api/activityconfig/yaml/Scenarios.java rename to adapters-api/src/main/java/io/nosqlbench/adapters/api/activityconfig/yaml/Scenarios.java index eefb5b926..ff47d1ea2 100644 --- a/adapters-api/src/main/java/io/nosqlbench/engine/api/activityconfig/yaml/Scenarios.java +++ b/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityconfig/yaml/Scenarios.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. @@ -14,9 +14,9 @@ * limitations under the License. */ -package io.nosqlbench.engine.api.activityconfig.yaml; +package io.nosqlbench.adapters.api.activityconfig.yaml; -import io.nosqlbench.engine.api.activityconfig.rawyaml.RawScenarios; +import io.nosqlbench.adapters.api.activityconfig.rawyaml.RawScenarios; import java.util.List; import java.util.Map; 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 new file mode 100644 index 000000000..dcb075a6e --- /dev/null +++ b/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityimpl/BaseOpDispenser.java @@ -0,0 +1,201 @@ +/* + * 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; + +import com.codahale.metrics.Histogram; +import com.codahale.metrics.Timer; +import io.nosqlbench.adapters.api.activityimpl.uniform.DriverAdapter; +import io.nosqlbench.adapters.api.activityimpl.uniform.flowtypes.Op; +import io.nosqlbench.adapters.api.evalcontext.CycleFunction; +import io.nosqlbench.adapters.api.evalcontext.CycleFunctions; +import io.nosqlbench.adapters.api.evalcontext.GroovyBooleanCycleFunction; +import io.nosqlbench.adapters.api.evalcontext.GroovyObjectEqualityFunction; +import io.nosqlbench.adapters.api.metrics.ThreadLocalNamedTimers; +import io.nosqlbench.adapters.api.templating.ParsedOp; +import io.nosqlbench.api.config.NBLabeledElement; +import io.nosqlbench.api.config.NBLabels; +import io.nosqlbench.api.engine.metrics.ActivityMetrics; +import io.nosqlbench.api.errors.OpConfigError; +import io.nosqlbench.virtdata.core.templates.ParsedTemplateString; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.concurrent.TimeUnit; + +/** + * See {@link OpDispenser} for details on how to use this type. + *

+ * Some details are tracked per op template, which aligns to the life-cycle of the op dispenser. + * Thus, each op dispenser is where the stats for all related operations are kept. + * + * @param + * The type of operation + */ +public abstract class BaseOpDispenser implements OpDispenser, NBLabeledElement { + private final static Logger logger = LogManager.getLogger(BaseOpDispenser.class); + public static final String VERIFIER = "verifier"; + public static final String EXPECTED_RESULT = "expected-result"; + public static final String VERIFIER_IMPORTS = "verifier-imports"; + public static final String START_TIMERS = "start-timers"; + public static final String STOP_TIMERS = "stop-timers"; + + private final String opName; + protected final DriverAdapter adapter; + private final NBLabels labels; + private boolean instrument; + private Histogram resultSizeHistogram; + private Timer successTimer; + private Timer errorTimer; + private final String[] timerStarts; + private final String[] timerStops; + + /** + * package imports used with "verifiers" or "expected-result" are accumulated here + */ + private final List verifierImports = new ArrayList(); + /** + * optional invokable functions which throw exceptions when results are not verifiable. + * This variable is kept here for diagnostics and debugging. The actual instance used within + * each thread is provided by a {@link ThreadLocal} via {@link #getVerifier()} + */ + private final CycleFunction _verifier; + private final ThreadLocal> tlVerifier; + + protected BaseOpDispenser(final DriverAdapter adapter, final ParsedOp op) { + opName = op.getName(); + this.adapter = adapter; + labels = op.getLabels(); + + this.timerStarts = op.takeOptionalStaticValue(START_TIMERS, String.class) + .map(s -> s.split(", *")) + .orElse(null); + + this.timerStops = op.takeOptionalStaticValue(STOP_TIMERS, String.class) + .map(s -> s.split(", *")) + .orElse(null); + + if (null != timerStarts) + for (final String timerStart : this.timerStarts) ThreadLocalNamedTimers.addTimer(op, timerStart); + + this.configureInstrumentation(op); + this.configureVerifierImports(op); + List> verifiers = new ArrayList<>(); + verifiers.addAll(configureEqualityVerifier(op)); + verifiers.addAll(configureAssertionVerifiers(op)); + this._verifier = CycleFunctions.of((a, b) -> a && b, verifiers, true); + this.tlVerifier = ThreadLocal.withInitial(() -> _verifier.newInstance()); + } + + private CycleFunction cloneVerifiers() { + return this._verifier.newInstance(); + } + + public CycleFunction getVerifier() { + return this.tlVerifier.get(); + } + + private void configureVerifierImports(ParsedOp op) { + List imports = op.takeOptionalStaticValue(VERIFIER_IMPORTS, List.class) + .orElse(List.of()); + for (Object element : imports) { + if (element instanceof CharSequence cs) { + this.verifierImports.add(cs.toString()); + } else { + throw new RuntimeException("Imports must be a character sequence."); + } + } + } + + private List> configureAssertionVerifiers(ParsedOp op) { + Map namedVerifiers = op.getTemplateMap().takeAsNamedTemplates(VERIFIER); + List> verifierFunctions = new ArrayList<>(); + try { + namedVerifiers.forEach((verifierName,stringTemplate) -> { + GroovyBooleanCycleFunction verifier = + new GroovyBooleanCycleFunction(verifierName, stringTemplate, verifierImports); + logger.info("configured verifier:" + verifier); + verifierFunctions.add(verifier); + }); + return verifierFunctions; + } catch (Exception gre) { + throw new OpConfigError("error in verifier:" + gre.getMessage(), gre); + } + } + + private List> configureEqualityVerifier(ParsedOp op) { + try { + return op.takeAsOptionalStringTemplate(EXPECTED_RESULT) + .map(tpl -> new GroovyObjectEqualityFunction(op.getName()+"-"+EXPECTED_RESULT, tpl, verifierImports)) + .map(vl -> { + logger.info("Configured equality verifier: " + vl); + return vl; + }) + .map(v -> List.of(v)) + .orElse(List.of()); + } catch (Exception gre) { + throw new OpConfigError("error in verifier:" + gre.getMessage(), gre); + } + } + + String getOpName() { + return this.opName; + } + + public DriverAdapter getAdapter() { + return this.adapter; + } + + private void configureInstrumentation(final ParsedOp pop) { + instrument = pop.takeStaticConfigOr("instrument", false); + if (this.instrument) { + final int hdrDigits = pop.getStaticConfigOr("hdr_digits", 4).intValue(); + successTimer = ActivityMetrics.timer(pop, "success", hdrDigits); + errorTimer = ActivityMetrics.timer(pop, "error", hdrDigits); + resultSizeHistogram = ActivityMetrics.histogram(pop, "resultset-size", hdrDigits); + } + } + + @Override + public void onStart(final long cycleValue) { + if (null != timerStarts) ThreadLocalNamedTimers.TL_INSTANCE.get().start(this.timerStarts); + } + + @Override + public void onSuccess(final long cycleValue, final long nanoTime, final long resultSize) { + if (this.instrument) { + this.successTimer.update(nanoTime, TimeUnit.NANOSECONDS); + if (-1 < resultSize) this.resultSizeHistogram.update(resultSize); + } + if (null != timerStops) ThreadLocalNamedTimers.TL_INSTANCE.get().stop(this.timerStops); + } + + @Override + public void onError(final long cycleValue, final long resultNanos, final Throwable t) { + + if (this.instrument) this.errorTimer.update(resultNanos, TimeUnit.NANOSECONDS); + if (null != timerStops) ThreadLocalNamedTimers.TL_INSTANCE.get().stop(this.timerStops); + } + + @Override + public NBLabels getLabels() { + return this.labels; + } + +} diff --git a/adapters-api/src/main/java/io/nosqlbench/engine/api/activityimpl/OpDispenser.java b/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityimpl/OpDispenser.java similarity index 95% rename from adapters-api/src/main/java/io/nosqlbench/engine/api/activityimpl/OpDispenser.java rename to adapters-api/src/main/java/io/nosqlbench/adapters/api/activityimpl/OpDispenser.java index 097744a5f..3723c3e2b 100644 --- a/adapters-api/src/main/java/io/nosqlbench/engine/api/activityimpl/OpDispenser.java +++ b/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityimpl/OpDispenser.java @@ -14,9 +14,10 @@ * limitations under the License. */ -package io.nosqlbench.engine.api.activityimpl; +package io.nosqlbench.adapters.api.activityimpl; + +import io.nosqlbench.adapters.api.evalcontext.CycleFunction; -import java.io.Serializable; import java.util.function.LongFunction; /** @@ -82,6 +83,7 @@ public interface OpDispenser extends LongFunction, OpResultTracker { */ T apply(long value); - Serializable getExpectedResultExpression(); + + CycleFunction getVerifier(); } diff --git a/adapters-api/src/main/java/io/nosqlbench/engine/api/activityimpl/OpMapper.java b/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityimpl/OpMapper.java similarity index 92% rename from adapters-api/src/main/java/io/nosqlbench/engine/api/activityimpl/OpMapper.java rename to adapters-api/src/main/java/io/nosqlbench/adapters/api/activityimpl/OpMapper.java index d1c95cddd..066c5fa8f 100644 --- a/adapters-api/src/main/java/io/nosqlbench/engine/api/activityimpl/OpMapper.java +++ b/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityimpl/OpMapper.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. @@ -14,10 +14,11 @@ * limitations under the License. */ -package io.nosqlbench.engine.api.activityimpl; +package io.nosqlbench.adapters.api.activityimpl; -import io.nosqlbench.engine.api.activityimpl.uniform.flowtypes.Op; -import io.nosqlbench.engine.api.templating.ParsedOp; +import io.nosqlbench.adapters.api.activityimpl.uniform.DriverAdapter; +import io.nosqlbench.adapters.api.activityimpl.uniform.flowtypes.Op; +import io.nosqlbench.adapters.api.templating.ParsedOp; import java.util.function.Function; @@ -68,7 +69,7 @@ import java.util.function.Function; * The logic which is implemented in the OpMapper must follow closely with the op construction * rules provided to the user. Conversely, the driver maintainer should take care to provide * rules of construction and examples in the documentation. - * Each {@link io.nosqlbench.engine.api.activityimpl.uniform.DriverAdapter} has a unique + * Each {@link DriverAdapter} has a unique * name. The documentation * for each of these should be kept in the bundled resources in a top-level markdown file that * matches the driver name. diff --git a/adapters-api/src/main/java/io/nosqlbench/engine/api/activityimpl/OpResultTracker.java b/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityimpl/OpResultTracker.java similarity index 89% rename from adapters-api/src/main/java/io/nosqlbench/engine/api/activityimpl/OpResultTracker.java rename to adapters-api/src/main/java/io/nosqlbench/adapters/api/activityimpl/OpResultTracker.java index e8e9bed0b..019d502ea 100644 --- a/adapters-api/src/main/java/io/nosqlbench/engine/api/activityimpl/OpResultTracker.java +++ b/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityimpl/OpResultTracker.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. @@ -14,7 +14,7 @@ * limitations under the License. */ -package io.nosqlbench.engine.api.activityimpl; +package io.nosqlbench.adapters.api.activityimpl; public interface OpResultTracker { void onStart(long cycleValue); diff --git a/adapters-api/src/main/java/io/nosqlbench/engine/api/activityimpl/StandardCycleOp.java b/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityimpl/StandardCycleOp.java similarity index 84% rename from adapters-api/src/main/java/io/nosqlbench/engine/api/activityimpl/StandardCycleOp.java rename to adapters-api/src/main/java/io/nosqlbench/adapters/api/activityimpl/StandardCycleOp.java index e49684231..48240d94b 100644 --- a/adapters-api/src/main/java/io/nosqlbench/engine/api/activityimpl/StandardCycleOp.java +++ b/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityimpl/StandardCycleOp.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. @@ -14,9 +14,9 @@ * limitations under the License. */ -package io.nosqlbench.engine.api.activityimpl; +package io.nosqlbench.adapters.api.activityimpl; -import io.nosqlbench.engine.api.activityimpl.uniform.flowtypes.CycleOp; +import io.nosqlbench.adapters.api.activityimpl.uniform.flowtypes.CycleOp; import java.util.function.LongFunction; diff --git a/adapters-api/src/main/java/io/nosqlbench/engine/api/activityimpl/docs/BundledDriverAdapterDocs.java b/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityimpl/docs/BundledDriverAdapterDocs.java similarity index 93% rename from adapters-api/src/main/java/io/nosqlbench/engine/api/activityimpl/docs/BundledDriverAdapterDocs.java rename to adapters-api/src/main/java/io/nosqlbench/adapters/api/activityimpl/docs/BundledDriverAdapterDocs.java index ce18e7294..920f1195e 100644 --- a/adapters-api/src/main/java/io/nosqlbench/engine/api/activityimpl/docs/BundledDriverAdapterDocs.java +++ b/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityimpl/docs/BundledDriverAdapterDocs.java @@ -14,13 +14,13 @@ * limitations under the License. */ -package io.nosqlbench.engine.api.activityimpl.docs; +package io.nosqlbench.adapters.api.activityimpl.docs; +import io.nosqlbench.adapters.api.activityimpl.uniform.DriverAdapter; import io.nosqlbench.api.docsapi.BundledMarkdownManifest; import io.nosqlbench.api.docsapi.Docs; import io.nosqlbench.api.docsapi.DocsBinder; import io.nosqlbench.api.spi.SimpleServiceLoader; -import io.nosqlbench.engine.api.activityimpl.uniform.DriverAdapter; import io.nosqlbench.nb.annotations.Maturity; import io.nosqlbench.nb.annotations.Service; diff --git a/adapters-api/src/main/java/io/nosqlbench/engine/api/activityimpl/uniform/BaseDriverAdapter.java b/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityimpl/uniform/BaseDriverAdapter.java similarity index 96% rename from adapters-api/src/main/java/io/nosqlbench/engine/api/activityimpl/uniform/BaseDriverAdapter.java rename to adapters-api/src/main/java/io/nosqlbench/adapters/api/activityimpl/uniform/BaseDriverAdapter.java index dbb04456a..9ba7a801d 100644 --- a/adapters-api/src/main/java/io/nosqlbench/engine/api/activityimpl/uniform/BaseDriverAdapter.java +++ b/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityimpl/uniform/BaseDriverAdapter.java @@ -14,12 +14,12 @@ * limitations under the License. */ -package io.nosqlbench.engine.api.activityimpl.uniform; +package io.nosqlbench.adapters.api.activityimpl.uniform; +import io.nosqlbench.adapters.api.activityimpl.uniform.flowtypes.Op; import io.nosqlbench.api.config.standard.*; -import io.nosqlbench.engine.api.activityimpl.uniform.fieldmappers.FieldDestructuringMapper; -import io.nosqlbench.engine.api.activityimpl.uniform.flowtypes.Op; -import io.nosqlbench.engine.api.templating.ParsedOp; +import io.nosqlbench.adapters.api.activityimpl.uniform.fieldmappers.FieldDestructuringMapper; +import io.nosqlbench.adapters.api.templating.ParsedOp; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; diff --git a/adapters-api/src/main/java/io/nosqlbench/engine/api/activityimpl/uniform/DriverAdapter.java b/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityimpl/uniform/DriverAdapter.java similarity index 96% rename from adapters-api/src/main/java/io/nosqlbench/engine/api/activityimpl/uniform/DriverAdapter.java rename to adapters-api/src/main/java/io/nosqlbench/adapters/api/activityimpl/uniform/DriverAdapter.java index a3aab98e6..f4468a7fe 100644 --- a/adapters-api/src/main/java/io/nosqlbench/engine/api/activityimpl/uniform/DriverAdapter.java +++ b/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityimpl/uniform/DriverAdapter.java @@ -14,14 +14,14 @@ * limitations under the License. */ -package io.nosqlbench.engine.api.activityimpl.uniform; +package io.nosqlbench.adapters.api.activityimpl.uniform; +import io.nosqlbench.adapters.api.activityimpl.OpDispenser; +import io.nosqlbench.adapters.api.activityimpl.OpMapper; +import io.nosqlbench.adapters.api.activityimpl.uniform.flowtypes.Op; import io.nosqlbench.api.docsapi.Docs; import io.nosqlbench.api.docsapi.DocsBinder; -import io.nosqlbench.engine.api.activityimpl.OpDispenser; -import io.nosqlbench.engine.api.activityimpl.OpMapper; -import io.nosqlbench.engine.api.activityimpl.uniform.flowtypes.Op; -import io.nosqlbench.engine.api.templating.ParsedOp; +import io.nosqlbench.adapters.api.templating.ParsedOp; import io.nosqlbench.nb.annotations.Maturity; import io.nosqlbench.nb.annotations.Service; import io.nosqlbench.api.config.standard.NBConfiguration; @@ -107,7 +107,7 @@ public interface DriverAdapter { * the fields in the op template before they are interpreted canonically. * At this level, the transform is applied once to the input map * (once per op template) to yield the map that is provided to - * {@link io.nosqlbench.engine.api.activityimpl.OpMapper} implementations. + * {@link OpMapper} implementations. * * @return A function to pre-process the op template fields. */ diff --git a/adapters-api/src/main/java/io/nosqlbench/engine/api/activityimpl/uniform/DriverSpaceCache.java b/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityimpl/uniform/DriverSpaceCache.java similarity index 97% rename from adapters-api/src/main/java/io/nosqlbench/engine/api/activityimpl/uniform/DriverSpaceCache.java rename to adapters-api/src/main/java/io/nosqlbench/adapters/api/activityimpl/uniform/DriverSpaceCache.java index 207792538..a58007586 100644 --- a/adapters-api/src/main/java/io/nosqlbench/engine/api/activityimpl/uniform/DriverSpaceCache.java +++ b/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityimpl/uniform/DriverSpaceCache.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package io.nosqlbench.engine.api.activityimpl.uniform; +package io.nosqlbench.adapters.api.activityimpl.uniform; import java.util.Collections; import java.util.Map; diff --git a/nb-api/src/main/java/io/nosqlbench/api/errors/ExpectedResultVerificationError.java b/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityimpl/uniform/DryRunOp.java similarity index 51% rename from nb-api/src/main/java/io/nosqlbench/api/errors/ExpectedResultVerificationError.java rename to adapters-api/src/main/java/io/nosqlbench/adapters/api/activityimpl/uniform/DryRunOp.java index 44d70c594..9b5bdabd6 100644 --- a/nb-api/src/main/java/io/nosqlbench/api/errors/ExpectedResultVerificationError.java +++ b/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityimpl/uniform/DryRunOp.java @@ -14,25 +14,19 @@ * limitations under the License. */ -package io.nosqlbench.api.errors; +package io.nosqlbench.adapters.api.activityimpl.uniform; -import java.io.Serializable; +import io.nosqlbench.adapters.api.activityimpl.uniform.flowtypes.Op; +import io.nosqlbench.adapters.api.activityimpl.uniform.flowtypes.RunnableOp; -public class ExpectedResultVerificationError extends RuntimeException { - private final int triesLeft; - private final Serializable expectedResultExpression; +public class DryRunOp implements RunnableOp { - public ExpectedResultVerificationError(int triesLeft, Serializable expectedResultExpression) { - this.triesLeft = triesLeft; - this.expectedResultExpression = expectedResultExpression; + private final Op op; + + public DryRunOp(Op op) { + this.op = op; } - - public int getTriesLeft() { - return triesLeft; + @Override + public void run() { } - - public Serializable getExpectedResultExpression() { - return expectedResultExpression; - } - } diff --git a/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityimpl/uniform/DryRunOpDispenserWrapper.java b/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityimpl/uniform/DryRunOpDispenserWrapper.java new file mode 100644 index 000000000..13bee89fa --- /dev/null +++ b/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityimpl/uniform/DryRunOpDispenserWrapper.java @@ -0,0 +1,37 @@ +/* + * 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.Op; +import io.nosqlbench.adapters.api.templating.ParsedOp; + +public class DryRunOpDispenserWrapper extends BaseOpDispenser { + + private final OpDispenser realDispenser; + + public DryRunOpDispenserWrapper(DriverAdapter adapter, ParsedOp pop, OpDispenser realDispenser) { + super(adapter, pop); + this.realDispenser = realDispenser; + } + @Override + public DryRunOp apply(long cycle) { + Op op = realDispenser.apply(cycle); + return new DryRunOp(op); + } +} diff --git a/adapters-api/src/main/java/io/nosqlbench/engine/api/activityimpl/uniform/ResultProcessor.java b/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityimpl/uniform/ResultProcessor.java similarity index 94% rename from adapters-api/src/main/java/io/nosqlbench/engine/api/activityimpl/uniform/ResultProcessor.java rename to adapters-api/src/main/java/io/nosqlbench/adapters/api/activityimpl/uniform/ResultProcessor.java index 6c7438331..84ab84f34 100644 --- a/adapters-api/src/main/java/io/nosqlbench/engine/api/activityimpl/uniform/ResultProcessor.java +++ b/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityimpl/uniform/ResultProcessor.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. @@ -14,7 +14,7 @@ * limitations under the License. */ -package io.nosqlbench.engine.api.activityimpl.uniform; +package io.nosqlbench.adapters.api.activityimpl.uniform; /** * A result processor can consume data from a result which is contains of a set of diff --git a/adapters-api/src/main/java/io/nosqlbench/engine/api/activityimpl/uniform/decorators/SyntheticOpTemplateProvider.java b/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityimpl/uniform/decorators/SyntheticOpTemplateProvider.java similarity index 86% rename from adapters-api/src/main/java/io/nosqlbench/engine/api/activityimpl/uniform/decorators/SyntheticOpTemplateProvider.java rename to adapters-api/src/main/java/io/nosqlbench/adapters/api/activityimpl/uniform/decorators/SyntheticOpTemplateProvider.java index 8aab2f340..1d85b9266 100644 --- a/adapters-api/src/main/java/io/nosqlbench/engine/api/activityimpl/uniform/decorators/SyntheticOpTemplateProvider.java +++ b/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityimpl/uniform/decorators/SyntheticOpTemplateProvider.java @@ -14,11 +14,11 @@ * limitations under the License. */ -package io.nosqlbench.engine.api.activityimpl.uniform.decorators; +package io.nosqlbench.adapters.api.activityimpl.uniform.decorators; -import io.nosqlbench.engine.api.activityconfig.yaml.OpTemplate; -import io.nosqlbench.engine.api.activityconfig.yaml.OpsDocList; -import io.nosqlbench.engine.api.templating.DriverAdapterDecorators; +import io.nosqlbench.adapters.api.activityconfig.yaml.OpTemplate; +import io.nosqlbench.adapters.api.activityconfig.yaml.OpsDocList; +import io.nosqlbench.adapters.api.templating.DriverAdapterDecorators; import java.util.List; import java.util.Map; diff --git a/adapters-api/src/main/java/io/nosqlbench/engine/api/activityimpl/uniform/fieldmappers/FieldDestructuringMapper.java b/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityimpl/uniform/fieldmappers/FieldDestructuringMapper.java similarity index 95% rename from adapters-api/src/main/java/io/nosqlbench/engine/api/activityimpl/uniform/fieldmappers/FieldDestructuringMapper.java rename to adapters-api/src/main/java/io/nosqlbench/adapters/api/activityimpl/uniform/fieldmappers/FieldDestructuringMapper.java index d07c26f0f..9e46f7163 100644 --- a/adapters-api/src/main/java/io/nosqlbench/engine/api/activityimpl/uniform/fieldmappers/FieldDestructuringMapper.java +++ b/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityimpl/uniform/fieldmappers/FieldDestructuringMapper.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. @@ -14,7 +14,7 @@ * limitations under the License. */ -package io.nosqlbench.engine.api.activityimpl.uniform.fieldmappers; +package io.nosqlbench.adapters.api.activityimpl.uniform.fieldmappers; import java.util.LinkedHashMap; import java.util.Map; diff --git a/adapters-api/src/main/java/io/nosqlbench/engine/api/activityimpl/uniform/flowtypes/ChainingOp.java b/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityimpl/uniform/flowtypes/ChainingOp.java similarity index 93% rename from adapters-api/src/main/java/io/nosqlbench/engine/api/activityimpl/uniform/flowtypes/ChainingOp.java rename to adapters-api/src/main/java/io/nosqlbench/adapters/api/activityimpl/uniform/flowtypes/ChainingOp.java index 019001331..d9db8409f 100644 --- a/adapters-api/src/main/java/io/nosqlbench/engine/api/activityimpl/uniform/flowtypes/ChainingOp.java +++ b/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityimpl/uniform/flowtypes/ChainingOp.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. @@ -14,7 +14,7 @@ * limitations under the License. */ -package io.nosqlbench.engine.api.activityimpl.uniform.flowtypes; +package io.nosqlbench.adapters.api.activityimpl.uniform.flowtypes; import java.util.function.Function; diff --git a/adapters-api/src/main/java/io/nosqlbench/engine/api/activityimpl/uniform/flowtypes/CycleOp.java b/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityimpl/uniform/flowtypes/CycleOp.java similarity index 84% rename from adapters-api/src/main/java/io/nosqlbench/engine/api/activityimpl/uniform/flowtypes/CycleOp.java rename to adapters-api/src/main/java/io/nosqlbench/adapters/api/activityimpl/uniform/flowtypes/CycleOp.java index 58dfe8e1f..98bb56da6 100644 --- a/adapters-api/src/main/java/io/nosqlbench/engine/api/activityimpl/uniform/flowtypes/CycleOp.java +++ b/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityimpl/uniform/flowtypes/CycleOp.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. @@ -14,7 +14,10 @@ * limitations under the License. */ -package io.nosqlbench.engine.api.activityimpl.uniform.flowtypes; +package io.nosqlbench.adapters.api.activityimpl.uniform.flowtypes; + +import io.nosqlbench.adapters.api.activityimpl.OpDispenser; +import io.nosqlbench.adapters.api.activityimpl.OpMapper; import java.util.function.LongFunction; @@ -34,8 +37,8 @@ import java.util.function.LongFunction; *

* If you are using the value in this call to select a specific type of behavior, it is very * likely a candidate for factoring into separate op implementations. - * The {@link io.nosqlbench.engine.api.activityimpl.OpMapper} - * and {@link io.nosqlbench.engine.api.activityimpl.OpDispenser} abstractions are meant to move + * The {@link OpMapper} + * and {@link OpDispenser} abstractions are meant to move * op type selection and scheduling to earlier in the activity. *

* diff --git a/adapters-api/src/main/java/io/nosqlbench/engine/api/activityimpl/uniform/flowtypes/Op.java b/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityimpl/uniform/flowtypes/Op.java similarity index 95% rename from adapters-api/src/main/java/io/nosqlbench/engine/api/activityimpl/uniform/flowtypes/Op.java rename to adapters-api/src/main/java/io/nosqlbench/adapters/api/activityimpl/uniform/flowtypes/Op.java index 11b47d603..4d271da13 100644 --- a/adapters-api/src/main/java/io/nosqlbench/engine/api/activityimpl/uniform/flowtypes/Op.java +++ b/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityimpl/uniform/flowtypes/Op.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package io.nosqlbench.engine.api.activityimpl.uniform.flowtypes; +package io.nosqlbench.adapters.api.activityimpl.uniform.flowtypes; /** *

This is the root type of any operation which is used in a NoSQLBench diff --git a/adapters-api/src/main/java/io/nosqlbench/engine/api/activityimpl/uniform/flowtypes/OpGenerator.java b/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityimpl/uniform/flowtypes/OpGenerator.java similarity index 92% rename from adapters-api/src/main/java/io/nosqlbench/engine/api/activityimpl/uniform/flowtypes/OpGenerator.java rename to adapters-api/src/main/java/io/nosqlbench/adapters/api/activityimpl/uniform/flowtypes/OpGenerator.java index f42700fbe..1b5b1a34d 100644 --- a/adapters-api/src/main/java/io/nosqlbench/engine/api/activityimpl/uniform/flowtypes/OpGenerator.java +++ b/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityimpl/uniform/flowtypes/OpGenerator.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. @@ -14,7 +14,7 @@ * limitations under the License. */ -package io.nosqlbench.engine.api.activityimpl.uniform.flowtypes; +package io.nosqlbench.adapters.api.activityimpl.uniform.flowtypes; /** *

If an Op implements OpGenerator, then it will be asked for chained diff --git a/adapters-api/src/main/java/io/nosqlbench/engine/api/activityimpl/uniform/flowtypes/OpResultSize.java b/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityimpl/uniform/flowtypes/OpResultSize.java similarity index 90% rename from adapters-api/src/main/java/io/nosqlbench/engine/api/activityimpl/uniform/flowtypes/OpResultSize.java rename to adapters-api/src/main/java/io/nosqlbench/adapters/api/activityimpl/uniform/flowtypes/OpResultSize.java index 6527529a2..368b7d7a0 100644 --- a/adapters-api/src/main/java/io/nosqlbench/engine/api/activityimpl/uniform/flowtypes/OpResultSize.java +++ b/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityimpl/uniform/flowtypes/OpResultSize.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. @@ -14,7 +14,7 @@ * limitations under the License. */ -package io.nosqlbench.engine.api.activityimpl.uniform.flowtypes; +package io.nosqlbench.adapters.api.activityimpl.uniform.flowtypes; /** * Provide the result size for an operation. diff --git a/adapters-api/src/main/java/io/nosqlbench/engine/api/activityimpl/uniform/flowtypes/RunnableOp.java b/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityimpl/uniform/flowtypes/RunnableOp.java similarity index 91% rename from adapters-api/src/main/java/io/nosqlbench/engine/api/activityimpl/uniform/flowtypes/RunnableOp.java rename to adapters-api/src/main/java/io/nosqlbench/adapters/api/activityimpl/uniform/flowtypes/RunnableOp.java index 0cfc2f984..0bab5c267 100644 --- a/adapters-api/src/main/java/io/nosqlbench/engine/api/activityimpl/uniform/flowtypes/RunnableOp.java +++ b/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityimpl/uniform/flowtypes/RunnableOp.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. @@ -14,7 +14,7 @@ * limitations under the License. */ -package io.nosqlbench.engine.api.activityimpl.uniform.flowtypes; +package io.nosqlbench.adapters.api.activityimpl.uniform.flowtypes; /** *

RunnableOp

diff --git a/adapters-api/src/main/java/io/nosqlbench/engine/api/activityimpl/uniform/flowtypes/RunnableSource.java b/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityimpl/uniform/flowtypes/RunnableSource.java similarity index 86% rename from adapters-api/src/main/java/io/nosqlbench/engine/api/activityimpl/uniform/flowtypes/RunnableSource.java rename to adapters-api/src/main/java/io/nosqlbench/adapters/api/activityimpl/uniform/flowtypes/RunnableSource.java index 1d838c336..12fbfd29f 100644 --- a/adapters-api/src/main/java/io/nosqlbench/engine/api/activityimpl/uniform/flowtypes/RunnableSource.java +++ b/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityimpl/uniform/flowtypes/RunnableSource.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. @@ -14,7 +14,7 @@ * limitations under the License. */ -package io.nosqlbench.engine.api.activityimpl.uniform.flowtypes; +package io.nosqlbench.adapters.api.activityimpl.uniform.flowtypes; import java.util.function.Supplier; diff --git a/adapters-api/src/main/java/io/nosqlbench/engine/api/activityimpl/uniform/flowtypes/VariableCapture.java b/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityimpl/uniform/flowtypes/VariableCapture.java similarity index 94% rename from adapters-api/src/main/java/io/nosqlbench/engine/api/activityimpl/uniform/flowtypes/VariableCapture.java rename to adapters-api/src/main/java/io/nosqlbench/adapters/api/activityimpl/uniform/flowtypes/VariableCapture.java index f53349558..19c3043d2 100644 --- a/adapters-api/src/main/java/io/nosqlbench/engine/api/activityimpl/uniform/flowtypes/VariableCapture.java +++ b/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityimpl/uniform/flowtypes/VariableCapture.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package io.nosqlbench.engine.api.activityimpl.uniform.flowtypes; +package io.nosqlbench.adapters.api.activityimpl.uniform.flowtypes; import io.nosqlbench.virtdata.core.templates.ParsedTemplateString; diff --git a/adapters-api/src/main/java/io/nosqlbench/adapters/api/evalcontext/CompoundCycleFunction.java b/adapters-api/src/main/java/io/nosqlbench/adapters/api/evalcontext/CompoundCycleFunction.java new file mode 100644 index 000000000..147adef77 --- /dev/null +++ b/adapters-api/src/main/java/io/nosqlbench/adapters/api/evalcontext/CompoundCycleFunction.java @@ -0,0 +1,69 @@ +/* + * 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.adapters.api.evalcontext; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.function.BinaryOperator; + +public class CompoundCycleFunction implements CycleFunction { + + private final List> functions = new ArrayList<>(); + private final BinaryOperator reducer; + + public CompoundCycleFunction(BinaryOperator reducer, CycleFunction ... functions) { + this(reducer, Arrays.asList(functions)); + + } + public CompoundCycleFunction(BinaryOperator reducer, List> functions) { + this.functions.addAll(functions); + this.reducer = reducer; + } + + @Override + public T apply(long value) { + return functions.stream() + .map(f -> f.apply(value)) + .reduce(reducer) + .get(); + } + + @Override + public CycleFunction newInstance() { + ArrayList> newFunctionList = new ArrayList<>(this.functions.size()); + for (CycleFunction function : this.functions) { + newFunctionList.add(function.newInstance()); + } + return new CompoundCycleFunction(reducer, newFunctionList); + } + + @Override + public String getExpressionDetails() { + return String.join( + ", ", + functions.stream().map(f -> f.getExpressionDetails()).toList() + ); + } + + @Override + public void setVariable(String name, V value) { + for (CycleFunction function : functions) { + function.setVariable(name, value); + } + } +} diff --git a/adapters-api/src/main/java/io/nosqlbench/adapters/api/evalcontext/CycleFunction.java b/adapters-api/src/main/java/io/nosqlbench/adapters/api/evalcontext/CycleFunction.java new file mode 100644 index 000000000..dce32ad17 --- /dev/null +++ b/adapters-api/src/main/java/io/nosqlbench/adapters/api/evalcontext/CycleFunction.java @@ -0,0 +1,38 @@ +/* + * 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.adapters.api.evalcontext; + +import java.util.function.LongFunction; + +public interface CycleFunction extends LongFunction, VariableInjectable, ExpressionDetails { + + /** + * Produce a result from a cycle. This is an encapsulating type for any implementations which need + * to + * @param value the function argument + * @return + */ + @Override + T apply(long value); + + /** + * Get a new instance of a CycleFunction, based on the current one, but with its own instance of any + * non-threadsafe elements. + * @return A new CycleFunction + */ + CycleFunction newInstance(); +} diff --git a/adapters-api/src/main/java/io/nosqlbench/adapters/api/evalcontext/CycleFunctions.java b/adapters-api/src/main/java/io/nosqlbench/adapters/api/evalcontext/CycleFunctions.java new file mode 100644 index 000000000..6821b617f --- /dev/null +++ b/adapters-api/src/main/java/io/nosqlbench/adapters/api/evalcontext/CycleFunctions.java @@ -0,0 +1,59 @@ +/* + * 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.adapters.api.evalcontext; + +import java.util.List; +import java.util.function.BinaryOperator; + +public class CycleFunctions { + public static CycleFunction of(BinaryOperator reducer, List> verifiers, T defaultResult) { + if (verifiers.size()==0) { + return new NOOPVerifier<>(defaultResult); + } else if (verifiers.size()==1) { + return verifiers.get(0); + } else { + return new CompoundCycleFunction<>(reducer, verifiers); + } + } + + public static class NOOPVerifier implements CycleFunction { + private final V defaultResult; + + public NOOPVerifier(V defaultResult) { + this.defaultResult = defaultResult; + } + + @Override + public V apply(long value) { + return defaultResult; + } + + @Override + public CycleFunction newInstance() { + return new NOOPVerifier<>(defaultResult); + } + + @Override + public String getExpressionDetails() { + return "return "+ defaultResult; + } + + @Override + public void setVariable(String name, V value) { + } + } +} diff --git a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/core/ops/fluent/FluentOp.java b/adapters-api/src/main/java/io/nosqlbench/adapters/api/evalcontext/ExpressionDetails.java similarity index 78% rename from engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/core/ops/fluent/FluentOp.java rename to adapters-api/src/main/java/io/nosqlbench/adapters/api/evalcontext/ExpressionDetails.java index a05fc9724..c5b49c816 100644 --- a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/core/ops/fluent/FluentOp.java +++ b/adapters-api/src/main/java/io/nosqlbench/adapters/api/evalcontext/ExpressionDetails.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. @@ -14,8 +14,8 @@ * limitations under the License. */ -package io.nosqlbench.engine.api.activityapi.core.ops.fluent; - -public interface FluentOp { +package io.nosqlbench.adapters.api.evalcontext; +public interface ExpressionDetails { + String getExpressionDetails(); } diff --git a/adapters-api/src/main/java/io/nosqlbench/adapters/api/evalcontext/GroovyBooleanCycleFunction.java b/adapters-api/src/main/java/io/nosqlbench/adapters/api/evalcontext/GroovyBooleanCycleFunction.java new file mode 100644 index 000000000..65ccbf96b --- /dev/null +++ b/adapters-api/src/main/java/io/nosqlbench/adapters/api/evalcontext/GroovyBooleanCycleFunction.java @@ -0,0 +1,34 @@ +/* + * 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.adapters.api.evalcontext; + +import io.nosqlbench.virtdata.core.templates.ParsedTemplateString; + +import java.util.List; + +public class GroovyBooleanCycleFunction extends GroovyCycleFunction { + + public GroovyBooleanCycleFunction(String name, ParsedTemplateString template, List imports) { + super(name, template, imports); + } + + @Override + public Boolean apply(long value) { + return super.apply(value); + } + +} diff --git a/adapters-api/src/main/java/io/nosqlbench/adapters/api/evalcontext/GroovyCycleFunction.java b/adapters-api/src/main/java/io/nosqlbench/adapters/api/evalcontext/GroovyCycleFunction.java new file mode 100644 index 000000000..8c459d4db --- /dev/null +++ b/adapters-api/src/main/java/io/nosqlbench/adapters/api/evalcontext/GroovyCycleFunction.java @@ -0,0 +1,146 @@ +/* + * 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.adapters.api.evalcontext; + +import groovy.lang.Binding; +import groovy.lang.GroovyShell; +import groovy.lang.Script; +import io.nosqlbench.adapters.api.activityimpl.BaseOpDispenser; +import io.nosqlbench.virtdata.core.bindings.Bindings; +import io.nosqlbench.virtdata.core.bindings.BindingsTemplate; +import io.nosqlbench.virtdata.core.templates.BindPoint; +import io.nosqlbench.virtdata.core.templates.ParsedTemplateString; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; +import org.codehaus.groovy.control.CompilerConfiguration; +import org.codehaus.groovy.control.customizers.ImportCustomizer; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +public class GroovyCycleFunction implements CycleFunction { + private final static Logger logger = LogManager.getLogger(GroovyBooleanCycleFunction.class); + private final String name; + private final List imports; + + protected String scriptText; // Groovy script as provided + protected final Script script; // Groovy Script as compiled + protected final Binding variableBindings; // Groovy binding layer + protected final Bindings bindingFunctions; // NB bindings + + /** + * Instantiate a cycle function from basic types + * @param scriptText The raw script text, not including any bind point or capture point syntax + * @param bindingSpecs The names and recipes of bindings which are referenced in the scriptText + * @param imports The package imports to be installed into the execution environment + */ + public GroovyCycleFunction(String name, String scriptText, Map bindingSpecs, List imports) { + this.name = name; + this.scriptText =scriptText; + this.imports = imports; + + // scripting env variable bindings + this.variableBindings = new Binding(); + + // virtdata bindings to be evaluated at cycle time + this.bindingFunctions = new BindingsTemplate().addFieldBindings(bindingSpecs).resolveBindings(); + + this.script = compileScript(this.scriptText, imports); + } + + public GroovyCycleFunction(String name, ParsedTemplateString template, List imports) { + this( + name, + template.getPositionalStatement(), + resolveBindings(template.getBindPoints()), + imports + ); + } + + private Script compileScript(String scriptText, List imports) { + // add classes which are in the imports to the groovy evaluation context + String[] verifiedClasses = expandClassNames(imports); + + CompilerConfiguration compilerConfiguration = new CompilerConfiguration(); + ImportCustomizer importer = new ImportCustomizer().addImports(verifiedClasses); + compilerConfiguration.addCompilationCustomizers(importer); + + GroovyShell gshell = new GroovyShell(new Binding(), compilerConfiguration); + return gshell.parse(scriptText); + } + + private static Map resolveBindings(List bindPoints) { + return new BindingsTemplate(bindPoints).getMap(); + } + + + protected String[] expandClassNames(List groovyImportedClasses) { + ClassLoader loader = BaseOpDispenser.class.getClassLoader(); + + List classNames = new ArrayList<>(); + for (String candidateName : groovyImportedClasses) { + if (candidateName.endsWith(".*")) { + throw new RuntimeException("You can not use wildcard package imports like '" + candidateName + "'"); + } + try { + loader.loadClass(candidateName); + classNames.add(candidateName); + logger.debug(() -> "added import " + candidateName); + } catch (Exception e) { + throw new RuntimeException("Class '" + candidateName + "' was not found for groovy imports."); + } + } + return classNames.toArray(new String[0]); + } + + @Override + public String getExpressionDetails() { + return this.scriptText; + } + + + @Override + public void setVariable(String name, V value) { + this.variableBindings.setVariable(name, value); + } + + @Override + public T apply(long value) { + Map values = bindingFunctions.getAllMap(value); + values.forEach((k,v)-> variableBindings.setVariable(k,v)); + T result= (T) script.run(); + return result; + } + + @Override + public CycleFunction newInstance() { + return new GroovyCycleFunction(name, scriptText, bindingFunctions,imports); + } + + private GroovyCycleFunction(String name, String scriptText, Bindings bindingFunctions, List imports) { + this.name = name; + this.scriptText = scriptText; + this.bindingFunctions = bindingFunctions; + this.imports = imports; + + this.script = compileScript(scriptText,imports); + this.variableBindings=script.getBinding(); + } + + +} diff --git a/adapters-api/src/main/java/io/nosqlbench/adapters/api/evalcontext/GroovyObjectEqualityFunction.java b/adapters-api/src/main/java/io/nosqlbench/adapters/api/evalcontext/GroovyObjectEqualityFunction.java new file mode 100644 index 000000000..cbefd1c6f --- /dev/null +++ b/adapters-api/src/main/java/io/nosqlbench/adapters/api/evalcontext/GroovyObjectEqualityFunction.java @@ -0,0 +1,58 @@ +/* + * 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.adapters.api.evalcontext; + +import io.nosqlbench.virtdata.core.templates.ParsedTemplateString; + +import java.util.List; +import java.util.Map; + +/** + * This evaluator uses {@link Object#equals(Object)} to compare the results of an operation with + * a constructed value. The script used is meant to only construct the object to compare with. + * All context variables can be injected into the script context except for one, the result + * variable. This is intercepted and then used as a basis for comparison to the result of executing the + * script. + */ +public class GroovyObjectEqualityFunction extends GroovyCycleFunction { + + private Object result; + + public GroovyObjectEqualityFunction(String name, ParsedTemplateString template, List imports) { + super(name, template, imports); + } + + @Override + public Boolean apply(long value) { + Map values = bindingFunctions.getAllMap(value); + values.forEach((k,v)-> variableBindings.setVariable(k,v)); + Object scriptResult= script.run(); + return scriptResult.equals(result); + } + + /** + * Intercept and reserve the value of the result injected variable for comparison to the evaluated script result later. + */ + public void setVariable(String name, Object value) { + if (name.equals("result")) { + this.result = value; + return; + } + + super.setVariable(name, value); + } +} diff --git a/adapters-api/src/main/java/io/nosqlbench/adapters/api/evalcontext/ResultMismatchError.java b/adapters-api/src/main/java/io/nosqlbench/adapters/api/evalcontext/ResultMismatchError.java new file mode 100644 index 000000000..9b4b9e760 --- /dev/null +++ b/adapters-api/src/main/java/io/nosqlbench/adapters/api/evalcontext/ResultMismatchError.java @@ -0,0 +1,50 @@ +/* + * 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.evalcontext; + +import java.io.Serializable; + +public class ResultMismatchError extends RuntimeException { + private final int triesLeft; + private final String expressionDetails; + + public ResultMismatchError(String message, int triesLeft, String expressionDetails) { + super("Error while verifying result with " + triesLeft + " tries remaining: " + message); + this.triesLeft = triesLeft; + this.expressionDetails = expressionDetails; + } + + public ResultMismatchError(Throwable throwable, int triesLeft, String expressionDetails) { + super("Error while verifying result with " + triesLeft + " tries remaining: " + throwable.getMessage(),throwable); + this.triesLeft = triesLeft; + this.expressionDetails = expressionDetails; + } + + @Override + public String getMessage() { + return super.getMessage(); + } + + public int getTriesLeft() { + return triesLeft; + } + + public Serializable getExpressionDetails() { + return expressionDetails; + } + +} diff --git a/adapters-api/src/main/java/io/nosqlbench/adapters/api/evalcontext/ResultVerificationError.java b/adapters-api/src/main/java/io/nosqlbench/adapters/api/evalcontext/ResultVerificationError.java new file mode 100644 index 000000000..15c8ad7c3 --- /dev/null +++ b/adapters-api/src/main/java/io/nosqlbench/adapters/api/evalcontext/ResultVerificationError.java @@ -0,0 +1,50 @@ +/* + * 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.evalcontext; + +import java.io.Serializable; + +public class ResultVerificationError extends RuntimeException { + private final int triesLeft; + private final String expressionDetails; + + public ResultVerificationError(String message, int triesLeft, String expressionDetails) { + super("Error while verifying result with " + triesLeft + " tries remaining: " + message); + this.triesLeft = triesLeft; + this.expressionDetails = expressionDetails; + } + + public ResultVerificationError(Throwable throwable, int triesLeft, String expressionDetails) { + super("Error while verifying result with " + triesLeft + " tries remaining: " + throwable.getMessage(),throwable); + this.triesLeft = triesLeft; + this.expressionDetails = expressionDetails; + } + + @Override + public String getMessage() { + return super.getMessage(); + } + + public int getTriesLeft() { + return triesLeft; + } + + public Serializable getExpressionDetails() { + return expressionDetails; + } + +} diff --git a/adapters-api/src/main/java/io/nosqlbench/adapters/api/evalcontext/VariableInjectable.java b/adapters-api/src/main/java/io/nosqlbench/adapters/api/evalcontext/VariableInjectable.java new file mode 100644 index 000000000..d4980614c --- /dev/null +++ b/adapters-api/src/main/java/io/nosqlbench/adapters/api/evalcontext/VariableInjectable.java @@ -0,0 +1,28 @@ +/* + * 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.adapters.api.evalcontext; + +/** + * Implementors of this type can have variables set on them for later use. + */ +public interface VariableInjectable { + + /** + * Set a variable by name. + */ + void setVariable(String name, V value); +} diff --git a/adapters-api/src/main/java/io/nosqlbench/engine/api/metrics/EndToEndMetricsAdapterUtil.java b/adapters-api/src/main/java/io/nosqlbench/adapters/api/metrics/EndToEndMetricsAdapterUtil.java similarity index 97% rename from adapters-api/src/main/java/io/nosqlbench/engine/api/metrics/EndToEndMetricsAdapterUtil.java rename to adapters-api/src/main/java/io/nosqlbench/adapters/api/metrics/EndToEndMetricsAdapterUtil.java index 6d5ba33c8..48f7f9d55 100644 --- a/adapters-api/src/main/java/io/nosqlbench/engine/api/metrics/EndToEndMetricsAdapterUtil.java +++ b/adapters-api/src/main/java/io/nosqlbench/adapters/api/metrics/EndToEndMetricsAdapterUtil.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package io.nosqlbench.engine.api.metrics; +package io.nosqlbench.adapters.api.metrics; import java.util.Map; import java.util.Map.Entry; diff --git a/adapters-api/src/main/java/io/nosqlbench/engine/api/metrics/MessageSequenceNumberSendingHandler.java b/adapters-api/src/main/java/io/nosqlbench/adapters/api/metrics/MessageSequenceNumberSendingHandler.java similarity index 96% rename from adapters-api/src/main/java/io/nosqlbench/engine/api/metrics/MessageSequenceNumberSendingHandler.java rename to adapters-api/src/main/java/io/nosqlbench/adapters/api/metrics/MessageSequenceNumberSendingHandler.java index 92da3caca..e55864907 100644 --- a/adapters-api/src/main/java/io/nosqlbench/engine/api/metrics/MessageSequenceNumberSendingHandler.java +++ b/adapters-api/src/main/java/io/nosqlbench/adapters/api/metrics/MessageSequenceNumberSendingHandler.java @@ -14,9 +14,9 @@ * limitations under the License. */ -package io.nosqlbench.engine.api.metrics; +package io.nosqlbench.adapters.api.metrics; -import io.nosqlbench.engine.api.metrics.EndToEndMetricsAdapterUtil.MSG_SEQ_ERROR_SIMU_TYPE; +import io.nosqlbench.adapters.api.metrics.EndToEndMetricsAdapterUtil.MSG_SEQ_ERROR_SIMU_TYPE; import org.apache.commons.lang3.RandomUtils; import java.util.ArrayDeque; diff --git a/adapters-api/src/main/java/io/nosqlbench/engine/api/metrics/ReceivedMessageSequenceTracker.java b/adapters-api/src/main/java/io/nosqlbench/adapters/api/metrics/ReceivedMessageSequenceTracker.java similarity index 99% rename from adapters-api/src/main/java/io/nosqlbench/engine/api/metrics/ReceivedMessageSequenceTracker.java rename to adapters-api/src/main/java/io/nosqlbench/adapters/api/metrics/ReceivedMessageSequenceTracker.java index 04d6393c1..d09258103 100644 --- a/adapters-api/src/main/java/io/nosqlbench/engine/api/metrics/ReceivedMessageSequenceTracker.java +++ b/adapters-api/src/main/java/io/nosqlbench/adapters/api/metrics/ReceivedMessageSequenceTracker.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package io.nosqlbench.engine.api.metrics; +package io.nosqlbench.adapters.api.metrics; import com.codahale.metrics.Counter; diff --git a/adapters-api/src/main/java/io/nosqlbench/engine/api/metrics/ThreadLocalNamedTimers.java b/adapters-api/src/main/java/io/nosqlbench/adapters/api/metrics/ThreadLocalNamedTimers.java similarity index 96% rename from adapters-api/src/main/java/io/nosqlbench/engine/api/metrics/ThreadLocalNamedTimers.java rename to adapters-api/src/main/java/io/nosqlbench/adapters/api/metrics/ThreadLocalNamedTimers.java index 113a47988..276805680 100644 --- a/adapters-api/src/main/java/io/nosqlbench/engine/api/metrics/ThreadLocalNamedTimers.java +++ b/adapters-api/src/main/java/io/nosqlbench/adapters/api/metrics/ThreadLocalNamedTimers.java @@ -14,12 +14,12 @@ * limitations under the License. */ -package io.nosqlbench.engine.api.metrics; +package io.nosqlbench.adapters.api.metrics; import com.codahale.metrics.Timer; import com.codahale.metrics.Timer.Context; import io.nosqlbench.api.engine.metrics.ActivityMetrics; -import io.nosqlbench.engine.api.templating.ParsedOp; +import io.nosqlbench.adapters.api.templating.ParsedOp; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; diff --git a/adapters-api/src/main/java/io/nosqlbench/engine/api/specifications/SpecDocsManifest.java b/adapters-api/src/main/java/io/nosqlbench/adapters/api/specifications/SpecDocsManifest.java similarity index 96% rename from adapters-api/src/main/java/io/nosqlbench/engine/api/specifications/SpecDocsManifest.java rename to adapters-api/src/main/java/io/nosqlbench/adapters/api/specifications/SpecDocsManifest.java index f5e56a5c8..91a2ee00d 100644 --- a/adapters-api/src/main/java/io/nosqlbench/engine/api/specifications/SpecDocsManifest.java +++ b/adapters-api/src/main/java/io/nosqlbench/adapters/api/specifications/SpecDocsManifest.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package io.nosqlbench.engine.api.specifications; +package io.nosqlbench.adapters.api.specifications; import io.nosqlbench.api.content.Content; import io.nosqlbench.api.content.NBIO; diff --git a/adapters-api/src/main/java/io/nosqlbench/engine/api/templating/CommandTemplate.java b/adapters-api/src/main/java/io/nosqlbench/adapters/api/templating/CommandTemplate.java similarity index 99% rename from adapters-api/src/main/java/io/nosqlbench/engine/api/templating/CommandTemplate.java rename to adapters-api/src/main/java/io/nosqlbench/adapters/api/templating/CommandTemplate.java index 4329e5698..aec92957c 100644 --- a/adapters-api/src/main/java/io/nosqlbench/engine/api/templating/CommandTemplate.java +++ b/adapters-api/src/main/java/io/nosqlbench/adapters/api/templating/CommandTemplate.java @@ -14,9 +14,9 @@ * limitations under the License. */ -package io.nosqlbench.engine.api.templating; +package io.nosqlbench.adapters.api.templating; -import io.nosqlbench.engine.api.activityconfig.yaml.OpTemplate; +import io.nosqlbench.adapters.api.activityconfig.yaml.OpTemplate; import io.nosqlbench.api.config.params.ParamsParser; import io.nosqlbench.api.errors.BasicError; import io.nosqlbench.virtdata.core.bindings.BindingsTemplate; diff --git a/adapters-api/src/main/java/io/nosqlbench/engine/api/templating/DriverAdapterDecorators.java b/adapters-api/src/main/java/io/nosqlbench/adapters/api/templating/DriverAdapterDecorators.java similarity index 82% rename from adapters-api/src/main/java/io/nosqlbench/engine/api/templating/DriverAdapterDecorators.java rename to adapters-api/src/main/java/io/nosqlbench/adapters/api/templating/DriverAdapterDecorators.java index 9d757b54c..383a1b104 100644 --- a/adapters-api/src/main/java/io/nosqlbench/engine/api/templating/DriverAdapterDecorators.java +++ b/adapters-api/src/main/java/io/nosqlbench/adapters/api/templating/DriverAdapterDecorators.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. @@ -14,11 +14,13 @@ * limitations under the License. */ -package io.nosqlbench.engine.api.templating; +package io.nosqlbench.adapters.api.templating; + +import io.nosqlbench.adapters.api.activityimpl.uniform.DriverAdapter; /** * This type simply captures (by extension) any optional decorator - * interfaces which may be implemented by a {@link io.nosqlbench.engine.api.activityimpl.uniform.DriverAdapter}. + * interfaces which may be implemented by a {@link DriverAdapter}. * Thus, it is mostly for documentation. * * Decorator interfaces are used within NoSQLBench where implementations are truly optional, diff --git a/adapters-api/src/main/java/io/nosqlbench/engine/api/templating/EnumSetter.java b/adapters-api/src/main/java/io/nosqlbench/adapters/api/templating/EnumSetter.java similarity index 96% rename from adapters-api/src/main/java/io/nosqlbench/engine/api/templating/EnumSetter.java rename to adapters-api/src/main/java/io/nosqlbench/adapters/api/templating/EnumSetter.java index c3f9c2a74..22e0044d0 100644 --- a/adapters-api/src/main/java/io/nosqlbench/engine/api/templating/EnumSetter.java +++ b/adapters-api/src/main/java/io/nosqlbench/adapters/api/templating/EnumSetter.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. @@ -14,7 +14,7 @@ * limitations under the License. */ -package io.nosqlbench.engine.api.templating; +package io.nosqlbench.adapters.api.templating; /** * Provide a way to configure a target object of type T, given an enumeration which describes the distinct property diff --git a/adapters-api/src/main/java/io/nosqlbench/engine/api/templating/ParsedOp.java b/adapters-api/src/main/java/io/nosqlbench/adapters/api/templating/ParsedOp.java similarity index 98% rename from adapters-api/src/main/java/io/nosqlbench/engine/api/templating/ParsedOp.java rename to adapters-api/src/main/java/io/nosqlbench/adapters/api/templating/ParsedOp.java index d359ebbde..eb585cf87 100644 --- a/adapters-api/src/main/java/io/nosqlbench/engine/api/templating/ParsedOp.java +++ b/adapters-api/src/main/java/io/nosqlbench/adapters/api/templating/ParsedOp.java @@ -14,8 +14,9 @@ * limitations under the License. */ -package io.nosqlbench.engine.api.templating; +package io.nosqlbench.adapters.api.templating; +import io.nosqlbench.adapters.api.activityconfig.yaml.OpTemplate; import io.nosqlbench.api.config.NBLabeledElement; import io.nosqlbench.api.config.NBLabels; import io.nosqlbench.api.config.fieldreaders.DynamicFieldReader; @@ -23,7 +24,9 @@ import io.nosqlbench.api.config.fieldreaders.StaticFieldReader; import io.nosqlbench.api.config.standard.NBConfigError; import io.nosqlbench.api.config.standard.NBConfiguration; import io.nosqlbench.api.errors.OpConfigError; -import io.nosqlbench.engine.api.activityconfig.yaml.OpTemplate; +import io.nosqlbench.engine.api.templating.ObjectCache; +import io.nosqlbench.engine.api.templating.ParsedTemplateMap; +import io.nosqlbench.engine.api.templating.TypeAndTarget; import io.nosqlbench.engine.api.templating.binders.ArrayBinder; import io.nosqlbench.engine.api.templating.binders.ListBinder; import io.nosqlbench.engine.api.templating.binders.OrderedMapBinder; @@ -428,6 +431,10 @@ public class ParsedOp implements LongFunction>, NBLabeledElement, return this.tmap.getAsStringTemplate(fieldname); } + public Optional takeAsOptionalStringTemplate(String fieldname) { + return this.tmap.takeAsOptionalStringTemplate(fieldname); + } + /** * Get the named static field value, or return the provided default, but throw an exception if * the named field is dynamic. @@ -928,4 +935,8 @@ public class ParsedOp implements LongFunction>, NBLabeledElement, public NBLabels getLabels() { return labels; } + + public Map getBindPoints() { + return null; + } } diff --git a/adapters-api/src/main/java/io/nosqlbench/engine/api/templating/StrInterpolator.java b/adapters-api/src/main/java/io/nosqlbench/adapters/api/templating/StrInterpolator.java similarity index 98% rename from adapters-api/src/main/java/io/nosqlbench/engine/api/templating/StrInterpolator.java rename to adapters-api/src/main/java/io/nosqlbench/adapters/api/templating/StrInterpolator.java index 66d12d058..f5b5042a0 100644 --- a/adapters-api/src/main/java/io/nosqlbench/engine/api/templating/StrInterpolator.java +++ b/adapters-api/src/main/java/io/nosqlbench/adapters/api/templating/StrInterpolator.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. @@ -14,7 +14,7 @@ * limitations under the License. */ -package io.nosqlbench.engine.api.templating; +package io.nosqlbench.adapters.api.templating; import io.nosqlbench.api.engine.activityimpl.ActivityDef; import org.apache.commons.text.StrLookup; diff --git a/adapters-api/src/main/java/io/nosqlbench/engine/api/util/AdaptersApiVersionInfo.java b/adapters-api/src/main/java/io/nosqlbench/adapters/api/util/AdaptersApiVersionInfo.java similarity index 98% rename from adapters-api/src/main/java/io/nosqlbench/engine/api/util/AdaptersApiVersionInfo.java rename to adapters-api/src/main/java/io/nosqlbench/adapters/api/util/AdaptersApiVersionInfo.java index 953e69256..6e7f837ea 100644 --- a/adapters-api/src/main/java/io/nosqlbench/engine/api/util/AdaptersApiVersionInfo.java +++ b/adapters-api/src/main/java/io/nosqlbench/adapters/api/util/AdaptersApiVersionInfo.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package io.nosqlbench.engine.api.util; +package io.nosqlbench.adapters.api.util; import io.nosqlbench.api.errors.OpConfigError; diff --git a/adapters-api/src/main/java/io/nosqlbench/engine/api/util/TagFilter.java b/adapters-api/src/main/java/io/nosqlbench/adapters/api/util/TagFilter.java similarity index 99% rename from adapters-api/src/main/java/io/nosqlbench/engine/api/util/TagFilter.java rename to adapters-api/src/main/java/io/nosqlbench/adapters/api/util/TagFilter.java index 2dbb19c71..60fd57d64 100644 --- a/adapters-api/src/main/java/io/nosqlbench/engine/api/util/TagFilter.java +++ b/adapters-api/src/main/java/io/nosqlbench/adapters/api/util/TagFilter.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package io.nosqlbench.engine.api.util; +package io.nosqlbench.adapters.api.util; import io.nosqlbench.api.engine.util.Tagged; diff --git a/adapters-api/src/main/java/io/nosqlbench/engine/api/activityimpl/BaseOpDispenser.java b/adapters-api/src/main/java/io/nosqlbench/engine/api/activityimpl/BaseOpDispenser.java deleted file mode 100644 index 8c833833f..000000000 --- a/adapters-api/src/main/java/io/nosqlbench/engine/api/activityimpl/BaseOpDispenser.java +++ /dev/null @@ -1,139 +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.activityimpl; - -import com.codahale.metrics.Histogram; -import com.codahale.metrics.Timer; -import io.nosqlbench.api.config.NBLabeledElement; -import io.nosqlbench.api.config.NBLabels; -import io.nosqlbench.api.engine.metrics.ActivityMetrics; -import io.nosqlbench.api.errors.MVELCompilationError; -import io.nosqlbench.engine.api.activityimpl.uniform.DriverAdapter; -import io.nosqlbench.engine.api.activityimpl.uniform.flowtypes.Op; -import io.nosqlbench.engine.api.metrics.ThreadLocalNamedTimers; -import io.nosqlbench.engine.api.templating.ParsedOp; -import org.mvel2.MVEL; - -import java.io.Serializable; -import java.util.concurrent.TimeUnit; - -/** - * - * See {@link OpDispenser} for details on how to use this type. - *

- * Some details are tracked per op template, which aligns to the life-cycle of the op dispenser. - * Thus, each op dispenser is where the stats for all related operations are kept. - * - * @param The type of operation - */ -public abstract class BaseOpDispenser implements OpDispenser, NBLabeledElement { - - private final String opName; - private Serializable expectedResultExpression; - protected final DriverAdapter adapter; - private final NBLabels labels; - private boolean instrument; - private Histogram resultSizeHistogram; - private Timer successTimer; - private Timer errorTimer; - private final String[] timerStarts; - private final String[] timerStops; - - protected BaseOpDispenser(final DriverAdapter adapter, final ParsedOp op) { - opName = op.getName(); - this.adapter = adapter; - labels = op.getLabels(); - - this.timerStarts = op.takeOptionalStaticValue("start-timers", String.class) - .map(s -> s.split(", *")) - .orElse(null); - - this.timerStops = op.takeOptionalStaticValue("stop-timers", String.class) - .map(s -> s.split(", *")) - .orElse(null); - - if (null != timerStarts) - for (final String timerStart : this.timerStarts) ThreadLocalNamedTimers.addTimer(op, timerStart); - this.configureInstrumentation(op); - this.configureResultExpectations(op); - } - - public Serializable getExpectedResultExpression() { - return expectedResultExpression; - } - - private void configureResultExpectations(ParsedOp op) { - op.getOptionalStaticValue("expected-result", String.class) - .map(this::compileExpectedResultExpression) - .ifPresent(result -> this.expectedResultExpression = result); - } - - private Serializable compileExpectedResultExpression(String expectedResultExpression) { - try { - return MVEL.compileExpression(expectedResultExpression); - } catch (Exception e) { - throw new MVELCompilationError( - String.format("Failed to compile expected-result expression: \"%s\"", expectedResultExpression), e - ); - } - } - - String getOpName() { - return this.opName; - } - - public DriverAdapter getAdapter() { - return this.adapter; - } - - private void configureInstrumentation(final ParsedOp pop) { - instrument = pop.takeStaticConfigOr("instrument", false); - if (this.instrument) { - final int hdrDigits = pop.getStaticConfigOr("hdr_digits", 4).intValue(); - successTimer = ActivityMetrics.timer(pop, "success",hdrDigits); - errorTimer = ActivityMetrics.timer(pop, "error", hdrDigits); - resultSizeHistogram = ActivityMetrics.histogram(pop, "resultset-size", hdrDigits); - } - } - - @Override - public void onStart(final long cycleValue) { - if (null != timerStarts) ThreadLocalNamedTimers.TL_INSTANCE.get().start(this.timerStarts); - } - - @Override - public void onSuccess(final long cycleValue, final long nanoTime, final long resultSize) { - if (this.instrument) { - this.successTimer.update(nanoTime, TimeUnit.NANOSECONDS); - if (-1 < resultSize) this.resultSizeHistogram.update(resultSize); - } - if (null != timerStops) ThreadLocalNamedTimers.TL_INSTANCE.get().stop(this.timerStops); - } - - @Override - public void onError(final long cycleValue, final long resultNanos, final Throwable t) { - - if (this.instrument) this.errorTimer.update(resultNanos, TimeUnit.NANOSECONDS); - if (null != timerStops) ThreadLocalNamedTimers.TL_INSTANCE.get().stop(this.timerStops); - } - - @Override - public NBLabels getLabels() { - return this.labels; - } - -} diff --git a/adapters-api/src/main/java/io/nosqlbench/engine/api/activityimpl/uniform/DryRunOp.java b/adapters-api/src/main/java/io/nosqlbench/engine/api/activityimpl/uniform/DryRunOp.java deleted file mode 100644 index ed7663e23..000000000 --- a/adapters-api/src/main/java/io/nosqlbench/engine/api/activityimpl/uniform/DryRunOp.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * 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. - */ - -package io.nosqlbench.engine.api.activityimpl.uniform; - -import io.nosqlbench.engine.api.activityimpl.uniform.flowtypes.Op; -import io.nosqlbench.engine.api.activityimpl.uniform.flowtypes.RunnableOp; - -public class DryRunOp implements RunnableOp { - - private final Op op; - - public DryRunOp(Op op) { - this.op = op; - } - @Override - public void run() { - } -} diff --git a/adapters-api/src/main/java/io/nosqlbench/engine/api/activityimpl/uniform/DryRunOpDispenserWrapper.java b/adapters-api/src/main/java/io/nosqlbench/engine/api/activityimpl/uniform/DryRunOpDispenserWrapper.java deleted file mode 100644 index 8d017adaf..000000000 --- a/adapters-api/src/main/java/io/nosqlbench/engine/api/activityimpl/uniform/DryRunOpDispenserWrapper.java +++ /dev/null @@ -1,38 +0,0 @@ -/* - * 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. - */ - -package io.nosqlbench.engine.api.activityimpl.uniform; - -import io.nosqlbench.engine.api.activityimpl.BaseOpDispenser; -import io.nosqlbench.engine.api.activityimpl.OpDispenser; -import io.nosqlbench.engine.api.activityimpl.uniform.flowtypes.Op; -import io.nosqlbench.engine.api.templating.ParsedOp; - -public class DryRunOpDispenserWrapper extends BaseOpDispenser { - - private final OpDispenser realDispenser; - - public DryRunOpDispenserWrapper(DriverAdapter adapter, ParsedOp pop, OpDispenser realDispenser) { - super(adapter, pop); - this.realDispenser = realDispenser; - } - @Override - public DryRunOp apply(long cycle) { - Op op = realDispenser.apply(cycle); - return new DryRunOp(op); - } -} diff --git a/adapters-api/src/main/resources/workload_definition/02_workload_structure.md b/adapters-api/src/main/resources/workload_definition/02_workload_structure.md index 198e3977a..b21d11e29 100644 --- a/adapters-api/src/main/resources/workload_definition/02_workload_structure.md +++ b/adapters-api/src/main/resources/workload_definition/02_workload_structure.md @@ -387,9 +387,7 @@ blocks: { "name": "namedblock1--op2", "op": { - "stmt": "insert into bar.table (a,b,c) values (1,2,3);" - }, - "params": { + "stmt": "insert into bar.table (a,b,c) values (1,2,3);", "type": "batch" }, "tags": { @@ -462,9 +460,7 @@ blocks: { "name": "block1--op2", "op": { - "stmt": "insert into bar.table (a,b,c) values (1,2,3);" - }, - "params": { + "stmt": "insert into bar.table (a,b,c) values (1,2,3);", "type": "batch" }, "tags": { diff --git a/adapters-api/src/main/resources/workload_definition/07_template_variables.md b/adapters-api/src/main/resources/workload_definition/07_template_variables.md index 4584405d4..874389de2 100644 --- a/adapters-api/src/main/resources/workload_definition/07_template_variables.md +++ b/adapters-api/src/main/resources/workload_definition/07_template_variables.md @@ -5,33 +5,11 @@ templating language. Template variables are resolved in the workload after the on-disk format is loaded and before yaml parsing. -## angle bracket value with defaults - -*yaml:* -```yaml -name: <> -desc: <> -``` - -*json:* -```json - -{ - "name": "thedefault", - "desc": "mydescription" -} -``` - -*ops:* -```json - -[] -``` - -It's easier on syntax checkers if you use this form. - ## call form with defaults +This is the preferred form. It's easier on syntax checkers. + + *yaml:* ```yaml name: TEMPLATE(myname,thedefault) @@ -92,3 +70,52 @@ name: TEMPLATE(myname,) [] ``` + +## call form with default value specified once + +*yaml:* +```yaml +name: TEMPLATE(myname,default) +description: This is the description for name 'TEMPLATE(myname)' +``` + +*json:* +```json + +{ + "name": default, + "description": "This is the description for name 'default'" +} +``` + +*ops:* +```json + +[] +``` + +## angle bracket value with defaults + +This form is deprecated! It conflicts with the YAML syntax for anchors and aliases. It will be +removed in the next major version. + +*yaml:* +```yaml +name: <> +desc: <> +``` + +*json:* +```json + +{ + "name": "thedefault", + "desc": "mydescription" +} +``` + +*ops:* +```json + +[] +``` diff --git a/adapters-api/src/test/java/io/nosqlbench/engine/api/activityconfig/MultiMapLookupTest.java b/adapters-api/src/test/java/io/nosqlbench/adapters/api/activityconfig/MultiMapLookupTest.java similarity index 92% rename from adapters-api/src/test/java/io/nosqlbench/engine/api/activityconfig/MultiMapLookupTest.java rename to adapters-api/src/test/java/io/nosqlbench/adapters/api/activityconfig/MultiMapLookupTest.java index 3d0375d9e..19d1c8350 100644 --- a/adapters-api/src/test/java/io/nosqlbench/engine/api/activityconfig/MultiMapLookupTest.java +++ b/adapters-api/src/test/java/io/nosqlbench/adapters/api/activityconfig/MultiMapLookupTest.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. @@ -14,7 +14,7 @@ * limitations under the License. */ -package io.nosqlbench.engine.api.activityconfig; +package io.nosqlbench.adapters.api.activityconfig; import org.junit.jupiter.api.Test; diff --git a/adapters-api/src/test/java/io/nosqlbench/engine/api/activityconfig/OpsLoaderTest.java b/adapters-api/src/test/java/io/nosqlbench/adapters/api/activityconfig/OpsLoaderTest.java similarity index 90% rename from adapters-api/src/test/java/io/nosqlbench/engine/api/activityconfig/OpsLoaderTest.java rename to adapters-api/src/test/java/io/nosqlbench/adapters/api/activityconfig/OpsLoaderTest.java index 483c5d759..bfe14020c 100644 --- a/adapters-api/src/test/java/io/nosqlbench/engine/api/activityconfig/OpsLoaderTest.java +++ b/adapters-api/src/test/java/io/nosqlbench/adapters/api/activityconfig/OpsLoaderTest.java @@ -14,10 +14,10 @@ * limitations under the License. */ -package io.nosqlbench.engine.api.activityconfig; +package io.nosqlbench.adapters.api.activityconfig; -import io.nosqlbench.engine.api.activityconfig.yaml.OpsDoc; -import io.nosqlbench.engine.api.activityconfig.yaml.OpsDocList; +import io.nosqlbench.adapters.api.activityconfig.yaml.OpsDoc; +import io.nosqlbench.adapters.api.activityconfig.yaml.OpsDocList; import org.junit.jupiter.api.Test; import java.util.HashMap; diff --git a/adapters-api/src/test/java/io/nosqlbench/engine/api/activityconfig/rawyaml/BindingEscapingTest.java b/adapters-api/src/test/java/io/nosqlbench/adapters/api/activityconfig/rawyaml/BindingEscapingTest.java similarity index 94% rename from adapters-api/src/test/java/io/nosqlbench/engine/api/activityconfig/rawyaml/BindingEscapingTest.java rename to adapters-api/src/test/java/io/nosqlbench/adapters/api/activityconfig/rawyaml/BindingEscapingTest.java index 30577df93..93280eedb 100644 --- a/adapters-api/src/test/java/io/nosqlbench/engine/api/activityconfig/rawyaml/BindingEscapingTest.java +++ b/adapters-api/src/test/java/io/nosqlbench/adapters/api/activityconfig/rawyaml/BindingEscapingTest.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. @@ -14,7 +14,7 @@ * limitations under the License. */ -package io.nosqlbench.engine.api.activityconfig.rawyaml; +package io.nosqlbench.adapters.api.activityconfig.rawyaml; import io.nosqlbench.virtdata.core.bindings.DataMapper; import io.nosqlbench.virtdata.core.bindings.VirtData; diff --git a/adapters-api/src/test/java/io/nosqlbench/engine/api/activityconfig/rawyaml/OpDefTest.java b/adapters-api/src/test/java/io/nosqlbench/adapters/api/activityconfig/rawyaml/OpDefTest.java similarity index 94% rename from adapters-api/src/test/java/io/nosqlbench/engine/api/activityconfig/rawyaml/OpDefTest.java rename to adapters-api/src/test/java/io/nosqlbench/adapters/api/activityconfig/rawyaml/OpDefTest.java index 95b9e5bd1..bf2ac66d5 100644 --- a/adapters-api/src/test/java/io/nosqlbench/engine/api/activityconfig/rawyaml/OpDefTest.java +++ b/adapters-api/src/test/java/io/nosqlbench/adapters/api/activityconfig/rawyaml/OpDefTest.java @@ -14,13 +14,13 @@ * limitations under the License. */ -package io.nosqlbench.engine.api.activityconfig.rawyaml; +package io.nosqlbench.adapters.api.activityconfig.rawyaml; -import io.nosqlbench.engine.api.activityconfig.OpsLoader; -import io.nosqlbench.engine.api.activityconfig.yaml.OpTemplate; -import io.nosqlbench.engine.api.activityconfig.yaml.OpsBlock; -import io.nosqlbench.engine.api.activityconfig.yaml.OpsDoc; -import io.nosqlbench.engine.api.activityconfig.yaml.OpsDocList; +import io.nosqlbench.adapters.api.activityconfig.OpsLoader; +import io.nosqlbench.adapters.api.activityconfig.yaml.OpTemplate; +import io.nosqlbench.adapters.api.activityconfig.yaml.OpsBlock; +import io.nosqlbench.adapters.api.activityconfig.yaml.OpsDoc; +import io.nosqlbench.adapters.api.activityconfig.yaml.OpsDocList; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.junit.jupiter.api.Test; diff --git a/adapters-api/src/test/java/io/nosqlbench/engine/api/activityconfig/rawyaml/OpEscapingTest.java b/adapters-api/src/test/java/io/nosqlbench/adapters/api/activityconfig/rawyaml/OpEscapingTest.java similarity index 85% rename from adapters-api/src/test/java/io/nosqlbench/engine/api/activityconfig/rawyaml/OpEscapingTest.java rename to adapters-api/src/test/java/io/nosqlbench/adapters/api/activityconfig/rawyaml/OpEscapingTest.java index 388fcf063..b192bdd1f 100644 --- a/adapters-api/src/test/java/io/nosqlbench/engine/api/activityconfig/rawyaml/OpEscapingTest.java +++ b/adapters-api/src/test/java/io/nosqlbench/adapters/api/activityconfig/rawyaml/OpEscapingTest.java @@ -14,10 +14,13 @@ * limitations under the License. */ -package io.nosqlbench.engine.api.activityconfig.rawyaml; +package io.nosqlbench.adapters.api.activityconfig.rawyaml; -import io.nosqlbench.engine.api.activityconfig.OpsLoader; -import io.nosqlbench.engine.api.activityconfig.yaml.*; +import io.nosqlbench.adapters.api.activityconfig.OpsLoader; +import io.nosqlbench.adapters.api.activityconfig.yaml.OpTemplate; +import io.nosqlbench.adapters.api.activityconfig.yaml.OpsBlock; +import io.nosqlbench.adapters.api.activityconfig.yaml.OpsDoc; +import io.nosqlbench.adapters.api.activityconfig.yaml.OpsDocList; import org.junit.jupiter.api.BeforeAll; import org.apache.logging.log4j.Logger; import org.apache.logging.log4j.LogManager; diff --git a/adapters-api/src/test/java/io/nosqlbench/engine/api/activityconfig/rawyaml/OpVariationTests.java b/adapters-api/src/test/java/io/nosqlbench/adapters/api/activityconfig/rawyaml/OpVariationTests.java similarity index 98% rename from adapters-api/src/test/java/io/nosqlbench/engine/api/activityconfig/rawyaml/OpVariationTests.java rename to adapters-api/src/test/java/io/nosqlbench/adapters/api/activityconfig/rawyaml/OpVariationTests.java index 10cf03548..4ed8a40aa 100644 --- a/adapters-api/src/test/java/io/nosqlbench/engine/api/activityconfig/rawyaml/OpVariationTests.java +++ b/adapters-api/src/test/java/io/nosqlbench/adapters/api/activityconfig/rawyaml/OpVariationTests.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package io.nosqlbench.engine.api.activityconfig.rawyaml; +package io.nosqlbench.adapters.api.activityconfig.rawyaml; import org.apache.logging.log4j.Logger; import org.apache.logging.log4j.LogManager; diff --git a/adapters-api/src/test/java/io/nosqlbench/engine/api/activityconfig/rawyaml/RawYamlTemplateLoaderTest.java b/adapters-api/src/test/java/io/nosqlbench/adapters/api/activityconfig/rawyaml/RawYamlTemplateLoaderTest.java similarity index 94% rename from adapters-api/src/test/java/io/nosqlbench/engine/api/activityconfig/rawyaml/RawYamlTemplateLoaderTest.java rename to adapters-api/src/test/java/io/nosqlbench/adapters/api/activityconfig/rawyaml/RawYamlTemplateLoaderTest.java index 9edddf52d..c179abaff 100644 --- a/adapters-api/src/test/java/io/nosqlbench/engine/api/activityconfig/rawyaml/RawYamlTemplateLoaderTest.java +++ b/adapters-api/src/test/java/io/nosqlbench/adapters/api/activityconfig/rawyaml/RawYamlTemplateLoaderTest.java @@ -14,10 +14,11 @@ * limitations under the License. */ -package io.nosqlbench.engine.api.activityconfig.rawyaml; +package io.nosqlbench.adapters.api.activityconfig.rawyaml; import org.apache.logging.log4j.Logger; import org.apache.logging.log4j.LogManager; +import org.assertj.core.api.Assertions; import org.junit.jupiter.api.Test; import java.util.List; @@ -46,7 +47,7 @@ public class RawYamlTemplateLoaderTest { RawOpsLoader ysl = new RawOpsLoader(); RawOpsDocList erthing = ysl.loadPath("testdocs/docs_blocks_ops.yaml"); List rawOpsDocs = erthing.getOpsDocs(); - assertThat(rawOpsDocs).hasSize(2); + Assertions.assertThat(rawOpsDocs).hasSize(2); RawOpsDoc rawOpsDoc = rawOpsDocs.get(0); List blocks = rawOpsDoc.getBlocks(); assertThat(rawOpsDoc.getName()).isEqualTo("doc1"); @@ -60,7 +61,7 @@ public class RawYamlTemplateLoaderTest { RawOpsLoader ysl = new RawOpsLoader(); RawOpsDocList erthing = ysl.loadPath("testdocs/docs_blocks_ops.yaml"); List rawOpsDocs = erthing.getOpsDocs(); - assertThat(rawOpsDocs).hasSize(2); + Assertions.assertThat(rawOpsDocs).hasSize(2); RawOpsDoc rawOpsDoc = rawOpsDocs.get(0); List blocks = rawOpsDoc.getBlocks(); assertThat(rawOpsDoc.getDesc()).isEqualTo( diff --git a/adapters-api/src/test/java/io/nosqlbench/engine/api/activityconfig/specifications/SpecificationDocsManifest.java b/adapters-api/src/test/java/io/nosqlbench/adapters/api/activityconfig/specifications/SpecificationDocsManifest.java similarity index 93% rename from adapters-api/src/test/java/io/nosqlbench/engine/api/activityconfig/specifications/SpecificationDocsManifest.java rename to adapters-api/src/test/java/io/nosqlbench/adapters/api/activityconfig/specifications/SpecificationDocsManifest.java index c2c901a64..5ac1b24e6 100644 --- a/adapters-api/src/test/java/io/nosqlbench/engine/api/activityconfig/specifications/SpecificationDocsManifest.java +++ b/adapters-api/src/test/java/io/nosqlbench/adapters/api/activityconfig/specifications/SpecificationDocsManifest.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package io.nosqlbench.engine.api.activityconfig.specifications; +package io.nosqlbench.adapters.api.activityconfig.specifications; import io.nosqlbench.api.docsapi.BundledMarkdownManifest; import io.nosqlbench.api.docsapi.Docs; diff --git a/adapters-api/src/test/java/io/nosqlbench/engine/api/activityconfig/specifications/UniformWorkloadSpecificationTest.java b/adapters-api/src/test/java/io/nosqlbench/adapters/api/activityconfig/specifications/UniformWorkloadSpecificationTest.java similarity index 96% rename from adapters-api/src/test/java/io/nosqlbench/engine/api/activityconfig/specifications/UniformWorkloadSpecificationTest.java rename to adapters-api/src/test/java/io/nosqlbench/adapters/api/activityconfig/specifications/UniformWorkloadSpecificationTest.java index dab2a6b12..ed65d1510 100644 --- a/adapters-api/src/test/java/io/nosqlbench/engine/api/activityconfig/specifications/UniformWorkloadSpecificationTest.java +++ b/adapters-api/src/test/java/io/nosqlbench/adapters/api/activityconfig/specifications/UniformWorkloadSpecificationTest.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package io.nosqlbench.engine.api.activityconfig.specifications; +package io.nosqlbench.adapters.api.activityconfig.specifications; import com.vladsch.flexmark.ast.FencedCodeBlock; import io.nosqlbench.nb.spectest.core.SpecTest; diff --git a/adapters-api/src/test/java/io/nosqlbench/engine/api/activityconfig/specifications/YamlSpecValidator.java b/adapters-api/src/test/java/io/nosqlbench/adapters/api/activityconfig/specifications/YamlSpecValidator.java similarity index 94% rename from adapters-api/src/test/java/io/nosqlbench/engine/api/activityconfig/specifications/YamlSpecValidator.java rename to adapters-api/src/test/java/io/nosqlbench/adapters/api/activityconfig/specifications/YamlSpecValidator.java index 65e2fbfb5..9b718f1f8 100644 --- a/adapters-api/src/test/java/io/nosqlbench/engine/api/activityconfig/specifications/YamlSpecValidator.java +++ b/adapters-api/src/test/java/io/nosqlbench/adapters/api/activityconfig/specifications/YamlSpecValidator.java @@ -14,15 +14,15 @@ * limitations under the License. */ -package io.nosqlbench.engine.api.activityconfig.specifications; +package io.nosqlbench.adapters.api.activityconfig.specifications; import com.google.gson.*; import com.google.gson.reflect.TypeToken; -import io.nosqlbench.engine.api.activityconfig.OpsLoader; -import io.nosqlbench.engine.api.activityconfig.rawyaml.RawYamlLoader; -import io.nosqlbench.engine.api.activityconfig.yaml.OpTemplate; -import io.nosqlbench.engine.api.activityconfig.yaml.OpTemplateFormat; -import io.nosqlbench.engine.api.activityconfig.yaml.OpsDocList; +import io.nosqlbench.adapters.api.activityconfig.OpsLoader; +import io.nosqlbench.adapters.api.activityconfig.rawyaml.RawYamlLoader; +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.nb.spectest.api.STAssemblyValidator; import io.nosqlbench.nb.spectest.core.STNodeAssembly; import io.nosqlbench.nb.spectest.loaders.STDefaultLoader; diff --git a/adapters-api/src/test/java/io/nosqlbench/engine/api/activityconfig/yaml/OpDetailOverrideTest.java b/adapters-api/src/test/java/io/nosqlbench/adapters/api/activityconfig/yaml/OpDetailOverrideTest.java similarity index 96% rename from adapters-api/src/test/java/io/nosqlbench/engine/api/activityconfig/yaml/OpDetailOverrideTest.java rename to adapters-api/src/test/java/io/nosqlbench/adapters/api/activityconfig/yaml/OpDetailOverrideTest.java index 7b6fea183..f9bf0b8c3 100644 --- a/adapters-api/src/test/java/io/nosqlbench/engine/api/activityconfig/yaml/OpDetailOverrideTest.java +++ b/adapters-api/src/test/java/io/nosqlbench/adapters/api/activityconfig/yaml/OpDetailOverrideTest.java @@ -14,9 +14,9 @@ * limitations under the License. */ -package io.nosqlbench.engine.api.activityconfig.yaml; +package io.nosqlbench.adapters.api.activityconfig.yaml; -import io.nosqlbench.engine.api.activityconfig.OpsLoader; +import io.nosqlbench.adapters.api.activityconfig.OpsLoader; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.junit.jupiter.api.Test; diff --git a/adapters-api/src/test/java/io/nosqlbench/engine/api/activityconfig/yaml/OpsDocListTest.java b/adapters-api/src/test/java/io/nosqlbench/adapters/api/activityconfig/yaml/OpsDocListTest.java similarity index 93% rename from adapters-api/src/test/java/io/nosqlbench/engine/api/activityconfig/yaml/OpsDocListTest.java rename to adapters-api/src/test/java/io/nosqlbench/adapters/api/activityconfig/yaml/OpsDocListTest.java index aa79fbe10..d974b55b5 100644 --- a/adapters-api/src/test/java/io/nosqlbench/engine/api/activityconfig/yaml/OpsDocListTest.java +++ b/adapters-api/src/test/java/io/nosqlbench/adapters/api/activityconfig/yaml/OpsDocListTest.java @@ -14,9 +14,10 @@ * limitations under the License. */ -package io.nosqlbench.engine.api.activityconfig.yaml; +package io.nosqlbench.adapters.api.activityconfig.yaml; -import io.nosqlbench.engine.api.activityconfig.OpsLoader; +import io.nosqlbench.adapters.api.activityconfig.OpsLoader; +import org.assertj.core.api.Assertions; import org.assertj.core.data.MapEntry; import org.junit.jupiter.api.BeforeAll; import org.apache.logging.log4j.Logger; @@ -77,7 +78,7 @@ public class OpsDocListTest { public void testStmtInheritsBlockData() { OpsDoc doc0 = doclist.getStmtDocs().get(0); List ops1 = doc0.getBlocks().get(0).getOps(); - assertThat(ops1).hasSize(2); + Assertions.assertThat(ops1).hasSize(2); OpsBlock block0 = doc0.getBlocks().get(0); assertThat(block0.getBindings()).containsExactly(MapEntry.entry("b2","b2d"),MapEntry.entry("b1","b1d")); @@ -121,15 +122,15 @@ public class OpsDocListTest { public void testStmtsGetter() { OpsDoc doc1 = doclist.getStmtDocs().get(1); List stmts = doc1.getOpTemplates(); - assertThat(stmts).hasSize(4); + Assertions.assertThat(stmts).hasSize(4); } @Test public void testFilteredStmts() { List stmts = doclist.getOps(""); - assertThat(stmts).hasSize(6); + Assertions.assertThat(stmts).hasSize(6); stmts = doclist.getOps("root1:value23"); - assertThat(stmts).hasSize(2); + Assertions.assertThat(stmts).hasSize(2); } } diff --git a/adapters-api/src/test/java/io/nosqlbench/engine/api/activityconfig/yaml/ParsedWorkloadTemplateTest.java b/adapters-api/src/test/java/io/nosqlbench/adapters/api/activityconfig/yaml/ParsedWorkloadTemplateTest.java similarity index 95% rename from adapters-api/src/test/java/io/nosqlbench/engine/api/activityconfig/yaml/ParsedWorkloadTemplateTest.java rename to adapters-api/src/test/java/io/nosqlbench/adapters/api/activityconfig/yaml/ParsedWorkloadTemplateTest.java index d462acd5d..524db3c46 100644 --- a/adapters-api/src/test/java/io/nosqlbench/engine/api/activityconfig/yaml/ParsedWorkloadTemplateTest.java +++ b/adapters-api/src/test/java/io/nosqlbench/adapters/api/activityconfig/yaml/ParsedWorkloadTemplateTest.java @@ -14,9 +14,9 @@ * limitations under the License. */ -package io.nosqlbench.engine.api.activityconfig.yaml; +package io.nosqlbench.adapters.api.activityconfig.yaml; -import io.nosqlbench.engine.api.activityconfig.OpsLoader; +import io.nosqlbench.adapters.api.activityconfig.OpsLoader; 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/test/java/io/nosqlbench/adapters/api/evalcontext/CompoundCycleFunctionTest.java b/adapters-api/src/test/java/io/nosqlbench/adapters/api/evalcontext/CompoundCycleFunctionTest.java new file mode 100644 index 000000000..abfff74c2 --- /dev/null +++ b/adapters-api/src/test/java/io/nosqlbench/adapters/api/evalcontext/CompoundCycleFunctionTest.java @@ -0,0 +1,65 @@ +/* + * 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.adapters.api.evalcontext; + +import org.junit.jupiter.api.Test; + +import java.util.List; +import java.util.Map; + +import static org.assertj.core.api.Assertions.assertThat; + +public class CompoundCycleFunctionTest { + + private final GroovyCycleFunction truthy = new GroovyCycleFunction<>("truthy", "true;", Map.of(), List.of()); + private final GroovyCycleFunction falsy = new GroovyCycleFunction<>("falsy", "false;", Map.of(), List.of()); + + @Test + public void testReducerFirstOrLastResult() { + CompoundCycleFunction justB = new CompoundCycleFunction<>((a, b) -> b, truthy, falsy); + assertThat(justB.apply(2)).isEqualTo(false); + + CompoundCycleFunction justA = new CompoundCycleFunction<>((a, b) -> a, truthy, falsy); + assertThat(justA.apply(2)).isEqualTo(true); + + } + + @Test + public void testReducerAnyTrue() { + CompoundCycleFunction trueOrFalse = new CompoundCycleFunction<>((a, b) -> a||b, truthy, falsy); + assertThat(trueOrFalse.apply(2)).isEqualTo(true); + + CompoundCycleFunction falseOrFalse = new CompoundCycleFunction<>((a, b) -> a||b, falsy, falsy); + assertThat(falseOrFalse.apply(2)).isEqualTo(false); + + } + + @Test + public void testReducerAllTrue() { + CompoundCycleFunction trueAndFalse = new CompoundCycleFunction<>((a, b) -> a&&b, truthy, falsy); + assertThat(trueAndFalse.apply(2)).isEqualTo(false); + + CompoundCycleFunction trueAndTrue = new CompoundCycleFunction<>((a, b) -> a&&b, truthy, truthy); + assertThat(trueAndTrue.apply(2)).isEqualTo(true); + + } + + + + + +} diff --git a/adapters-api/src/test/java/io/nosqlbench/adapters/api/evalcontext/GroovyBooleanCycleFunctionTest.java b/adapters-api/src/test/java/io/nosqlbench/adapters/api/evalcontext/GroovyBooleanCycleFunctionTest.java new file mode 100644 index 000000000..e34e9b0c4 --- /dev/null +++ b/adapters-api/src/test/java/io/nosqlbench/adapters/api/evalcontext/GroovyBooleanCycleFunctionTest.java @@ -0,0 +1,57 @@ +/* + * 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.adapters.api.evalcontext; + +import groovy.lang.MissingPropertyException; +import io.nosqlbench.virtdata.core.templates.ParsedTemplateString; +import org.junit.jupiter.api.Test; + +import java.util.List; +import java.util.Map; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.assertj.core.api.Assertions.assertThatThrownBy; + +public class GroovyBooleanCycleFunctionTest { + + @Test + public void testBasicScript() { + ParsedTemplateString parsedTemplate = new ParsedTemplateString(""" + true; + """, + Map.of("numbername", "NumberNameToString()") + ); + List imports = List.of(); + GroovyBooleanCycleFunction function = new GroovyBooleanCycleFunction("test1", parsedTemplate, imports); + Boolean result = function.apply(2); + assertThat(result).isTrue(); + } + + @Test + public void testUncaughtException() { + ParsedTemplateString parsedTemplate = new ParsedTemplateString(""" + this_is_a_syntax_error + """, + Map.of("numbername", "NumberNameToString()") + ); + List imports = List.of(); + GroovyCycleFunction function = new GroovyBooleanCycleFunction("test2", parsedTemplate, imports); + System.out.println(function); + assertThatThrownBy(() -> function.apply(3L)).isInstanceOf(MissingPropertyException.class); + } + +} diff --git a/adapters-api/src/test/java/io/nosqlbench/engine/api/metrics/MessageSequenceNumberSendingHandlerTest.java b/adapters-api/src/test/java/io/nosqlbench/adapters/api/metrics/MessageSequenceNumberSendingHandlerTest.java similarity index 96% rename from adapters-api/src/test/java/io/nosqlbench/engine/api/metrics/MessageSequenceNumberSendingHandlerTest.java rename to adapters-api/src/test/java/io/nosqlbench/adapters/api/metrics/MessageSequenceNumberSendingHandlerTest.java index 5714386df..0bd8fb716 100644 --- a/adapters-api/src/test/java/io/nosqlbench/engine/api/metrics/MessageSequenceNumberSendingHandlerTest.java +++ b/adapters-api/src/test/java/io/nosqlbench/adapters/api/metrics/MessageSequenceNumberSendingHandlerTest.java @@ -14,9 +14,9 @@ * limitations under the License. */ -package io.nosqlbench.engine.api.metrics; +package io.nosqlbench.adapters.api.metrics; -import io.nosqlbench.engine.api.metrics.EndToEndMetricsAdapterUtil.MSG_SEQ_ERROR_SIMU_TYPE; +import io.nosqlbench.adapters.api.metrics.EndToEndMetricsAdapterUtil.MSG_SEQ_ERROR_SIMU_TYPE; import org.junit.jupiter.api.Test; import java.util.Arrays; diff --git a/adapters-api/src/test/java/io/nosqlbench/engine/api/metrics/ReceivedMessageSequenceTrackerTest.java b/adapters-api/src/test/java/io/nosqlbench/adapters/api/metrics/ReceivedMessageSequenceTrackerTest.java similarity index 99% rename from adapters-api/src/test/java/io/nosqlbench/engine/api/metrics/ReceivedMessageSequenceTrackerTest.java rename to adapters-api/src/test/java/io/nosqlbench/adapters/api/metrics/ReceivedMessageSequenceTrackerTest.java index 745f7ea58..b4881ee6d 100644 --- a/adapters-api/src/test/java/io/nosqlbench/engine/api/metrics/ReceivedMessageSequenceTrackerTest.java +++ b/adapters-api/src/test/java/io/nosqlbench/adapters/api/metrics/ReceivedMessageSequenceTrackerTest.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package io.nosqlbench.engine.api.metrics; +package io.nosqlbench.adapters.api.metrics; import com.codahale.metrics.Counter; import org.junit.jupiter.api.Test; diff --git a/adapters-api/src/test/java/io/nosqlbench/engine/api/templating/ParsedOpTest.java b/adapters-api/src/test/java/io/nosqlbench/adapters/api/templating/ParsedOpTest.java similarity index 95% rename from adapters-api/src/test/java/io/nosqlbench/engine/api/templating/ParsedOpTest.java rename to adapters-api/src/test/java/io/nosqlbench/adapters/api/templating/ParsedOpTest.java index bd7f5591c..aad4374fd 100644 --- a/adapters-api/src/test/java/io/nosqlbench/engine/api/templating/ParsedOpTest.java +++ b/adapters-api/src/test/java/io/nosqlbench/adapters/api/templating/ParsedOpTest.java @@ -14,14 +14,14 @@ * limitations under the License. */ -package io.nosqlbench.engine.api.templating; +package io.nosqlbench.adapters.api.templating; +import io.nosqlbench.adapters.api.activityconfig.OpsLoader; +import io.nosqlbench.adapters.api.activityconfig.yaml.OpTemplate; import io.nosqlbench.api.config.NBLabeledElement; -import io.nosqlbench.engine.api.activityconfig.OpsLoader; -import io.nosqlbench.engine.api.activityconfig.yaml.OpData; -import io.nosqlbench.engine.api.activityconfig.yaml.OpTemplate; -import io.nosqlbench.engine.api.activityconfig.yaml.OpTemplateFormat; -import io.nosqlbench.engine.api.activityconfig.yaml.OpsDocList; +import io.nosqlbench.adapters.api.activityconfig.yaml.OpData; +import io.nosqlbench.adapters.api.activityconfig.yaml.OpTemplateFormat; +import io.nosqlbench.adapters.api.activityconfig.yaml.OpsDocList; import io.nosqlbench.api.config.standard.ConfigModel; import io.nosqlbench.api.config.standard.NBConfiguration; import io.nosqlbench.api.config.standard.Param; diff --git a/engine-api/src/test/java/io/nosqlbench/engine/api/templating/StrInterpolatorTest.java b/adapters-api/src/test/java/io/nosqlbench/adapters/api/templating/StrInterpolatorTest.java similarity index 96% rename from engine-api/src/test/java/io/nosqlbench/engine/api/templating/StrInterpolatorTest.java rename to adapters-api/src/test/java/io/nosqlbench/adapters/api/templating/StrInterpolatorTest.java index b2fcc48ee..c2273fb58 100644 --- a/engine-api/src/test/java/io/nosqlbench/engine/api/templating/StrInterpolatorTest.java +++ b/adapters-api/src/test/java/io/nosqlbench/adapters/api/templating/StrInterpolatorTest.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. @@ -14,11 +14,14 @@ * limitations under the License. */ -package io.nosqlbench.engine.api.templating; +package io.nosqlbench.adapters.api.templating; import org.junit.jupiter.api.Test; -import java.util.*; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; import static org.assertj.core.api.Assertions.assertThat; diff --git a/engine-api/src/test/java/io/nosqlbench/engine/api/util/TagFilterTest.java b/adapters-api/src/test/java/io/nosqlbench/adapters/api/util/TagFilterTest.java similarity index 98% rename from engine-api/src/test/java/io/nosqlbench/engine/api/util/TagFilterTest.java rename to adapters-api/src/test/java/io/nosqlbench/adapters/api/util/TagFilterTest.java index d79101d62..2943ba8c4 100644 --- a/engine-api/src/test/java/io/nosqlbench/engine/api/util/TagFilterTest.java +++ b/adapters-api/src/test/java/io/nosqlbench/adapters/api/util/TagFilterTest.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. @@ -14,7 +14,7 @@ * limitations under the License. */ -package io.nosqlbench.engine.api.util; +package io.nosqlbench.adapters.api.util; import io.nosqlbench.api.engine.util.Tagged; import org.apache.logging.log4j.LogManager; From d10c78150b917c2197a674d7f3f14047ed114d5f Mon Sep 17 00:00:00 2001 From: Jonathan Shook Date: Tue, 25 Jul 2023 11:49:56 -0500 Subject: [PATCH 02/14] virtdata changes for vector branch --- virtdata-api/pom.xml | 6 - .../api/templating/ParsedTemplateMap.java | 104 ++++- .../virtdata/api/annotations/Category.java | 2 + .../core/bindings/BindingsTemplate.java | 5 +- .../core/bindings/VirtDataComposer.java | 2 +- .../api/templating/ParsedTemplateMapTest.java | 26 ++ .../testmappers/TestingStringFunc.java | 36 ++ virtdata-lang/pom.xml | 2 +- .../to_collection/ListSizedStepped.java | 6 +- .../basics/shared/from_long/to_long/Hash.java | 7 +- .../from_long/to_string/CharBufImage.java | 6 +- .../from_long/to_string/Combinations.java | 19 +- .../basics/shared/repeaters/RepeatList.java | 55 +++ .../basics/shared/util/CharsetMapping.java | 113 ----- .../library/basics/shared/util/Combiner.java | 424 ++++++++++++++++++ .../basics/shared/util/DoubleCombiner.java | 182 ++++++++ .../library/basics/shared/util/Stringify.java | 53 +++ .../basics/shared/vectors/CircleVectors.java | 56 +++ .../vectors/algorithms/CircleAlgorithm.java | 25 ++ .../vectors/algorithms/GoldenAngle.java | 40 ++ .../vectors/algorithms/LatLonBased.java | 39 ++ .../vectors/primitive/DoubleArrayCache.java | 56 +++ .../shared/vectors/primitive/DoubleCache.java | 49 ++ .../vectors/primitive/DoubleSequence.java | 46 ++ .../primitive/DoubleVectorPadLeft.java | 49 ++ .../primitive/DoubleVectorPadRight.java | 49 ++ .../vectors/primitive/DoubleVectorPrefix.java | 44 ++ .../vectors/primitive/DoubleVectorSuffix.java | 44 ++ .../vectors/primitive/DoubleVectors.java | 60 +++ .../vectors/primitive/FloatVectorPadLeft.java | 49 ++ .../primitive/FloatVectorPadRight.java | 49 ++ .../vectors/primitive/FloatVectorPrefix.java | 44 ++ .../vectors/primitive/FloatVectorSuffix.java | 44 ++ .../vectors/primitive/FloatVectors.java | 51 +++ .../primitive/GoldenAngleDoubleVectors.java | 38 ++ .../primitive/HashedDoubleVectors.java | 77 ++++ .../vectors/primitive/HashedFloatVectors.java | 77 ++++ .../primitive/NormalizeDoubleVector.java | 42 ++ .../primitive/NormalizeFloatVector.java | 42 ++ .../vectors/primitive/ToFloatVector.java | 36 ++ .../shared/vectors/primitive/UnitSteps.java | 28 ++ .../vectors/primitive/VectorSequence.java | 53 +++ .../shared/repeaters/RepeatListTest.java | 35 ++ .../basics/shared/util/CombinerTest.java | 93 ++++ .../shared/util/DoubleCombinerTest.java | 68 +++ .../shared/vectors/CircleVectorsTest.java | 83 ++++ .../vectors/primitive/CharVectorsTest.java | 52 +++ .../vectors/primitive/DoubleVectorTest.java | 31 ++ .../primitive/HashedDoubleVectorsTest.java | 34 ++ .../long_double/HashedDoubleRangeTest.java | 14 +- 50 files changed, 2491 insertions(+), 154 deletions(-) create mode 100644 virtdata-api/src/test/java/io/nosqlbench/virtdata/testmappers/TestingStringFunc.java create mode 100644 virtdata-lib-basics/src/main/java/io/nosqlbench/virtdata/library/basics/shared/repeaters/RepeatList.java delete mode 100644 virtdata-lib-basics/src/main/java/io/nosqlbench/virtdata/library/basics/shared/util/CharsetMapping.java create mode 100644 virtdata-lib-basics/src/main/java/io/nosqlbench/virtdata/library/basics/shared/util/Combiner.java create mode 100644 virtdata-lib-basics/src/main/java/io/nosqlbench/virtdata/library/basics/shared/util/DoubleCombiner.java create mode 100644 virtdata-lib-basics/src/main/java/io/nosqlbench/virtdata/library/basics/shared/util/Stringify.java create mode 100644 virtdata-lib-basics/src/main/java/io/nosqlbench/virtdata/library/basics/shared/vectors/CircleVectors.java create mode 100644 virtdata-lib-basics/src/main/java/io/nosqlbench/virtdata/library/basics/shared/vectors/algorithms/CircleAlgorithm.java create mode 100644 virtdata-lib-basics/src/main/java/io/nosqlbench/virtdata/library/basics/shared/vectors/algorithms/GoldenAngle.java create mode 100644 virtdata-lib-basics/src/main/java/io/nosqlbench/virtdata/library/basics/shared/vectors/algorithms/LatLonBased.java create mode 100644 virtdata-lib-basics/src/main/java/io/nosqlbench/virtdata/library/basics/shared/vectors/primitive/DoubleArrayCache.java create mode 100644 virtdata-lib-basics/src/main/java/io/nosqlbench/virtdata/library/basics/shared/vectors/primitive/DoubleCache.java create mode 100644 virtdata-lib-basics/src/main/java/io/nosqlbench/virtdata/library/basics/shared/vectors/primitive/DoubleSequence.java create mode 100644 virtdata-lib-basics/src/main/java/io/nosqlbench/virtdata/library/basics/shared/vectors/primitive/DoubleVectorPadLeft.java create mode 100644 virtdata-lib-basics/src/main/java/io/nosqlbench/virtdata/library/basics/shared/vectors/primitive/DoubleVectorPadRight.java create mode 100644 virtdata-lib-basics/src/main/java/io/nosqlbench/virtdata/library/basics/shared/vectors/primitive/DoubleVectorPrefix.java create mode 100644 virtdata-lib-basics/src/main/java/io/nosqlbench/virtdata/library/basics/shared/vectors/primitive/DoubleVectorSuffix.java create mode 100644 virtdata-lib-basics/src/main/java/io/nosqlbench/virtdata/library/basics/shared/vectors/primitive/DoubleVectors.java create mode 100644 virtdata-lib-basics/src/main/java/io/nosqlbench/virtdata/library/basics/shared/vectors/primitive/FloatVectorPadLeft.java create mode 100644 virtdata-lib-basics/src/main/java/io/nosqlbench/virtdata/library/basics/shared/vectors/primitive/FloatVectorPadRight.java create mode 100644 virtdata-lib-basics/src/main/java/io/nosqlbench/virtdata/library/basics/shared/vectors/primitive/FloatVectorPrefix.java create mode 100644 virtdata-lib-basics/src/main/java/io/nosqlbench/virtdata/library/basics/shared/vectors/primitive/FloatVectorSuffix.java create mode 100644 virtdata-lib-basics/src/main/java/io/nosqlbench/virtdata/library/basics/shared/vectors/primitive/FloatVectors.java create mode 100644 virtdata-lib-basics/src/main/java/io/nosqlbench/virtdata/library/basics/shared/vectors/primitive/GoldenAngleDoubleVectors.java create mode 100644 virtdata-lib-basics/src/main/java/io/nosqlbench/virtdata/library/basics/shared/vectors/primitive/HashedDoubleVectors.java create mode 100644 virtdata-lib-basics/src/main/java/io/nosqlbench/virtdata/library/basics/shared/vectors/primitive/HashedFloatVectors.java create mode 100644 virtdata-lib-basics/src/main/java/io/nosqlbench/virtdata/library/basics/shared/vectors/primitive/NormalizeDoubleVector.java create mode 100644 virtdata-lib-basics/src/main/java/io/nosqlbench/virtdata/library/basics/shared/vectors/primitive/NormalizeFloatVector.java create mode 100644 virtdata-lib-basics/src/main/java/io/nosqlbench/virtdata/library/basics/shared/vectors/primitive/ToFloatVector.java create mode 100644 virtdata-lib-basics/src/main/java/io/nosqlbench/virtdata/library/basics/shared/vectors/primitive/UnitSteps.java create mode 100644 virtdata-lib-basics/src/main/java/io/nosqlbench/virtdata/library/basics/shared/vectors/primitive/VectorSequence.java create mode 100644 virtdata-lib-basics/src/test/java/io/nosqlbench/virtdata/library/basics/shared/repeaters/RepeatListTest.java create mode 100644 virtdata-lib-basics/src/test/java/io/nosqlbench/virtdata/library/basics/shared/util/CombinerTest.java create mode 100644 virtdata-lib-basics/src/test/java/io/nosqlbench/virtdata/library/basics/shared/util/DoubleCombinerTest.java create mode 100644 virtdata-lib-basics/src/test/java/io/nosqlbench/virtdata/library/basics/shared/vectors/CircleVectorsTest.java create mode 100644 virtdata-lib-basics/src/test/java/io/nosqlbench/virtdata/library/basics/shared/vectors/primitive/CharVectorsTest.java create mode 100644 virtdata-lib-basics/src/test/java/io/nosqlbench/virtdata/library/basics/shared/vectors/primitive/DoubleVectorTest.java create mode 100644 virtdata-lib-basics/src/test/java/io/nosqlbench/virtdata/library/basics/shared/vectors/primitive/HashedDoubleVectorsTest.java diff --git a/virtdata-api/pom.xml b/virtdata-api/pom.xml index ffb5f45ea..9d029d170 100644 --- a/virtdata-api/pom.xml +++ b/virtdata-api/pom.xml @@ -82,12 +82,6 @@ org.apache.commons commons-statistics-distribution - - com.datastax.oss - java-driver-core - 4.16.0 - compile - diff --git a/virtdata-api/src/main/java/io/nosqlbench/engine/api/templating/ParsedTemplateMap.java b/virtdata-api/src/main/java/io/nosqlbench/engine/api/templating/ParsedTemplateMap.java index a25c30c5e..359ac452c 100644 --- a/virtdata-api/src/main/java/io/nosqlbench/engine/api/templating/ParsedTemplateMap.java +++ b/virtdata-api/src/main/java/io/nosqlbench/engine/api/templating/ParsedTemplateMap.java @@ -84,8 +84,26 @@ public class ParsedTemplateMap implements LongFunction>, StaticFi * when rendering the full map with dynamic values. */ private final LinkedHashMap protomap = new LinkedHashMap<>(); + + /** + * Any auxiliary source of values to be applied beyond what is specified directly in the op fields. + * This includes, for example, the activity parameters which are allowed by the config model on + * an adapter. This means that you can specify defaults for an op field outside of the workload/op + * templates simply by providing them on the command line or activity parameters otherwise. + * This is exactly how the required op field `driver` works. + */ private final List> cfgsources; - private Map specmap; + + /** + * This remembers the original template object so that diagnostic and debugging views + * may see the original specifiers, whether they are literals of any type, or a string + * value which is recognized as being or containing some dynamic span, i.e. bind points. + */ + private Map originalTemplateObject; + + /** + * The bindings definitions from the raw op template data structure. + */ private Map bindings; private final String name; @@ -100,7 +118,7 @@ public class ParsedTemplateMap implements LongFunction>, StaticFi // fields. This seems like the saner and less confusing approach, so implementing // op field references should be left until it is requested if at all private void applyTemplateFields(Map map, Map bindings) { - this.specmap = map; + this.originalTemplateObject = map; this.bindings = bindings; map.forEach((k, v) -> { if (v instanceof CharSequence charvalue) { @@ -701,9 +719,84 @@ public class ParsedTemplateMap implements LongFunction>, StaticFi return false; } + public Optional takeAsOptionalStringTemplate(String field) { + Optional asStringTemplate = this.getAsStringTemplate(field); + if (asStringTemplate.isPresent()) { + originalTemplateObject.remove(field); + return asStringTemplate; + } + return Optional.empty(); + } + + public Optional takeAsOptionalRawSpecifier(String field) { + if (dynamics.containsKey(name)) { + Object value = statics.remove(name); + protomap.remove(name); + return (Optional) Optional.of(value); + } + if (statics.containsKey(name)) { + Object value = statics.remove(name); + protomap.remove(name); + return (Optional) Optional.of(value); + } + return Optional.empty(); + } + + /** + * Take the value of the specified field from the dynamic or static layers, or reference it + * from the config layer without removal. Then, flatten any string, list, or map structures + * into a map of strings with names injected as needed. Then, convert the values to string + * templates and return that. + * @param fieldname the field to take the templates from + * @return A map of templates, or an empty map if the field is not defined or is empty. + */ + public Map takeAsNamedTemplates(String fieldname) { + Object entry = originalTemplateObject.get(fieldname); + if (entry !=null) { + dynamics.remove(fieldname); + statics.remove(fieldname); + protomap.remove(fieldname); + } + + if (entry==null) { + for (Map cfgsource : cfgsources) { + if (cfgsource.containsKey(fieldname)) { + entry = cfgsource.get(fieldname); + break; + } + } + } + + if (entry==null) { + return Map.of(); + } + + Map elements = new LinkedHashMap<>(); + if (entry instanceof CharSequence chars) { + elements.put(this.getName()+"-verifier-0",chars.toString()); + } else if (entry instanceof List list) { + for (int i = 0; i < list.size(); i++) { + elements.put(this.getName()+"-verifier-"+i,list.get(0)); + } + } else if (entry instanceof Map map) { + map.forEach((k,v) -> { + elements.put(this.getName()+"-verifier-"+k,v); + }); + } + Map parsedStringTemplates + = new LinkedHashMap<>(); + elements.forEach((k,v) -> { + if (v instanceof CharSequence chars) { + parsedStringTemplates.put(k,new ParsedTemplateString(chars.toString(), this.bindings)); + } + }); + return parsedStringTemplates; + } + + public Optional getAsStringTemplate(String fieldname) { - if (specmap.containsKey(fieldname)) { - Object fval = specmap.get(fieldname); + if (originalTemplateObject.containsKey(fieldname)) { + Object fval = originalTemplateObject.get(fieldname); if (fval instanceof CharSequence) { return Optional.of(new ParsedTemplateString(fval.toString(), this.bindings)); } else { @@ -993,11 +1086,12 @@ public class ParsedTemplateMap implements LongFunction>, StaticFi .append(k) .append("->") .append( - v ==null? specmap.get(k) : v.toString() + v ==null? originalTemplateObject.get(k) : v.toString() ).append("\n"); } return sb.toString(); } + } diff --git a/virtdata-api/src/main/java/io/nosqlbench/virtdata/api/annotations/Category.java b/virtdata-api/src/main/java/io/nosqlbench/virtdata/api/annotations/Category.java index 8a8b89f80..79d1fe0fb 100644 --- a/virtdata-api/src/main/java/io/nosqlbench/virtdata/api/annotations/Category.java +++ b/virtdata-api/src/main/java/io/nosqlbench/virtdata/api/annotations/Category.java @@ -31,5 +31,7 @@ public enum Category { objects, periodic, experimental, + combinitoric, + vectors, HOF } diff --git a/virtdata-api/src/main/java/io/nosqlbench/virtdata/core/bindings/BindingsTemplate.java b/virtdata-api/src/main/java/io/nosqlbench/virtdata/core/bindings/BindingsTemplate.java index 188f7de74..3b4725640 100644 --- a/virtdata-api/src/main/java/io/nosqlbench/virtdata/core/bindings/BindingsTemplate.java +++ b/virtdata-api/src/main/java/io/nosqlbench/virtdata/core/bindings/BindingsTemplate.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. @@ -89,11 +89,12 @@ public class BindingsTemplate { * * @param bindPairs A map of named binding specifiers */ - public void addFieldBindings(Map bindPairs) { + public BindingsTemplate addFieldBindings(Map bindPairs) { for (Map.Entry e : bindPairs.entrySet()) { this.bindPointNames.add(e.getKey()); this.specifiers.add(e.getValue()); } + return this; } public String getDiagnostics() { diff --git a/virtdata-api/src/main/java/io/nosqlbench/virtdata/core/bindings/VirtDataComposer.java b/virtdata-api/src/main/java/io/nosqlbench/virtdata/core/bindings/VirtDataComposer.java index b77a4a11b..e19bb76c7 100644 --- a/virtdata-api/src/main/java/io/nosqlbench/virtdata/core/bindings/VirtDataComposer.java +++ b/virtdata-api/src/main/java/io/nosqlbench/virtdata/core/bindings/VirtDataComposer.java @@ -200,7 +200,7 @@ public class VirtDataComposer { FunctionAssembly assembly = new FunctionAssembly(); boolean isThreadSafe = true; - diagnostics.trace("FUNCTION chain selected: (multi) '" + this.summarize(flattenedFuncs, " - ") + "'"); + diagnostics.trace("FUNCTION chain selected: (multi):\n" + this.summarize(flattenedFuncs, " - ")); for (ResolvedFunction resolvedFunction : flattenedFuncs) { try { Object functionObject = resolvedFunction.getFunctionObject(); diff --git a/virtdata-api/src/test/java/io/nosqlbench/engine/api/templating/ParsedTemplateMapTest.java b/virtdata-api/src/test/java/io/nosqlbench/engine/api/templating/ParsedTemplateMapTest.java index a4b5a1a3a..4babf270a 100644 --- a/virtdata-api/src/test/java/io/nosqlbench/engine/api/templating/ParsedTemplateMapTest.java +++ b/virtdata-api/src/test/java/io/nosqlbench/engine/api/templating/ParsedTemplateMapTest.java @@ -16,8 +16,10 @@ package io.nosqlbench.engine.api.templating; +import io.nosqlbench.virtdata.core.templates.ParsedTemplateString; import org.junit.jupiter.api.Test; +import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import java.util.Set; @@ -32,4 +34,28 @@ public class ParsedTemplateMapTest { assertThat(ptm.getOpFieldNames()).isEqualTo(Set.of("string1")); } + @Test + public void testTakeAsNamedTemplates() { + ParsedTemplateMap ptm = new ParsedTemplateMap( + "test2", + new LinkedHashMap(Map.of( + "astring","astring", + "alist",List.of("listentry1","listentry2"), + "amap", Map.of("entry1","val1", "entry2", "val2") + )), + new LinkedHashMap<>(Map.of()), + List.of(Map.of()) + ); + Map ofString = ptm.takeAsNamedTemplates("astring"); + assertThat(ofString).containsKey("test2-verifier-0"); + Map ofList = ptm.takeAsNamedTemplates("alist"); + assertThat(ofList).containsKey("test2-verifier-0"); + assertThat(ofList).containsKey("test2-verifier-1"); + Map ofMap = ptm.takeAsNamedTemplates("amap"); + assertThat(ofMap).containsKey("test2-verifier-entry1"); + assertThat(ofMap).containsKey("test2-verifier-entry2"); + // TODO: Get actual testing bindings into this example + + } + } diff --git a/virtdata-api/src/test/java/io/nosqlbench/virtdata/testmappers/TestingStringFunc.java b/virtdata-api/src/test/java/io/nosqlbench/virtdata/testmappers/TestingStringFunc.java new file mode 100644 index 000000000..d1eb5d1d6 --- /dev/null +++ b/virtdata-api/src/test/java/io/nosqlbench/virtdata/testmappers/TestingStringFunc.java @@ -0,0 +1,36 @@ +/* + * 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.virtdata.testmappers; + +import io.nosqlbench.virtdata.api.annotations.ThreadSafeMapper; + +import java.util.function.LongFunction; + +@ThreadSafeMapper +public class TestingStringFunc implements LongFunction { + + private final String stringValue; + + public TestingStringFunc(String stringValue) { + this.stringValue = stringValue; + } + + @Override + public String apply(long value) { + return stringValue; + } +} diff --git a/virtdata-lang/pom.xml b/virtdata-lang/pom.xml index b335f9ae1..edc9e93d3 100644 --- a/virtdata-lang/pom.xml +++ b/virtdata-lang/pom.xml @@ -43,7 +43,7 @@ org.antlr antlr4-maven-plugin - 4.12.0 + 4.13.0 src/main/java/io/nosqlbench/virtdata/lang/grammars diff --git a/virtdata-lib-basics/src/main/java/io/nosqlbench/virtdata/library/basics/shared/from_long/to_collection/ListSizedStepped.java b/virtdata-lib-basics/src/main/java/io/nosqlbench/virtdata/library/basics/shared/from_long/to_collection/ListSizedStepped.java index ebd1214f1..4baebc92c 100644 --- a/virtdata-lib-basics/src/main/java/io/nosqlbench/virtdata/library/basics/shared/from_long/to_collection/ListSizedStepped.java +++ b/virtdata-lib-basics/src/main/java/io/nosqlbench/virtdata/library/basics/shared/from_long/to_collection/ListSizedStepped.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. @@ -56,10 +56,6 @@ public class ListSizedStepped implements LongFunction> { } this.valueFuncs = VirtDataConversions.adaptFunctionList(funcs, LongFunction.class, Object.class); } - public ListSizedStepped(int size, Object... funcs) { - this.sizeFunc = s -> size; - this.valueFuncs = VirtDataConversions.adaptFunctionList(funcs, LongFunction.class, Object.class); - } @Override public List apply(long value) { diff --git a/virtdata-lib-basics/src/main/java/io/nosqlbench/virtdata/library/basics/shared/from_long/to_long/Hash.java b/virtdata-lib-basics/src/main/java/io/nosqlbench/virtdata/library/basics/shared/from_long/to_long/Hash.java index 2788c2d9a..ffa344e33 100644 --- a/virtdata-lib-basics/src/main/java/io/nosqlbench/virtdata/library/basics/shared/from_long/to_long/Hash.java +++ b/virtdata-lib-basics/src/main/java/io/nosqlbench/virtdata/library/basics/shared/from_long/to_long/Hash.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. @@ -18,6 +18,7 @@ package io.nosqlbench.virtdata.library.basics.shared.from_long.to_long; import io.nosqlbench.virtdata.api.annotations.Categories; import io.nosqlbench.virtdata.api.annotations.Category; +import io.nosqlbench.virtdata.api.annotations.Example; import io.nosqlbench.virtdata.api.annotations.ThreadSafeMapper; import io.nosqlbench.virtdata.murmur.Murmur3F; @@ -35,6 +36,10 @@ import java.util.function.LongUnaryOperator; @Categories({Category.general, Category.general}) public class Hash implements LongUnaryOperator { + @Example({"Hash()","Create a hash function that takes a long and returns a positive long value"}) + public Hash() { + } + private final transient ThreadLocal murmur3f_TL = ThreadLocal.withInitial(Murmur3F::new); @Override diff --git a/virtdata-lib-basics/src/main/java/io/nosqlbench/virtdata/library/basics/shared/from_long/to_string/CharBufImage.java b/virtdata-lib-basics/src/main/java/io/nosqlbench/virtdata/library/basics/shared/from_long/to_string/CharBufImage.java index 02c571265..f8ee4beb0 100644 --- a/virtdata-lib-basics/src/main/java/io/nosqlbench/virtdata/library/basics/shared/from_long/to_string/CharBufImage.java +++ b/virtdata-lib-basics/src/main/java/io/nosqlbench/virtdata/library/basics/shared/from_long/to_string/CharBufImage.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. @@ -22,7 +22,7 @@ import io.nosqlbench.virtdata.api.annotations.Category; import io.nosqlbench.virtdata.api.annotations.ThreadSafeMapper; import io.nosqlbench.virtdata.api.bindings.VirtDataConversions; import io.nosqlbench.virtdata.library.basics.shared.from_long.to_int.Hash; -import io.nosqlbench.virtdata.library.basics.shared.util.CharsetMapping; +import io.nosqlbench.virtdata.library.basics.shared.util.Combiner; import java.nio.CharBuffer; import java.util.function.LongFunction; @@ -143,7 +143,7 @@ public class CharBufImage implements LongFunction { } private CharBuffer genBuf(String chars, int size, long seed) { - char[] charset = CharsetMapping.rangeFor(chars); + char[] charset = Combiner.rangeFor(chars); CharBuffer newimage = CharBuffer.allocate(size); diff --git a/virtdata-lib-basics/src/main/java/io/nosqlbench/virtdata/library/basics/shared/from_long/to_string/Combinations.java b/virtdata-lib-basics/src/main/java/io/nosqlbench/virtdata/library/basics/shared/from_long/to_string/Combinations.java index cc55f2dab..dfbd3e979 100644 --- a/virtdata-lib-basics/src/main/java/io/nosqlbench/virtdata/library/basics/shared/from_long/to_string/Combinations.java +++ b/virtdata-lib-basics/src/main/java/io/nosqlbench/virtdata/library/basics/shared/from_long/to_string/Combinations.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. @@ -20,7 +20,7 @@ import io.nosqlbench.virtdata.api.annotations.Categories; import io.nosqlbench.virtdata.api.annotations.Category; import io.nosqlbench.virtdata.api.annotations.Example; import io.nosqlbench.virtdata.api.annotations.ThreadSafeMapper; -import io.nosqlbench.virtdata.library.basics.shared.util.CharsetMapping; +import io.nosqlbench.virtdata.library.basics.shared.util.Combiner; import java.nio.CharBuffer; import java.util.function.LongFunction; @@ -52,8 +52,8 @@ public class Combinations implements LongFunction { @Example({"Combinations('0-9A-F;0-9A-F;0-9A-F;0-9A-F;')","two bytes of hexadecimal"}) @Example({"Combinations('A-9')","upper case alphanumeric"}) public Combinations(String spec) { - this.charsets = CharsetMapping.parseSpec(spec); - this.modulo = computeRadixFactors(this.charsets); + this.charsets = Combiner.parseSpec(spec); + this.modulo = Combiner.computeRadixFactors(this.charsets); } @Override @@ -69,15 +69,4 @@ public class Combinations implements LongFunction { return cb.toString(); } - private long[] computeRadixFactors(char[][] charsets) { - long modulo = 1L; - long[] m = new long[charsets.length]; - for (int i = charsets.length-1; i >=0; i--) { - m[i] = modulo; - modulo = Math.multiplyExact(modulo, charsets[i].length); - } -// m[m.length-1]=modulo; - return m; - } - } diff --git a/virtdata-lib-basics/src/main/java/io/nosqlbench/virtdata/library/basics/shared/repeaters/RepeatList.java b/virtdata-lib-basics/src/main/java/io/nosqlbench/virtdata/library/basics/shared/repeaters/RepeatList.java new file mode 100644 index 000000000..a474c6c19 --- /dev/null +++ b/virtdata-lib-basics/src/main/java/io/nosqlbench/virtdata/library/basics/shared/repeaters/RepeatList.java @@ -0,0 +1,55 @@ +/* + * 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.virtdata.library.basics.shared.repeaters; + +import io.nosqlbench.virtdata.api.annotations.Categories; +import io.nosqlbench.virtdata.api.annotations.Category; +import io.nosqlbench.virtdata.api.annotations.Example; +import io.nosqlbench.virtdata.api.annotations.ThreadSafeMapper; + +import java.util.ArrayList; +import java.util.List; +import java.util.function.Function; + +/** + * Repeat the incoming list into a new list, filling it to the given size. + */ +@ThreadSafeMapper +@Categories(Category.experimental) +public class RepeatList implements Function { + + private final int size; + + /** + * Create a list repeater to build up a list from a smaller list. + * @param size - the total size of the new list + */ + @Example({"RepeatList(50)","repeat the incoming values into a new List of size 50"}) + public RepeatList(int size) { + this.size = size; + } + + @Override + public List apply(List input) { + Object[] values = input.toArray(); + + ArrayList list = new ArrayList(size); + for (int i = 0; i < size; i++) { + list.add(values[i%values.length]); + } + return list;} +} diff --git a/virtdata-lib-basics/src/main/java/io/nosqlbench/virtdata/library/basics/shared/util/CharsetMapping.java b/virtdata-lib-basics/src/main/java/io/nosqlbench/virtdata/library/basics/shared/util/CharsetMapping.java deleted file mode 100644 index d42660ef7..000000000 --- a/virtdata-lib-basics/src/main/java/io/nosqlbench/virtdata/library/basics/shared/util/CharsetMapping.java +++ /dev/null @@ -1,113 +0,0 @@ -/* - * 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. - */ - -package io.nosqlbench.virtdata.library.basics.shared.util; - -import java.nio.ByteBuffer; -import java.nio.CharBuffer; -import java.nio.charset.StandardCharsets; -import java.util.ArrayList; -import java.util.List; - -public class CharsetMapping { - - /** - * Parse the spec, yielding an array of character arrays. each position in the spec delimited - * by comma or semicolon is represented by an array. Each array is then constructed from - * {@link #rangeFor(String)}. - * - * @param spec A range set specifier - * @return An array of char arrays - */ - public static char[][] parseSpec(String spec) { - String[] ranges = spec.split("[,;]"); - char[][] cs = new char[ranges.length][]; - for (int i = 0; i < ranges.length; i++) { - char[] range = rangeFor(ranges[i]); - cs[i] = range; - } - return cs; - } - - /** - * Parse the range and return set of characters in an array. Any occurrences of a range specifier - * like {@code a-z} are expanded into the two characters and every on in between, in ordinal order. - * Otherwise, the characters are taken as they are presented. Each range is built and sanity - * checked by {@link #rangeFor} to ensure ordering is valid as well as that the characters are - * all in the printable range of ordinal 32 to ordinal 126. - * @param range a character range specifier like 'a-z' or '1357' - * @return An array of characters - */ - public static char[] rangeFor(String range) { - range = range.replaceAll("\\n","\n").replaceAll("\\r","\r"); - List chars = new ArrayList<>(); - int pos = 0; - while (pos < range.length()) { - if (range.length() > pos + 2 && range.charAt(pos + 1) == '-') { - List rangeChars = rangeFor(range.substring(pos, pos + 1), range.substring(pos + 2, pos + 3)); - chars.addAll(rangeChars); - pos += 3; - } else { - chars.add(range.substring(pos, pos + 1).charAt(0)); - pos += 1; - } - } - char[] charAry = new char[chars.size()]; - for (int i = 0; i < chars.size(); i++) { - charAry[i] = chars.get(i); - } - return charAry; - } - - /** - * Create a list of characters from the US ASCII plane based on a start and end character. - * @param startChar A single ASCII character - * @param endChar A single ASCII character, must be equal to or come after startChar - * @return A list of characters in the range - */ - public static List rangeFor(String startChar, String endChar) { - int start = startChar.getBytes(StandardCharsets.US_ASCII)[0]; - int end = endChar.getBytes(StandardCharsets.US_ASCII)[0]; - assertPrintable(start); - assertPrintable(end); - assertOrder(start, end); - List chars = new ArrayList<>(); - ByteBuffer bb = ByteBuffer.allocate(1); - for (int i = start; i <= end; i++) { - bb.clear(); - bb.put(0, (byte) i); - CharBuffer decoded = StandardCharsets.US_ASCII.decode(bb); - chars.add(decoded.get(0)); - } - return chars; - } - - private static void assertOrder(int start, int end) { - if (end < start) { - throw new RuntimeException("char '" + (char) end + "' (" + end + ") occurs after '" + (char) start + "' (" + start + "). Are you sure this is the right spec? (reverse the order)"); - } - - } - - private static void assertPrintable(int asciiCode) { - if (asciiCode > 126 || asciiCode < 32) { - throw new RuntimeException("ASCII character for code " + asciiCode + " is outside the range of printable characters."); - } - } - - - -} diff --git a/virtdata-lib-basics/src/main/java/io/nosqlbench/virtdata/library/basics/shared/util/Combiner.java b/virtdata-lib-basics/src/main/java/io/nosqlbench/virtdata/library/basics/shared/util/Combiner.java new file mode 100644 index 000000000..21a4e0f69 --- /dev/null +++ b/virtdata-lib-basics/src/main/java/io/nosqlbench/virtdata/library/basics/shared/util/Combiner.java @@ -0,0 +1,424 @@ +/* + * 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.virtdata.library.basics.shared.util; + +import io.nosqlbench.virtdata.api.annotations.Categories; +import io.nosqlbench.virtdata.api.annotations.Category; +import io.nosqlbench.virtdata.api.annotations.ThreadSafeMapper; + +import java.lang.reflect.Array; +import java.nio.ByteBuffer; +import java.nio.CharBuffer; +import java.nio.charset.StandardCharsets; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.function.LongFunction; + + +/** + *

Combiner - a combinatoric toolkit for NoSQLBench

+ *
+ *

Synopsis

+ *

Combiner is the core implementation of a combinatoric toolkit which is used + * by other NoSQLBench functions in a more type-specific way. It allows for a common approach + * to encoding unique values across a range of dimensions (which can be non-uniform) + * with an affine mapping between different forms of data.

+ * + *
+ *

Specifier

+ *

The specifier required by the constructor is a way to specify a range of character sets, each representing both + * the per-value labeling as well as the radix of each position in the associated index, value, or character position. + * Each position is delimited from the others with commas or semicolons. Each position can be either a single printable + * character or a range of characters separated by + * '-'. + * Optionally, you can repeat a position with a multiplier in the form of '*n' where n is any valid number. + *

+ *

Examples: + *

    + *
  • "0-9A-F" - hexadecimal characters, one digit only ; 0123456789ABCDEF
  • + *
  • "0-9*12" - characters 0-9 in 12 digits, symbolic of values 000000000000 (0) .. 999999999999
  • + *
  • "5;5;5;-;8;6;7;-;5;3;0;9" - 12 digits with one character each, effectively 555-867-5309, a single value
  • + *
  • "0-9;*2_=24j36*5*1" - a somewhat random pattern with char sets [0123456789] and [*2_=24j36*5], showing how '*1' + * at the end can be used to escape '*5'
  • + *
+ * The specifier is parsed into a non-uniform radix model, where the characters for each position represent a numerical + * encoding. As such, the cardinalities of each position are multiplied together to determine the total cardinality of + * the specified pattern. Any total cardinality below Long.MAX_VALUE, or 9,223,372,036,854,775,807 is allowed, and any + * combinations which would overflow this value will throw an error. + *

+ * + *
+ *

Value Function

+ *

+ * The function provided in the constructor is used to symbolically map the characters in the encoding string to a value + * of any type. The value function will be called with number of distinct values up the the cardinality of the largest + * position in the radix model. For example, a specifier of `A-Za-z0-9` would provide an input range from 0 to 61 + * inclusive to the value function. It is the combination of positions and unique values which provides the overall + * cardinality, although the value function itself is responsible for the relatively lower cardinality elements which + * are combined together to create higher-cardinality value arrays. + *

+ * + *
+ *

Types and Forms

+ * + *

Each form represents one way of seeing the data for a given cycle: + *

    + *
  1. ordinal (long) - also known as the cycle, or input. This is an enumeration of all distinct + * combinations.
  2. + *
  3. indexes (int[]) - an array of indexes, one for each position in the specifier and thus each element in + * the + * array + * or character in the encoding.
  4. + *
  5. encoding (String) - a string which encodes the ordinal and the indexes in a convenient label which is + * unique + * within the range of possible values.
  6. + *
  7. (values) array (T[]) - An array of the type T which can be provided via a mapping function. This is a + * mapping from the + * indexes through the provided value function.
  8. + *
+ *

+ * + *
+ *

Mapping between forms

+ * + *

The array value can be derived with {@link #apply(long)}, {@link #getArray(int[])} (int[])}, and + * {@link #getArray(String)}, + * given ordinal, indexes, or encoding as a starting point, respectively. This all ultimately use the one-way + * function which you provide, thus you can't go from array form to the others.

+ * + *

Mapping between the other three is fairly trivial:

+ *
    + *
  • You can get indexes from ordinal and encoding with {@link #getIndexes(long)} and + * {@link #getArray(String)}.
  • + *
  • You can get encoding from ordinal and indexes with {@link #getEncoding(long)} and + * {@link #getEncoding(int[])}.
  • + *
  • You can get ordinal from indexes or encoding with {@link #getOrdinal(int[])} and + * {@link #getOrdinal(String)}.
  • + *
+ *

+ *

+ * This makes it easy to derive textual identifiers for specific combinations of elements such as a vector, use them + * for + * cross-checks such as with correctness testing, and represent specific test values in a very convenient form within + * deterministic testing harnesses like NoSQLBench. + * + * @param + * The generic type of the value which is mapped into each array position + */ +@ThreadSafeMapper +@Categories({Category.combinitoric, Category.conversion}) +public class Combiner implements LongFunction { + + /** + * converts an index for a given column position into a value type. + */ + private final LongFunction elementFunction; + /** + * Used for instancing the correct type of array, since arrays can't be reified from generics + */ + private final Class elementClazz; + /** + * The columnar character sequences which represent radix values + */ + private final char[][] charsets; + + /** + * The columnar radix factors, cached + */ + private final long[] modulo; + /** + * Columnar indexes from the character to the index values, for reverse mapping + */ + private final int[][] inverted; + + /** + * Construct a combiner which can compose unique combinations of array data. + * + * @param spec + * The string specifier, as explained in {@link Combiner} docs. + * @param elementFunction + * The function that indexes into a unique population of T elements + * @param elementClazz + * The component type for the values array which are produced by {@link #apply(long)} + */ + public Combiner(String spec, LongFunction elementFunction, Class elementClazz) { + this.charsets = Combiner.parseSpec(spec); + this.elementFunction = elementFunction; + this.elementClazz = elementClazz; + this.modulo = computeRadixFactors(charsets); + this.inverted = invertedIndexFor(this.charsets); + } + + + /** + * Parse the spec, yielding an array of character arrays. each position in the spec delimited + * by comma or semicolon is represented by an array. Each array is then constructed from + * {@link #rangeFor(String)}. + * + * @param rangesSpec + * A range set specifier + * @return An array of char arrays + */ + public static char[][] parseSpec(String rangesSpec) { + String[] ranges = rangesSpec.split("[,;]"); + List specs = new ArrayList<>(); + for (String range : ranges) { + if (range.matches("(.*?)\\*(\\d+)")) { + int rangeAt = range.lastIndexOf('*'); + int times = Integer.parseInt(range.substring(rangeAt + 1)); + for (int i = 0; i < times; i++) { + specs.add(range.substring(0, rangeAt)); + } + } else { + specs.add(range); + } + } + char[][] cs = new char[specs.size()][]; + for (int i = 0; i < specs.size(); i++) { + char[] range = rangeFor(specs.get(i)); + cs[i] = range; + } + return cs; + } + + /** + * Parse the range and return set of characters in an array. Any occurrences of a range specifier + * like {@code a-z} are expanded into the two characters and every on in between, in ordinal order. + * Otherwise, the characters are taken as they are presented. Each range is built and sanity + * checked by {@link #rangeFor} to ensure ordering is valid as well as that the characters are + * all in the printable range of ordinal 32 to ordinal 126. + * + * @param range + * a character range specifier like 'a-z' or '1357' + * @return An array of characters + */ + public static char[] rangeFor(String range) { + range = range.replaceAll("\\n", "\n").replaceAll("\\r", "\r"); + List chars = new ArrayList<>(); + int pos = 0; + while (pos < range.length()) { + if (range.length() > pos + 2 && range.charAt(pos + 1) == '-') { + List rangeChars = rangeFor(range.substring(pos, pos + 1), range.substring(pos + 2, pos + 3)); + chars.addAll(rangeChars); + pos += 3; + } else { + chars.add(range.substring(pos, pos + 1).charAt(0)); + pos += 1; + } + } + char[] charAry = new char[chars.size()]; + for (int i = 0; i < chars.size(); i++) { + charAry[i] = chars.get(i); + } + return charAry; + } + + /** + * Create a list of characters from the US ASCII plane based on a start and end character. + * + * @param startChar + * A single ASCII character + * @param endChar + * A single ASCII character, must be equal to or come after startChar + * @return A list of characters in the range + */ + public static List rangeFor(String startChar, String endChar) { + int start = startChar.getBytes(StandardCharsets.US_ASCII)[0]; + int end = endChar.getBytes(StandardCharsets.US_ASCII)[0]; + assertPrintable(start); + assertPrintable(end); + assertOrder(start, end); + List chars = new ArrayList<>(); + ByteBuffer bb = ByteBuffer.allocate(1); + for (int i = start; i <= end; i++) { + bb.clear(); + bb.put(0, (byte) i); + CharBuffer decoded = StandardCharsets.US_ASCII.decode(bb); + chars.add(decoded.get(0)); + } + return chars; + } + + private static void assertOrder(int start, int end) { + if (end < start) { + throw new RuntimeException("char '" + (char) end + "' (" + end + ") occurs after '" + (char) start + "' (" + start + "). Are you sure this is the right spec? (reverse the order)"); + } + + } + + private static void assertPrintable(int asciiCode) { + if (asciiCode > 126 || asciiCode < 32) { + throw new RuntimeException("ASCII character for code " + asciiCode + " is outside the range of printable characters."); + } + } + + public static int[][] invertedIndexFor(String charsetsSpecifier) { + char[][] chars = parseSpec(charsetsSpecifier); + return invertedIndexFor(chars); + } + + public static int[][] invertedIndexFor(char[][] charsetColumns) { + int[][] inverted = new int[charsetColumns.length][]; + for (int charsetIdx = 0; charsetIdx < charsetColumns.length; charsetIdx++) { + char[] charsForColumn = charsetColumns[charsetIdx]; + inverted[charsetIdx] = indexesByChar(charsForColumn); + } + return inverted; + } + + private static int[] indexesByChar(char[] charsForColumn) { + int maxval = Integer.MIN_VALUE; + for (char c : charsForColumn) { + maxval = (int) c > maxval ? (int) c : maxval; + } + int[] idx = new int[maxval + 1]; + Arrays.fill(idx, -1); + + for (int i = 0; i < charsForColumn.length; i++) { + idx[charsForColumn[i]] = i; + } + return idx; + } + + /** + * Return an array of {@link T} elements by indexing into the sequence + * of character sets and their relative cardinality to derive column-specific + * index, and then converting them to the type T through the provided function. + * + * @param value + * the function argument + * @return a T which is identified by the provided value, unique if value is + * less than the maximum number of combinations, but repeated otherwise + */ + @Override + public T[] apply(long value) { + @SuppressWarnings("Unchecked") + T[] ary = (T[]) Array.newInstance(elementClazz, charsets.length); + for (int colIdx = 0; colIdx < charsets.length; colIdx++) { + int valueSelector = (int) ((value / modulo[colIdx]) % Integer.MAX_VALUE); + ary[colIdx] = elementFunction.apply(valueSelector); + value %= modulo[colIdx]; + } + return ary; + } + + /** + * @param indexes + * indexes derived from {@link #getIndexes(long)} + * @return a T[] + */ + public T[] getArray(int[] indexes) { + T[] ary = (T[]) Array.newInstance(elementClazz, charsets.length); + for (int colIdx = 0; colIdx < indexes.length; colIdx++) { + ary[colIdx] = elementFunction.apply(indexes[colIdx]); + } + return ary; + } + + public T[] getArray(String encoding) { + long ordinal = getOrdinal(encoding); + return apply(ordinal); + } + + public String getEncoding(long ordinal) { + return getEncoding(getIndexes(ordinal)); + } + + public String getEncoding(int[] indexes) { + StringBuilder sb = new StringBuilder(charsets.length); + for (int i = 0; i < indexes.length; i++) { + sb.append(charsets[i][indexes[i]]); + } + return sb.toString(); + } + + + /** + * Get the indexes directly which are used by {@link #apply(long)} + * + * @param value + * @return an offset array for each column in the provided charset specifiers + */ + public int[] getIndexes(long value) { + int[] ary = new int[charsets.length]; + for (int colIdx = 0; colIdx < charsets.length; colIdx++) { + int valueSelector = (int) ((value / modulo[colIdx]) % Integer.MAX_VALUE); + ary[colIdx] = valueSelector; + value %= modulo[colIdx]; + } + return ary; + } + + /** + * @param encoding + * the string encoding for the given ordinal + * @return the indexes used to select a value from the value function for each position in the output array + */ + public int[] getIndexes(String encoding) { + int[] indexes = new int[charsets.length]; + char[] chars = encoding.toCharArray(); + for (int i = 0; i < charsets.length; i++) { + indexes[i] = inverted[i][chars[i]]; + } + return indexes; + } + + /** + * Using the provided name, derive the ordinal value which matches it. + * + * @param name + * - the textual name, expressed as an ASCII string + * @return the long which can be used to construct the matching name or related array. + */ + public long getOrdinal(String name) { + char[] chars = name.toCharArray(); + long ordinal = 0; + for (int i = 0; i < chars.length; i++) { + ordinal += (modulo[i] * inverted[i][chars[i]]); + } + return ordinal; + } + + /** + * Using the provided column offsets, derive the ordinal value which matches it. + * + * @param indexes + * - the indexes used to derive an array of values, or equivalently a name + * @return the long which can be used to construct the matching name or related array. + */ + public long getOrdinal(int[] indexes) { + long ordinal = 0; + for (int i = 0; i < indexes.length; i++) { + ordinal += (modulo[i] *= indexes[i]); + } + return ordinal; + } + + + public static long[] computeRadixFactors(char[][] charsets) { + long modulo = 1L; + long[] m = new long[charsets.length]; + for (int i = charsets.length - 1; i >= 0; i--) { + m[i] = modulo; + modulo = Math.multiplyExact(modulo, charsets[i].length); + } +// m[m.length-1]=modulo; + return m; + } + +} diff --git a/virtdata-lib-basics/src/main/java/io/nosqlbench/virtdata/library/basics/shared/util/DoubleCombiner.java b/virtdata-lib-basics/src/main/java/io/nosqlbench/virtdata/library/basics/shared/util/DoubleCombiner.java new file mode 100644 index 000000000..a266c81e6 --- /dev/null +++ b/virtdata-lib-basics/src/main/java/io/nosqlbench/virtdata/library/basics/shared/util/DoubleCombiner.java @@ -0,0 +1,182 @@ +/* + * 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.virtdata.library.basics.shared.util; + +import io.nosqlbench.virtdata.api.annotations.Categories; +import io.nosqlbench.virtdata.api.annotations.Category; +import io.nosqlbench.virtdata.api.annotations.ThreadSafeMapper; + +import java.util.Arrays; +import java.util.function.LongFunction; +import java.util.function.LongToDoubleFunction; + + +/** + * For comprehensive docs on how this works, please see the javadocs for + * {@link Combiner}<T>. This class is merely a primitive specialization. + */ +@ThreadSafeMapper +@Categories({Category.combinitoric, Category.conversion}) +public class DoubleCombiner implements LongFunction { + + /** + * converts an index for a given column position into a value type. + */ + private final LongToDoubleFunction elementFunction; + /** + * The columnar character sequences which represent radix values + */ + private final char[][] charsets; + + /** + * The columnar radix factors, cached + */ + private final long[] modulo; + /** + * Columnar indexes from the character to the index values, for reverse mapping + */ + private final int[][] inverted; + + /** + * Construct a combiner which can compose unique combinations of array data. + * + * @param spec + * The string specifier, as explained in {@link DoubleCombiner} docs. + * @param elementFunction + * The function that indexes into a unique population of T elements + */ + public DoubleCombiner(String spec, LongToDoubleFunction elementFunction) { + this.charsets = Combiner.parseSpec(spec); + this.elementFunction = elementFunction; + this.modulo = computeRadixFactors(charsets); + this.inverted = Combiner.invertedIndexFor(this.charsets); + } + + protected static long maxRadixDigits(String spec) { + return Arrays.stream(Combiner.parseSpec(spec)).mapToInt(c->c.length).max().orElse(0); + } + + @Override + public double[] apply(long value) { + double[] ary = new double[charsets.length]; + for (int colIdx = 0; colIdx < charsets.length; colIdx++) { + int valueSelector = (int) ((value / modulo[colIdx]) % Integer.MAX_VALUE); + ary[colIdx] = elementFunction.applyAsDouble(valueSelector); + value %= modulo[colIdx]; + } + return ary; + } + + public double[] getArray(int[] indexes) { + double[] ary = new double[charsets.length]; + for (int colIdx = 0; colIdx < indexes.length; colIdx++) { + ary[colIdx] = elementFunction.applyAsDouble(indexes[colIdx]); + } + return ary; + } + + public double[] getArray(String encoding) { + long ordinal = getOrdinal(encoding); + return apply(ordinal); + } + + public String getEncoding(long ordinal) { + return getEncoding(getIndexes(ordinal)); + } + + public String getEncoding(int[] indexes) { + StringBuilder sb = new StringBuilder(charsets.length); + for (int i = 0; i < indexes.length; i++) { + sb.append(charsets[i][indexes[i]]); + } + return sb.toString(); + } + + /** + * Get the indexes directly which are used by {@link #apply(long)} + * + * @param value + * @return an offset array for each column in the provided charset specifiers + */ + public int[] getIndexes(long value) { + int[] ary = new int[charsets.length]; + for (int colIdx = 0; colIdx < charsets.length; colIdx++) { + int valueSelector = (int) ((value / modulo[colIdx]) % Integer.MAX_VALUE); + ary[colIdx] = valueSelector; + value %= modulo[colIdx]; + } + return ary; + } + + /** + * @param encoding + * the string encoding for the given ordinal + * @return the indexes used to select a value from the value function for each position in the output array + */ + public int[] getIndexes(String encoding) { + int[] indexes = new int[charsets.length]; + char[] chars = encoding.toCharArray(); + for (int i = 0; i < charsets.length; i++) { + indexes[i] = inverted[i][chars[i]]; + } + return indexes; + } + + /** + * Using the provided name, derive the ordinal value which matches it. + * + * @param name + * - the textual name, expressed as an ASCII string + * @return the long which can be used to construct the matching name or related array. + */ + public long getOrdinal(String name) { + char[] chars = name.toCharArray(); + long ordinal = 0; + for (int i = 0; i < chars.length; i++) { + ordinal += (modulo[i] * inverted[i][chars[i]]); + } + return ordinal; + } + + /** + * Using the provided column offsets, derive the ordinal value which matches it. + * + * @param indexes + * - the indexes used to derive an array of values, or equivalently a name + * @return the long which can be used to construct the matching name or related array. + */ + public long getOrdinal(int[] indexes) { + long ordinal = 0; + for (int i = 0; i < indexes.length; i++) { + ordinal += (modulo[i] *= indexes[i]); + } + return ordinal; + } + + + public static long[] computeRadixFactors(char[][] charsets) { + long modulo = 1L; + long[] m = new long[charsets.length]; + for (int i = charsets.length - 1; i >= 0; i--) { + m[i] = modulo; + modulo = Math.multiplyExact(modulo, charsets[i].length); + } +// m[m.length-1]=modulo; + return m; + } + +} diff --git a/virtdata-lib-basics/src/main/java/io/nosqlbench/virtdata/library/basics/shared/util/Stringify.java b/virtdata-lib-basics/src/main/java/io/nosqlbench/virtdata/library/basics/shared/util/Stringify.java new file mode 100644 index 000000000..857b0060f --- /dev/null +++ b/virtdata-lib-basics/src/main/java/io/nosqlbench/virtdata/library/basics/shared/util/Stringify.java @@ -0,0 +1,53 @@ +/* + * 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.virtdata.library.basics.shared.util; + +import io.nosqlbench.virtdata.api.annotations.Categories; +import io.nosqlbench.virtdata.api.annotations.Category; +import io.nosqlbench.virtdata.api.annotations.ThreadSafeMapper; + +import java.util.Arrays; +import java.util.function.Function; + +@ThreadSafeMapper +@Categories(Category.diagnostics) +public class Stringify implements Function { + @Override + public String apply(Object o) { + if (o instanceof float[] fary) { + return Arrays.toString(fary); + } else if (o instanceof double[] dary) { + return Arrays.toString(dary); + } else if (o instanceof long[] lary) { + return Arrays.toString(lary); + } else if (o instanceof int[] iary) { + return Arrays.toString(iary); + } else if (o instanceof Object[] oary) { + return Arrays.toString(oary); + } else if (o instanceof byte[] bary) { + return Arrays.toString(bary); + } else if (o instanceof boolean[] bary) { + return Arrays.toString(bary); + } else if (o instanceof char[] cary) { + return Arrays.toString(cary); + } else if (o instanceof short[] sary) { + return Arrays.toString(sary); + } else { + return String.valueOf(o); + } + } +} diff --git a/virtdata-lib-basics/src/main/java/io/nosqlbench/virtdata/library/basics/shared/vectors/CircleVectors.java b/virtdata-lib-basics/src/main/java/io/nosqlbench/virtdata/library/basics/shared/vectors/CircleVectors.java new file mode 100644 index 000000000..5789e095d --- /dev/null +++ b/virtdata-lib-basics/src/main/java/io/nosqlbench/virtdata/library/basics/shared/vectors/CircleVectors.java @@ -0,0 +1,56 @@ +/* + * 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.virtdata.library.basics.shared.vectors; + +import io.nosqlbench.virtdata.api.annotations.Categories; +import io.nosqlbench.virtdata.api.annotations.Category; +import io.nosqlbench.virtdata.api.annotations.ThreadSafeMapper; +import io.nosqlbench.virtdata.library.basics.shared.vectors.algorithms.CircleAlgorithm; + +import java.util.List; +import java.util.function.LongFunction; + +@Categories(Category.general) +@ThreadSafeMapper +public class CircleVectors implements LongFunction> { + private final int circleCount; + private final CircleAlgorithm algorithm; + + public CircleVectors(int circleCount, String algorithmClass) throws Exception { + this.circleCount = circleCount; + Object algo = Class.forName(algorithmClass).newInstance(); + if (!(algo instanceof CircleAlgorithm)) { + throw new RuntimeException("The class '" + algorithmClass + + "' does not implement CircleAlgorithm"); + } + algorithm = (CircleAlgorithm) algo; + } + + @Override + public List apply(long value) { + return algorithm.getVector((value % circleCount), circleCount); + } + + public int getCircleCount() { + return circleCount; + } + + public CircleAlgorithm getAlgorithm() { + return algorithm; + } + +} diff --git a/virtdata-lib-basics/src/main/java/io/nosqlbench/virtdata/library/basics/shared/vectors/algorithms/CircleAlgorithm.java b/virtdata-lib-basics/src/main/java/io/nosqlbench/virtdata/library/basics/shared/vectors/algorithms/CircleAlgorithm.java new file mode 100644 index 000000000..605a3c571 --- /dev/null +++ b/virtdata-lib-basics/src/main/java/io/nosqlbench/virtdata/library/basics/shared/vectors/algorithms/CircleAlgorithm.java @@ -0,0 +1,25 @@ +/* + * 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.virtdata.library.basics.shared.vectors.algorithms; + +import java.util.List; + +public interface CircleAlgorithm { + List getVector(long value, long circleCount); + + double getMinimumVectorAngle(); +} diff --git a/virtdata-lib-basics/src/main/java/io/nosqlbench/virtdata/library/basics/shared/vectors/algorithms/GoldenAngle.java b/virtdata-lib-basics/src/main/java/io/nosqlbench/virtdata/library/basics/shared/vectors/algorithms/GoldenAngle.java new file mode 100644 index 000000000..d0d0dc612 --- /dev/null +++ b/virtdata-lib-basics/src/main/java/io/nosqlbench/virtdata/library/basics/shared/vectors/algorithms/GoldenAngle.java @@ -0,0 +1,40 @@ +/* + * 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.virtdata.library.basics.shared.vectors.algorithms; + +import java.util.List; + +public class GoldenAngle implements CircleAlgorithm { + + private final static double goldenAngle = 137.5; + + @Override + public List getVector(long value, long circleCount) { + double y = 1 - (value / (double) (circleCount - 1)) * 2; + double radius = Math.sqrt(1 - y * y); + double theta = goldenAngle * value; + double x = Math.cos(theta) * radius; + double z = Math.sin(theta) * radius; + + return List.of((float)x, (float)y, (float)z); + } + + @Override + public double getMinimumVectorAngle() { + return 0; + } +} diff --git a/virtdata-lib-basics/src/main/java/io/nosqlbench/virtdata/library/basics/shared/vectors/algorithms/LatLonBased.java b/virtdata-lib-basics/src/main/java/io/nosqlbench/virtdata/library/basics/shared/vectors/algorithms/LatLonBased.java new file mode 100644 index 000000000..01124a9fd --- /dev/null +++ b/virtdata-lib-basics/src/main/java/io/nosqlbench/virtdata/library/basics/shared/vectors/algorithms/LatLonBased.java @@ -0,0 +1,39 @@ +/* + * 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.virtdata.library.basics.shared.vectors.algorithms; + +import java.util.List; + +public class LatLonBased implements CircleAlgorithm { + private final static double goldenAngle = 137.5; + + @Override + public List getVector(long value, long circleCount) { + double longitude = 2 * Math.PI * value / circleCount; + double latitude = Math.asin(1 - 2 * (double) value / (circleCount - 1)); + double x = Math.cos(latitude) * Math.cos(longitude); + double y = Math.cos(latitude) * Math.sin(longitude); + double z = Math.sin(latitude); + + return List.of((float)x, (float)y, (float)z); + } + + @Override + public double getMinimumVectorAngle() { + return 0; + } +} diff --git a/virtdata-lib-basics/src/main/java/io/nosqlbench/virtdata/library/basics/shared/vectors/primitive/DoubleArrayCache.java b/virtdata-lib-basics/src/main/java/io/nosqlbench/virtdata/library/basics/shared/vectors/primitive/DoubleArrayCache.java new file mode 100644 index 000000000..3169b03cc --- /dev/null +++ b/virtdata-lib-basics/src/main/java/io/nosqlbench/virtdata/library/basics/shared/vectors/primitive/DoubleArrayCache.java @@ -0,0 +1,56 @@ +/* + * 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.virtdata.library.basics.shared.vectors.primitive; + +import io.nosqlbench.virtdata.api.annotations.Categories; +import io.nosqlbench.virtdata.api.annotations.Category; +import io.nosqlbench.virtdata.api.annotations.ThreadSafeMapper; + +/** + * Precompute the interior double[] values to use as a LUT. + */ +@ThreadSafeMapper +@Categories(Category.experimental) +public class DoubleArrayCache extends VectorSequence { + + private final VectorSequence function; + private final double[][] cache; + + public DoubleArrayCache(VectorSequence function) { + super(function.getCardinality()); + + this.function=function; + if (function.getCardinality()>1E10) { + throw new RuntimeException("you are trying to pre-compute and cache " + function.getCardinality() + " elements. Too many! Compute instead without caching."); + } + int size = (int)function.getCardinality(); + this.cache = new double[size][]; + for (int idx = 0; idx < cache.length; idx++) { + cache[idx]=function.apply(idx); + } + } + + @Override + public long getDimensions() { + return function.getDimensions(); + } + + @Override + public double[] apply(long value) { + return cache[(int)(value % cache.length)]; + } +} diff --git a/virtdata-lib-basics/src/main/java/io/nosqlbench/virtdata/library/basics/shared/vectors/primitive/DoubleCache.java b/virtdata-lib-basics/src/main/java/io/nosqlbench/virtdata/library/basics/shared/vectors/primitive/DoubleCache.java new file mode 100644 index 000000000..ca4c34f3c --- /dev/null +++ b/virtdata-lib-basics/src/main/java/io/nosqlbench/virtdata/library/basics/shared/vectors/primitive/DoubleCache.java @@ -0,0 +1,49 @@ +/* + * 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.virtdata.library.basics.shared.vectors.primitive; + +import io.nosqlbench.virtdata.api.annotations.Categories; +import io.nosqlbench.virtdata.api.annotations.Category; +import io.nosqlbench.virtdata.api.annotations.ThreadSafeMapper; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +/** + * Precompute the interior double[] values to use as a LUT. + */ +@ThreadSafeMapper +@Categories(Category.experimental) +public class DoubleCache extends DoubleSequence { + private final static Logger logger = LogManager.getLogger(DoubleCache.class); + private final double[] cache; + + public DoubleCache(DoubleSequence sequence) { + super(sequence.cardinality); + if (sequence.cardinality > 1000000) { + logger.warn("initializing cache with " + sequence.cardinality + " elements, which seems high."); + } + this.cache = new double[(int) sequence.getCardinality()]; + for (int i = 0; i < cache.length; i++) { + this.cache[i] = sequence.applyAsDouble(i); + } + } + + @Override + public double applyAsDouble(long value) { + return cache[(int)(value%cache.length)]; + } +} diff --git a/virtdata-lib-basics/src/main/java/io/nosqlbench/virtdata/library/basics/shared/vectors/primitive/DoubleSequence.java b/virtdata-lib-basics/src/main/java/io/nosqlbench/virtdata/library/basics/shared/vectors/primitive/DoubleSequence.java new file mode 100644 index 000000000..129fa7bc8 --- /dev/null +++ b/virtdata-lib-basics/src/main/java/io/nosqlbench/virtdata/library/basics/shared/vectors/primitive/DoubleSequence.java @@ -0,0 +1,46 @@ +/* + * 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.virtdata.library.basics.shared.vectors.primitive; + +import java.util.function.LongToDoubleFunction; + +/** + * A VectorSequence is a sequence of vectors which are a deterministic + * map between a set of ordinal values and vector values. Ideally, they + * are computed with closed-form functions. If not, they should + * be pre-computed in cached. + * Although each element is provided in an array, this is simply a wrapper + * for one-to-many cardinality which avoids auto-boxing. If a user of DoubleSequence + * does not understand one-to-many semantics and receives values longer than 1 element, + * then an error should be thrown. + */ +public abstract class DoubleSequence implements LongToDoubleFunction { + + protected final long cardinality; + + public DoubleSequence(long cardinality) { + this.cardinality = cardinality; + } + + /** + * @return the number of unique vectors produced. + */ + public long getCardinality() { + return this.cardinality; + } + +} diff --git a/virtdata-lib-basics/src/main/java/io/nosqlbench/virtdata/library/basics/shared/vectors/primitive/DoubleVectorPadLeft.java b/virtdata-lib-basics/src/main/java/io/nosqlbench/virtdata/library/basics/shared/vectors/primitive/DoubleVectorPadLeft.java new file mode 100644 index 000000000..cdce8f707 --- /dev/null +++ b/virtdata-lib-basics/src/main/java/io/nosqlbench/virtdata/library/basics/shared/vectors/primitive/DoubleVectorPadLeft.java @@ -0,0 +1,49 @@ +/* + * 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.virtdata.library.basics.shared.vectors.primitive; + +import io.nosqlbench.virtdata.api.annotations.Categories; +import io.nosqlbench.virtdata.api.annotations.Category; +import io.nosqlbench.virtdata.api.annotations.ThreadSafeMapper; + +import java.util.function.Function; + +/** + * Prefix the incoming array with an empty double[] so that it is sized up to at least the given size. If it is already + * at least that size, pass it through as-is. + */ +@ThreadSafeMapper +@Categories({Category.experimental, Category.vectors}) +public class DoubleVectorPadLeft implements Function { + + private final int size; + + public DoubleVectorPadLeft(int size) { + this.size = size; + } + + @Override + public double[] apply(double[] doubles) { + if (doubles.length>=size) { + return doubles; + } + + double[] newary = new double[size]; + System.arraycopy(doubles, 0, newary, newary.length-doubles.length, doubles.length); + return newary; + } +} diff --git a/virtdata-lib-basics/src/main/java/io/nosqlbench/virtdata/library/basics/shared/vectors/primitive/DoubleVectorPadRight.java b/virtdata-lib-basics/src/main/java/io/nosqlbench/virtdata/library/basics/shared/vectors/primitive/DoubleVectorPadRight.java new file mode 100644 index 000000000..5648e0a19 --- /dev/null +++ b/virtdata-lib-basics/src/main/java/io/nosqlbench/virtdata/library/basics/shared/vectors/primitive/DoubleVectorPadRight.java @@ -0,0 +1,49 @@ +/* + * 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.virtdata.library.basics.shared.vectors.primitive; + +import io.nosqlbench.virtdata.api.annotations.Categories; +import io.nosqlbench.virtdata.api.annotations.Category; +import io.nosqlbench.virtdata.api.annotations.ThreadSafeMapper; + +import java.util.function.Function; + +/** + * Suffix the incoming array with an empty double[] so that it is sized up to at least the given size. If it is already + * at least that size, pass it through as-is. + */ +@ThreadSafeMapper +@Categories({Category.experimental, Category.vectors}) +public class DoubleVectorPadRight implements Function { + + private final int size; + + public DoubleVectorPadRight(int size) { + this.size = size; + } + + @Override + public double[] apply(double[] doubles) { + if (doubles.length>=size) { + return doubles; + } + + double[] newary = new double[size]; + System.arraycopy(doubles, 0, newary, 0, doubles.length); + return newary; + } +} diff --git a/virtdata-lib-basics/src/main/java/io/nosqlbench/virtdata/library/basics/shared/vectors/primitive/DoubleVectorPrefix.java b/virtdata-lib-basics/src/main/java/io/nosqlbench/virtdata/library/basics/shared/vectors/primitive/DoubleVectorPrefix.java new file mode 100644 index 000000000..a8e9a35e1 --- /dev/null +++ b/virtdata-lib-basics/src/main/java/io/nosqlbench/virtdata/library/basics/shared/vectors/primitive/DoubleVectorPrefix.java @@ -0,0 +1,44 @@ +/* + * 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.virtdata.library.basics.shared.vectors.primitive; + +import io.nosqlbench.virtdata.api.annotations.Categories; +import io.nosqlbench.virtdata.api.annotations.Category; +import io.nosqlbench.virtdata.api.annotations.ThreadSafeMapper; + +import java.util.function.Function; + +/** + * Prefix the incoming array with an empty double[] of the given size. + */ +@ThreadSafeMapper +@Categories({Category.experimental,Category.vectors}) +public class DoubleVectorPrefix implements Function { + + private final int size; + + public DoubleVectorPrefix(int size) { + this.size = size; + } + + @Override + public double[] apply(double[] doubles) { + double[] newary = new double[size+doubles.length]; + System.arraycopy(doubles,0,newary,size,doubles.length); + return newary; + } +} diff --git a/virtdata-lib-basics/src/main/java/io/nosqlbench/virtdata/library/basics/shared/vectors/primitive/DoubleVectorSuffix.java b/virtdata-lib-basics/src/main/java/io/nosqlbench/virtdata/library/basics/shared/vectors/primitive/DoubleVectorSuffix.java new file mode 100644 index 000000000..4bbf0313a --- /dev/null +++ b/virtdata-lib-basics/src/main/java/io/nosqlbench/virtdata/library/basics/shared/vectors/primitive/DoubleVectorSuffix.java @@ -0,0 +1,44 @@ +/* + * 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.virtdata.library.basics.shared.vectors.primitive; + +import io.nosqlbench.virtdata.api.annotations.Categories; +import io.nosqlbench.virtdata.api.annotations.Category; +import io.nosqlbench.virtdata.api.annotations.ThreadSafeMapper; + +import java.util.function.Function; + +/** + * Suffix the incoming array with an empty double[] of the given size. + */ +@ThreadSafeMapper +@Categories({Category.experimental,Category.vectors}) +public class DoubleVectorSuffix implements Function { + + private final int size; + + public DoubleVectorSuffix(int size) { + this.size = size; + } + + @Override + public double[] apply(double[] doubles) { + double[] newary = new double[size+doubles.length]; + System.arraycopy(doubles,0,newary,0,doubles.length); + return newary; + } +} diff --git a/virtdata-lib-basics/src/main/java/io/nosqlbench/virtdata/library/basics/shared/vectors/primitive/DoubleVectors.java b/virtdata-lib-basics/src/main/java/io/nosqlbench/virtdata/library/basics/shared/vectors/primitive/DoubleVectors.java new file mode 100644 index 000000000..759ca5862 --- /dev/null +++ b/virtdata-lib-basics/src/main/java/io/nosqlbench/virtdata/library/basics/shared/vectors/primitive/DoubleVectors.java @@ -0,0 +1,60 @@ +/* + * 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.virtdata.library.basics.shared.vectors.primitive; + +import io.nosqlbench.virtdata.api.annotations.Categories; +import io.nosqlbench.virtdata.api.annotations.Category; +import io.nosqlbench.virtdata.api.annotations.Example; +import io.nosqlbench.virtdata.api.annotations.ThreadSafeMapper; +import io.nosqlbench.virtdata.library.basics.shared.util.DoubleCombiner; + +import java.util.function.LongFunction; + +/** + * This is a version of the NoSQLBench {@link io.nosqlbench.virtdata.library.basics.shared.util.Combiner} + * which is especially suited to constructing unique sequences of doubles. This can be to create arbitrarily long + * vectors in double[] form, where each vector corresponds to a specific character encoding. Based on the + * maximum cardinality of symbol values in each position, a step function on the unit interval is created for you + * and used as a source of magnitudes. + *

+ * For example, with a combiner spec of "{@code a-yA-Y*1024}", the "{@code }a-yA-Y" part creates a character set + * mapping for 50 distinct indexed character values with the letter acting as a code, and then the "{@code *1024}" + * repeats ths mapping over 1024 digits of values, which are then concatenated into an array of values as a + * uniquely encoded vector. In actuality, the internal model is computed separately from the character encoding, so is + * efficient, although the character encoding can be used to uniquely identify each vector. + *

+ * + *

Note that as with other combiner forms, you can specify a different cardinality for each position, although + * the automatically computed step function for unit-interval will be based on the largest cardinality. It is not + * computed separately for each position. Thus, a specifier like "{@code a-z*5;0-9*2}"

will only see the last two + * positions using a fraction of the possible magnitudes, as the a-z element has the most steps at 26 between 0.0 and + * 1.0. + */ +@ThreadSafeMapper +@Categories({Category.experimental, Category.premade}) +public class DoubleVectors extends DoubleCombiner implements LongFunction { + /** + * Create a radix-mapped vector function based on a spec of character ranges and combinations. + * @param spec - The string specifier for a symbolic cardinality and symbol model that represents the vector values + */ + @Example({"DoubleVector('0-9*12')","Create a sequence of vectors encoding a 10-valued step function over 12 dimensions"}) + @Example({"DoubleVector('01*1024')","Create a sequence of vectors encoding a 2-valued step function over 1024 dimensions"}) + @Example({"DoubleVector('a-yA-Y0-9!@#$%^&*()*512')","Create a sequence of vectors encoding a 70-valued step function over 512 dimensions"}) + public DoubleVectors(String spec) { + super(spec, new DoubleCache(new UnitSteps(DoubleCombiner.maxRadixDigits(spec)))); + } +} diff --git a/virtdata-lib-basics/src/main/java/io/nosqlbench/virtdata/library/basics/shared/vectors/primitive/FloatVectorPadLeft.java b/virtdata-lib-basics/src/main/java/io/nosqlbench/virtdata/library/basics/shared/vectors/primitive/FloatVectorPadLeft.java new file mode 100644 index 000000000..8122de88e --- /dev/null +++ b/virtdata-lib-basics/src/main/java/io/nosqlbench/virtdata/library/basics/shared/vectors/primitive/FloatVectorPadLeft.java @@ -0,0 +1,49 @@ +/* + * 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.virtdata.library.basics.shared.vectors.primitive; + +import io.nosqlbench.virtdata.api.annotations.Categories; +import io.nosqlbench.virtdata.api.annotations.Category; +import io.nosqlbench.virtdata.api.annotations.ThreadSafeMapper; + +import java.util.function.Function; + +/** + * Prefix the incoming array with an empty float[] so that it is sized up to at least the given size. If it is already + * at least that size, pass it through as-is. + */ +@ThreadSafeMapper +@Categories({Category.experimental, Category.vectors}) +public class FloatVectorPadLeft implements Function { + + private final int size; + + public FloatVectorPadLeft(int size) { + this.size = size; + } + + @Override + public float[] apply(float[] floats) { + if (floats.length>=size) { + return floats; + } + + float[] newary = new float[size]; + System.arraycopy(floats, 0, newary, newary.length-floats.length, floats.length); + return newary; + } +} diff --git a/virtdata-lib-basics/src/main/java/io/nosqlbench/virtdata/library/basics/shared/vectors/primitive/FloatVectorPadRight.java b/virtdata-lib-basics/src/main/java/io/nosqlbench/virtdata/library/basics/shared/vectors/primitive/FloatVectorPadRight.java new file mode 100644 index 000000000..2718a3063 --- /dev/null +++ b/virtdata-lib-basics/src/main/java/io/nosqlbench/virtdata/library/basics/shared/vectors/primitive/FloatVectorPadRight.java @@ -0,0 +1,49 @@ +/* + * 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.virtdata.library.basics.shared.vectors.primitive; + +import io.nosqlbench.virtdata.api.annotations.Categories; +import io.nosqlbench.virtdata.api.annotations.Category; +import io.nosqlbench.virtdata.api.annotations.ThreadSafeMapper; + +import java.util.function.Function; + +/** + * Suffix the incoming array with an empty float[] so that it is sized up to at least the given size. If it is already + * at least that size, pass it through as-is. + */ +@ThreadSafeMapper +@Categories({Category.experimental, Category.vectors}) +public class FloatVectorPadRight implements Function { + + private final int size; + + public FloatVectorPadRight(int size) { + this.size = size; + } + + @Override + public float[] apply(float[] floats) { + if (floats.length>=size) { + return floats; + } + + float[] newary = new float[size]; + System.arraycopy(floats, 0, newary, 0, floats.length); + return newary; + } +} diff --git a/virtdata-lib-basics/src/main/java/io/nosqlbench/virtdata/library/basics/shared/vectors/primitive/FloatVectorPrefix.java b/virtdata-lib-basics/src/main/java/io/nosqlbench/virtdata/library/basics/shared/vectors/primitive/FloatVectorPrefix.java new file mode 100644 index 000000000..9138bbe54 --- /dev/null +++ b/virtdata-lib-basics/src/main/java/io/nosqlbench/virtdata/library/basics/shared/vectors/primitive/FloatVectorPrefix.java @@ -0,0 +1,44 @@ +/* + * 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.virtdata.library.basics.shared.vectors.primitive; + +import io.nosqlbench.virtdata.api.annotations.Categories; +import io.nosqlbench.virtdata.api.annotations.Category; +import io.nosqlbench.virtdata.api.annotations.ThreadSafeMapper; + +import java.util.function.Function; + +/** + * Prefix the incoming array with an empty float[] of the given size. + */ +@ThreadSafeMapper +@Categories({Category.experimental,Category.vectors}) +public class FloatVectorPrefix implements Function { + + private final int size; + + public FloatVectorPrefix(int size) { + this.size = size; + } + + @Override + public float[] apply(float[] floats) { + float[] newary = new float[size+floats.length]; + System.arraycopy(floats,0,newary,size,floats.length); + return newary; + } +} diff --git a/virtdata-lib-basics/src/main/java/io/nosqlbench/virtdata/library/basics/shared/vectors/primitive/FloatVectorSuffix.java b/virtdata-lib-basics/src/main/java/io/nosqlbench/virtdata/library/basics/shared/vectors/primitive/FloatVectorSuffix.java new file mode 100644 index 000000000..306a054cd --- /dev/null +++ b/virtdata-lib-basics/src/main/java/io/nosqlbench/virtdata/library/basics/shared/vectors/primitive/FloatVectorSuffix.java @@ -0,0 +1,44 @@ +/* + * 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.virtdata.library.basics.shared.vectors.primitive; + +import io.nosqlbench.virtdata.api.annotations.Categories; +import io.nosqlbench.virtdata.api.annotations.Category; +import io.nosqlbench.virtdata.api.annotations.ThreadSafeMapper; + +import java.util.function.Function; + +/** + * Suffix the incoming array with an empty double[] of the given size. + */ +@ThreadSafeMapper +@Categories({Category.experimental,Category.vectors}) +public class FloatVectorSuffix implements Function { + + private final int size; + + public FloatVectorSuffix(int size) { + this.size = size; + } + + @Override + public float[] apply(float[] doubles) { + float[] newary = new float[size+doubles.length]; + System.arraycopy(doubles,0,newary,0,doubles.length); + return newary; + } +} diff --git a/virtdata-lib-basics/src/main/java/io/nosqlbench/virtdata/library/basics/shared/vectors/primitive/FloatVectors.java b/virtdata-lib-basics/src/main/java/io/nosqlbench/virtdata/library/basics/shared/vectors/primitive/FloatVectors.java new file mode 100644 index 000000000..1cb668a09 --- /dev/null +++ b/virtdata-lib-basics/src/main/java/io/nosqlbench/virtdata/library/basics/shared/vectors/primitive/FloatVectors.java @@ -0,0 +1,51 @@ +/* + * 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.virtdata.library.basics.shared.vectors.primitive; + +import io.nosqlbench.virtdata.api.annotations.Categories; +import io.nosqlbench.virtdata.api.annotations.Category; +import io.nosqlbench.virtdata.api.annotations.ThreadSafeMapper; + +import java.util.function.LongFunction; + + +/** + * This is the float version of the DoubleVector function. To facilitate a direct + * relationship between the double values from that function and the float values from this, + * this one defers to the double version for primary data. This function essentially + * wraps and converts the results from the DoubleVector function. + */ +@ThreadSafeMapper +@Categories(Category.vectors) +public class FloatVectors implements LongFunction { + + private final DoubleVectors doubleVectorFunction; + + public FloatVectors(String spec) { + doubleVectorFunction = new DoubleVectors(spec); + } + + @Override + public float[] apply(long value) { + double[] doubles = doubleVectorFunction.apply(value); + float[] floats = new float[doubles.length]; + for (int i = 0; i < doubles.length; i++) { + floats[i]=(float) doubles[i]; + } + return floats; + } +} diff --git a/virtdata-lib-basics/src/main/java/io/nosqlbench/virtdata/library/basics/shared/vectors/primitive/GoldenAngleDoubleVectors.java b/virtdata-lib-basics/src/main/java/io/nosqlbench/virtdata/library/basics/shared/vectors/primitive/GoldenAngleDoubleVectors.java new file mode 100644 index 000000000..48540e4e6 --- /dev/null +++ b/virtdata-lib-basics/src/main/java/io/nosqlbench/virtdata/library/basics/shared/vectors/primitive/GoldenAngleDoubleVectors.java @@ -0,0 +1,38 @@ +/* + * 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.virtdata.library.basics.shared.vectors.primitive; + +public class GoldenAngleDoubleVectors extends VectorSequence { + private final static double goldenAngle = 137.5; + + public GoldenAngleDoubleVectors(long vectorCount) { + super(vectorCount); + } + + @Override + public double[] apply(long value) { + double y = 1 - (value / (double) (cardinality - 1)) * 2; + double radius = Math.sqrt(1 - y * y); + double theta = goldenAngle * value; + return new double[] {Math.cos(theta) * radius, y, Math.sin(theta) * radius}; + } + + @Override + public long getDimensions() { + return 3; + } +} diff --git a/virtdata-lib-basics/src/main/java/io/nosqlbench/virtdata/library/basics/shared/vectors/primitive/HashedDoubleVectors.java b/virtdata-lib-basics/src/main/java/io/nosqlbench/virtdata/library/basics/shared/vectors/primitive/HashedDoubleVectors.java new file mode 100644 index 000000000..d63cf826e --- /dev/null +++ b/virtdata-lib-basics/src/main/java/io/nosqlbench/virtdata/library/basics/shared/vectors/primitive/HashedDoubleVectors.java @@ -0,0 +1,77 @@ +/* + * 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.virtdata.library.basics.shared.vectors.primitive; + +import io.nosqlbench.virtdata.api.annotations.Categories; +import io.nosqlbench.virtdata.api.annotations.Category; +import io.nosqlbench.virtdata.api.annotations.ThreadSafeMapper; +import io.nosqlbench.virtdata.api.bindings.VirtDataConversions; +import io.nosqlbench.virtdata.library.basics.shared.from_long.to_double.HashRange; +import io.nosqlbench.virtdata.library.basics.shared.from_long.to_long.Hash; + +import java.util.function.LongFunction; +import java.util.function.LongToDoubleFunction; +import java.util.function.LongToIntFunction; + +/** + * Construct an arbitrarily large vector with hashes. The initial value is assumed to be non-hashed, and is thus hashed + * on input to ensure that inputs are non-contiguous. Once the starting value is hashed, the sequence of long values is + * walked and each value added to the vector is hashed from the values in that sequence. + */ +@Categories({Category.vectors, Category.experimental}) +@ThreadSafeMapper +public class HashedDoubleVectors implements LongFunction { + + private final LongToIntFunction sizeFunc; + private final Hash rehasher; + private final LongToDoubleFunction valueFunc; + + /** + * Build a double[] generator with a given size value or size function, and the given long->double function. + * @param sizer Either a numeric type which sets a fixed dimension, or a long->int function to derive it uniquely for each input + * @param valueFunc A long->double function + */ + public HashedDoubleVectors(Object sizer, Object valueFunc) { + if (sizer instanceof Number number) { + int size = number.intValue(); + this.sizeFunc = (long l) -> size; + } else { + this.sizeFunc = VirtDataConversions.adaptFunction(sizer, LongToIntFunction.class); + } + this.valueFunc = VirtDataConversions.adaptFunction(valueFunc, LongToDoubleFunction.class); + this.rehasher = new Hash(); + } + + public HashedDoubleVectors(Object sizer, double min, double max) { + this(sizer, new HashRange(min, max)); + } + + public HashedDoubleVectors(Object sizer) { + this(sizer, new HashRange(0.0d, 1.0d)); + } + + @Override + public double[] apply(long value) { + int size = sizeFunc.applyAsInt(value); + double[] doubles = new double[size]; + long image = rehasher.applyAsLong(value); + for (int i = 0; i < doubles.length; i++) { // don't consider overflow, hashing doesn't care + doubles[i] = valueFunc.applyAsDouble(image + i); + } + return doubles; + } +} diff --git a/virtdata-lib-basics/src/main/java/io/nosqlbench/virtdata/library/basics/shared/vectors/primitive/HashedFloatVectors.java b/virtdata-lib-basics/src/main/java/io/nosqlbench/virtdata/library/basics/shared/vectors/primitive/HashedFloatVectors.java new file mode 100644 index 000000000..57a4044cf --- /dev/null +++ b/virtdata-lib-basics/src/main/java/io/nosqlbench/virtdata/library/basics/shared/vectors/primitive/HashedFloatVectors.java @@ -0,0 +1,77 @@ +/* + * 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.virtdata.library.basics.shared.vectors.primitive; + +import io.nosqlbench.virtdata.api.annotations.Categories; +import io.nosqlbench.virtdata.api.annotations.Category; +import io.nosqlbench.virtdata.api.annotations.ThreadSafeMapper; +import io.nosqlbench.virtdata.api.bindings.VirtDataConversions; +import io.nosqlbench.virtdata.library.basics.shared.from_long.to_double.HashRange; +import io.nosqlbench.virtdata.library.basics.shared.from_long.to_long.Hash; + +import java.util.function.LongFunction; +import java.util.function.LongToDoubleFunction; +import java.util.function.LongToIntFunction; + +/** + * Construct an arbitrarily large float vector with hashes. The initial value is assumed to be non-hashed, and is thus hashed + * on input to ensure that inputs are non-contiguous. Once the starting value is hashed, the sequence of long values is + * walked and each value added to the vector is hashed from the values in that sequence. + */ +@Categories({Category.vectors, Category.experimental}) +@ThreadSafeMapper +public class HashedFloatVectors implements LongFunction { + + private final LongToIntFunction sizeFunc; + private final Hash rehasher; + private final LongToDoubleFunction valueFunc; + + /** + * Build a double[] generator with a given size value or size function, and the given long->double function. + * @param sizer Either a numeric type which sets a fixed dimension, or a long->int function to derive it uniquely for each input + * @param valueFunc A long->double function + */ + public HashedFloatVectors(Object sizer, Object valueFunc) { + if (sizer instanceof Number number) { + int size = number.intValue(); + this.sizeFunc = (long l) -> size; + } else { + this.sizeFunc = VirtDataConversions.adaptFunction(sizer, LongToIntFunction.class); + } + this.valueFunc = VirtDataConversions.adaptFunction(valueFunc, LongToDoubleFunction.class); + this.rehasher = new Hash(); + } + + public HashedFloatVectors(Object sizer, double min, double max) { + this(sizer, new HashRange(min, max)); + } + + public HashedFloatVectors(Object sizer) { + this(sizer, new HashRange(0.0d, 1.0d)); + } + + @Override + public float[] apply(long value) { + int size = sizeFunc.applyAsInt(value); + float[] floats = new float[size]; + long image = rehasher.applyAsLong(value); + for (int i = 0; i < floats.length; i++) { // don't consider overflow, hashing doesn't care + floats[i] = (float)(valueFunc.applyAsDouble(image + i)); + } + return floats; + } +} diff --git a/virtdata-lib-basics/src/main/java/io/nosqlbench/virtdata/library/basics/shared/vectors/primitive/NormalizeDoubleVector.java b/virtdata-lib-basics/src/main/java/io/nosqlbench/virtdata/library/basics/shared/vectors/primitive/NormalizeDoubleVector.java new file mode 100644 index 000000000..89e1c9c60 --- /dev/null +++ b/virtdata-lib-basics/src/main/java/io/nosqlbench/virtdata/library/basics/shared/vectors/primitive/NormalizeDoubleVector.java @@ -0,0 +1,42 @@ +/* + * 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.virtdata.library.basics.shared.vectors.primitive; + +import io.nosqlbench.virtdata.api.annotations.Categories; +import io.nosqlbench.virtdata.api.annotations.Category; +import io.nosqlbench.virtdata.api.annotations.ThreadSafeMapper; + +import java.util.function.Function; + +@ThreadSafeMapper +@Categories(Category.experimental) +public class NormalizeDoubleVector implements Function { + + @Override + public double[] apply(double[] doubles) { + double[] normalized = new double[doubles.length]; + double accumulator = 0.0d; + for (int i = 0; i < doubles.length; i++) { + accumulator+=doubles[i]*doubles[i]; + } + double scale = Math.sqrt(accumulator); + for (int i = 0; i < doubles.length; i++) { + normalized[i]=doubles[i]/scale; + } + return normalized; + } +} diff --git a/virtdata-lib-basics/src/main/java/io/nosqlbench/virtdata/library/basics/shared/vectors/primitive/NormalizeFloatVector.java b/virtdata-lib-basics/src/main/java/io/nosqlbench/virtdata/library/basics/shared/vectors/primitive/NormalizeFloatVector.java new file mode 100644 index 000000000..e0eff4624 --- /dev/null +++ b/virtdata-lib-basics/src/main/java/io/nosqlbench/virtdata/library/basics/shared/vectors/primitive/NormalizeFloatVector.java @@ -0,0 +1,42 @@ +/* + * 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.virtdata.library.basics.shared.vectors.primitive; + +import io.nosqlbench.virtdata.api.annotations.Categories; +import io.nosqlbench.virtdata.api.annotations.Category; +import io.nosqlbench.virtdata.api.annotations.ThreadSafeMapper; + +import java.util.function.Function; + +@ThreadSafeMapper +@Categories(Category.experimental) +public class NormalizeFloatVector implements Function { + + @Override + public float[] apply(float[] floats) { + float[] normalized = new float[floats.length]; + double accumulator = 0.0d; + for (int i = 0; i < floats.length; i++) { + accumulator+=floats[i]*floats[i]; + } + double scale = Math.sqrt(accumulator); + for (int i = 0; i < floats.length; i++) { + normalized[i]=(float)(floats[i]/scale); + } + return normalized; + } +} diff --git a/virtdata-lib-basics/src/main/java/io/nosqlbench/virtdata/library/basics/shared/vectors/primitive/ToFloatVector.java b/virtdata-lib-basics/src/main/java/io/nosqlbench/virtdata/library/basics/shared/vectors/primitive/ToFloatVector.java new file mode 100644 index 000000000..89d87a128 --- /dev/null +++ b/virtdata-lib-basics/src/main/java/io/nosqlbench/virtdata/library/basics/shared/vectors/primitive/ToFloatVector.java @@ -0,0 +1,36 @@ +/* + * 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.virtdata.library.basics.shared.vectors.primitive; + +import io.nosqlbench.virtdata.api.annotations.Categories; +import io.nosqlbench.virtdata.api.annotations.Category; +import io.nosqlbench.virtdata.api.annotations.ThreadSafeMapper; + +import java.util.function.Function; + +@ThreadSafeMapper +@Categories({Category.vectors,Category.experimental}) +public class ToFloatVector implements Function { + @Override + public float[] apply(double[] doubles) { + float[] floats = new float[doubles.length]; + for (int i = 0; i < doubles.length; i++) { + floats[i] = (float)doubles[i]; + } + return floats; + } +} diff --git a/virtdata-lib-basics/src/main/java/io/nosqlbench/virtdata/library/basics/shared/vectors/primitive/UnitSteps.java b/virtdata-lib-basics/src/main/java/io/nosqlbench/virtdata/library/basics/shared/vectors/primitive/UnitSteps.java new file mode 100644 index 000000000..1d87ade2d --- /dev/null +++ b/virtdata-lib-basics/src/main/java/io/nosqlbench/virtdata/library/basics/shared/vectors/primitive/UnitSteps.java @@ -0,0 +1,28 @@ +/* + * 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.virtdata.library.basics.shared.vectors.primitive; + +public class UnitSteps extends DoubleSequence { + public UnitSteps(long cardinality) { + super(cardinality); + } + + @Override + public double applyAsDouble(long value) { + return ((double)value%cardinality) / (double)cardinality; + } +} diff --git a/virtdata-lib-basics/src/main/java/io/nosqlbench/virtdata/library/basics/shared/vectors/primitive/VectorSequence.java b/virtdata-lib-basics/src/main/java/io/nosqlbench/virtdata/library/basics/shared/vectors/primitive/VectorSequence.java new file mode 100644 index 000000000..1fb6c5d56 --- /dev/null +++ b/virtdata-lib-basics/src/main/java/io/nosqlbench/virtdata/library/basics/shared/vectors/primitive/VectorSequence.java @@ -0,0 +1,53 @@ +/* + * 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.virtdata.library.basics.shared.vectors.primitive; + +import java.util.function.LongFunction; + +/** + * A VectorSequence is a sequence of vectors which are a deterministic + * map between a set of ordinal values and vector values. Ideally, they + * are computed with closed-form functions. If not, they should + * be pre-computed in cashed. + */ +public abstract class VectorSequence implements LongFunction { + + protected final long cardinality; + + public VectorSequence(long cardinality) { + this.cardinality = cardinality; + } + /** + * @return the number of components per vector produced. + */ + public abstract long getDimensions(); + + /** + * @return the number of unique vectors produced. + */ + public long getCardinality() { + return this.cardinality; + } + + /** + * This should return the computed minimum vector angle in radians + * @return the minimum vector angle in radians between adjacent vectors by ordinal value + */ + public double getMinimumVectorAngle() { + return 0.0d; + } +} diff --git a/virtdata-lib-basics/src/test/java/io/nosqlbench/virtdata/library/basics/shared/repeaters/RepeatListTest.java b/virtdata-lib-basics/src/test/java/io/nosqlbench/virtdata/library/basics/shared/repeaters/RepeatListTest.java new file mode 100644 index 000000000..52e419838 --- /dev/null +++ b/virtdata-lib-basics/src/test/java/io/nosqlbench/virtdata/library/basics/shared/repeaters/RepeatListTest.java @@ -0,0 +1,35 @@ +/* + * 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.virtdata.library.basics.shared.repeaters; + +import org.junit.jupiter.api.Test; + +import java.util.List; + +import static org.assertj.core.api.Assertions.assertThat; + +public class RepeatListTest { + + @Test + public void testRepeatList() { + List doubles = List.of(1.2, 3.4, 5.6); + RepeatList repeater = new RepeatList(7); + List repeated = repeater.apply(doubles); + assertThat(repeated).containsExactly(1.2, 3.4, 5.6, 1.2, 3.4, 5.6, 1.2); + } + +} diff --git a/virtdata-lib-basics/src/test/java/io/nosqlbench/virtdata/library/basics/shared/util/CombinerTest.java b/virtdata-lib-basics/src/test/java/io/nosqlbench/virtdata/library/basics/shared/util/CombinerTest.java new file mode 100644 index 000000000..5d622a7fc --- /dev/null +++ b/virtdata-lib-basics/src/test/java/io/nosqlbench/virtdata/library/basics/shared/util/CombinerTest.java @@ -0,0 +1,93 @@ +/* + * 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.virtdata.library.basics.shared.util; + +import org.junit.jupiter.api.Test; + +import static org.assertj.core.api.Assertions.assertThat; + +public class CombinerTest { + + @Test + public void testCharsetRangingBasic() { + char[][] chars = Combiner.parseSpec("a-e"); + assertThat(chars).isEqualTo(new char[][]{{'a','b','c','d','e'}}); + } + + @Test + public void testCharsetRangingRepeat() { + char[][] chars = Combiner.parseSpec("a-c*3"); + assertThat(chars).isEqualTo(new char[][]{{'a','b','c'},{'a','b','c'},{'a','b','c'}}); + } + + @Test + public void testInvertedIndex() { + char[][] chars = Combiner.parseSpec("a-c*3"); + int[][] ints = Combiner.invertedIndexFor("a-c*3"); + assertThat(chars[0][0]).isEqualTo('a'); + assertThat(chars[1][1]).isEqualTo('b'); + assertThat(chars[2][2]).isEqualTo('c'); + assertThat(ints[0]['a']).isEqualTo(0); + assertThat(ints[1]['b']).isEqualTo(1); + assertThat(ints[2]['c']).isEqualTo(2); + } + + @Test + public void testBasicSequence() { + Combiner stringCombiner = new Combiner<>("0-9*10", String::valueOf, String.class); + assertThat(stringCombiner.apply(123456789L)).isEqualTo(new String[]{"0","1","2","3","4","5","6","7","8","9"}); + long ordinal = stringCombiner.getOrdinal("0123456789"); + assertThat(stringCombiner.getEncoding(ordinal)).isEqualTo("0123456789"); + assertThat(ordinal).isEqualTo(123456789L); + assertThat(stringCombiner.getIndexes(123456789L)).isEqualTo(new int[]{0,1,2,3,4,5,6,7,8,9}); + assertThat(stringCombiner.getOrdinal(new int[]{0,1,2,3,4,5,6,7,8,9})).isEqualTo(123456789L); + } + + @Test + public void testRangeFor() { + assertThat(Combiner.rangeFor("3")).isEqualTo(new char[]{'3'}); + assertThat(Combiner.rangeFor("3-5")).isEqualTo(new char[]{'3','4','5'}); + assertThat(Combiner.rangeFor("345")).isEqualTo(new char[]{'3','4','5'}); + assertThat(Combiner.rangeFor("3-45")).isEqualTo(new char[]{'3','4','5'}); + } + + @Test + public void testChains() { + Combiner combiner = new Combiner<>("ab*2", String::valueOf, String.class); + long correctInput=3; + int[] correctIndexes = new int[]{1,1}; + String correctEncoding = "bb"; + String[] correctValues = new String[]{"1","1"}; + + assertThat(combiner.apply(correctInput)).isEqualTo(correctValues); + assertThat(combiner.getArray(correctIndexes)).isEqualTo(correctValues); + assertThat(combiner.getArray(correctEncoding)).isEqualTo(correctValues); + + assertThat(combiner.getIndexes(correctInput)).isEqualTo(correctIndexes); + assertThat(combiner.getIndexes(correctEncoding)).isEqualTo(correctIndexes); + + assertThat(combiner.getOrdinal(correctIndexes)).isEqualTo(correctInput); + assertThat(combiner.getOrdinal(correctEncoding)).isEqualTo(correctInput); + + assertThat(combiner.getEncoding(correctIndexes)).isEqualTo(correctEncoding); + assertThat(combiner.getEncoding(correctInput)).isEqualTo(correctEncoding); + + } + + + +} diff --git a/virtdata-lib-basics/src/test/java/io/nosqlbench/virtdata/library/basics/shared/util/DoubleCombinerTest.java b/virtdata-lib-basics/src/test/java/io/nosqlbench/virtdata/library/basics/shared/util/DoubleCombinerTest.java new file mode 100644 index 000000000..41b59024a --- /dev/null +++ b/virtdata-lib-basics/src/test/java/io/nosqlbench/virtdata/library/basics/shared/util/DoubleCombinerTest.java @@ -0,0 +1,68 @@ +/* + * 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.virtdata.library.basics.shared.util; + +import org.junit.jupiter.api.Test; + +import static org.assertj.core.api.Assertions.assertThat; + +public class DoubleCombinerTest { + + @Test + public void testBasicSequence() { + DoubleCombiner dc = new DoubleCombiner("0-9*10", l -> (double)l); + assertThat(dc.apply(123456789L)).isEqualTo(new double[]{0.0d,1.0d,2.0d,3.0d,4.0d,5.0d,6.0d,7.0d,8.0d,9.0d}); + long ordinal = dc.getOrdinal("0123456789"); + assertThat(dc.getEncoding(ordinal)).isEqualTo("0123456789"); + assertThat(ordinal).isEqualTo(123456789L); + assertThat(dc.getIndexes(123456789L)).isEqualTo(new int[]{0,1,2,3,4,5,6,7,8,9}); + assertThat(dc.getOrdinal(new int[]{0,1,2,3,4,5,6,7,8,9})).isEqualTo(123456789L); + } + + @Test + public void testRangeFor() { + assertThat(Combiner.rangeFor("3")).isEqualTo(new char[]{'3'}); + assertThat(Combiner.rangeFor("3-5")).isEqualTo(new char[]{'3','4','5'}); + assertThat(Combiner.rangeFor("345")).isEqualTo(new char[]{'3','4','5'}); + assertThat(Combiner.rangeFor("3-45")).isEqualTo(new char[]{'3','4','5'}); + } + + @Test + public void testChains() { + Combiner combiner = new Combiner<>("ab*2", String::valueOf, String.class); + long correctInput=3; + int[] correctIndexes = new int[]{1,1}; + String correctEncoding = "bb"; + String[] correctValues = new String[]{"1","1"}; + + assertThat(combiner.apply(correctInput)).isEqualTo(correctValues); + assertThat(combiner.getArray(correctIndexes)).isEqualTo(correctValues); + assertThat(combiner.getArray(correctEncoding)).isEqualTo(correctValues); + + assertThat(combiner.getIndexes(correctInput)).isEqualTo(correctIndexes); + assertThat(combiner.getIndexes(correctEncoding)).isEqualTo(correctIndexes); + + assertThat(combiner.getOrdinal(correctIndexes)).isEqualTo(correctInput); + assertThat(combiner.getOrdinal(correctEncoding)).isEqualTo(correctInput); + + assertThat(combiner.getEncoding(correctIndexes)).isEqualTo(correctEncoding); + assertThat(combiner.getEncoding(correctInput)).isEqualTo(correctEncoding); + + } + + +} diff --git a/virtdata-lib-basics/src/test/java/io/nosqlbench/virtdata/library/basics/shared/vectors/CircleVectorsTest.java b/virtdata-lib-basics/src/test/java/io/nosqlbench/virtdata/library/basics/shared/vectors/CircleVectorsTest.java new file mode 100644 index 000000000..f11900988 --- /dev/null +++ b/virtdata-lib-basics/src/test/java/io/nosqlbench/virtdata/library/basics/shared/vectors/CircleVectorsTest.java @@ -0,0 +1,83 @@ +/* + * 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.virtdata.library.basics.shared.vectors; + +import org.junit.jupiter.api.Test; + +import java.util.List; + +import static org.junit.jupiter.api.Assertions.*; + +public class CircleVectorsTest { + + @Test + public void testCircleVectors() { + try { + CircleVectors circleVectors = new CircleVectors(10, + "io.nosqlbench.virtdata.library.basics.shared.vectors.algorithms.GoldenAngle"); + + assert (circleVectors.getCircleCount() == 10); + assert (circleVectors.getAlgorithm() instanceof + io.nosqlbench.virtdata.library.basics.shared.vectors.algorithms.GoldenAngle); + } catch (Exception e) { + throw new RuntimeException(e); + } + } + + @Test + public void whenExceptionThrownForWrongClass() { + Exception exception = assertThrows(RuntimeException.class, () -> { + CircleVectors circleVectors = new CircleVectors(10,"java.util.Date"); + }); + + String expectedMessage = "The class 'java.util.Date' does not implement CircleAlgorithm"; + String actualMessage = exception.getMessage(); + + assertTrue(actualMessage.contains(expectedMessage)); + } + @Test + public void testGoldenAngle() { + try { + CircleVectors circleVectors = new CircleVectors(10, + "io.nosqlbench.virtdata.library.basics.shared.vectors.algorithms.GoldenAngle"); + + List result = circleVectors.apply(1000); + assert (result.size() == 3); + assertEquals(0.0f, result.get(0)); + assertEquals(1.0f, result.get(1)); + assertEquals(0.0f, result.get(2)); + } catch (Exception e) { + throw new RuntimeException(e); + } + } + + @Test + public void testLatLonBased() { + try { + CircleVectors circleVectors = new CircleVectors(10, + "io.nosqlbench.virtdata.library.basics.shared.vectors.algorithms.LatLonBased"); + + List result = circleVectors.apply(1000); + assert (result.size() == 3); + assertEquals(6.123234E-17f, result.get(0)); + assertEquals(0.0f, result.get(1)); + assertEquals(1.0f, result.get(2)); + } catch (Exception e) { + throw new RuntimeException(e); + } + } +} diff --git a/virtdata-lib-basics/src/test/java/io/nosqlbench/virtdata/library/basics/shared/vectors/primitive/CharVectorsTest.java b/virtdata-lib-basics/src/test/java/io/nosqlbench/virtdata/library/basics/shared/vectors/primitive/CharVectorsTest.java new file mode 100644 index 000000000..9726cb690 --- /dev/null +++ b/virtdata-lib-basics/src/test/java/io/nosqlbench/virtdata/library/basics/shared/vectors/primitive/CharVectorsTest.java @@ -0,0 +1,52 @@ +/* + * 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.virtdata.library.basics.shared.vectors.primitive; + +import org.junit.jupiter.api.Test; + +import static org.assertj.core.api.Assertions.assertThat; + +public class CharVectorsTest { + + + /** + * Verify radix mapping to aligned unit-interval step function. This shows the most conceptually + * direct mapping to a vector. + */ + @Test + public void testBase10CharVectors() { + DoubleVectors v10 = new DoubleVectors("0-9*12"); + + assertThat(v10.getEncoding(0L)).isEqualTo("000000000000"); + assertThat(v10.apply(0L)) + .isEqualTo(new double[]{0.0d, 0.0d, 0.0d, 0.0d, 0.0d, 0.0d, 0.0d, 0.0d, 0.0d, 0.0d, 0.0d, 0.0d}); + + assertThat(v10.getEncoding(10L)).isEqualTo("000000000010"); + assertThat(v10.apply(10L)) + .isEqualTo(new double[]{0.0d, 0.0d, 0.0d, 0.0d, 0.0d, 0.0d, 0.0d, 0.0d, 0.0d, 0.0d, 0.1d, 0.0d}); + + assertThat(v10.getEncoding(1000000000L)).isEqualTo("001000000000"); + assertThat(v10.apply(1000000000L)) + .isEqualTo(new double[]{0.0d, 0.0d, 0.1d, 0.0d, 0.0d, 0.0d, 0.0d, 0.0d, 0.0d, 0.0d, 0.0d, 0.0d}); + + assertThat(v10.getEncoding(999999999999L)).isEqualTo("999999999999"); + assertThat(v10.apply(999999999999L)) + .isEqualTo(new double[]{0.9, 0.9, 0.9, 0.9, 0.9, 0.9, 0.9, 0.9, 0.9, 0.9, 0.9, 0.9}); + + } + +} diff --git a/virtdata-lib-basics/src/test/java/io/nosqlbench/virtdata/library/basics/shared/vectors/primitive/DoubleVectorTest.java b/virtdata-lib-basics/src/test/java/io/nosqlbench/virtdata/library/basics/shared/vectors/primitive/DoubleVectorTest.java new file mode 100644 index 000000000..9cc5c4b56 --- /dev/null +++ b/virtdata-lib-basics/src/test/java/io/nosqlbench/virtdata/library/basics/shared/vectors/primitive/DoubleVectorTest.java @@ -0,0 +1,31 @@ +/* + * 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.virtdata.library.basics.shared.vectors.primitive; + +import org.junit.jupiter.api.Test; + +import static org.assertj.core.api.Assertions.assertThat; + +public class DoubleVectorTest { + + @Test + public void testCombinedDoubleVector() { + DoubleVectors doubleVector = new DoubleVectors("0-9*12"); + assertThat(doubleVector.apply(1L)).isEqualTo(new double[]{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.1}); + } + +} diff --git a/virtdata-lib-basics/src/test/java/io/nosqlbench/virtdata/library/basics/shared/vectors/primitive/HashedDoubleVectorsTest.java b/virtdata-lib-basics/src/test/java/io/nosqlbench/virtdata/library/basics/shared/vectors/primitive/HashedDoubleVectorsTest.java new file mode 100644 index 000000000..d116da69e --- /dev/null +++ b/virtdata-lib-basics/src/test/java/io/nosqlbench/virtdata/library/basics/shared/vectors/primitive/HashedDoubleVectorsTest.java @@ -0,0 +1,34 @@ +/* + * 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.virtdata.library.basics.shared.vectors.primitive; + +import org.junit.jupiter.api.Test; + +import java.util.Arrays; + +import static org.assertj.core.api.Assertions.assertThat; + +public class HashedDoubleVectorsTest { + + @Test + public void testHashedDoubleVectors() { + HashedDoubleVectors hdv1 = new HashedDoubleVectors(10000); + double[] doubles = hdv1.apply(1L); + System.out.println(Arrays.toString(doubles)); + } + +} diff --git a/virtdata-lib-basics/src/test/java/io/nosqlbench/virtdata/library/basics/tests/long_double/HashedDoubleRangeTest.java b/virtdata-lib-basics/src/test/java/io/nosqlbench/virtdata/library/basics/tests/long_double/HashedDoubleRangeTest.java index 9dd070637..690cebecc 100644 --- a/virtdata-lib-basics/src/test/java/io/nosqlbench/virtdata/library/basics/tests/long_double/HashedDoubleRangeTest.java +++ b/virtdata-lib-basics/src/test/java/io/nosqlbench/virtdata/library/basics/tests/long_double/HashedDoubleRangeTest.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. @@ -29,7 +29,17 @@ public class HashedDoubleRangeTest { for(long i=1;i<1000;i++) { assertThat(r.applyAsDouble(i)).isBetween(0.0D,100.0D); } - } + @Test + public void testNegativeAndPositive() { + HashRange r = new HashRange(-1.0D, 1.0D); + for (long i = 1; i<1000; i++) { + double result = r.applyAsDouble(i); + System.out.println(result); + assertThat(result).isBetween(-1.0d, 1.0d); + } + } + + } From 49b5947895ca956dfe733a60508e41df2165793e Mon Sep 17 00:00:00 2001 From: Jonathan Shook Date: Tue, 25 Jul 2023 11:50:14 -0500 Subject: [PATCH 03/14] copyright updates --- .../engine/api/activityapi/core/Action.java | 2 +- .../engine/api/activityapi/core/ActionDispenser.java | 2 +- .../engine/api/activityapi/core/ActivitiesAware.java | 2 +- .../api/activityapi/core/ActivityController.java | 2 +- .../activityapi/core/ActivityControlsListener.java | 2 +- .../api/activityapi/core/ActivityDefObserver.java | 2 +- .../engine/api/activityapi/core/AsyncAction.java | 2 +- .../engine/api/activityapi/core/BaseAsyncAction.java | 2 +- .../nosqlbench/engine/api/activityapi/core/Motor.java | 2 +- .../engine/api/activityapi/core/MotorDispenser.java | 2 +- .../engine/api/activityapi/core/Startable.java | 2 +- .../engine/api/activityapi/core/SyncAction.java | 2 +- .../api/activityapi/core/longIntervalSupplier.java | 2 +- .../api/activityapi/core/ops/fluent/OpTracker.java | 2 +- .../core/ops/fluent/opfacets/CompletedOp.java | 2 +- .../core/ops/fluent/opfacets/EventedOpImpl.java | 2 +- .../core/ops/fluent/opfacets/FailedOp.java | 2 +- .../core/ops/fluent/opfacets/OpEvents.java | 2 +- .../core/ops/fluent/opfacets/OpFacets.java | 2 +- .../activityapi/core/ops/fluent/opfacets/OpImpl.java | 2 +- .../activityapi/core/ops/fluent/opfacets/Payload.java | 2 +- .../core/ops/fluent/opfacets/SkippedOp.java | 2 +- .../core/ops/fluent/opfacets/StartedOp.java | 2 +- .../core/ops/fluent/opfacets/SucceededOp.java | 2 +- .../core/ops/fluent/opfacets/TrackedOp.java | 2 +- .../api/activityapi/core/progress/ActiveMeter.java | 2 +- .../core/progress/ActivityMetricProgressMeter.java | 2 +- .../api/activityapi/core/progress/CompletedMeter.java | 2 +- .../api/activityapi/core/progress/CycleMeter.java | 2 +- .../activityapi/core/progress/InputProgressMeter.java | 2 +- .../core/progress/MetricProgressMeter.java | 2 +- .../activityapi/core/progress/ProgressCapable.java | 2 +- .../activityapi/core/progress/ProgressDisplay.java | 2 +- .../core/progress/ProgressMeterDisplay.java | 2 +- .../api/activityapi/core/progress/RemainingMeter.java | 2 +- .../api/activityapi/core/progress/StateCapable.java | 2 +- .../api/activityapi/cyclelog/buffers/Buffer.java | 2 +- .../activityapi/cyclelog/buffers/CycleSorting.java | 2 +- .../buffers/op_output/StrideOutputConsumer.java | 2 +- .../buffers/op_output/StrideOutputSegment.java | 2 +- .../buffers/op_output/StrideOutputSegmentImpl.java | 2 +- .../cyclelog/buffers/results/CycleArray.java | 2 +- .../cyclelog/buffers/results/CycleMutable.java | 2 +- .../cyclelog/buffers/results/CycleReadable.java | 2 +- .../cyclelog/buffers/results/CycleResult.java | 2 +- .../cyclelog/buffers/results/CycleResultArray.java | 2 +- .../buffers/results/CycleResultSegmentBuffer.java | 2 +- .../cyclelog/buffers/results/CycleResultStrider.java | 2 +- .../buffers/results/CycleResultsIntervalSegment.java | 2 +- .../cyclelog/buffers/results/CycleResultsSegment.java | 2 +- .../buffers/results/CycleResultsSegmentReadable.java | 2 +- .../cyclelog/buffers/results/CycleSegment.java | 2 +- .../cyclelog/buffers/results/CycleSegmentBuffer.java | 2 +- .../cyclelog/buffers/results/MutableCycleResult.java | 2 +- .../cyclelog/buffers/results/ResultReadable.java | 2 +- .../buffers/results/SegmentedResultInput.java | 2 +- .../cyclelog/filters/CoreResultValueFilter.java | 2 +- .../filters/IncludeCodesTypeExperimental.java | 2 +- .../cyclelog/filters/InputFilterDispenser.java | 2 +- .../api/activityapi/cyclelog/filters/InputMapper.java | 2 +- .../cyclelog/filters/IntPredicateDispenser.java | 2 +- .../cyclelog/filters/ResultFilterDispenser.java | 2 +- .../cyclelog/filters/ResultValueFilterType.java | 2 +- .../filters/tristate/CycleResultPredicate.java | 2 +- .../filters/tristate/CycleResultTristateFilter.java | 2 +- .../filters/tristate/EnumReadableMappingFilter.java | 2 +- .../cyclelog/filters/tristate/ResultFilterPhase.java | 2 +- .../filters/tristate/ResultFilteringSieve.java | 2 +- .../filters/tristate/ResultMappingArrayFilter.java | 2 +- .../cyclelog/filters/tristate/TristateFilter.java | 2 +- .../inputs/cyclelog/CanFilterResultValue.java | 2 +- .../cyclelog/inputs/cyclelog/CycleLogInputType.java | 2 +- .../activityapi/cyclelog/outputs/CanSortCycles.java | 2 +- .../outputs/ReorderingConcurrentResultBuffer.java | 2 +- .../outputs/cyclelog/CycleLogImporterUtility.java | 2 +- .../cyclelog/outputs/cyclelog/CycleLogOutputType.java | 2 +- .../outputs/logger/LoggingMarkerDispenser.java | 2 +- .../cyclelog/outputs/logger/LoggingOutput.java | 4 ++-- .../activityapi/errorhandling/CycleErrorHandler.java | 2 +- .../activityapi/errorhandling/CycleErrorHandlers.java | 2 +- .../activityapi/errorhandling/HashedErrorHandler.java | 2 +- .../errorhandling/modular/ErrorDetail.java | 2 +- .../errorhandling/modular/ErrorHandler.java | 2 +- .../errorhandling/modular/NBErrorHandler.java | 2 +- .../activityapi/errorhandling/modular/ResultCode.java | 2 +- .../modular/handlers/CountErrorHandler.java | 2 +- .../modular/handlers/IgnoreErrorHandler.java | 2 +- .../modular/handlers/MeterErrorHandler.java | 2 +- .../modular/handlers/RetryErrorHandler.java | 2 +- .../modular/handlers/StopErrorHandler.java | 2 +- .../modular/handlers/TimerErrorHandler.java | 2 +- .../modular/handlers/WarnErrorHandler.java | 2 +- .../engine/api/activityapi/input/Input.java | 2 +- .../engine/api/activityapi/input/InputDispenser.java | 2 +- .../engine/api/activityapi/input/InputType.java | 2 +- .../engine/api/activityapi/input/StrideAware.java | 2 +- .../api/activityapi/output/OutputDispenser.java | 2 +- .../engine/api/activityapi/output/OutputType.java | 2 +- .../api/activityapi/planning/BucketSequencer.java | 2 +- .../api/activityapi/planning/ConcatSequencer.java | 2 +- .../api/activityapi/planning/ElementSequencer.java | 2 +- .../api/activityapi/planning/IntervalSequencer.java | 2 +- .../engine/api/activityapi/planning/OpSequence.java | 2 +- .../engine/api/activityapi/planning/Sequence.java | 2 +- .../api/activityapi/planning/SequencePlanner.java | 2 +- .../api/activityapi/planning/SequencerType.java | 2 +- .../api/activityapi/ratelimits/DiagUpdateRate.java | 2 +- .../api/activityapi/ratelimits/LeastWorstDelay.java | 6 +++--- .../api/activityapi/ratelimits/RateLimiter.java | 2 +- .../engine/api/activityapi/ratelimits/RateSpec.java | 11 ++++++++--- .../activityapi/sysperf/SysBenchMethodNanoTime.java | 2 +- .../activityapi/sysperf/SysBenchMethodParkNanos.java | 2 +- .../sysperf/SysBenchMethodThreadSleep.java | 2 +- .../api/activityapi/sysperf/SysPerfBaseliner.java | 2 +- .../engine/api/activityapi/sysperf/SysPerfData.java | 2 +- .../engine/api/activityimpl/ActivityDispenser.java | 2 +- .../api/activityimpl/ActivityInitializationError.java | 2 +- .../nosqlbench/engine/api/activityimpl/CpuInfo.java | 2 +- .../api/activityimpl/FilteringInputDispenser.java | 2 +- .../api/activityimpl/FilteringOutputDispenser.java | 2 +- .../engine/api/activityimpl/MotorState.java | 2 +- .../engine/api/activityimpl/action/CoreAction.java | 2 +- .../api/activityimpl/action/CoreActionDispenser.java | 2 +- .../api/activityimpl/input/CycleArrayBuffer.java | 2 +- .../engine/api/activityimpl/input/InputInterval.java | 2 +- .../api/activityimpl/input/TargetRateInputType.java | 2 +- .../activityimpl/marker/longheap/LongTreeTracker.java | 2 +- .../marker/longheap/LongTreeTrackerAtomic.java | 2 +- .../activityimpl/marker/longheap/TreeTracker1024.java | 4 ++-- .../api/activityimpl/uniform/ActivityDefAware.java | 2 +- .../api/activityimpl/uniform/NBInvokerType.java | 2 +- .../activityimpl/uniform/StandardActionDispenser.java | 2 +- .../java/io/nosqlbench/engine/api/clireader/CLI.java | 2 +- .../engine/api/clireader/dsl/CLIFacets.java | 2 +- .../nosqlbench/engine/api/clireader/package-info.java | 2 +- .../engine/api/extensions/SandboxPlugin.java | 2 +- .../io/nosqlbench/engine/api/metrics/HistoLogger.java | 2 +- .../nosqlbench/engine/api/metrics/IndicatorMode.java | 2 +- .../nosqlbench/engine/api/scenarios/WorkloadDesc.java | 2 +- .../nosqlbench/engine/api/scoping/ScopedSupplier.java | 2 +- .../engine/api/scripting/ExprEvaluator.java | 2 +- .../engine/api/scripting/GraalJsEvaluator.java | 2 +- .../engine/api/scripting/ScriptEnvBuffer.java | 2 +- .../java/io/nosqlbench/engine/api/util/Colors.java | 2 +- .../io/nosqlbench/engine/api/util/ConfigTuples.java | 2 +- .../io/nosqlbench/engine/api/util/SimpleConfig.java | 2 +- .../engine/api/activityapi/ParameterMapTest.java | 2 +- .../core/ops/fluent/OpTrackerImplTest.java | 2 +- .../results/CycleResultArraySegmentBufferTest.java | 2 +- .../tristate/EnumReadableMappingFilterTest.java | 2 +- .../cyclelog/inputs/cyclelog/CycleLogInputTest.java | 2 +- .../errorhandling/HashedErrorHandlerTest.java | 2 +- .../api/activityapi/planning/BucketSequencerTest.java | 2 +- .../api/activityapi/planning/ConcatSequencerTest.java | 2 +- .../activityapi/planning/IntervalSequencerTest.java | 2 +- .../api/activityapi/ratelimits/RateSpecTest.java | 2 +- .../activityapi/ratelimits/TestableRateLimiter.java | 2 +- .../api/activityapi/sysperf/SysPerfBaselinerTest.java | 2 +- .../engine/api/activityapi/sysperf/SysPerfTest.java | 2 +- .../engine/api/activityimpl/ActivityDefTest.java | 2 +- .../engine/api/activityimpl/CpuInfoTest.java | 2 +- .../api/activityimpl/input/AtomicInputTest.java | 2 +- .../api/activityimpl/input/CycleArrayBufferTest.java | 2 +- .../engine/api/activityimpl/input/CycleArrayTest.java | 2 +- .../api/activityimpl/input/InputIntervalTest.java | 2 +- .../api/activityimpl/input/LinkedInputTest.java | 2 +- .../api/activityimpl/marker/CoreOutputAtticTest.java | 2 +- .../api/activityimpl/motor/RunStateTallyTest.java | 2 +- .../activityimpl/tracking/LongTreeTrackerTest2.java | 2 +- .../activityimpl/tracking/TreeTracker1024Test.java | 2 +- .../engine/api/metrics/ActivityMetricsTest.java | 2 +- .../api/metrics/DeltaHdrHistogramReservoirTest.java | 2 +- .../nosqlbench/engine/api/util/SSLKsFactoryTest.java | 2 +- .../nosqlbench/engine/api/util/SimpleConfigTest.java | 2 +- .../nosqlbench/engine/api/util/UnitParserTests.java | 2 +- 175 files changed, 186 insertions(+), 181 deletions(-) diff --git a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/core/Action.java b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/core/Action.java index 4720101b7..d65aef0f6 100644 --- a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/core/Action.java +++ b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/core/Action.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. diff --git a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/core/ActionDispenser.java b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/core/ActionDispenser.java index 71b4dde30..cad178703 100644 --- a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/core/ActionDispenser.java +++ b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/core/ActionDispenser.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. diff --git a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/core/ActivitiesAware.java b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/core/ActivitiesAware.java index f03522efe..c9a66459f 100644 --- a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/core/ActivitiesAware.java +++ b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/core/ActivitiesAware.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. diff --git a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/core/ActivityController.java b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/core/ActivityController.java index b73a6f685..354223cb4 100644 --- a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/core/ActivityController.java +++ b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/core/ActivityController.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. diff --git a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/core/ActivityControlsListener.java b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/core/ActivityControlsListener.java index ab61e6a82..42a5acc9f 100644 --- a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/core/ActivityControlsListener.java +++ b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/core/ActivityControlsListener.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. diff --git a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/core/ActivityDefObserver.java b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/core/ActivityDefObserver.java index fba5c928c..65df5376d 100644 --- a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/core/ActivityDefObserver.java +++ b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/core/ActivityDefObserver.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. diff --git a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/core/AsyncAction.java b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/core/AsyncAction.java index 6d7a78509..1ec2d8d03 100644 --- a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/core/AsyncAction.java +++ b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/core/AsyncAction.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. diff --git a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/core/BaseAsyncAction.java b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/core/BaseAsyncAction.java index 27e9b3217..501508599 100644 --- a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/core/BaseAsyncAction.java +++ b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/core/BaseAsyncAction.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. diff --git a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/core/Motor.java b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/core/Motor.java index ee208e4fd..995e58e6b 100644 --- a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/core/Motor.java +++ b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/core/Motor.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. diff --git a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/core/MotorDispenser.java b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/core/MotorDispenser.java index 4bf6fabe9..aa9422f78 100644 --- a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/core/MotorDispenser.java +++ b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/core/MotorDispenser.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. diff --git a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/core/Startable.java b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/core/Startable.java index f35721a09..df863988e 100644 --- a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/core/Startable.java +++ b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/core/Startable.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. diff --git a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/core/SyncAction.java b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/core/SyncAction.java index 0ef70cad2..0225e2cbe 100644 --- a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/core/SyncAction.java +++ b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/core/SyncAction.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. diff --git a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/core/longIntervalSupplier.java b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/core/longIntervalSupplier.java index a22a3afd9..8f1692296 100644 --- a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/core/longIntervalSupplier.java +++ b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/core/longIntervalSupplier.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. diff --git a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/core/ops/fluent/OpTracker.java b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/core/ops/fluent/OpTracker.java index a10a06069..9d6c6697d 100644 --- a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/core/ops/fluent/OpTracker.java +++ b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/core/ops/fluent/OpTracker.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. diff --git a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/core/ops/fluent/opfacets/CompletedOp.java b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/core/ops/fluent/opfacets/CompletedOp.java index 8f383747d..f642d46b7 100644 --- a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/core/ops/fluent/opfacets/CompletedOp.java +++ b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/core/ops/fluent/opfacets/CompletedOp.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. diff --git a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/core/ops/fluent/opfacets/EventedOpImpl.java b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/core/ops/fluent/opfacets/EventedOpImpl.java index 17ab6e850..88a32cb27 100644 --- a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/core/ops/fluent/opfacets/EventedOpImpl.java +++ b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/core/ops/fluent/opfacets/EventedOpImpl.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. diff --git a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/core/ops/fluent/opfacets/FailedOp.java b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/core/ops/fluent/opfacets/FailedOp.java index 9fa0519db..45f631dfb 100644 --- a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/core/ops/fluent/opfacets/FailedOp.java +++ b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/core/ops/fluent/opfacets/FailedOp.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. diff --git a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/core/ops/fluent/opfacets/OpEvents.java b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/core/ops/fluent/opfacets/OpEvents.java index 2164bf290..a972da736 100644 --- a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/core/ops/fluent/opfacets/OpEvents.java +++ b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/core/ops/fluent/opfacets/OpEvents.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. diff --git a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/core/ops/fluent/opfacets/OpFacets.java b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/core/ops/fluent/opfacets/OpFacets.java index d03449b76..27084d2c3 100644 --- a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/core/ops/fluent/opfacets/OpFacets.java +++ b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/core/ops/fluent/opfacets/OpFacets.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. diff --git a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/core/ops/fluent/opfacets/OpImpl.java b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/core/ops/fluent/opfacets/OpImpl.java index 561424572..71a8db8dc 100644 --- a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/core/ops/fluent/opfacets/OpImpl.java +++ b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/core/ops/fluent/opfacets/OpImpl.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. diff --git a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/core/ops/fluent/opfacets/Payload.java b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/core/ops/fluent/opfacets/Payload.java index a2e05c29a..b524cb59c 100644 --- a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/core/ops/fluent/opfacets/Payload.java +++ b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/core/ops/fluent/opfacets/Payload.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. diff --git a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/core/ops/fluent/opfacets/SkippedOp.java b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/core/ops/fluent/opfacets/SkippedOp.java index 05ab62cb6..5d77b3b70 100644 --- a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/core/ops/fluent/opfacets/SkippedOp.java +++ b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/core/ops/fluent/opfacets/SkippedOp.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. diff --git a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/core/ops/fluent/opfacets/StartedOp.java b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/core/ops/fluent/opfacets/StartedOp.java index 7634aa5c9..823fe129b 100644 --- a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/core/ops/fluent/opfacets/StartedOp.java +++ b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/core/ops/fluent/opfacets/StartedOp.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. diff --git a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/core/ops/fluent/opfacets/SucceededOp.java b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/core/ops/fluent/opfacets/SucceededOp.java index 5c1e30f07..0af96a64c 100644 --- a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/core/ops/fluent/opfacets/SucceededOp.java +++ b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/core/ops/fluent/opfacets/SucceededOp.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. diff --git a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/core/ops/fluent/opfacets/TrackedOp.java b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/core/ops/fluent/opfacets/TrackedOp.java index c2d20a848..06e39eee2 100644 --- a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/core/ops/fluent/opfacets/TrackedOp.java +++ b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/core/ops/fluent/opfacets/TrackedOp.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. diff --git a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/core/progress/ActiveMeter.java b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/core/progress/ActiveMeter.java index e9ca06d7b..42fe4221b 100644 --- a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/core/progress/ActiveMeter.java +++ b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/core/progress/ActiveMeter.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. diff --git a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/core/progress/ActivityMetricProgressMeter.java b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/core/progress/ActivityMetricProgressMeter.java index bb7a2ccc4..29c67f5b7 100644 --- a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/core/progress/ActivityMetricProgressMeter.java +++ b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/core/progress/ActivityMetricProgressMeter.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. diff --git a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/core/progress/CompletedMeter.java b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/core/progress/CompletedMeter.java index ba27bb512..f2f274124 100644 --- a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/core/progress/CompletedMeter.java +++ b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/core/progress/CompletedMeter.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. diff --git a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/core/progress/CycleMeter.java b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/core/progress/CycleMeter.java index 8f961e0f2..247681f56 100644 --- a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/core/progress/CycleMeter.java +++ b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/core/progress/CycleMeter.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. diff --git a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/core/progress/InputProgressMeter.java b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/core/progress/InputProgressMeter.java index a20d9148f..83769ec87 100644 --- a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/core/progress/InputProgressMeter.java +++ b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/core/progress/InputProgressMeter.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. diff --git a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/core/progress/MetricProgressMeter.java b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/core/progress/MetricProgressMeter.java index 29775afa2..70dcbb41e 100644 --- a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/core/progress/MetricProgressMeter.java +++ b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/core/progress/MetricProgressMeter.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. diff --git a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/core/progress/ProgressCapable.java b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/core/progress/ProgressCapable.java index c09f87a22..37dae6819 100644 --- a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/core/progress/ProgressCapable.java +++ b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/core/progress/ProgressCapable.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. diff --git a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/core/progress/ProgressDisplay.java b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/core/progress/ProgressDisplay.java index 6bd569e56..45d74c1b9 100644 --- a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/core/progress/ProgressDisplay.java +++ b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/core/progress/ProgressDisplay.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. diff --git a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/core/progress/ProgressMeterDisplay.java b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/core/progress/ProgressMeterDisplay.java index ae056d63c..f6de76ef4 100644 --- a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/core/progress/ProgressMeterDisplay.java +++ b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/core/progress/ProgressMeterDisplay.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. diff --git a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/core/progress/RemainingMeter.java b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/core/progress/RemainingMeter.java index c63b84bab..65565955a 100644 --- a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/core/progress/RemainingMeter.java +++ b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/core/progress/RemainingMeter.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. diff --git a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/core/progress/StateCapable.java b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/core/progress/StateCapable.java index 63932fe4d..458896194 100644 --- a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/core/progress/StateCapable.java +++ b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/core/progress/StateCapable.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. diff --git a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/cyclelog/buffers/Buffer.java b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/cyclelog/buffers/Buffer.java index b99c2df42..519cd9237 100644 --- a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/cyclelog/buffers/Buffer.java +++ b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/cyclelog/buffers/Buffer.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. diff --git a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/cyclelog/buffers/CycleSorting.java b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/cyclelog/buffers/CycleSorting.java index 636705fcf..9044b7003 100644 --- a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/cyclelog/buffers/CycleSorting.java +++ b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/cyclelog/buffers/CycleSorting.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. diff --git a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/cyclelog/buffers/op_output/StrideOutputConsumer.java b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/cyclelog/buffers/op_output/StrideOutputConsumer.java index fc47b1a8d..5d4d082bb 100644 --- a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/cyclelog/buffers/op_output/StrideOutputConsumer.java +++ b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/cyclelog/buffers/op_output/StrideOutputConsumer.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. diff --git a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/cyclelog/buffers/op_output/StrideOutputSegment.java b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/cyclelog/buffers/op_output/StrideOutputSegment.java index 6bb0b33a1..db0336e57 100644 --- a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/cyclelog/buffers/op_output/StrideOutputSegment.java +++ b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/cyclelog/buffers/op_output/StrideOutputSegment.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. diff --git a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/cyclelog/buffers/op_output/StrideOutputSegmentImpl.java b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/cyclelog/buffers/op_output/StrideOutputSegmentImpl.java index 2c80ea2c7..f5a6bded7 100644 --- a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/cyclelog/buffers/op_output/StrideOutputSegmentImpl.java +++ b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/cyclelog/buffers/op_output/StrideOutputSegmentImpl.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. diff --git a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/cyclelog/buffers/results/CycleArray.java b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/cyclelog/buffers/results/CycleArray.java index 3095dc727..3dbb71e3e 100644 --- a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/cyclelog/buffers/results/CycleArray.java +++ b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/cyclelog/buffers/results/CycleArray.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. diff --git a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/cyclelog/buffers/results/CycleMutable.java b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/cyclelog/buffers/results/CycleMutable.java index ee4b85470..0b74a22ad 100644 --- a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/cyclelog/buffers/results/CycleMutable.java +++ b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/cyclelog/buffers/results/CycleMutable.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. diff --git a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/cyclelog/buffers/results/CycleReadable.java b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/cyclelog/buffers/results/CycleReadable.java index 7223b0b8b..9b01a468b 100644 --- a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/cyclelog/buffers/results/CycleReadable.java +++ b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/cyclelog/buffers/results/CycleReadable.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. diff --git a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/cyclelog/buffers/results/CycleResult.java b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/cyclelog/buffers/results/CycleResult.java index 5b2b73589..819cd72e7 100644 --- a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/cyclelog/buffers/results/CycleResult.java +++ b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/cyclelog/buffers/results/CycleResult.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. diff --git a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/cyclelog/buffers/results/CycleResultArray.java b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/cyclelog/buffers/results/CycleResultArray.java index d5f84609f..eac97c627 100644 --- a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/cyclelog/buffers/results/CycleResultArray.java +++ b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/cyclelog/buffers/results/CycleResultArray.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. diff --git a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/cyclelog/buffers/results/CycleResultSegmentBuffer.java b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/cyclelog/buffers/results/CycleResultSegmentBuffer.java index cf2d93d9a..05f402c4b 100644 --- a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/cyclelog/buffers/results/CycleResultSegmentBuffer.java +++ b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/cyclelog/buffers/results/CycleResultSegmentBuffer.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. diff --git a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/cyclelog/buffers/results/CycleResultStrider.java b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/cyclelog/buffers/results/CycleResultStrider.java index 4e79b0faf..bc3a2b302 100644 --- a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/cyclelog/buffers/results/CycleResultStrider.java +++ b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/cyclelog/buffers/results/CycleResultStrider.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. diff --git a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/cyclelog/buffers/results/CycleResultsIntervalSegment.java b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/cyclelog/buffers/results/CycleResultsIntervalSegment.java index bd2323f80..138372a74 100644 --- a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/cyclelog/buffers/results/CycleResultsIntervalSegment.java +++ b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/cyclelog/buffers/results/CycleResultsIntervalSegment.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. diff --git a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/cyclelog/buffers/results/CycleResultsSegment.java b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/cyclelog/buffers/results/CycleResultsSegment.java index 4eeaa5b3a..c1d9830ea 100644 --- a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/cyclelog/buffers/results/CycleResultsSegment.java +++ b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/cyclelog/buffers/results/CycleResultsSegment.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. diff --git a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/cyclelog/buffers/results/CycleResultsSegmentReadable.java b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/cyclelog/buffers/results/CycleResultsSegmentReadable.java index 03116f1b2..bb40b829d 100644 --- a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/cyclelog/buffers/results/CycleResultsSegmentReadable.java +++ b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/cyclelog/buffers/results/CycleResultsSegmentReadable.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. diff --git a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/cyclelog/buffers/results/CycleSegment.java b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/cyclelog/buffers/results/CycleSegment.java index 359986569..f7cccea01 100644 --- a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/cyclelog/buffers/results/CycleSegment.java +++ b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/cyclelog/buffers/results/CycleSegment.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. diff --git a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/cyclelog/buffers/results/CycleSegmentBuffer.java b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/cyclelog/buffers/results/CycleSegmentBuffer.java index 655c9bc80..d180d7426 100644 --- a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/cyclelog/buffers/results/CycleSegmentBuffer.java +++ b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/cyclelog/buffers/results/CycleSegmentBuffer.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. diff --git a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/cyclelog/buffers/results/MutableCycleResult.java b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/cyclelog/buffers/results/MutableCycleResult.java index 646428611..b3abefe42 100644 --- a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/cyclelog/buffers/results/MutableCycleResult.java +++ b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/cyclelog/buffers/results/MutableCycleResult.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. diff --git a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/cyclelog/buffers/results/ResultReadable.java b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/cyclelog/buffers/results/ResultReadable.java index fbdd50ae0..9e03533d6 100644 --- a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/cyclelog/buffers/results/ResultReadable.java +++ b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/cyclelog/buffers/results/ResultReadable.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. diff --git a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/cyclelog/buffers/results/SegmentedResultInput.java b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/cyclelog/buffers/results/SegmentedResultInput.java index 529d25399..bcc0ba176 100644 --- a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/cyclelog/buffers/results/SegmentedResultInput.java +++ b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/cyclelog/buffers/results/SegmentedResultInput.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. diff --git a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/cyclelog/filters/CoreResultValueFilter.java b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/cyclelog/filters/CoreResultValueFilter.java index 9c1fc9164..b3757a739 100644 --- a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/cyclelog/filters/CoreResultValueFilter.java +++ b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/cyclelog/filters/CoreResultValueFilter.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. diff --git a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/cyclelog/filters/IncludeCodesTypeExperimental.java b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/cyclelog/filters/IncludeCodesTypeExperimental.java index c6546ca2b..07359e6e4 100644 --- a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/cyclelog/filters/IncludeCodesTypeExperimental.java +++ b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/cyclelog/filters/IncludeCodesTypeExperimental.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. diff --git a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/cyclelog/filters/InputFilterDispenser.java b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/cyclelog/filters/InputFilterDispenser.java index 5f393bd1a..b05b08fe5 100644 --- a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/cyclelog/filters/InputFilterDispenser.java +++ b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/cyclelog/filters/InputFilterDispenser.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. diff --git a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/cyclelog/filters/InputMapper.java b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/cyclelog/filters/InputMapper.java index 7ef9ecb7e..4a00b0caa 100644 --- a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/cyclelog/filters/InputMapper.java +++ b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/cyclelog/filters/InputMapper.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. diff --git a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/cyclelog/filters/IntPredicateDispenser.java b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/cyclelog/filters/IntPredicateDispenser.java index 7dd72895c..f226fec77 100644 --- a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/cyclelog/filters/IntPredicateDispenser.java +++ b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/cyclelog/filters/IntPredicateDispenser.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. diff --git a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/cyclelog/filters/ResultFilterDispenser.java b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/cyclelog/filters/ResultFilterDispenser.java index 9847c2205..8f3968419 100644 --- a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/cyclelog/filters/ResultFilterDispenser.java +++ b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/cyclelog/filters/ResultFilterDispenser.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. diff --git a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/cyclelog/filters/ResultValueFilterType.java b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/cyclelog/filters/ResultValueFilterType.java index 363cbb1ef..d3cd001de 100644 --- a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/cyclelog/filters/ResultValueFilterType.java +++ b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/cyclelog/filters/ResultValueFilterType.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. diff --git a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/cyclelog/filters/tristate/CycleResultPredicate.java b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/cyclelog/filters/tristate/CycleResultPredicate.java index a981c2664..c5c25de90 100644 --- a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/cyclelog/filters/tristate/CycleResultPredicate.java +++ b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/cyclelog/filters/tristate/CycleResultPredicate.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. diff --git a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/cyclelog/filters/tristate/CycleResultTristateFilter.java b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/cyclelog/filters/tristate/CycleResultTristateFilter.java index cb0a03e50..43b3767e8 100644 --- a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/cyclelog/filters/tristate/CycleResultTristateFilter.java +++ b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/cyclelog/filters/tristate/CycleResultTristateFilter.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. diff --git a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/cyclelog/filters/tristate/EnumReadableMappingFilter.java b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/cyclelog/filters/tristate/EnumReadableMappingFilter.java index 5c7890881..c95ef12cf 100644 --- a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/cyclelog/filters/tristate/EnumReadableMappingFilter.java +++ b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/cyclelog/filters/tristate/EnumReadableMappingFilter.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. diff --git a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/cyclelog/filters/tristate/ResultFilterPhase.java b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/cyclelog/filters/tristate/ResultFilterPhase.java index ccfbe97e6..c52c6bb62 100644 --- a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/cyclelog/filters/tristate/ResultFilterPhase.java +++ b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/cyclelog/filters/tristate/ResultFilterPhase.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. diff --git a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/cyclelog/filters/tristate/ResultFilteringSieve.java b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/cyclelog/filters/tristate/ResultFilteringSieve.java index ad2504d70..8c73cc03f 100644 --- a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/cyclelog/filters/tristate/ResultFilteringSieve.java +++ b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/cyclelog/filters/tristate/ResultFilteringSieve.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. diff --git a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/cyclelog/filters/tristate/ResultMappingArrayFilter.java b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/cyclelog/filters/tristate/ResultMappingArrayFilter.java index 0209d0303..c0a0a2a60 100644 --- a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/cyclelog/filters/tristate/ResultMappingArrayFilter.java +++ b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/cyclelog/filters/tristate/ResultMappingArrayFilter.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. diff --git a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/cyclelog/filters/tristate/TristateFilter.java b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/cyclelog/filters/tristate/TristateFilter.java index a73d78565..ba530e70a 100644 --- a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/cyclelog/filters/tristate/TristateFilter.java +++ b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/cyclelog/filters/tristate/TristateFilter.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. diff --git a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/cyclelog/inputs/cyclelog/CanFilterResultValue.java b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/cyclelog/inputs/cyclelog/CanFilterResultValue.java index 826b37f10..d68e70214 100644 --- a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/cyclelog/inputs/cyclelog/CanFilterResultValue.java +++ b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/cyclelog/inputs/cyclelog/CanFilterResultValue.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. diff --git a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/cyclelog/inputs/cyclelog/CycleLogInputType.java b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/cyclelog/inputs/cyclelog/CycleLogInputType.java index 53b7cf20a..a8a45f5e4 100644 --- a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/cyclelog/inputs/cyclelog/CycleLogInputType.java +++ b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/cyclelog/inputs/cyclelog/CycleLogInputType.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. diff --git a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/cyclelog/outputs/CanSortCycles.java b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/cyclelog/outputs/CanSortCycles.java index 5071fc251..86fd8a903 100644 --- a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/cyclelog/outputs/CanSortCycles.java +++ b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/cyclelog/outputs/CanSortCycles.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. diff --git a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/cyclelog/outputs/ReorderingConcurrentResultBuffer.java b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/cyclelog/outputs/ReorderingConcurrentResultBuffer.java index bdc7d84cc..0f663e4a6 100644 --- a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/cyclelog/outputs/ReorderingConcurrentResultBuffer.java +++ b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/cyclelog/outputs/ReorderingConcurrentResultBuffer.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. diff --git a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/cyclelog/outputs/cyclelog/CycleLogImporterUtility.java b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/cyclelog/outputs/cyclelog/CycleLogImporterUtility.java index 3462877d1..76537b72c 100644 --- a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/cyclelog/outputs/cyclelog/CycleLogImporterUtility.java +++ b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/cyclelog/outputs/cyclelog/CycleLogImporterUtility.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. diff --git a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/cyclelog/outputs/cyclelog/CycleLogOutputType.java b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/cyclelog/outputs/cyclelog/CycleLogOutputType.java index 6183c257d..65061c3ec 100644 --- a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/cyclelog/outputs/cyclelog/CycleLogOutputType.java +++ b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/cyclelog/outputs/cyclelog/CycleLogOutputType.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. diff --git a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/cyclelog/outputs/logger/LoggingMarkerDispenser.java b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/cyclelog/outputs/logger/LoggingMarkerDispenser.java index c3d97720b..37a9ac98f 100644 --- a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/cyclelog/outputs/logger/LoggingMarkerDispenser.java +++ b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/cyclelog/outputs/logger/LoggingMarkerDispenser.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. diff --git a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/cyclelog/outputs/logger/LoggingOutput.java b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/cyclelog/outputs/logger/LoggingOutput.java index c14d04545..5c48a7422 100644 --- a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/cyclelog/outputs/logger/LoggingOutput.java +++ b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/cyclelog/outputs/logger/LoggingOutput.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. @@ -25,7 +25,7 @@ import org.apache.logging.log4j.LogManager; import java.util.function.Predicate; -public class LoggingOutput implements Output,CanFilterResultValue { +public class LoggingOutput implements Output, CanFilterResultValue { private final static Logger logger = LogManager.getLogger(LoggingOutput.class); private final ActivityDef def; diff --git a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/errorhandling/CycleErrorHandler.java b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/errorhandling/CycleErrorHandler.java index 67ee7ac66..8af8baea4 100644 --- a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/errorhandling/CycleErrorHandler.java +++ b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/errorhandling/CycleErrorHandler.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. diff --git a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/errorhandling/CycleErrorHandlers.java b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/errorhandling/CycleErrorHandlers.java index 60bfe342e..5b0024e95 100644 --- a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/errorhandling/CycleErrorHandlers.java +++ b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/errorhandling/CycleErrorHandlers.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. diff --git a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/errorhandling/HashedErrorHandler.java b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/errorhandling/HashedErrorHandler.java index 31807ef29..1c57d7d91 100644 --- a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/errorhandling/HashedErrorHandler.java +++ b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/errorhandling/HashedErrorHandler.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. diff --git a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/errorhandling/modular/ErrorDetail.java b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/errorhandling/modular/ErrorDetail.java index 8875590ef..aa776d431 100644 --- a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/errorhandling/modular/ErrorDetail.java +++ b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/errorhandling/modular/ErrorDetail.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. diff --git a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/errorhandling/modular/ErrorHandler.java b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/errorhandling/modular/ErrorHandler.java index 3eed93e26..faaba66dd 100644 --- a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/errorhandling/modular/ErrorHandler.java +++ b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/errorhandling/modular/ErrorHandler.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. diff --git a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/errorhandling/modular/NBErrorHandler.java b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/errorhandling/modular/NBErrorHandler.java index 01b2a5d09..4048a3bea 100644 --- a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/errorhandling/modular/NBErrorHandler.java +++ b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/errorhandling/modular/NBErrorHandler.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. diff --git a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/errorhandling/modular/ResultCode.java b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/errorhandling/modular/ResultCode.java index 9f8549aa7..b225e44c4 100644 --- a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/errorhandling/modular/ResultCode.java +++ b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/errorhandling/modular/ResultCode.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. diff --git a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/errorhandling/modular/handlers/CountErrorHandler.java b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/errorhandling/modular/handlers/CountErrorHandler.java index 513dc499f..735e191e1 100644 --- a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/errorhandling/modular/handlers/CountErrorHandler.java +++ b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/errorhandling/modular/handlers/CountErrorHandler.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. diff --git a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/errorhandling/modular/handlers/IgnoreErrorHandler.java b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/errorhandling/modular/handlers/IgnoreErrorHandler.java index ac9d0632c..e0290445e 100644 --- a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/errorhandling/modular/handlers/IgnoreErrorHandler.java +++ b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/errorhandling/modular/handlers/IgnoreErrorHandler.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. diff --git a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/errorhandling/modular/handlers/MeterErrorHandler.java b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/errorhandling/modular/handlers/MeterErrorHandler.java index 462e5b047..a00bb45bd 100644 --- a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/errorhandling/modular/handlers/MeterErrorHandler.java +++ b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/errorhandling/modular/handlers/MeterErrorHandler.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. diff --git a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/errorhandling/modular/handlers/RetryErrorHandler.java b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/errorhandling/modular/handlers/RetryErrorHandler.java index efa1d4423..68690333a 100644 --- a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/errorhandling/modular/handlers/RetryErrorHandler.java +++ b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/errorhandling/modular/handlers/RetryErrorHandler.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. diff --git a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/errorhandling/modular/handlers/StopErrorHandler.java b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/errorhandling/modular/handlers/StopErrorHandler.java index 3f6a4f5ee..d64339c58 100644 --- a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/errorhandling/modular/handlers/StopErrorHandler.java +++ b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/errorhandling/modular/handlers/StopErrorHandler.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. diff --git a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/errorhandling/modular/handlers/TimerErrorHandler.java b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/errorhandling/modular/handlers/TimerErrorHandler.java index 4bb5b505f..33ceb5faf 100644 --- a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/errorhandling/modular/handlers/TimerErrorHandler.java +++ b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/errorhandling/modular/handlers/TimerErrorHandler.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. diff --git a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/errorhandling/modular/handlers/WarnErrorHandler.java b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/errorhandling/modular/handlers/WarnErrorHandler.java index 7f5c9b8c6..119bc1d2d 100644 --- a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/errorhandling/modular/handlers/WarnErrorHandler.java +++ b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/errorhandling/modular/handlers/WarnErrorHandler.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. diff --git a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/input/Input.java b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/input/Input.java index 9af0be03e..b766a27dd 100644 --- a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/input/Input.java +++ b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/input/Input.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. diff --git a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/input/InputDispenser.java b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/input/InputDispenser.java index 1388df91c..159561d4e 100644 --- a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/input/InputDispenser.java +++ b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/input/InputDispenser.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. diff --git a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/input/InputType.java b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/input/InputType.java index c2650b13c..f2c4b1731 100644 --- a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/input/InputType.java +++ b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/input/InputType.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. diff --git a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/input/StrideAware.java b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/input/StrideAware.java index 9b2264cbd..a2dae6e83 100644 --- a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/input/StrideAware.java +++ b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/input/StrideAware.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. diff --git a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/output/OutputDispenser.java b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/output/OutputDispenser.java index 0240a57f5..0d74b8259 100644 --- a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/output/OutputDispenser.java +++ b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/output/OutputDispenser.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. diff --git a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/output/OutputType.java b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/output/OutputType.java index 69bad741f..e08c0f225 100644 --- a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/output/OutputType.java +++ b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/output/OutputType.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. diff --git a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/planning/BucketSequencer.java b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/planning/BucketSequencer.java index c2379aff2..1840f91e5 100644 --- a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/planning/BucketSequencer.java +++ b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/planning/BucketSequencer.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. diff --git a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/planning/ConcatSequencer.java b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/planning/ConcatSequencer.java index 2491113e0..d5a62333e 100644 --- a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/planning/ConcatSequencer.java +++ b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/planning/ConcatSequencer.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. diff --git a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/planning/ElementSequencer.java b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/planning/ElementSequencer.java index 4d545dbe3..1b86c54a7 100644 --- a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/planning/ElementSequencer.java +++ b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/planning/ElementSequencer.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. diff --git a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/planning/IntervalSequencer.java b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/planning/IntervalSequencer.java index b95fa8f54..1d179fd6a 100644 --- a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/planning/IntervalSequencer.java +++ b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/planning/IntervalSequencer.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. diff --git a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/planning/OpSequence.java b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/planning/OpSequence.java index e1fb1f2e0..3daa3a0a6 100644 --- a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/planning/OpSequence.java +++ b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/planning/OpSequence.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. diff --git a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/planning/Sequence.java b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/planning/Sequence.java index e176e006c..0bd764fa1 100644 --- a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/planning/Sequence.java +++ b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/planning/Sequence.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. diff --git a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/planning/SequencePlanner.java b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/planning/SequencePlanner.java index dca5c18cf..9a7486db2 100644 --- a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/planning/SequencePlanner.java +++ b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/planning/SequencePlanner.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. diff --git a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/planning/SequencerType.java b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/planning/SequencerType.java index 097674d71..5179b6ac8 100644 --- a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/planning/SequencerType.java +++ b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/planning/SequencerType.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. diff --git a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/ratelimits/DiagUpdateRate.java b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/ratelimits/DiagUpdateRate.java index 4c4865e1e..f2cdf0543 100644 --- a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/ratelimits/DiagUpdateRate.java +++ b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/ratelimits/DiagUpdateRate.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. diff --git a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/ratelimits/LeastWorstDelay.java b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/ratelimits/LeastWorstDelay.java index 953837cab..10db6bac9 100644 --- a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/ratelimits/LeastWorstDelay.java +++ b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/ratelimits/LeastWorstDelay.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. @@ -67,12 +67,12 @@ public class LeastWorstDelay { if (nanos > 0) { if (nanos > sleepThreshold) { try { - System.out.println(String.format("sleeping for %.9fS", ((double) nanos / 1E9))); + System.out.printf("sleeping for %.9fS%n", ((double) nanos / 1E9)); Thread.sleep((nanos / 1000000), (int) (nanos % 1000000)); } catch (InterruptedException ignored) { } } else if (nanos > parkThreshold) { - System.out.println(String.format("parking for %.9fS", ((double) nanos / 1E9))); + System.out.printf("parking for %.9fS%n", ((double) nanos / 1E9)); LockSupport.parkNanos(nanos); } } diff --git a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/ratelimits/RateLimiter.java b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/ratelimits/RateLimiter.java index 1125cd079..e3f1da476 100644 --- a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/ratelimits/RateLimiter.java +++ b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/ratelimits/RateLimiter.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. diff --git a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/ratelimits/RateSpec.java b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/ratelimits/RateSpec.java index e53ac2768..a8ceee29e 100644 --- a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/ratelimits/RateSpec.java +++ b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/ratelimits/RateSpec.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. @@ -113,6 +113,11 @@ public class RateSpec { public double burstRatio = DEFAULT_BURST_RATIO; public Verb verb = Verb.start; + /** + * Rate limiters can be put into motion in different modes to suit different scenarios. This is + * mostly to support advanced scripting capability. When the verb is not specified in a {@link RateSpec}, + * then it is started immediately as a user would expect. + */ public enum Verb { /** * Specify that a rate limiter should only be configured without affecting its running state. @@ -123,9 +128,9 @@ public class RateSpec { */ configure, /** - * The default SetAction is start. This means that the rate limiter should be started at the time + * The default behavior for a rate limiter. This means that the rate limiter should be started at the time * this rate spec is applied. The start time of a rate limiter is significant in that it determines - * both the calculated average rate as well as the accumulated wait time from slow callers. In order + * both the calculated average rate and the accumulated wait time from slow callers. In order * to start, a rate limiter will be configured automatically, if the provided rate spec would cause * a change to the configuration. If a rate limiter is started that is already running, an error should * be thrown. If it is desired to ignore this condition, the restart should be used instead. diff --git a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/sysperf/SysBenchMethodNanoTime.java b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/sysperf/SysBenchMethodNanoTime.java index cbdbbd30a..4a6a4f1b8 100644 --- a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/sysperf/SysBenchMethodNanoTime.java +++ b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/sysperf/SysBenchMethodNanoTime.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. diff --git a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/sysperf/SysBenchMethodParkNanos.java b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/sysperf/SysBenchMethodParkNanos.java index 6ede7f99d..8dc789597 100644 --- a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/sysperf/SysBenchMethodParkNanos.java +++ b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/sysperf/SysBenchMethodParkNanos.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. diff --git a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/sysperf/SysBenchMethodThreadSleep.java b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/sysperf/SysBenchMethodThreadSleep.java index 7b28cb4b9..8c76a2d19 100644 --- a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/sysperf/SysBenchMethodThreadSleep.java +++ b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/sysperf/SysBenchMethodThreadSleep.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. diff --git a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/sysperf/SysPerfBaseliner.java b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/sysperf/SysPerfBaseliner.java index 5b44bc5ff..42dc8ea6e 100644 --- a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/sysperf/SysPerfBaseliner.java +++ b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/sysperf/SysPerfBaseliner.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. diff --git a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/sysperf/SysPerfData.java b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/sysperf/SysPerfData.java index 737ed84f4..6587a4fa7 100644 --- a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/sysperf/SysPerfData.java +++ b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/sysperf/SysPerfData.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. diff --git a/engine-api/src/main/java/io/nosqlbench/engine/api/activityimpl/ActivityDispenser.java b/engine-api/src/main/java/io/nosqlbench/engine/api/activityimpl/ActivityDispenser.java index 9e6a8f2bc..0c02ada84 100644 --- a/engine-api/src/main/java/io/nosqlbench/engine/api/activityimpl/ActivityDispenser.java +++ b/engine-api/src/main/java/io/nosqlbench/engine/api/activityimpl/ActivityDispenser.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. diff --git a/engine-api/src/main/java/io/nosqlbench/engine/api/activityimpl/ActivityInitializationError.java b/engine-api/src/main/java/io/nosqlbench/engine/api/activityimpl/ActivityInitializationError.java index c0d4dac0e..1c53df449 100644 --- a/engine-api/src/main/java/io/nosqlbench/engine/api/activityimpl/ActivityInitializationError.java +++ b/engine-api/src/main/java/io/nosqlbench/engine/api/activityimpl/ActivityInitializationError.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. diff --git a/engine-api/src/main/java/io/nosqlbench/engine/api/activityimpl/CpuInfo.java b/engine-api/src/main/java/io/nosqlbench/engine/api/activityimpl/CpuInfo.java index 34699fcb0..fd635020d 100644 --- a/engine-api/src/main/java/io/nosqlbench/engine/api/activityimpl/CpuInfo.java +++ b/engine-api/src/main/java/io/nosqlbench/engine/api/activityimpl/CpuInfo.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. diff --git a/engine-api/src/main/java/io/nosqlbench/engine/api/activityimpl/FilteringInputDispenser.java b/engine-api/src/main/java/io/nosqlbench/engine/api/activityimpl/FilteringInputDispenser.java index 88793a66c..f92f694f3 100644 --- a/engine-api/src/main/java/io/nosqlbench/engine/api/activityimpl/FilteringInputDispenser.java +++ b/engine-api/src/main/java/io/nosqlbench/engine/api/activityimpl/FilteringInputDispenser.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. diff --git a/engine-api/src/main/java/io/nosqlbench/engine/api/activityimpl/FilteringOutputDispenser.java b/engine-api/src/main/java/io/nosqlbench/engine/api/activityimpl/FilteringOutputDispenser.java index 864263008..d5e7c81af 100644 --- a/engine-api/src/main/java/io/nosqlbench/engine/api/activityimpl/FilteringOutputDispenser.java +++ b/engine-api/src/main/java/io/nosqlbench/engine/api/activityimpl/FilteringOutputDispenser.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. diff --git a/engine-api/src/main/java/io/nosqlbench/engine/api/activityimpl/MotorState.java b/engine-api/src/main/java/io/nosqlbench/engine/api/activityimpl/MotorState.java index e0008ea4b..ef59b7a1e 100644 --- a/engine-api/src/main/java/io/nosqlbench/engine/api/activityimpl/MotorState.java +++ b/engine-api/src/main/java/io/nosqlbench/engine/api/activityimpl/MotorState.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. diff --git a/engine-api/src/main/java/io/nosqlbench/engine/api/activityimpl/action/CoreAction.java b/engine-api/src/main/java/io/nosqlbench/engine/api/activityimpl/action/CoreAction.java index 9d93f7aa7..d10d07ea5 100644 --- a/engine-api/src/main/java/io/nosqlbench/engine/api/activityimpl/action/CoreAction.java +++ b/engine-api/src/main/java/io/nosqlbench/engine/api/activityimpl/action/CoreAction.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. diff --git a/engine-api/src/main/java/io/nosqlbench/engine/api/activityimpl/action/CoreActionDispenser.java b/engine-api/src/main/java/io/nosqlbench/engine/api/activityimpl/action/CoreActionDispenser.java index 5be7fee59..d7e72711c 100644 --- a/engine-api/src/main/java/io/nosqlbench/engine/api/activityimpl/action/CoreActionDispenser.java +++ b/engine-api/src/main/java/io/nosqlbench/engine/api/activityimpl/action/CoreActionDispenser.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. diff --git a/engine-api/src/main/java/io/nosqlbench/engine/api/activityimpl/input/CycleArrayBuffer.java b/engine-api/src/main/java/io/nosqlbench/engine/api/activityimpl/input/CycleArrayBuffer.java index 47dbb366d..8a673d1c5 100644 --- a/engine-api/src/main/java/io/nosqlbench/engine/api/activityimpl/input/CycleArrayBuffer.java +++ b/engine-api/src/main/java/io/nosqlbench/engine/api/activityimpl/input/CycleArrayBuffer.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. diff --git a/engine-api/src/main/java/io/nosqlbench/engine/api/activityimpl/input/InputInterval.java b/engine-api/src/main/java/io/nosqlbench/engine/api/activityimpl/input/InputInterval.java index 40a65f294..4bf167633 100644 --- a/engine-api/src/main/java/io/nosqlbench/engine/api/activityimpl/input/InputInterval.java +++ b/engine-api/src/main/java/io/nosqlbench/engine/api/activityimpl/input/InputInterval.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. diff --git a/engine-api/src/main/java/io/nosqlbench/engine/api/activityimpl/input/TargetRateInputType.java b/engine-api/src/main/java/io/nosqlbench/engine/api/activityimpl/input/TargetRateInputType.java index 5b3ec12f9..f150d1115 100644 --- a/engine-api/src/main/java/io/nosqlbench/engine/api/activityimpl/input/TargetRateInputType.java +++ b/engine-api/src/main/java/io/nosqlbench/engine/api/activityimpl/input/TargetRateInputType.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. diff --git a/engine-api/src/main/java/io/nosqlbench/engine/api/activityimpl/marker/longheap/LongTreeTracker.java b/engine-api/src/main/java/io/nosqlbench/engine/api/activityimpl/marker/longheap/LongTreeTracker.java index 94b6d9d9a..ffa1a8c19 100644 --- a/engine-api/src/main/java/io/nosqlbench/engine/api/activityimpl/marker/longheap/LongTreeTracker.java +++ b/engine-api/src/main/java/io/nosqlbench/engine/api/activityimpl/marker/longheap/LongTreeTracker.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. diff --git a/engine-api/src/main/java/io/nosqlbench/engine/api/activityimpl/marker/longheap/LongTreeTrackerAtomic.java b/engine-api/src/main/java/io/nosqlbench/engine/api/activityimpl/marker/longheap/LongTreeTrackerAtomic.java index 78ca17f24..971f3bbe2 100644 --- a/engine-api/src/main/java/io/nosqlbench/engine/api/activityimpl/marker/longheap/LongTreeTrackerAtomic.java +++ b/engine-api/src/main/java/io/nosqlbench/engine/api/activityimpl/marker/longheap/LongTreeTrackerAtomic.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. diff --git a/engine-api/src/main/java/io/nosqlbench/engine/api/activityimpl/marker/longheap/TreeTracker1024.java b/engine-api/src/main/java/io/nosqlbench/engine/api/activityimpl/marker/longheap/TreeTracker1024.java index 710302c68..b12b0afee 100644 --- a/engine-api/src/main/java/io/nosqlbench/engine/api/activityimpl/marker/longheap/TreeTracker1024.java +++ b/engine-api/src/main/java/io/nosqlbench/engine/api/activityimpl/marker/longheap/TreeTracker1024.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. @@ -67,7 +67,7 @@ public class TreeTracker1024 { public long getLowestCompleted() { long lowestCompleted=base; int lowestBucket = (int) ranges.getLowestCompleted(); - lowestCompleted += (lowestBucket+1) * 32; + lowestCompleted += (lowestBucket+1) * 32L; lowestCompleted += buckets[lowestBucket+1].getLowestCompleted(); return lowestCompleted; } diff --git a/engine-api/src/main/java/io/nosqlbench/engine/api/activityimpl/uniform/ActivityDefAware.java b/engine-api/src/main/java/io/nosqlbench/engine/api/activityimpl/uniform/ActivityDefAware.java index 202bd1f4a..2fd615ad4 100644 --- a/engine-api/src/main/java/io/nosqlbench/engine/api/activityimpl/uniform/ActivityDefAware.java +++ b/engine-api/src/main/java/io/nosqlbench/engine/api/activityimpl/uniform/ActivityDefAware.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. diff --git a/engine-api/src/main/java/io/nosqlbench/engine/api/activityimpl/uniform/NBInvokerType.java b/engine-api/src/main/java/io/nosqlbench/engine/api/activityimpl/uniform/NBInvokerType.java index 0fe10800c..67c758d0b 100644 --- a/engine-api/src/main/java/io/nosqlbench/engine/api/activityimpl/uniform/NBInvokerType.java +++ b/engine-api/src/main/java/io/nosqlbench/engine/api/activityimpl/uniform/NBInvokerType.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. diff --git a/engine-api/src/main/java/io/nosqlbench/engine/api/activityimpl/uniform/StandardActionDispenser.java b/engine-api/src/main/java/io/nosqlbench/engine/api/activityimpl/uniform/StandardActionDispenser.java index 666a1574b..72ff9f1f5 100644 --- a/engine-api/src/main/java/io/nosqlbench/engine/api/activityimpl/uniform/StandardActionDispenser.java +++ b/engine-api/src/main/java/io/nosqlbench/engine/api/activityimpl/uniform/StandardActionDispenser.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. diff --git a/engine-api/src/main/java/io/nosqlbench/engine/api/clireader/CLI.java b/engine-api/src/main/java/io/nosqlbench/engine/api/clireader/CLI.java index 3d6a1b775..a0ee3e977 100644 --- a/engine-api/src/main/java/io/nosqlbench/engine/api/clireader/CLI.java +++ b/engine-api/src/main/java/io/nosqlbench/engine/api/clireader/CLI.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. diff --git a/engine-api/src/main/java/io/nosqlbench/engine/api/clireader/dsl/CLIFacets.java b/engine-api/src/main/java/io/nosqlbench/engine/api/clireader/dsl/CLIFacets.java index 16465d60a..796965aa1 100644 --- a/engine-api/src/main/java/io/nosqlbench/engine/api/clireader/dsl/CLIFacets.java +++ b/engine-api/src/main/java/io/nosqlbench/engine/api/clireader/dsl/CLIFacets.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. diff --git a/engine-api/src/main/java/io/nosqlbench/engine/api/clireader/package-info.java b/engine-api/src/main/java/io/nosqlbench/engine/api/clireader/package-info.java index feeb80448..f3623e558 100644 --- a/engine-api/src/main/java/io/nosqlbench/engine/api/clireader/package-info.java +++ b/engine-api/src/main/java/io/nosqlbench/engine/api/clireader/package-info.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. diff --git a/engine-api/src/main/java/io/nosqlbench/engine/api/extensions/SandboxPlugin.java b/engine-api/src/main/java/io/nosqlbench/engine/api/extensions/SandboxPlugin.java index f1e431a0d..def77b4f3 100644 --- a/engine-api/src/main/java/io/nosqlbench/engine/api/extensions/SandboxPlugin.java +++ b/engine-api/src/main/java/io/nosqlbench/engine/api/extensions/SandboxPlugin.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. diff --git a/engine-api/src/main/java/io/nosqlbench/engine/api/metrics/HistoLogger.java b/engine-api/src/main/java/io/nosqlbench/engine/api/metrics/HistoLogger.java index 64da424b9..1d9c59101 100644 --- a/engine-api/src/main/java/io/nosqlbench/engine/api/metrics/HistoLogger.java +++ b/engine-api/src/main/java/io/nosqlbench/engine/api/metrics/HistoLogger.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. diff --git a/engine-api/src/main/java/io/nosqlbench/engine/api/metrics/IndicatorMode.java b/engine-api/src/main/java/io/nosqlbench/engine/api/metrics/IndicatorMode.java index 7c7e78ea6..42ab46fc0 100644 --- a/engine-api/src/main/java/io/nosqlbench/engine/api/metrics/IndicatorMode.java +++ b/engine-api/src/main/java/io/nosqlbench/engine/api/metrics/IndicatorMode.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. diff --git a/engine-api/src/main/java/io/nosqlbench/engine/api/scenarios/WorkloadDesc.java b/engine-api/src/main/java/io/nosqlbench/engine/api/scenarios/WorkloadDesc.java index babc5e1ef..e0de3d7eb 100644 --- a/engine-api/src/main/java/io/nosqlbench/engine/api/scenarios/WorkloadDesc.java +++ b/engine-api/src/main/java/io/nosqlbench/engine/api/scenarios/WorkloadDesc.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. diff --git a/engine-api/src/main/java/io/nosqlbench/engine/api/scoping/ScopedSupplier.java b/engine-api/src/main/java/io/nosqlbench/engine/api/scoping/ScopedSupplier.java index d87353f83..d6e288a77 100644 --- a/engine-api/src/main/java/io/nosqlbench/engine/api/scoping/ScopedSupplier.java +++ b/engine-api/src/main/java/io/nosqlbench/engine/api/scoping/ScopedSupplier.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. diff --git a/engine-api/src/main/java/io/nosqlbench/engine/api/scripting/ExprEvaluator.java b/engine-api/src/main/java/io/nosqlbench/engine/api/scripting/ExprEvaluator.java index b573252c8..5d76cf665 100644 --- a/engine-api/src/main/java/io/nosqlbench/engine/api/scripting/ExprEvaluator.java +++ b/engine-api/src/main/java/io/nosqlbench/engine/api/scripting/ExprEvaluator.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. diff --git a/engine-api/src/main/java/io/nosqlbench/engine/api/scripting/GraalJsEvaluator.java b/engine-api/src/main/java/io/nosqlbench/engine/api/scripting/GraalJsEvaluator.java index 9592a541f..67e7a9099 100644 --- a/engine-api/src/main/java/io/nosqlbench/engine/api/scripting/GraalJsEvaluator.java +++ b/engine-api/src/main/java/io/nosqlbench/engine/api/scripting/GraalJsEvaluator.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. diff --git a/engine-api/src/main/java/io/nosqlbench/engine/api/scripting/ScriptEnvBuffer.java b/engine-api/src/main/java/io/nosqlbench/engine/api/scripting/ScriptEnvBuffer.java index 4d86d2a09..05d62bc52 100644 --- a/engine-api/src/main/java/io/nosqlbench/engine/api/scripting/ScriptEnvBuffer.java +++ b/engine-api/src/main/java/io/nosqlbench/engine/api/scripting/ScriptEnvBuffer.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. diff --git a/engine-api/src/main/java/io/nosqlbench/engine/api/util/Colors.java b/engine-api/src/main/java/io/nosqlbench/engine/api/util/Colors.java index 7583646df..d560e8ec1 100644 --- a/engine-api/src/main/java/io/nosqlbench/engine/api/util/Colors.java +++ b/engine-api/src/main/java/io/nosqlbench/engine/api/util/Colors.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. diff --git a/engine-api/src/main/java/io/nosqlbench/engine/api/util/ConfigTuples.java b/engine-api/src/main/java/io/nosqlbench/engine/api/util/ConfigTuples.java index ba716b56a..26117b133 100644 --- a/engine-api/src/main/java/io/nosqlbench/engine/api/util/ConfigTuples.java +++ b/engine-api/src/main/java/io/nosqlbench/engine/api/util/ConfigTuples.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. diff --git a/engine-api/src/main/java/io/nosqlbench/engine/api/util/SimpleConfig.java b/engine-api/src/main/java/io/nosqlbench/engine/api/util/SimpleConfig.java index 348a619ee..0a3b7f3cb 100644 --- a/engine-api/src/main/java/io/nosqlbench/engine/api/util/SimpleConfig.java +++ b/engine-api/src/main/java/io/nosqlbench/engine/api/util/SimpleConfig.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. diff --git a/engine-api/src/test/java/io/nosqlbench/engine/api/activityapi/ParameterMapTest.java b/engine-api/src/test/java/io/nosqlbench/engine/api/activityapi/ParameterMapTest.java index 6314f364a..6066da4a0 100644 --- a/engine-api/src/test/java/io/nosqlbench/engine/api/activityapi/ParameterMapTest.java +++ b/engine-api/src/test/java/io/nosqlbench/engine/api/activityapi/ParameterMapTest.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. diff --git a/engine-api/src/test/java/io/nosqlbench/engine/api/activityapi/core/ops/fluent/OpTrackerImplTest.java b/engine-api/src/test/java/io/nosqlbench/engine/api/activityapi/core/ops/fluent/OpTrackerImplTest.java index 7bada5e54..62af54520 100644 --- a/engine-api/src/test/java/io/nosqlbench/engine/api/activityapi/core/ops/fluent/OpTrackerImplTest.java +++ b/engine-api/src/test/java/io/nosqlbench/engine/api/activityapi/core/ops/fluent/OpTrackerImplTest.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. diff --git a/engine-api/src/test/java/io/nosqlbench/engine/api/activityapi/cyclelog/buffers/results/CycleResultArraySegmentBufferTest.java b/engine-api/src/test/java/io/nosqlbench/engine/api/activityapi/cyclelog/buffers/results/CycleResultArraySegmentBufferTest.java index 77db5fa96..811ec0bf4 100644 --- a/engine-api/src/test/java/io/nosqlbench/engine/api/activityapi/cyclelog/buffers/results/CycleResultArraySegmentBufferTest.java +++ b/engine-api/src/test/java/io/nosqlbench/engine/api/activityapi/cyclelog/buffers/results/CycleResultArraySegmentBufferTest.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. diff --git a/engine-api/src/test/java/io/nosqlbench/engine/api/activityapi/cyclelog/filters/tristate/EnumReadableMappingFilterTest.java b/engine-api/src/test/java/io/nosqlbench/engine/api/activityapi/cyclelog/filters/tristate/EnumReadableMappingFilterTest.java index a5a97c29e..b50491b0c 100644 --- a/engine-api/src/test/java/io/nosqlbench/engine/api/activityapi/cyclelog/filters/tristate/EnumReadableMappingFilterTest.java +++ b/engine-api/src/test/java/io/nosqlbench/engine/api/activityapi/cyclelog/filters/tristate/EnumReadableMappingFilterTest.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. diff --git a/engine-api/src/test/java/io/nosqlbench/engine/api/activityapi/cyclelog/inputs/cyclelog/CycleLogInputTest.java b/engine-api/src/test/java/io/nosqlbench/engine/api/activityapi/cyclelog/inputs/cyclelog/CycleLogInputTest.java index 2a1766317..acaf97a18 100644 --- a/engine-api/src/test/java/io/nosqlbench/engine/api/activityapi/cyclelog/inputs/cyclelog/CycleLogInputTest.java +++ b/engine-api/src/test/java/io/nosqlbench/engine/api/activityapi/cyclelog/inputs/cyclelog/CycleLogInputTest.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. diff --git a/engine-api/src/test/java/io/nosqlbench/engine/api/activityapi/errorhandling/HashedErrorHandlerTest.java b/engine-api/src/test/java/io/nosqlbench/engine/api/activityapi/errorhandling/HashedErrorHandlerTest.java index d5231b954..02d8b97fb 100644 --- a/engine-api/src/test/java/io/nosqlbench/engine/api/activityapi/errorhandling/HashedErrorHandlerTest.java +++ b/engine-api/src/test/java/io/nosqlbench/engine/api/activityapi/errorhandling/HashedErrorHandlerTest.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. diff --git a/engine-api/src/test/java/io/nosqlbench/engine/api/activityapi/planning/BucketSequencerTest.java b/engine-api/src/test/java/io/nosqlbench/engine/api/activityapi/planning/BucketSequencerTest.java index d021175ee..f2c5ffd9c 100644 --- a/engine-api/src/test/java/io/nosqlbench/engine/api/activityapi/planning/BucketSequencerTest.java +++ b/engine-api/src/test/java/io/nosqlbench/engine/api/activityapi/planning/BucketSequencerTest.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. diff --git a/engine-api/src/test/java/io/nosqlbench/engine/api/activityapi/planning/ConcatSequencerTest.java b/engine-api/src/test/java/io/nosqlbench/engine/api/activityapi/planning/ConcatSequencerTest.java index 0a3e6a6dc..f82081792 100644 --- a/engine-api/src/test/java/io/nosqlbench/engine/api/activityapi/planning/ConcatSequencerTest.java +++ b/engine-api/src/test/java/io/nosqlbench/engine/api/activityapi/planning/ConcatSequencerTest.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. diff --git a/engine-api/src/test/java/io/nosqlbench/engine/api/activityapi/planning/IntervalSequencerTest.java b/engine-api/src/test/java/io/nosqlbench/engine/api/activityapi/planning/IntervalSequencerTest.java index 5263bfe7d..79cfdca60 100644 --- a/engine-api/src/test/java/io/nosqlbench/engine/api/activityapi/planning/IntervalSequencerTest.java +++ b/engine-api/src/test/java/io/nosqlbench/engine/api/activityapi/planning/IntervalSequencerTest.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. diff --git a/engine-api/src/test/java/io/nosqlbench/engine/api/activityapi/ratelimits/RateSpecTest.java b/engine-api/src/test/java/io/nosqlbench/engine/api/activityapi/ratelimits/RateSpecTest.java index b5ebf0e2c..2bbbf9a55 100644 --- a/engine-api/src/test/java/io/nosqlbench/engine/api/activityapi/ratelimits/RateSpecTest.java +++ b/engine-api/src/test/java/io/nosqlbench/engine/api/activityapi/ratelimits/RateSpecTest.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. diff --git a/engine-api/src/test/java/io/nosqlbench/engine/api/activityapi/ratelimits/TestableRateLimiter.java b/engine-api/src/test/java/io/nosqlbench/engine/api/activityapi/ratelimits/TestableRateLimiter.java index c92d758e3..11612e501 100644 --- a/engine-api/src/test/java/io/nosqlbench/engine/api/activityapi/ratelimits/TestableRateLimiter.java +++ b/engine-api/src/test/java/io/nosqlbench/engine/api/activityapi/ratelimits/TestableRateLimiter.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. diff --git a/engine-api/src/test/java/io/nosqlbench/engine/api/activityapi/sysperf/SysPerfBaselinerTest.java b/engine-api/src/test/java/io/nosqlbench/engine/api/activityapi/sysperf/SysPerfBaselinerTest.java index f8efe1013..7f059afd4 100644 --- a/engine-api/src/test/java/io/nosqlbench/engine/api/activityapi/sysperf/SysPerfBaselinerTest.java +++ b/engine-api/src/test/java/io/nosqlbench/engine/api/activityapi/sysperf/SysPerfBaselinerTest.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. diff --git a/engine-api/src/test/java/io/nosqlbench/engine/api/activityapi/sysperf/SysPerfTest.java b/engine-api/src/test/java/io/nosqlbench/engine/api/activityapi/sysperf/SysPerfTest.java index c487a803a..559067c2d 100644 --- a/engine-api/src/test/java/io/nosqlbench/engine/api/activityapi/sysperf/SysPerfTest.java +++ b/engine-api/src/test/java/io/nosqlbench/engine/api/activityapi/sysperf/SysPerfTest.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. diff --git a/engine-api/src/test/java/io/nosqlbench/engine/api/activityimpl/ActivityDefTest.java b/engine-api/src/test/java/io/nosqlbench/engine/api/activityimpl/ActivityDefTest.java index bed40e9a3..b4f607ae9 100644 --- a/engine-api/src/test/java/io/nosqlbench/engine/api/activityimpl/ActivityDefTest.java +++ b/engine-api/src/test/java/io/nosqlbench/engine/api/activityimpl/ActivityDefTest.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. diff --git a/engine-api/src/test/java/io/nosqlbench/engine/api/activityimpl/CpuInfoTest.java b/engine-api/src/test/java/io/nosqlbench/engine/api/activityimpl/CpuInfoTest.java index d5e115718..5cfd91b17 100644 --- a/engine-api/src/test/java/io/nosqlbench/engine/api/activityimpl/CpuInfoTest.java +++ b/engine-api/src/test/java/io/nosqlbench/engine/api/activityimpl/CpuInfoTest.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. diff --git a/engine-api/src/test/java/io/nosqlbench/engine/api/activityimpl/input/AtomicInputTest.java b/engine-api/src/test/java/io/nosqlbench/engine/api/activityimpl/input/AtomicInputTest.java index 6ee7cadbf..0bcfd1ca1 100644 --- a/engine-api/src/test/java/io/nosqlbench/engine/api/activityimpl/input/AtomicInputTest.java +++ b/engine-api/src/test/java/io/nosqlbench/engine/api/activityimpl/input/AtomicInputTest.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. diff --git a/engine-api/src/test/java/io/nosqlbench/engine/api/activityimpl/input/CycleArrayBufferTest.java b/engine-api/src/test/java/io/nosqlbench/engine/api/activityimpl/input/CycleArrayBufferTest.java index 08a5deb7c..68cfaa0db 100644 --- a/engine-api/src/test/java/io/nosqlbench/engine/api/activityimpl/input/CycleArrayBufferTest.java +++ b/engine-api/src/test/java/io/nosqlbench/engine/api/activityimpl/input/CycleArrayBufferTest.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. diff --git a/engine-api/src/test/java/io/nosqlbench/engine/api/activityimpl/input/CycleArrayTest.java b/engine-api/src/test/java/io/nosqlbench/engine/api/activityimpl/input/CycleArrayTest.java index 635ff8007..6dbf3868d 100644 --- a/engine-api/src/test/java/io/nosqlbench/engine/api/activityimpl/input/CycleArrayTest.java +++ b/engine-api/src/test/java/io/nosqlbench/engine/api/activityimpl/input/CycleArrayTest.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. diff --git a/engine-api/src/test/java/io/nosqlbench/engine/api/activityimpl/input/InputIntervalTest.java b/engine-api/src/test/java/io/nosqlbench/engine/api/activityimpl/input/InputIntervalTest.java index 800ca3e74..3175d56c8 100644 --- a/engine-api/src/test/java/io/nosqlbench/engine/api/activityimpl/input/InputIntervalTest.java +++ b/engine-api/src/test/java/io/nosqlbench/engine/api/activityimpl/input/InputIntervalTest.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. diff --git a/engine-api/src/test/java/io/nosqlbench/engine/api/activityimpl/input/LinkedInputTest.java b/engine-api/src/test/java/io/nosqlbench/engine/api/activityimpl/input/LinkedInputTest.java index 53b3e8751..02a2533a2 100644 --- a/engine-api/src/test/java/io/nosqlbench/engine/api/activityimpl/input/LinkedInputTest.java +++ b/engine-api/src/test/java/io/nosqlbench/engine/api/activityimpl/input/LinkedInputTest.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. diff --git a/engine-api/src/test/java/io/nosqlbench/engine/api/activityimpl/marker/CoreOutputAtticTest.java b/engine-api/src/test/java/io/nosqlbench/engine/api/activityimpl/marker/CoreOutputAtticTest.java index 42d523d3b..6bf9b8889 100644 --- a/engine-api/src/test/java/io/nosqlbench/engine/api/activityimpl/marker/CoreOutputAtticTest.java +++ b/engine-api/src/test/java/io/nosqlbench/engine/api/activityimpl/marker/CoreOutputAtticTest.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. diff --git a/engine-api/src/test/java/io/nosqlbench/engine/api/activityimpl/motor/RunStateTallyTest.java b/engine-api/src/test/java/io/nosqlbench/engine/api/activityimpl/motor/RunStateTallyTest.java index ffb545158..5eb13c631 100644 --- a/engine-api/src/test/java/io/nosqlbench/engine/api/activityimpl/motor/RunStateTallyTest.java +++ b/engine-api/src/test/java/io/nosqlbench/engine/api/activityimpl/motor/RunStateTallyTest.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. diff --git a/engine-api/src/test/java/io/nosqlbench/engine/api/activityimpl/tracking/LongTreeTrackerTest2.java b/engine-api/src/test/java/io/nosqlbench/engine/api/activityimpl/tracking/LongTreeTrackerTest2.java index 6dbc889d0..32ef832e9 100644 --- a/engine-api/src/test/java/io/nosqlbench/engine/api/activityimpl/tracking/LongTreeTrackerTest2.java +++ b/engine-api/src/test/java/io/nosqlbench/engine/api/activityimpl/tracking/LongTreeTrackerTest2.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. diff --git a/engine-api/src/test/java/io/nosqlbench/engine/api/activityimpl/tracking/TreeTracker1024Test.java b/engine-api/src/test/java/io/nosqlbench/engine/api/activityimpl/tracking/TreeTracker1024Test.java index 1c14904e4..a0d3b6cf0 100644 --- a/engine-api/src/test/java/io/nosqlbench/engine/api/activityimpl/tracking/TreeTracker1024Test.java +++ b/engine-api/src/test/java/io/nosqlbench/engine/api/activityimpl/tracking/TreeTracker1024Test.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. diff --git a/engine-api/src/test/java/io/nosqlbench/engine/api/metrics/ActivityMetricsTest.java b/engine-api/src/test/java/io/nosqlbench/engine/api/metrics/ActivityMetricsTest.java index 6f2185bd2..dc9f372a3 100644 --- a/engine-api/src/test/java/io/nosqlbench/engine/api/metrics/ActivityMetricsTest.java +++ b/engine-api/src/test/java/io/nosqlbench/engine/api/metrics/ActivityMetricsTest.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. diff --git a/engine-api/src/test/java/io/nosqlbench/engine/api/metrics/DeltaHdrHistogramReservoirTest.java b/engine-api/src/test/java/io/nosqlbench/engine/api/metrics/DeltaHdrHistogramReservoirTest.java index 66c82b908..5a8b399bf 100644 --- a/engine-api/src/test/java/io/nosqlbench/engine/api/metrics/DeltaHdrHistogramReservoirTest.java +++ b/engine-api/src/test/java/io/nosqlbench/engine/api/metrics/DeltaHdrHistogramReservoirTest.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. diff --git a/engine-api/src/test/java/io/nosqlbench/engine/api/util/SSLKsFactoryTest.java b/engine-api/src/test/java/io/nosqlbench/engine/api/util/SSLKsFactoryTest.java index d7d0c4570..3abe3c5cc 100644 --- a/engine-api/src/test/java/io/nosqlbench/engine/api/util/SSLKsFactoryTest.java +++ b/engine-api/src/test/java/io/nosqlbench/engine/api/util/SSLKsFactoryTest.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. diff --git a/engine-api/src/test/java/io/nosqlbench/engine/api/util/SimpleConfigTest.java b/engine-api/src/test/java/io/nosqlbench/engine/api/util/SimpleConfigTest.java index d4ce6173c..6621a6515 100644 --- a/engine-api/src/test/java/io/nosqlbench/engine/api/util/SimpleConfigTest.java +++ b/engine-api/src/test/java/io/nosqlbench/engine/api/util/SimpleConfigTest.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. diff --git a/engine-api/src/test/java/io/nosqlbench/engine/api/util/UnitParserTests.java b/engine-api/src/test/java/io/nosqlbench/engine/api/util/UnitParserTests.java index 8a660a1c3..2e9391577 100644 --- a/engine-api/src/test/java/io/nosqlbench/engine/api/util/UnitParserTests.java +++ b/engine-api/src/test/java/io/nosqlbench/engine/api/util/UnitParserTests.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. From ad58a7959a814c66912fbc5a667fd95a7dc8bb9a Mon Sep 17 00:00:00 2001 From: Jonathan Shook Date: Tue, 25 Jul 2023 11:50:22 -0500 Subject: [PATCH 04/14] engine and nb api changes for vector branch --- .../logger/LoggingMarkerDispenser.java | 1 + .../api/activityapi/planning/OpSource.java | 2 +- .../ratelimits/HybridRateLimiter.java | 6 +-- .../ratelimits/InlineTokenPool.java | 6 +-- .../activityimpl/marker/OldCoreTracker.java | 1 + .../uniform/actions/StandardAction.java | 17 ++++--- .../modular/NBErrorHandlerTest.java | 16 +++--- .../api/errors/ResultMismatchError.java | 50 +++++++++++++++++++ .../api/errors/ResultVerificationError.java | 50 +++++++++++++++++++ 9 files changed, 127 insertions(+), 22 deletions(-) create mode 100644 nb-api/src/main/java/io/nosqlbench/api/errors/ResultMismatchError.java create mode 100644 nb-api/src/main/java/io/nosqlbench/api/errors/ResultVerificationError.java diff --git a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/cyclelog/outputs/logger/LoggingMarkerDispenser.java b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/cyclelog/outputs/logger/LoggingMarkerDispenser.java index 37a9ac98f..45bf1f4fb 100644 --- a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/cyclelog/outputs/logger/LoggingMarkerDispenser.java +++ b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/cyclelog/outputs/logger/LoggingMarkerDispenser.java @@ -19,6 +19,7 @@ package io.nosqlbench.engine.api.activityapi.cyclelog.outputs.logger; import io.nosqlbench.engine.api.activityapi.core.Activity; import io.nosqlbench.engine.api.activityapi.output.Output; import io.nosqlbench.engine.api.activityapi.output.OutputDispenser; +import io.nosqlbench.engine.api.activityapi.core.Activity; import io.nosqlbench.nb.annotations.Service; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; diff --git a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/planning/OpSource.java b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/planning/OpSource.java index 0247c18fb..1fe759316 100644 --- a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/planning/OpSource.java +++ b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/planning/OpSource.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. diff --git a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/ratelimits/HybridRateLimiter.java b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/ratelimits/HybridRateLimiter.java index 4036c9e87..f764e8867 100644 --- a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/ratelimits/HybridRateLimiter.java +++ b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/ratelimits/HybridRateLimiter.java @@ -157,9 +157,9 @@ public class HybridRateLimiter implements RateLimiter { protected void init(final NBLabeledElement activityDef) { - delayGauge = ActivityMetrics.gauge(activityDef, this.label + ".waittime", new WaitTimeGauge(this)); - avgRateGauge = ActivityMetrics.gauge(activityDef, this.label + ".config.cyclerate", new RateGauge(this)); - burstRateGauge = ActivityMetrics.gauge(activityDef, this.label + ".config.burstrate", new BurstRateGauge(this)); + delayGauge = ActivityMetrics.gauge(activityDef, this.label + ".waittime", new RateLimiters.WaitTimeGauge(this)); + avgRateGauge = ActivityMetrics.gauge(activityDef, this.label + ".config.cyclerate", new RateLimiters.RateGauge(this)); + burstRateGauge = ActivityMetrics.gauge(activityDef, this.label + ".config.burstrate", new RateLimiters.BurstRateGauge(this)); } @Override diff --git a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/ratelimits/InlineTokenPool.java b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/ratelimits/InlineTokenPool.java index 6c55c17ad..ed7aa27ae 100644 --- a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/ratelimits/InlineTokenPool.java +++ b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/ratelimits/InlineTokenPool.java @@ -294,10 +294,10 @@ public class InlineTokenPool { if (debugthis) { System.out.print(this); - System.out.print(ANSI_BrightBlue + " adding=" + allocatedToActivePool); + System.out.print(Colors.ANSI_BrightBlue + " adding=" + allocatedToActivePool); if (0 < allocatedToOverflowPool) - System.out.print(ANSI_Red + " OVERFLOW:" + allocatedToOverflowPool + ANSI_Reset); - if (0 < burstFill) System.out.print(ANSI_BrightGreen + " BACKFILL:" + burstFill + ANSI_Reset); + System.out.print(Colors.ANSI_Red + " OVERFLOW:" + allocatedToOverflowPool + Colors.ANSI_Reset); + if (0 < burstFill) System.out.print(Colors.ANSI_BrightGreen + " BACKFILL:" + burstFill + Colors.ANSI_Reset); System.out.println(); } diff --git a/engine-api/src/main/java/io/nosqlbench/engine/api/activityimpl/marker/OldCoreTracker.java b/engine-api/src/main/java/io/nosqlbench/engine/api/activityimpl/marker/OldCoreTracker.java index 11b966d4e..186368930 100644 --- a/engine-api/src/main/java/io/nosqlbench/engine/api/activityimpl/marker/OldCoreTracker.java +++ b/engine-api/src/main/java/io/nosqlbench/engine/api/activityimpl/marker/OldCoreTracker.java @@ -16,6 +16,7 @@ package io.nosqlbench.engine.api.activityimpl.marker; +import io.nosqlbench.engine.api.activityapi.cyclelog.buffers.results.CycleResultsSegment; import io.nosqlbench.engine.api.activityapi.cyclelog.buffers.CycleResultSegmentsReadable; import io.nosqlbench.engine.api.activityapi.cyclelog.buffers.results.CycleResultsSegment; diff --git a/engine-api/src/main/java/io/nosqlbench/engine/api/activityimpl/uniform/actions/StandardAction.java b/engine-api/src/main/java/io/nosqlbench/engine/api/activityimpl/uniform/actions/StandardAction.java index b0ab2aa8d..b283e9d80 100644 --- a/engine-api/src/main/java/io/nosqlbench/engine/api/activityimpl/uniform/actions/StandardAction.java +++ b/engine-api/src/main/java/io/nosqlbench/engine/api/activityimpl/uniform/actions/StandardAction.java @@ -107,12 +107,16 @@ public class StandardAction, R extends Op> impl throw new RuntimeException("The op implementation did not implement any active logic. Implement " + "one of [RunnableOp, CycleOp, or ChainingOp]"); } - var expectedResultExpression = dispenser.getExpectedResultExpression(); - if (shouldVerifyExpectedResultFor(op, expectedResultExpression)) { - var verified = MVEL.executeExpression(expectedResultExpression, result, boolean.class); - if (!verified) { - throw new ExpectedResultVerificationError(maxTries - tries, expectedResultExpression); + + CycleFunction verifier = dispenser.getVerifier(); + try { + verifier.setVariable("result", result); + Boolean isGood = verifier.apply(cycle); + if (!isGood) { + throw new ResultVerificationError("result verification failed", maxTries - tries, verifier.getExpressionDetails()); } + } catch (Exception e) { + throw new ResultVerificationError(e, maxTries - tries, verifier.getExpressionDetails()); } } catch (Exception e) { error = e; @@ -150,7 +154,4 @@ public class StandardAction, R extends Op> impl public void onActivityDefUpdate(ActivityDef activityDef) { } - private boolean shouldVerifyExpectedResultFor(Op op, Serializable expectedResultExpression) { - return !(op instanceof RunnableOp) && expectedResultExpression != null; - } } diff --git a/engine-api/src/test/java/io/nosqlbench/engine/api/activityapi/errorhandling/modular/NBErrorHandlerTest.java b/engine-api/src/test/java/io/nosqlbench/engine/api/activityapi/errorhandling/modular/NBErrorHandlerTest.java index 7534f9966..ad30522de 100644 --- a/engine-api/src/test/java/io/nosqlbench/engine/api/activityapi/errorhandling/modular/NBErrorHandlerTest.java +++ b/engine-api/src/test/java/io/nosqlbench/engine/api/activityapi/errorhandling/modular/NBErrorHandlerTest.java @@ -25,11 +25,13 @@ import io.nosqlbench.api.errors.ExpectedResultVerificationError; import io.nosqlbench.engine.api.activityapi.errorhandling.ErrorMetrics; import io.nosqlbench.engine.api.activityapi.errorhandling.modular.handlers.CountErrorHandler; import io.nosqlbench.engine.api.activityapi.errorhandling.modular.handlers.CounterErrorHandler; +import io.nosqlbench.api.config.NBLabeledElement; import io.nosqlbench.util.NBMock; import io.nosqlbench.util.NBMock.LogAppender; import org.apache.logging.log4j.Level; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.core.Logger; +import org.assertj.core.api.Assertions; import org.junit.jupiter.api.Test; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.Arguments; @@ -188,15 +190,15 @@ class NBErrorHandlerTest { var retries = errorMetrics.getExceptionExpectedResultVerificationMetrics().getVerificationRetries(); var errors = errorMetrics.getExceptionExpectedResultVerificationMetrics().getVerificationErrors(); - assertThat(retries.getCount()).isEqualTo(0); - assertThat(errors.getCount()).isEqualTo(0); + Assertions.assertThat(retries.getCount()).isEqualTo(0); + Assertions.assertThat(errors.getCount()).isEqualTo(0); // when eh.handleError(error, 1, 2); // then - assertThat(retries.getCount()).isEqualTo(retriesCount); - assertThat(errors.getCount()).isEqualTo(errorsCount); + Assertions.assertThat(retries.getCount()).isEqualTo(retriesCount); + Assertions.assertThat(errors.getCount()).isEqualTo(errorsCount); logger.getContext().stop(); // force any async appenders to flush logger.getContext().start(); // resume processing @@ -211,7 +213,7 @@ class NBErrorHandlerTest { return Stream.of( Arguments.of( "retries left", - new ExpectedResultVerificationError(5, "expected"), + new ResultMismatchError("error-message", 5, ""), "Cycle: 1 Verification of result did not pass. 5 retries left.", 1, 0, @@ -219,8 +221,8 @@ class NBErrorHandlerTest { ), Arguments.of( "no retries left", - new ExpectedResultVerificationError(0, "expected"), - "Cycle: 1 Verification of result did not pass following expression: expected", + new ResultMismatchError("error-message", 0, ""), + "Cycle: 1 Verification of result did not pass following expression: ", 0, 1, logger diff --git a/nb-api/src/main/java/io/nosqlbench/api/errors/ResultMismatchError.java b/nb-api/src/main/java/io/nosqlbench/api/errors/ResultMismatchError.java new file mode 100644 index 000000000..efcc24584 --- /dev/null +++ b/nb-api/src/main/java/io/nosqlbench/api/errors/ResultMismatchError.java @@ -0,0 +1,50 @@ +/* + * 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.api.errors; + +import java.io.Serializable; + +public class ResultMismatchError extends RuntimeException { + private final int triesLeft; + private final String expressionDetails; + + public ResultMismatchError(String message, int triesLeft, String expressionDetails) { + super("Error while verifying result with " + triesLeft + " tries remaining: " + message); + this.triesLeft = triesLeft; + this.expressionDetails = expressionDetails; + } + + public ResultMismatchError(Throwable throwable, int triesLeft, String expressionDetails) { + super("Error while verifying result with " + triesLeft + " tries remaining: " + throwable.getMessage(),throwable); + this.triesLeft = triesLeft; + this.expressionDetails = expressionDetails; + } + + @Override + public String getMessage() { + return super.getMessage(); + } + + public int getTriesLeft() { + return triesLeft; + } + + public Serializable getExpressionDetails() { + return expressionDetails; + } + +} diff --git a/nb-api/src/main/java/io/nosqlbench/api/errors/ResultVerificationError.java b/nb-api/src/main/java/io/nosqlbench/api/errors/ResultVerificationError.java new file mode 100644 index 000000000..dab8f5289 --- /dev/null +++ b/nb-api/src/main/java/io/nosqlbench/api/errors/ResultVerificationError.java @@ -0,0 +1,50 @@ +/* + * 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.api.errors; + +import java.io.Serializable; + +public class ResultVerificationError extends RuntimeException { + private final int triesLeft; + private final String expressionDetails; + + public ResultVerificationError(String message, int triesLeft, String expressionDetails) { + super("Error while verifying result with " + triesLeft + " tries remaining: " + message); + this.triesLeft = triesLeft; + this.expressionDetails = expressionDetails; + } + + public ResultVerificationError(Throwable throwable, int triesLeft, String expressionDetails) { + super("Error while verifying result with " + triesLeft + " tries remaining: " + throwable.getMessage(),throwable); + this.triesLeft = triesLeft; + this.expressionDetails = expressionDetails; + } + + @Override + public String getMessage() { + return super.getMessage(); + } + + public int getTriesLeft() { + return triesLeft; + } + + public Serializable getExpressionDetails() { + return expressionDetails; + } + +} From 23aba88ee0e2878cf2c65f13fac99a7030c74e07 Mon Sep 17 00:00:00 2001 From: Jonathan Shook Date: Tue, 25 Jul 2023 11:50:28 -0500 Subject: [PATCH 05/14] engine and runtime updates for vector branch --- .../engine/cli/BasicScriptBuffer.java | 2 +- .../java/io/nosqlbench/engine/cli/NBCLI.java | 2 +- .../NBCLIScenarioParserTemplateVarTest.java | 6 +- .../lifecycle/activity/ActivityExecutor.java | 5 +- .../activity/ActivityTypeLoader.java | 2 +- .../core/lifecycle/scenario/Scenario.java | 30 +- .../script/graaljs_engine_options.json | 2064 +++++++++++++++++ mvn-defaults/pom.xml | 9 +- .../examples/bindings-cqlvectors.yaml | 7 + .../resources/examples/bindings-vectors.yaml | 53 + 10 files changed, 2152 insertions(+), 28 deletions(-) create mode 100644 engine-core/src/main/java/io/nosqlbench/engine/core/lifecycle/scenario/script/graaljs_engine_options.json create mode 100644 nbr/src/main/resources/examples/bindings-cqlvectors.yaml create mode 100644 nbr/src/main/resources/examples/bindings-vectors.yaml diff --git a/engine-cli/src/main/java/io/nosqlbench/engine/cli/BasicScriptBuffer.java b/engine-cli/src/main/java/io/nosqlbench/engine/cli/BasicScriptBuffer.java index bbb63945c..099fb293a 100644 --- a/engine-cli/src/main/java/io/nosqlbench/engine/cli/BasicScriptBuffer.java +++ b/engine-cli/src/main/java/io/nosqlbench/engine/cli/BasicScriptBuffer.java @@ -16,7 +16,7 @@ package io.nosqlbench.engine.cli; -import io.nosqlbench.engine.api.templating.StrInterpolator; +import io.nosqlbench.adapters.api.templating.StrInterpolator; import io.nosqlbench.api.content.Content; import io.nosqlbench.api.content.NBIO; import org.apache.logging.log4j.Logger; 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 c71e71d52..315bdb91f 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 @@ -32,7 +32,7 @@ import io.nosqlbench.engine.api.activityapi.cyclelog.outputs.cyclelog.CycleLogDu import io.nosqlbench.engine.api.activityapi.cyclelog.outputs.cyclelog.CycleLogImporterUtility; import io.nosqlbench.engine.api.activityapi.input.InputType; import io.nosqlbench.engine.api.activityapi.output.OutputType; -import io.nosqlbench.engine.api.activityconfig.rawyaml.RawOpsLoader; +import io.nosqlbench.adapters.api.activityconfig.rawyaml.RawOpsLoader; import io.nosqlbench.engine.cli.NBCLIOptions.LoggerConfigData; import io.nosqlbench.engine.cli.NBCLIOptions.Mode; import io.nosqlbench.engine.core.annotation.Annotators; diff --git a/engine-cli/src/test/java/io/nosqlbench/engine/cli/NBCLIScenarioParserTemplateVarTest.java b/engine-cli/src/test/java/io/nosqlbench/engine/cli/NBCLIScenarioParserTemplateVarTest.java index cd3bb627b..940e079cd 100644 --- a/engine-cli/src/test/java/io/nosqlbench/engine/cli/NBCLIScenarioParserTemplateVarTest.java +++ b/engine-cli/src/test/java/io/nosqlbench/engine/cli/NBCLIScenarioParserTemplateVarTest.java @@ -16,9 +16,9 @@ package io.nosqlbench.engine.cli; -import io.nosqlbench.engine.api.activityconfig.OpsLoader; -import io.nosqlbench.engine.api.activityconfig.yaml.OpTemplate; -import io.nosqlbench.engine.api.activityconfig.yaml.OpsDocList; +import io.nosqlbench.adapters.api.activityconfig.OpsLoader; +import io.nosqlbench.adapters.api.activityconfig.yaml.OpTemplate; +import io.nosqlbench.adapters.api.activityconfig.yaml.OpsDocList; import org.junit.jupiter.api.Test; import java.util.List; 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 57bee9d53..1b3ed7df8 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 @@ -15,11 +15,12 @@ */ package io.nosqlbench.engine.core.lifecycle.activity; +import io.nosqlbench.engine.api.activityapi.core.*; +import io.nosqlbench.engine.api.activityimpl.MotorState; import io.nosqlbench.api.annotations.Annotation; import io.nosqlbench.api.annotations.Layer; import io.nosqlbench.api.engine.activityimpl.ActivityDef; import io.nosqlbench.api.engine.activityimpl.ParameterMap; -import io.nosqlbench.engine.api.activityapi.core.*; import io.nosqlbench.engine.api.activityapi.core.progress.ProgressCapable; import io.nosqlbench.engine.api.activityapi.core.progress.ProgressMeterDisplay; import io.nosqlbench.engine.api.activityimpl.motor.RunStateImage; @@ -41,7 +42,7 @@ import java.util.stream.Collectors; * *

In order to allow for dynamic thread management, which is not easily supported as an explicit feature * of most executor services, threads are started as long-running processes and managed via state signaling. - * The {@link RunState} enum, {@link io.nosqlbench.engine.api.activityimpl.MotorState} type, and {@link RunStateTally} + * The {@link RunState} enum, {@link MotorState} type, and {@link RunStateTally} * state tracking class are used together to represent valid states and transitions, contain and transition state atomically, * and provide blocking conditions for observers, respectively.

* 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 01bc753f8..6cce4bbfc 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 @@ -19,7 +19,7 @@ package io.nosqlbench.engine.core.lifecycle.activity; import io.nosqlbench.api.config.NBLabeledElement; import io.nosqlbench.engine.api.activityapi.core.ActivityType; import io.nosqlbench.api.engine.activityimpl.ActivityDef; -import io.nosqlbench.engine.api.activityimpl.uniform.DriverAdapter; +import io.nosqlbench.adapters.api.activityimpl.uniform.DriverAdapter; import io.nosqlbench.engine.api.activityimpl.uniform.StandardActivityType; import io.nosqlbench.nb.annotations.Maturity; import io.nosqlbench.api.system.NBEnvironment; diff --git a/engine-core/src/main/java/io/nosqlbench/engine/core/lifecycle/scenario/Scenario.java b/engine-core/src/main/java/io/nosqlbench/engine/core/lifecycle/scenario/Scenario.java index 641ec2b16..11be7a761 100644 --- a/engine-core/src/main/java/io/nosqlbench/engine/core/lifecycle/scenario/Scenario.java +++ b/engine-core/src/main/java/io/nosqlbench/engine/core/lifecycle/scenario/Scenario.java @@ -139,10 +139,10 @@ public class Scenario implements Callable, NBLabeledElem } public static Scenario forTesting(final String name, final Engine engine, final String reportSummaryTo, final Maturity minMaturity) { - return new Scenario(name,null,engine,"console:10s",true,true,reportSummaryTo,"",Path.of("logs"),minMaturity, NBLabeledElement.forKV("test-name","name")); + return new Scenario(name, null, engine, "console:10s", true, true, reportSummaryTo, "", Path.of("logs"), minMaturity, NBLabeledElement.forKV("test-name", "name")); } -// public Scenario(final String name, final Engine engine, final String reportSummaryTo, final Maturity minMaturity) { + // public Scenario(final String name, final Engine engine, final String reportSummaryTo, final Maturity minMaturity) { // scenarioName = name; // this.reportSummaryTo = reportSummaryTo; // this.engine = engine; @@ -199,8 +199,8 @@ public class Scenario implements Callable, NBLabeledElem .allowAllAccess(true) .allowEnvironmentAccess(EnvironmentAccess.INHERIT) .allowPolyglotAccess(PolyglotAccess.ALL) - .option("js.ecmascript-version", "2020") - .option("js.nashorn-compat", "true"); + .option("js.ecmascript-version", "2022") + .option("js.nashorn-compat", "false"); final Builder engineBuilder = org.graalvm.polyglot.Engine.newBuilder(); engineBuilder.option("engine.WarnInterpreterOnly", "false"); @@ -213,15 +213,10 @@ public class Scenario implements Callable, NBLabeledElem if (!"disabled".equals(progressInterval)) this.activityProgressIndicator = new ActivityProgressIndicator(scenarioController, this.progressInterval); - this.scriptEnv = new ScenarioContext(scenarioName,scenarioController); + this.scriptEnv = new ScenarioContext(scenarioName, scenarioController); this.scriptEngine.setContext(this.scriptEnv); this.scriptEngine.put("params", this.scenarioScriptParams); - -// scriptEngine.put("scenario", scenarioController); -// scriptEngine.put("metrics", new PolyglotMetricRegistryBindings(metricRegistry)); -// scriptEngine.put("activities", new NashornActivityBindings(scenarioController)); - this.scriptEngine.put("scenario", new PolyglotScenarioController(scenarioController)); this.scriptEngine.put("metrics", new PolyglotMetricRegistryBindings(metricRegistry)); this.scriptEngine.put("activities", new ActivityBindings(scenarioController)); @@ -280,7 +275,7 @@ public class Scenario implements Callable, NBLabeledElem this.logger.debug("Awaiting completion of scenario and activities for {} millis.", awaitCompletionTime); this.scenarioController.awaitCompletion(awaitCompletionTime); } catch (final Exception e) { - error =e; + error = e; } finally { this.scenarioController.shutdown(); } @@ -293,8 +288,9 @@ public class Scenario implements Callable, NBLabeledElem } public void notifyException(final Thread t, final Throwable e) { - error =new RuntimeException("in thread " + t.getName() + ", " +e, e); + error = new RuntimeException("in thread " + t.getName() + ", " + e, e); } + private void executeScenarioScripts() { for (final String script : this.scripts) try { @@ -383,13 +379,13 @@ public class Scenario implements Callable, NBLabeledElem /** * This should be the only way to get a ScenarioResult for a Scenario. - * + *

* The lifecycle of a scenario includes the lifecycles of all of the following: *

    *
  1. The scenario control script, executing within a graaljs context.
  2. *
  3. The lifecycle of every activity which is started within the scenario.
  4. *
- * + *

* All of these run asynchronously within the scenario, however the same thread that calls * the scenario is the one which executes the control script. A scenario ends when all * of the following conditions are met: @@ -406,12 +402,14 @@ public class Scenario implements Callable, NBLabeledElem try { this.runScenario(); } catch (final Exception e) { - error =e; + error = e; } finally { this.logger.debug("{} scenario run", null == this.error ? "NORMAL" : "ERRORED"); } + if (this.scriptEnv == null) { - final String iolog = this.scriptEnv.getTimedLog(); + } + String iolog = error != null ? error.toString() : this.scriptEnv.getTimedLog(); result = new ExecutionMetricsResult(startedAtMillis, endedAtMillis, iolog, this.error); this.result.reportMetricsSummaryToLog(); this.doReportSummaries(this.reportSummaryTo, this.result); diff --git a/engine-core/src/main/java/io/nosqlbench/engine/core/lifecycle/scenario/script/graaljs_engine_options.json b/engine-core/src/main/java/io/nosqlbench/engine/core/lifecycle/scenario/script/graaljs_engine_options.json new file mode 100644 index 000000000..eff0e394a --- /dev/null +++ b/engine-core/src/main/java/io/nosqlbench/engine/core/lifecycle/scenario/script/graaljs_engine_options.json @@ -0,0 +1,2064 @@ +[ + { + "key": { + "type": { + "name": "Boolean", + "converter": {}, + "validator": {}, + "isOptionMap": false, + "isDefaultType": true + }, + "defaultValue": false + }, + "name": "engine.DisableCodeSharing", + "help": "Option to force disable code sharing for this engine, even if the context was created with an explicit engine. This option is intended for testing purposes only.", + "category": "INTERNAL", + "stability": "EXPERIMENTAL", + "deprecated": false, + "deprecationMessage": "", + "usageSyntax": "" +}, +{ + "key": { + "type": { + "name": "Boolean", + "converter": {}, + "validator": {}, + "isOptionMap": false, + "isDefaultType": true + }, + "defaultValue": false + }, + "name": "engine.ForceCodeSharing", + "help": "Option to force enable code sharing for this engine, even if the context was created with a bound engine. This option is intended for testing purposes only.", + "category": "INTERNAL", + "stability": "EXPERIMENTAL", + "deprecated": false, + "deprecationMessage": "", + "usageSyntax": "" +}, +{ + "key": { + "type": { + "name": "Boolean", + "converter": {}, + "validator": {}, + "isOptionMap": false, + "isDefaultType": true + }, + "defaultValue": true + }, + "name": "engine.InstrumentExceptionsAreThrown", + "help": "Propagates exceptions thrown by instruments. (default: true)", + "category": "INTERNAL", + "stability": "EXPERIMENTAL", + "deprecated": false, + "deprecationMessage": "", + "usageSyntax": "true|false" +}, +{ + "key": { + "type": { + "name": "String", + "converter": {}, + "validator": {}, + "isOptionMap": false, + "isDefaultType": true + }, + "defaultValue": "" + }, + "name": "engine.PreinitializeContexts", + "help": "Preinitialize language contexts for given languages.", + "category": "EXPERT", + "stability": "EXPERIMENTAL", + "deprecated": true, + "deprecationMessage": "", + "usageSyntax": "" +}, +{ + "key": { + "type": { + "name": "Boolean", + "converter": {}, + "validator": {}, + "isOptionMap": false, + "isDefaultType": true + }, + "defaultValue": false + }, + "name": "engine.RelaxStaticObjectSafetyChecks", + "help": "On property accesses, the Static Object Model does not perform shape checks and uses unsafe casts", + "category": "EXPERT", + "stability": "EXPERIMENTAL", + "deprecated": false, + "deprecationMessage": "", + "usageSyntax": "" +}, +{ + "key": { + "type": { + "name": "Boolean", + "converter": {}, + "validator": {}, + "isOptionMap": false, + "isDefaultType": true + }, + "defaultValue": false + }, + "name": "engine.SafepointALot", + "help": "Repeadly submits thread local actions and collects statistics about safepoint intervals in the process. Prints event and interval statistics when the context is closed for each thread. This option significantly slows down execution and is therefore intended for testing purposes only.", + "category": "INTERNAL", + "stability": "EXPERIMENTAL", + "deprecated": false, + "deprecationMessage": "", + "usageSyntax": "" +}, +{ + "key": { + "type": { + "name": "Boolean", + "converter": {}, + "validator": {}, + "isOptionMap": false, + "isDefaultType": true + }, + "defaultValue": false + }, + "name": "engine.ShowInternalStackFrames", + "help": "Show internal frames specific to the language implementation in stack traces.", + "category": "INTERNAL", + "stability": "EXPERIMENTAL", + "deprecated": false, + "deprecationMessage": "", + "usageSyntax": "" +}, +{ + "key": { + "type": { + "name": "Boolean", + "converter": {}, + "validator": {}, + "isOptionMap": false, + "isDefaultType": true + }, + "defaultValue": false + }, + "name": "engine.SpecializationStatistics", + "help": "Enables specialization statistics for nodes generated with Truffle DSL and prints the result on exit. In order for this flag to be functional -Atruffle.dsl.GenerateSpecializationStatistics\u003dtrue needs to be set at build time. Enabling this flag and the compiler option has major implications on the performance and footprint of the interpreter. Do not use in production environments.", + "category": "INTERNAL", + "stability": "EXPERIMENTAL", + "deprecated": false, + "deprecationMessage": "", + "usageSyntax": "" +}, +{ + "key": { + "type": { + "name": "strategy", + "converter": {}, + "validator": {}, + "isOptionMap": false, + "isDefaultType": false + }, + "defaultValue": "DEFAULT" + }, + "name": "engine.StaticObjectStorageStrategy", + "help": "Set the storage strategy used by the Static Object Model. Accepted values are: [\u0027default\u0027, \u0027array-based\u0027, \u0027field-based\u0027]", + "category": "INTERNAL", + "stability": "EXPERIMENTAL", + "deprecated": false, + "deprecationMessage": "", + "usageSyntax": "default|array-based|field-based" +}, +{ + "key": { + "type": { + "name": "Boolean", + "converter": {}, + "validator": {}, + "isOptionMap": false, + "isDefaultType": true + }, + "defaultValue": false + }, + "name": "engine.TraceCodeSharing", + "help": "Enables printing of code sharing related information to the logger. This option is intended to support debugging language implementations.", + "category": "INTERNAL", + "stability": "EXPERIMENTAL", + "deprecated": false, + "deprecationMessage": "", + "usageSyntax": "" +}, +{ + "key": { + "type": { + "name": "Long", + "converter": {}, + "validator": {}, + "isOptionMap": false, + "isDefaultType": true + }, + "defaultValue": 0 + }, + "name": "engine.TraceStackTraceInterval", + "help": "Prints the stack trace for all threads for a time interval. By default 0, which disables the output.", + "category": "EXPERT", + "stability": "EXPERIMENTAL", + "deprecated": false, + "deprecationMessage": "", + "usageSyntax": "[1, inf)" +}, +{ + "key": { + "type": { + "name": "Boolean", + "converter": {}, + "validator": {}, + "isOptionMap": false, + "isDefaultType": true + }, + "defaultValue": false + }, + "name": "engine.TraceThreadLocalActions", + "help": "Traces thread local events and when they are processed on the individual threads.Prints messages with the [engine] [tl] prefix. ", + "category": "INTERNAL", + "stability": "EXPERIMENTAL", + "deprecated": false, + "deprecationMessage": "", + "usageSyntax": "" +}, +{ + "key": { + "type": { + "name": "Boolean", + "converter": {}, + "validator": {}, + "isOptionMap": false, + "isDefaultType": true + }, + "defaultValue": false + }, + "name": "engine.TriggerUncaughtExceptionHandlerForCancel", + "help": "Propagates cancel execution exception into UncaughtExceptionHandler. For testing purposes only.", + "category": "INTERNAL", + "stability": "EXPERIMENTAL", + "deprecated": false, + "deprecationMessage": "", + "usageSyntax": "" +}, +{ + "key": { + "type": { + "name": "Boolean", + "converter": {}, + "validator": {}, + "isOptionMap": false, + "isDefaultType": true + }, + "defaultValue": false + }, + "name": "engine.UseConservativeContextReferences", + "help": "Enables conservative context references. This allows invalid sharing between contexts. For testing purposes only.", + "category": "INTERNAL", + "stability": "EXPERIMENTAL", + "deprecated": true, + "deprecationMessage": "Has no longer any effect. Scheduled for removal in in 22.1.", + "usageSyntax": "" +}, +{ + "key": { + "type": { + "name": "Boolean", + "converter": {}, + "validator": {}, + "isOptionMap": false, + "isDefaultType": true + }, + "defaultValue": true + }, + "name": "engine.UsePreInitializedContext", + "help": "Use pre-initialized context when it\u0027s available (default: true).", + "category": "INTERNAL", + "stability": "EXPERIMENTAL", + "deprecated": false, + "deprecationMessage": "", + "usageSyntax": "true|false" +}, +{ + "key": { + "type": { + "name": "Boolean", + "converter": {}, + "validator": {}, + "isOptionMap": false, + "isDefaultType": true + }, + "defaultValue": true + }, + "name": "engine.WarnInterpreterOnly", + "help": "Print warning when the engine is using a default Truffle runtime (default: true).", + "category": "USER", + "stability": "STABLE", + "deprecated": false, + "deprecationMessage": "", + "usageSyntax": "true|false" +}, +{ + "key": { + "type": { + "name": "Boolean", + "converter": {}, + "validator": {}, + "isOptionMap": false, + "isDefaultType": true + }, + "defaultValue": true + }, + "name": "js.agent-can-block", + "help": "Determines whether agents can block or not. (default:true)", + "category": "INTERNAL", + "stability": "EXPERIMENTAL", + "deprecated": false, + "deprecationMessage": "", + "usageSyntax": "true|false" +}, +{ + "key": { + "type": { + "name": "Boolean", + "converter": {}, + "validator": {}, + "isOptionMap": false, + "isDefaultType": true + }, + "defaultValue": true + }, + "name": "js.annex-b", + "help": "Enable ECMAScript Annex B features. (default:true)", + "category": "USER", + "stability": "EXPERIMENTAL", + "deprecated": false, + "deprecationMessage": "", + "usageSyntax": "true|false" +}, +{ + "key": { + "type": { + "name": "Boolean", + "converter": {}, + "validator": {}, + "isOptionMap": false, + "isDefaultType": true + }, + "defaultValue": true + }, + "name": "js.async-stack-traces", + "help": "Include async function frames in stack traces. (default:true)", + "category": "EXPERT", + "stability": "EXPERIMENTAL", + "deprecated": false, + "deprecationMessage": "", + "usageSyntax": "true|false" +}, +{ + "key": { + "type": { + "name": "Boolean", + "converter": {}, + "validator": {}, + "isOptionMap": false, + "isDefaultType": true + }, + "defaultValue": true + }, + "name": "js.atomics", + "help": "Enable ECMAScript Atomics. (default:true)", + "category": "USER", + "stability": "EXPERIMENTAL", + "deprecated": false, + "deprecationMessage": "", + "usageSyntax": "true|false" +}, +{ + "key": { + "type": { + "name": "Boolean", + "converter": {}, + "validator": {}, + "isOptionMap": false, + "isDefaultType": true + }, + "defaultValue": true + }, + "name": "js.await-optimization", + "help": "Use PromiseResolve for Await. (default:true)", + "category": "INTERNAL", + "stability": "EXPERIMENTAL", + "deprecated": false, + "deprecationMessage": "", + "usageSyntax": "true|false" +}, +{ + "key": { + "type": { + "name": "Boolean", + "converter": {}, + "validator": {}, + "isOptionMap": false, + "isDefaultType": true + }, + "defaultValue": true + }, + "name": "js.bigint", + "help": "Provide an implementation of the BigInt proposal. (default:true)", + "category": "USER", + "stability": "EXPERIMENTAL", + "deprecated": false, + "deprecationMessage": "", + "usageSyntax": "true|false" +}, +{ + "key": { + "type": { + "name": "Boolean", + "converter": {}, + "validator": {}, + "isOptionMap": false, + "isDefaultType": true + }, + "defaultValue": true + }, + "name": "js.bind-member-functions", + "help": "Bind functions returned by Value.getMember to the receiver object. (default:true)", + "category": "EXPERT", + "stability": "EXPERIMENTAL", + "deprecated": false, + "deprecationMessage": "", + "usageSyntax": "true|false" +}, +{ + "key": { + "type": { + "name": "CharsetName", + "converter": {}, + "validator": {}, + "isOptionMap": false, + "isDefaultType": false + }, + "defaultValue": "" + }, + "name": "js.charset", + "help": "Charset used for decoding/encoding of the input/output streams. (default:)", + "category": "EXPERT", + "stability": "EXPERIMENTAL", + "deprecated": false, + "deprecationMessage": "", + "usageSyntax": "UTF-8|UTF-32|\u003cname\u003e" +}, +{ + "key": { + "type": { + "name": "Boolean", + "converter": {}, + "validator": {}, + "isOptionMap": false, + "isDefaultType": true + }, + "defaultValue": false + }, + "name": "js.class-fields", + "help": "Enable the class public and private fields proposal. (default:false)", + "category": "USER", + "stability": "EXPERIMENTAL", + "deprecated": false, + "deprecationMessage": "" +}, +{ + "key": { + "type": { + "name": "commonjs-require-globals", + "converter": {}, + "validator": {}, + "isOptionMap": false, + "isDefaultType": false + }, + "defaultValue": {} + }, + "name": "js.commonjs-core-modules-replacements", + "help": "Npm packages used to replace global Node.js builtins. (default:{})", + "category": "USER", + "stability": "EXPERIMENTAL", + "deprecated": false, + "deprecationMessage": "", + "usageSyntax": "\u003cname\u003e:\u003cmodule\u003e,..." +}, +{ + "key": { + "type": { + "name": "Boolean", + "converter": {}, + "validator": {}, + "isOptionMap": false, + "isDefaultType": true + }, + "defaultValue": false + }, + "name": "js.commonjs-require", + "help": "Enable CommonJS require emulation. (default:false)", + "category": "USER", + "stability": "EXPERIMENTAL", + "deprecated": false, + "deprecationMessage": "" +}, +{ + "key": { + "type": { + "name": "String", + "converter": {}, + "validator": {}, + "isOptionMap": false, + "isDefaultType": true + }, + "defaultValue": "" + }, + "name": "js.commonjs-require-cwd", + "help": "CommonJS default current working directory. (default:)", + "category": "USER", + "stability": "EXPERIMENTAL", + "deprecated": false, + "deprecationMessage": "", + "usageSyntax": "\u003cpath\u003e" +}, +{ + "key": { + "type": { + "name": "Boolean", + "converter": {}, + "validator": {}, + "isOptionMap": false, + "isDefaultType": true + }, + "defaultValue": true + }, + "name": "js.console", + "help": "Provide \u0027console\u0027 global property. (default:true)", + "category": "USER", + "stability": "EXPERIMENTAL", + "deprecated": false, + "deprecationMessage": "", + "usageSyntax": "true|false" +}, +{ + "key": { + "type": { + "name": "Boolean", + "converter": {}, + "validator": {}, + "isOptionMap": false, + "isDefaultType": true + }, + "defaultValue": false + }, + "name": "js.const-as-var", + "help": "Parse const declarations as a var (legacy compatibility option). (default:false)", + "category": "EXPERT", + "stability": "EXPERIMENTAL", + "deprecated": false, + "deprecationMessage": "" +}, +{ + "key": { + "type": { + "name": "Boolean", + "converter": {}, + "validator": {}, + "isOptionMap": false, + "isDefaultType": true + }, + "defaultValue": false + }, + "name": "js.debug-builtin", + "help": "Provide a non-API Debug builtin. Behaviour will likely change. Don\u0027t depend on this in production code. (default:false)", + "category": "INTERNAL", + "stability": "EXPERIMENTAL", + "deprecated": false, + "deprecationMessage": "" +}, +{ + "key": { + "type": { + "name": "String", + "converter": {}, + "validator": {}, + "isOptionMap": false, + "isDefaultType": true + }, + "defaultValue": "Debug" + }, + "name": "js.debug-property-name", + "help": "The name used for the Graal.js debug builtin. (default:Debug)", + "category": "EXPERT", + "stability": "EXPERIMENTAL", + "deprecated": false, + "deprecationMessage": "", + "usageSyntax": "\u003cname\u003e" +}, +{ + "key": { + "type": { + "name": "Boolean", + "converter": {}, + "validator": {}, + "isOptionMap": false, + "isDefaultType": true + }, + "defaultValue": false + }, + "name": "js.direct-byte-buffer", + "help": "Use direct (off-heap) byte buffer for typed arrays. (default:false)", + "category": "USER", + "stability": "EXPERIMENTAL", + "deprecated": false, + "deprecationMessage": "" +}, +{ + "key": { + "type": { + "name": "Boolean", + "converter": {}, + "validator": {}, + "isOptionMap": false, + "isDefaultType": true + }, + "defaultValue": false + }, + "name": "js.disable-eval", + "help": "User code is not allowed to parse code via e.g. eval(). (default:false)", + "category": "EXPERT", + "stability": "EXPERIMENTAL", + "deprecated": false, + "deprecationMessage": "" +}, +{ + "key": { + "type": { + "name": "Boolean", + "converter": {}, + "validator": {}, + "isOptionMap": false, + "isDefaultType": true + }, + "defaultValue": false + }, + "name": "js.disable-with", + "help": "User code is not allowed to use the \u0027with\u0027 statement. (default:false)", + "category": "EXPERT", + "stability": "EXPERIMENTAL", + "deprecated": false, + "deprecationMessage": "" +}, +{ + "key": { + "type": { + "name": "ecmascript-version", + "converter": {}, + "validator": {}, + "isOptionMap": false, + "isDefaultType": false + }, + "defaultValue": 13 + }, + "name": "js.ecmascript-version", + "help": "ECMAScript version to be compatible with. Default is \u0027latest\u0027 (latest supported version), staged features are in \u0027staging\u0027. (default:13)", + "category": "USER", + "stability": "STABLE", + "deprecated": false, + "deprecationMessage": "", + "usageSyntax": "latest|staging|[5, 13]|[2015, 2022]" +}, +{ + "key": { + "type": { + "name": "Boolean", + "converter": {}, + "validator": {}, + "isOptionMap": false, + "isDefaultType": true + }, + "defaultValue": false + }, + "name": "js.error-cause", + "help": "Enable the error cause proposal. Allows an error to be chained with a cause using the optional options parameter. (default:false)", + "category": "EXPERT", + "stability": "EXPERIMENTAL", + "deprecated": false, + "deprecationMessage": "" +}, +{ + "key": { + "type": { + "name": "Boolean", + "converter": {}, + "validator": {}, + "isOptionMap": false, + "isDefaultType": true + }, + "defaultValue": false + }, + "name": "js.esm-bare-specifier-relative-lookup", + "help": "Resolve ESM bare specifiers relative to the importing module\u0027s path instead of attempting an absolute path lookup. (default:false)", + "category": "EXPERT", + "stability": "EXPERIMENTAL", + "deprecated": false, + "deprecationMessage": "" +}, +{ + "key": { + "type": { + "name": "Boolean", + "converter": {}, + "validator": {}, + "isOptionMap": false, + "isDefaultType": true + }, + "defaultValue": false + }, + "name": "js.esm-eval-returns-exports", + "help": "Eval of an ES module through the polyglot API returns its exported symbols. (default:false)", + "category": "EXPERT", + "stability": "EXPERIMENTAL", + "deprecated": false, + "deprecationMessage": "" +}, +{ + "key": { + "type": { + "name": "Boolean", + "converter": {}, + "validator": {}, + "isOptionMap": false, + "isDefaultType": true + }, + "defaultValue": true + }, + "name": "js.foreign-hash-properties", + "help": "Allow getting/setting non-JS hash entries using the `[]` and `.` operators. (default:true)", + "category": "EXPERT", + "stability": "EXPERIMENTAL", + "deprecated": false, + "deprecationMessage": "", + "usageSyntax": "true|false" +}, +{ + "key": { + "type": { + "name": "Boolean", + "converter": {}, + "validator": {}, + "isOptionMap": false, + "isDefaultType": true + }, + "defaultValue": true + }, + "name": "js.foreign-object-prototype", + "help": "Non-JS objects have prototype (Object/Function/Array.prototype) set. (default:true)", + "category": "EXPERT", + "stability": "STABLE", + "deprecated": false, + "deprecationMessage": "", + "usageSyntax": "true|false" +}, +{ + "key": { + "type": { + "name": "Long", + "converter": {}, + "validator": {}, + "isOptionMap": false, + "isDefaultType": true + }, + "defaultValue": 65535 + }, + "name": "js.function-arguments-limit", + "help": "Maximum number of arguments for functions. (default:65535)", + "category": "EXPERT", + "stability": "EXPERIMENTAL", + "deprecated": false, + "deprecationMessage": "", + "usageSyntax": "\u003cint\u003e" +}, +{ + "key": { + "type": { + "name": "Integer", + "converter": {}, + "validator": {}, + "isOptionMap": false, + "isDefaultType": true + }, + "defaultValue": 4 + }, + "name": "js.function-cache-limit", + "help": "Maximum allowed size of a function cache. (default:4)", + "category": "INTERNAL", + "stability": "EXPERIMENTAL", + "deprecated": false, + "deprecationMessage": "", + "usageSyntax": "\u003cint\u003e" +}, +{ + "key": { + "type": { + "name": "Integer", + "converter": {}, + "validator": {}, + "isOptionMap": false, + "isDefaultType": true + }, + "defaultValue": 256 + }, + "name": "js.function-constructor-cache-size", + "help": "Maximum size of the parsing cache used by the Function constructor to avoid re-parsing known sources. (default:256)", + "category": "EXPERT", + "stability": "EXPERIMENTAL", + "deprecated": false, + "deprecationMessage": "", + "usageSyntax": "\u003cint\u003e" +}, +{ + "key": { + "type": { + "name": "Boolean", + "converter": {}, + "validator": {}, + "isOptionMap": false, + "isDefaultType": true + }, + "defaultValue": false + }, + "name": "js.function-statement-error", + "help": "Treat hoistable function statements in blocks as an error (in ES5 mode). (default:false)", + "category": "EXPERT", + "stability": "EXPERIMENTAL", + "deprecated": false, + "deprecationMessage": "" +}, +{ + "key": { + "type": { + "name": "Boolean", + "converter": {}, + "validator": {}, + "isOptionMap": false, + "isDefaultType": true + }, + "defaultValue": true + }, + "name": "js.global-arguments", + "help": "Provide \u0027arguments\u0027 global property. (default:true)", + "category": "USER", + "stability": "EXPERIMENTAL", + "deprecated": false, + "deprecationMessage": "", + "usageSyntax": "true|false" +}, +{ + "key": { + "type": { + "name": "Boolean", + "converter": {}, + "validator": {}, + "isOptionMap": false, + "isDefaultType": true + }, + "defaultValue": false + }, + "name": "js.global-property", + "help": "Provide \u0027global\u0027 global property. (default:false)", + "category": "USER", + "stability": "EXPERIMENTAL", + "deprecated": false, + "deprecationMessage": "" +}, +{ + "key": { + "type": { + "name": "Boolean", + "converter": {}, + "validator": {}, + "isOptionMap": false, + "isDefaultType": true + }, + "defaultValue": true + }, + "name": "js.graal-builtin", + "help": "Provide \u0027Graal\u0027 global property. (default:true)", + "category": "USER", + "stability": "EXPERIMENTAL", + "deprecated": false, + "deprecationMessage": "", + "usageSyntax": "true|false" +}, +{ + "key": { + "type": { + "name": "Boolean", + "converter": {}, + "validator": {}, + "isOptionMap": false, + "isDefaultType": true + }, + "defaultValue": false + }, + "name": "js.import-assertions", + "help": "Enable import assertions (default:false)", + "category": "USER", + "stability": "EXPERIMENTAL", + "deprecated": false, + "deprecationMessage": "" +}, +{ + "key": { + "type": { + "name": "Boolean", + "converter": {}, + "validator": {}, + "isOptionMap": false, + "isDefaultType": true + }, + "defaultValue": false + }, + "name": "js.interop-complete-promises", + "help": "Resolve promises when crossing a polyglot language boundary. (default:false)", + "category": "EXPERT", + "stability": "EXPERIMENTAL", + "deprecated": false, + "deprecationMessage": "" +}, +{ + "key": { + "type": { + "name": "Boolean", + "converter": {}, + "validator": {}, + "isOptionMap": false, + "isDefaultType": true + }, + "defaultValue": true + }, + "name": "js.intl-402", + "help": "Enable ECMAScript Internationalization API. (default:true)", + "category": "USER", + "stability": "STABLE", + "deprecated": false, + "deprecationMessage": "", + "usageSyntax": "true|false" +}, +{ + "key": { + "type": { + "name": "Boolean", + "converter": {}, + "validator": {}, + "isOptionMap": false, + "isDefaultType": true + }, + "defaultValue": true + }, + "name": "js.java-package-globals", + "help": "Provide Java package globals: Packages, java, javafx, javax, com, org, edu. (default:true)", + "category": "USER", + "stability": "EXPERIMENTAL", + "deprecated": false, + "deprecationMessage": "", + "usageSyntax": "true|false" +}, +{ + "key": { + "type": { + "name": "Boolean", + "converter": {}, + "validator": {}, + "isOptionMap": false, + "isDefaultType": true + }, + "defaultValue": false + }, + "name": "js.json-modules", + "help": "Enable loading of json modules (default:false)", + "category": "USER", + "stability": "EXPERIMENTAL", + "deprecated": false, + "deprecationMessage": "" +}, +{ + "key": { + "type": { + "name": "Boolean", + "converter": {}, + "validator": {}, + "isOptionMap": false, + "isDefaultType": true + }, + "defaultValue": false + }, + "name": "js.lazy-translation", + "help": "Translate function bodies lazily. (default:false)", + "category": "INTERNAL", + "stability": "EXPERIMENTAL", + "deprecated": false, + "deprecationMessage": "" +}, +{ + "key": { + "type": { + "name": "Boolean", + "converter": {}, + "validator": {}, + "isOptionMap": false, + "isDefaultType": true + }, + "defaultValue": true + }, + "name": "js.load", + "help": "Provide \u0027load\u0027 global function. (default:true)", + "category": "USER", + "stability": "EXPERIMENTAL", + "deprecated": false, + "deprecationMessage": "", + "usageSyntax": "true|false" +}, +{ + "key": { + "type": { + "name": "Boolean", + "converter": {}, + "validator": {}, + "isOptionMap": false, + "isDefaultType": true + }, + "defaultValue": false + }, + "name": "js.load-from-classpath", + "help": "Allow \u0027load\u0027 to access \u0027classpath:\u0027 URLs. Do not use with untrusted code. (default:false)", + "category": "USER", + "stability": "EXPERIMENTAL", + "deprecated": false, + "deprecationMessage": "" +}, +{ + "key": { + "type": { + "name": "Boolean", + "converter": {}, + "validator": {}, + "isOptionMap": false, + "isDefaultType": true + }, + "defaultValue": false + }, + "name": "js.load-from-url", + "help": "Allow \u0027load\u0027 to access URLs. Do not use with untrusted code. (default:false)", + "category": "USER", + "stability": "EXPERIMENTAL", + "deprecated": false, + "deprecationMessage": "" +}, +{ + "key": { + "type": { + "name": "String", + "converter": {}, + "validator": {}, + "isOptionMap": false, + "isDefaultType": true + }, + "defaultValue": "" + }, + "name": "js.locale", + "help": "Use a specific default locale for locale-sensitive operations. (default:)", + "category": "EXPERT", + "stability": "EXPERIMENTAL", + "deprecated": false, + "deprecationMessage": "", + "usageSyntax": "\u003clocale\u003e" +}, +{ + "key": { + "type": { + "name": "Integer", + "converter": {}, + "validator": {}, + "isOptionMap": false, + "isDefaultType": true + }, + "defaultValue": 10000000 + }, + "name": "js.max-apply-argument-length", + "help": "Maximum allowed number of arguments allowed in an apply function. (default:10000000)", + "category": "EXPERT", + "stability": "EXPERIMENTAL", + "deprecated": false, + "deprecationMessage": "", + "usageSyntax": "\u003cint\u003e" +}, +{ + "key": { + "type": { + "name": "Integer", + "converter": {}, + "validator": {}, + "isOptionMap": false, + "isDefaultType": true + }, + "defaultValue": 32766 + }, + "name": "js.max-prototype-chain-length", + "help": "Maximum allowed length of a prototype chain. (default:32766)", + "category": "EXPERT", + "stability": "EXPERIMENTAL", + "deprecated": false, + "deprecationMessage": "", + "usageSyntax": "\u003cint\u003e" +}, +{ + "key": { + "type": { + "name": "Integer", + "converter": {}, + "validator": {}, + "isOptionMap": false, + "isDefaultType": true + }, + "defaultValue": 1073741823 + }, + "name": "js.max-typed-array-length", + "help": "Maximum allowed length for TypedArrays. (default:1073741823)", + "category": "EXPERT", + "stability": "EXPERIMENTAL", + "deprecated": false, + "deprecationMessage": "", + "usageSyntax": "\u003cint\u003e" +}, +{ + "key": { + "type": { + "name": "Boolean", + "converter": {}, + "validator": {}, + "isOptionMap": false, + "isDefaultType": true + }, + "defaultValue": false + }, + "name": "js.mle-mode", + "help": "Provide a non-API MLE builtin. Behaviour will likely change. Don\u0027t depend on this in production code. (default:false)", + "category": "INTERNAL", + "stability": "EXPERIMENTAL", + "deprecated": false, + "deprecationMessage": "" +}, +{ + "key": { + "type": { + "name": "Boolean", + "converter": {}, + "validator": {}, + "isOptionMap": false, + "isDefaultType": true + }, + "defaultValue": false + }, + "name": "js.nashorn-compat", + "help": "Provide compatibility with the OpenJDK Nashorn engine. Do not use with untrusted code. (default:false)", + "category": "USER", + "stability": "EXPERIMENTAL", + "deprecated": false, + "deprecationMessage": "" +}, +{ + "key": { + "type": { + "name": "Boolean", + "converter": {}, + "validator": {}, + "isOptionMap": false, + "isDefaultType": true + }, + "defaultValue": false + }, + "name": "js.new-set-methods", + "help": "Enable new Set methods. (default:false)", + "category": "EXPERT", + "stability": "EXPERIMENTAL", + "deprecated": false, + "deprecationMessage": "" +}, +{ + "key": { + "type": { + "name": "Boolean", + "converter": {}, + "validator": {}, + "isOptionMap": false, + "isDefaultType": true + }, + "defaultValue": false + }, + "name": "js.operator-overloading", + "help": "Enable operator overloading (default:false)", + "category": "USER", + "stability": "EXPERIMENTAL", + "deprecated": false, + "deprecationMessage": "" +}, +{ + "key": { + "type": { + "name": "Boolean", + "converter": {}, + "validator": {}, + "isOptionMap": false, + "isDefaultType": true + }, + "defaultValue": false + }, + "name": "js.parse-only", + "help": "Only parse source code, do not run it. (default:false)", + "category": "INTERNAL", + "stability": "EXPERIMENTAL", + "deprecated": false, + "deprecationMessage": "" +}, +{ + "key": { + "type": { + "name": "Boolean", + "converter": {}, + "validator": {}, + "isOptionMap": false, + "isDefaultType": true + }, + "defaultValue": false + }, + "name": "js.performance", + "help": "Provide \u0027performance\u0027 global property. (default:false)", + "category": "USER", + "stability": "EXPERIMENTAL", + "deprecated": false, + "deprecationMessage": "" +}, +{ + "key": { + "type": { + "name": "Boolean", + "converter": {}, + "validator": {}, + "isOptionMap": false, + "isDefaultType": true + }, + "defaultValue": true + }, + "name": "js.polyglot-builtin", + "help": "Provide \u0027Polyglot\u0027 global property. (default:true)", + "category": "USER", + "stability": "EXPERIMENTAL", + "deprecated": false, + "deprecationMessage": "", + "usageSyntax": "true|false" +}, +{ + "key": { + "type": { + "name": "Boolean", + "converter": {}, + "validator": {}, + "isOptionMap": false, + "isDefaultType": true + }, + "defaultValue": true + }, + "name": "js.polyglot-evalfile", + "help": "Provide \u0027Polyglot.evalFile\u0027 function. (default:true)", + "category": "USER", + "stability": "EXPERIMENTAL", + "deprecated": false, + "deprecationMessage": "", + "usageSyntax": "true|false" +}, +{ + "key": { + "type": { + "name": "Boolean", + "converter": {}, + "validator": {}, + "isOptionMap": false, + "isDefaultType": true + }, + "defaultValue": true + }, + "name": "js.print", + "help": "Provide \u0027print\u0027 global function. (default:true)", + "category": "USER", + "stability": "EXPERIMENTAL", + "deprecated": false, + "deprecationMessage": "", + "usageSyntax": "true|false" +}, +{ + "key": { + "type": { + "name": "Boolean", + "converter": {}, + "validator": {}, + "isOptionMap": false, + "isDefaultType": true + }, + "defaultValue": false + }, + "name": "js.print-no-newline", + "help": "Print function will not print new line char. (default:false)", + "category": "USER", + "stability": "EXPERIMENTAL", + "deprecated": false, + "deprecationMessage": "" +}, +{ + "key": { + "type": { + "name": "Boolean", + "converter": {}, + "validator": {}, + "isOptionMap": false, + "isDefaultType": true + }, + "defaultValue": false + }, + "name": "js.private-fields-in", + "help": "Enable private field in in operator (default:false)", + "category": "USER", + "stability": "EXPERIMENTAL", + "deprecated": false, + "deprecationMessage": "" +}, +{ + "key": { + "type": { + "name": "Boolean", + "converter": {}, + "validator": {}, + "isOptionMap": false, + "isDefaultType": true + }, + "defaultValue": false + }, + "name": "js.profile-time", + "help": "Enable time profiling. (default:false)", + "category": "INTERNAL", + "stability": "EXPERIMENTAL", + "deprecated": false, + "deprecationMessage": "" +}, +{ + "key": { + "type": { + "name": "Boolean", + "converter": {}, + "validator": {}, + "isOptionMap": false, + "isDefaultType": true + }, + "defaultValue": false + }, + "name": "js.profile-time-print-cumulative", + "help": "Print cumulative time when time profiling is enabled. (default:false)", + "category": "INTERNAL", + "stability": "EXPERIMENTAL", + "deprecated": false, + "deprecationMessage": "" +}, +{ + "key": { + "type": { + "name": "Integer", + "converter": {}, + "validator": {}, + "isOptionMap": false, + "isDefaultType": true + }, + "defaultValue": 5 + }, + "name": "js.property-cache-limit", + "help": "Maximum allowed size of a property cache. (default:5)", + "category": "INTERNAL", + "stability": "EXPERIMENTAL", + "deprecated": false, + "deprecationMessage": "", + "usageSyntax": "\u003cint\u003e" +}, +{ + "key": { + "type": { + "name": "Integer", + "converter": {}, + "validator": {}, + "isOptionMap": false, + "isDefaultType": true + }, + "defaultValue": 128 + }, + "name": "js.regex-cache-size", + "help": "Maximum size of the regex cache used by the RegExp constructor to avoid re-parsing known sources. (default:128)", + "category": "EXPERT", + "stability": "EXPERIMENTAL", + "deprecated": false, + "deprecationMessage": "", + "usageSyntax": "\u003cint\u003e" +}, +{ + "key": { + "type": { + "name": "Boolean", + "converter": {}, + "validator": {}, + "isOptionMap": false, + "isDefaultType": true + }, + "defaultValue": false + }, + "name": "js.regex-regression-test-mode", + "help": "Test mode for TRegex. (default:false)", + "category": "INTERNAL", + "stability": "EXPERIMENTAL", + "deprecated": false, + "deprecationMessage": "" +}, +{ + "key": { + "type": { + "name": "Boolean", + "converter": {}, + "validator": {}, + "isOptionMap": false, + "isDefaultType": true + }, + "defaultValue": false + }, + "name": "js.regex.always-eager", + "help": "Always match capture groups eagerly. (default:false)", + "category": "INTERNAL", + "stability": "EXPERIMENTAL", + "deprecated": false, + "deprecationMessage": "" +}, +{ + "key": { + "type": { + "name": "Boolean", + "converter": {}, + "validator": {}, + "isOptionMap": false, + "isDefaultType": true + }, + "defaultValue": false + }, + "name": "js.regex.dump-automata", + "help": "Produce ASTs and automata in JSON, DOT (GraphViz) and LaTeX formats. (default:false)", + "category": "INTERNAL", + "stability": "EXPERIMENTAL", + "deprecated": false, + "deprecationMessage": "" +}, +{ + "key": { + "type": { + "name": "Boolean", + "converter": {}, + "validator": {}, + "isOptionMap": false, + "isDefaultType": true + }, + "defaultValue": false + }, + "name": "js.regex.step-execution", + "help": "Trace the execution of automata in JSON files. (default:false)", + "category": "INTERNAL", + "stability": "EXPERIMENTAL", + "deprecated": false, + "deprecationMessage": "" +}, +{ + "key": { + "type": { + "name": "Boolean", + "converter": {}, + "validator": {}, + "isOptionMap": false, + "isDefaultType": true + }, + "defaultValue": false + }, + "name": "js.regexp-match-indices", + "help": "Enable RegExp Match Indices property. (default:false)", + "category": "USER", + "stability": "EXPERIMENTAL", + "deprecated": false, + "deprecationMessage": "" +}, +{ + "key": { + "type": { + "name": "Boolean", + "converter": {}, + "validator": {}, + "isOptionMap": false, + "isDefaultType": true + }, + "defaultValue": true + }, + "name": "js.regexp-static-result", + "help": "Provide last RegExp match in RegExp global var, e.g. RegExp.$1. (default:true)", + "category": "USER", + "stability": "EXPERIMENTAL", + "deprecated": false, + "deprecationMessage": "", + "usageSyntax": "true|false" +}, +{ + "key": { + "type": { + "name": "Boolean", + "converter": {}, + "validator": {}, + "isOptionMap": false, + "isDefaultType": true + }, + "defaultValue": true + }, + "name": "js.scope-optimization", + "help": "Allow scope optimizations around closures. (default:true)", + "category": "INTERNAL", + "stability": "EXPERIMENTAL", + "deprecated": false, + "deprecationMessage": "", + "usageSyntax": "true|false" +}, +{ + "key": { + "type": { + "name": "Boolean", + "converter": {}, + "validator": {}, + "isOptionMap": false, + "isDefaultType": true + }, + "defaultValue": false + }, + "name": "js.script-engine-global-scope-import", + "help": "Enable ScriptEngine-specific global scope import function. (default:false)", + "category": "INTERNAL", + "stability": "STABLE", + "deprecated": false, + "deprecationMessage": "" +}, +{ + "key": { + "type": { + "name": "Boolean", + "converter": {}, + "validator": {}, + "isOptionMap": false, + "isDefaultType": true + }, + "defaultValue": false + }, + "name": "js.scripting", + "help": "Enable scripting features (Nashorn compatibility option). (default:false)", + "category": "USER", + "stability": "EXPERIMENTAL", + "deprecated": false, + "deprecationMessage": "" +}, +{ + "key": { + "type": { + "name": "Boolean", + "converter": {}, + "validator": {}, + "isOptionMap": false, + "isDefaultType": true + }, + "defaultValue": true + }, + "name": "js.shared-array-buffer", + "help": "Enable ECMAScript SharedArrayBuffer. (default:true)", + "category": "USER", + "stability": "EXPERIMENTAL", + "deprecated": false, + "deprecationMessage": "", + "usageSyntax": "true|false" +}, +{ + "key": { + "type": { + "name": "Boolean", + "converter": {}, + "validator": {}, + "isOptionMap": false, + "isDefaultType": true + }, + "defaultValue": false + }, + "name": "js.shebang", + "help": "Allow parsing files starting with #!. (default:false)", + "category": "USER", + "stability": "EXPERIMENTAL", + "deprecated": false, + "deprecationMessage": "" +}, +{ + "key": { + "type": { + "name": "Boolean", + "converter": {}, + "validator": {}, + "isOptionMap": false, + "isDefaultType": true + }, + "defaultValue": false + }, + "name": "js.shell", + "help": "Provide global functions for js shell. (default:false)", + "category": "USER", + "stability": "EXPERIMENTAL", + "deprecated": false, + "deprecationMessage": "" +}, +{ + "key": { + "type": { + "name": "Integer", + "converter": {}, + "validator": {}, + "isOptionMap": false, + "isDefaultType": true + }, + "defaultValue": 10 + }, + "name": "js.stack-trace-limit", + "help": "Number of stack frames to capture. (default:10)", + "category": "USER", + "stability": "EXPERIMENTAL", + "deprecated": false, + "deprecationMessage": "", + "usageSyntax": "[0, inf)" +}, +{ + "key": { + "type": { + "name": "Boolean", + "converter": {}, + "validator": {}, + "isOptionMap": false, + "isDefaultType": true + }, + "defaultValue": false + }, + "name": "js.strict", + "help": "Enforce strict mode. (default:false)", + "category": "USER", + "stability": "STABLE", + "deprecated": false, + "deprecationMessage": "" +}, +{ + "key": { + "type": { + "name": "Boolean", + "converter": {}, + "validator": {}, + "isOptionMap": false, + "isDefaultType": true + }, + "defaultValue": true + }, + "name": "js.string-lazy-substrings", + "help": "Allow lazy substrings. (default:true)", + "category": "EXPERT", + "stability": "EXPERIMENTAL", + "deprecated": false, + "deprecationMessage": "", + "usageSyntax": "true|false" +}, +{ + "key": { + "type": { + "name": "Integer", + "converter": {}, + "validator": {}, + "isOptionMap": false, + "isDefaultType": true + }, + "defaultValue": 1073741799 + }, + "name": "js.string-length-limit", + "help": "Maximum string length. (default:1073741799)", + "category": "EXPERT", + "stability": "EXPERIMENTAL", + "deprecated": false, + "deprecationMessage": "", + "usageSyntax": "\u003cchars\u003e" +}, +{ + "key": { + "type": { + "name": "Boolean", + "converter": {}, + "validator": {}, + "isOptionMap": false, + "isDefaultType": true + }, + "defaultValue": false + }, + "name": "js.syntax-extensions", + "help": "Enable Nashorn syntax extensions. (default:false)", + "category": "USER", + "stability": "EXPERIMENTAL", + "deprecated": false, + "deprecationMessage": "" +}, +{ + "key": { + "type": { + "name": "Boolean", + "converter": {}, + "validator": {}, + "isOptionMap": false, + "isDefaultType": true + }, + "defaultValue": false + }, + "name": "js.temporal", + "help": "Enable JavaScript Temporal API. (default:false)", + "category": "EXPERT", + "stability": "EXPERIMENTAL", + "deprecated": false, + "deprecationMessage": "" +}, +{ + "key": { + "type": { + "name": "Boolean", + "converter": {}, + "validator": {}, + "isOptionMap": false, + "isDefaultType": true + }, + "defaultValue": false + }, + "name": "js.test-clone-uninitialized", + "help": "Test uninitialized cloning. (default:false)", + "category": "INTERNAL", + "stability": "EXPERIMENTAL", + "deprecated": false, + "deprecationMessage": "" +}, +{ + "key": { + "type": { + "name": "Boolean", + "converter": {}, + "validator": {}, + "isOptionMap": false, + "isDefaultType": true + }, + "defaultValue": false + }, + "name": "js.test262-mode", + "help": "Expose global property $262 needed to run the Test262 harness. (default:false)", + "category": "INTERNAL", + "stability": "EXPERIMENTAL", + "deprecated": false, + "deprecationMessage": "" +}, +{ + "key": { + "type": { + "name": "Boolean", + "converter": {}, + "validator": {}, + "isOptionMap": false, + "isDefaultType": true + }, + "defaultValue": false + }, + "name": "js.testV8-mode", + "help": "Expose internals needed to run the TestV8 harness. (default:false)", + "category": "INTERNAL", + "stability": "EXPERIMENTAL", + "deprecated": false, + "deprecationMessage": "" +}, +{ + "key": { + "type": { + "name": "Long", + "converter": {}, + "validator": {}, + "isOptionMap": false, + "isDefaultType": true + }, + "defaultValue": 1000000 + }, + "name": "js.timer-resolution", + "help": "Resolution of timers (performance.now() and Date built-ins) in nanoseconds. Fuzzy time is used when set to 0. (default:1000000)", + "category": "USER", + "stability": "EXPERIMENTAL", + "deprecated": false, + "deprecationMessage": "", + "usageSyntax": "\u003cnanoseconds\u003e" +}, +{ + "key": { + "type": { + "name": "ZoneId", + "converter": {}, + "validator": {}, + "isOptionMap": false, + "isDefaultType": false + }, + "defaultValue": "" + }, + "name": "js.timezone", + "help": "Set custom time zone ID. (default:)", + "category": "USER", + "stability": "EXPERIMENTAL", + "deprecated": false, + "deprecationMessage": "", + "usageSyntax": "\u003cTimeZoneID\u003e" +}, +{ + "key": { + "type": { + "name": "Boolean", + "converter": {}, + "validator": {}, + "isOptionMap": false, + "isDefaultType": true + }, + "defaultValue": false + }, + "name": "js.top-level-await", + "help": "Enable top-level-await. (default:false)", + "category": "EXPERT", + "stability": "EXPERIMENTAL", + "deprecated": false, + "deprecationMessage": "" +}, +{ + "key": { + "type": { + "name": "UnhandledRejectionsTrackingMode", + "converter": {}, + "validator": {}, + "isOptionMap": false, + "isDefaultType": true + }, + "defaultValue": "NONE" + }, + "name": "js.unhandled-rejections", + "help": "Configure unhandled promise rejections tracking. Accepted values: \u0027none\u0027, unhandled rejections are not tracked. \u0027warn\u0027, a warning is printed to stderr when an unhandled rejection is detected. \u0027throw\u0027, an exception is thrown when an unhandled rejection is detected. \u0027handler\u0027, the handler function set with Graal.setUnhandledPromiseRejectionHandler will be called with the rejection value and promise respectively as arguments. (default:none)", + "category": "USER", + "stability": "EXPERIMENTAL", + "deprecated": false, + "deprecationMessage": "", + "usageSyntax": "none|warn|throw|handler" +}, +{ + "key": { + "type": { + "name": "Boolean", + "converter": {}, + "validator": {}, + "isOptionMap": false, + "isDefaultType": true + }, + "defaultValue": true + }, + "name": "js.use-utc-for-legacy-dates", + "help": "Determines what time zone (UTC or local time zone) should be used when UTC offset is absent in a parsed date. (default:true)", + "category": "EXPERT", + "stability": "STABLE", + "deprecated": false, + "deprecationMessage": "", + "usageSyntax": "true|false" +}, +{ + "key": { + "type": { + "name": "Boolean", + "converter": {}, + "validator": {}, + "isOptionMap": false, + "isDefaultType": true + }, + "defaultValue": false + }, + "name": "js.v8-compat", + "help": "Provide compatibility with the Google V8 engine. (default:false)", + "category": "USER", + "stability": "EXPERIMENTAL", + "deprecated": false, + "deprecationMessage": "" +}, +{ + "key": { + "type": { + "name": "Boolean", + "converter": {}, + "validator": {}, + "isOptionMap": false, + "isDefaultType": true + }, + "defaultValue": false + }, + "name": "js.v8-legacy-const", + "help": "Emulate v8 behavior when trying to mutate const variables in non-strict mode. (default:false)", + "category": "INTERNAL", + "stability": "EXPERIMENTAL", + "deprecated": false, + "deprecationMessage": "" +}, +{ + "key": { + "type": { + "name": "Boolean", + "converter": {}, + "validator": {}, + "isOptionMap": false, + "isDefaultType": true + }, + "defaultValue": false + }, + "name": "js.v8-realm-builtin", + "help": "Provide Realm builtin compatible with V8\u0027s d8 shell. (default:false)", + "category": "INTERNAL", + "stability": "EXPERIMENTAL", + "deprecated": false, + "deprecationMessage": "" +}, +{ + "key": { + "type": { + "name": "Boolean", + "converter": {}, + "validator": {}, + "isOptionMap": false, + "isDefaultType": true + }, + "defaultValue": true + }, + "name": "js.validate-regexp-literals", + "help": "Validate regexp literals at parse time. (default:true)", + "category": "INTERNAL", + "stability": "EXPERIMENTAL", + "deprecated": false, + "deprecationMessage": "", + "usageSyntax": "true|false" +}, +{ + "key": { + "type": { + "name": "Boolean", + "converter": {}, + "validator": {}, + "isOptionMap": false, + "isDefaultType": true + }, + "defaultValue": true + }, + "name": "js.wasm-bigint", + "help": "Enable wasm i64 to javascript BigInt support (default:true)", + "category": "USER", + "stability": "EXPERIMENTAL", + "deprecated": false, + "deprecationMessage": "", + "usageSyntax": "true|false" +}, +{ + "key": { + "type": { + "name": "Boolean", + "converter": {}, + "validator": {}, + "isOptionMap": false, + "isDefaultType": true + }, + "defaultValue": false + }, + "name": "js.webassembly", + "help": "Enable WebAssembly JavaScript API. (default:false)", + "category": "EXPERT", + "stability": "EXPERIMENTAL", + "deprecated": false, + "deprecationMessage": "" +}, +{ + "key": { + "type": { + "name": "Boolean", + "converter": {}, + "validator": {}, + "isOptionMap": false, + "isDefaultType": true + }, + "defaultValue": false + }, + "name": "js.zone-rules-based-time-zones", + "help": "Use ZoneRulesProvider instead of time-zone data from ICU4J. (default:false)", + "category": "EXPERT", + "stability": "EXPERIMENTAL", + "deprecated": false, + "deprecationMessage": "" +}, +{ + "key": { + "type": { + "name": "Enable", + "converter": {}, + "validator": {}, + "isOptionMap": false, + "isDefaultType": false + }, + "defaultValue": { + "enabled": false + } + }, + "name": "cpusampler", + "help": "Enable/Disable the CPU sampler, or enable with specific Output - as specified by the Output option (default: false). Choosing an output with this options defaults to printing the output to std out, except for the flamegraph which is printed to a flamegraph.svg file.", + "category": "USER", + "stability": "STABLE", + "deprecated": false, + "deprecationMessage": "", + "usageSyntax": "true|false|\u003cOutput\u003e" +}, +{ + "key": { + "type": { + "name": "Long", + "converter": {}, + "validator": {}, + "isOptionMap": false, + "isDefaultType": true + }, + "defaultValue": 0 + }, + "name": "cpusampler.Delay", + "help": "Delay the sampling for this many milliseconds (default: 0).", + "category": "USER", + "stability": "STABLE", + "deprecated": false, + "deprecationMessage": "", + "usageSyntax": "\u003cms\u003e" +} +] diff --git a/mvn-defaults/pom.xml b/mvn-defaults/pom.xml index 448830453..71d4b9e6d 100644 --- a/mvn-defaults/pom.xml +++ b/mvn-defaults/pom.xml @@ -80,9 +80,9 @@ - org.codehaus.groovy + org.apache.groovy groovy - 3.0.14 + 4.0.13 @@ -352,7 +352,7 @@ org.antlr antlr4-runtime - 4.12.0 + 4.13.0 @@ -734,6 +734,7 @@ **/generated/** + **/jmh_generated/** true Copyright (c) 2022 nosqlbench @@ -812,7 +813,7 @@ org.antlr antlr4-maven-plugin - 4.12.0 + 4.13.0 org.codehaus.mojo diff --git a/nbr/src/main/resources/examples/bindings-cqlvectors.yaml b/nbr/src/main/resources/examples/bindings-cqlvectors.yaml new file mode 100644 index 000000000..32e0d1ee6 --- /dev/null +++ b/nbr/src/main/resources/examples/bindings-cqlvectors.yaml @@ -0,0 +1,7 @@ +scenarios: + default: + vectors: run driver=stdout cycles=10 threads=1 format=readout + +bindings: + hfv768raw: HashedFloatVectors(768); Stringify(); + hfv768cql: HashedFloatVectors(768); ToCqlVector(); diff --git a/nbr/src/main/resources/examples/bindings-vectors.yaml b/nbr/src/main/resources/examples/bindings-vectors.yaml new file mode 100644 index 000000000..a2413470c --- /dev/null +++ b/nbr/src/main/resources/examples/bindings-vectors.yaml @@ -0,0 +1,53 @@ +scenarios: + default: + vectors: run driver=stdout cycles=10 threads=1 format=readout + +bindings: + + # create double and float vectors which high dispersion across the number + # of dimensions specified. These are not yet enumerable, but they are + # deterministic + hdv1: HashedDoubleVectors(13); Stringify(); + hfv1: HashedFloatVectors(13); Stringify(); + + # specify the sizer function and the double function + hdvn2: HashedDoubleVectors(long->HashRange(1,5)->int,long->HashRange(2.0d,3.0d)->double); NormalizeDoubleVector(); Stringify(); + + # specify the sizer function and the range of doubles to use + hdv3: HashedDoubleVectors(long->HashRange(1,5)->int,long->HashRange(2.0d,3.0d)->double); Stringify(); + + hdv4: HashedDoubleVectors(13,0.0d,1.0d); Stringify(); + hfv4: HashedFloatVectors(13,0.0f,1.0f); Stringify(); + + + # create a simple 2-d vector from a step function over the unit interval + # of 10 steps (the maximum number of characters per digit) + v2d: DoubleVectors('0-2*2') + + # use Stringify() to visualize the value of numeric array types + v2d_str: DoubleVectors('0-2*2'); Stringify() + + # normalize! + v2dn: DoubleVectors('0-2*2'); NormalizeDoubleVector(); + + # normalize and stringify + v2dn_str: DoubleVectors('0-2*2'); NormalizeDoubleVector(); Stringify(); + + # create a double vector based on 10 values per digit, by 10 digits. + # this determines that the step function should be 0.1 per step, wrapping, + # then maps this to a combinitoric model based on charset cardinality + v1d: DoubleVectors('0-9*10'); + + v1dn: DoubleVectors('0-9*10'); NormalizeDoubleVector(); + + v1d_str: DoubleVectors('0-9*10'); Stringify(); + v1dn_str: DoubleVectors('0-9*10'); NormalizeDoubleVector(); Stringify(); + v1d_cql: DoubleVectors('0-9*10'); ToCqlVector(); + + v_09_10f: FloatVectors('0-9*10'); + unit_v_f_n: FloatVectors('0-9*10'); NormalizeFloatVector(); + v_az_3: DoubleVectors('a-z*3'); + unit_v_d_n: DoubleVectors('a-z*5'); NormalizeDoubleVector(); + + + From bbc5844671313eccbcfe331f51c61080ecd26919 Mon Sep 17 00:00:00 2001 From: Jonathan Shook Date: Tue, 25 Jul 2023 11:50:39 -0500 Subject: [PATCH 06/14] package refactoring --- .../engine/api/activityapi/core/Activity.java | 10 ++--- .../core/ActivityInstrumentation.java | 8 ++-- .../api/activityapi/core/ActivityType.java | 8 ++-- .../engine/api/activityapi/core/Motor.java | 2 +- .../core/ops/fluent/OpTrackerImpl.java | 4 +- .../buffers/CycleResultSegmentsReadable.java | 4 +- .../CycleResultsRLEBufferReadable.java | 4 +- .../CycleResultsRLEBufferTarget.java | 4 +- .../buffers/results_rle/CycleSpanResults.java | 6 +-- .../filters/ExperimentalResultFilterType.java | 4 +- .../inputs/cyclelog/CycleLogInput.java | 10 ++--- .../cyclelog/CycleLogDumperUtility.java | 4 +- .../outputs/cyclelog/CycleLogOutput.java | 8 ++-- .../logger/LoggingMarkerDispenser.java | 1 - .../modular/handlers/CounterErrorHandler.java | 4 +- .../handlers/HistogramErrorHandler.java | 4 +- .../engine/api/activityapi/output/Output.java | 4 +- .../api/activityapi/planning/OpSource.java | 4 +- .../ratelimits/HybridRateLimiter.java | 5 --- .../ratelimits/InlineTokenPool.java | 4 +- .../engine/api/activityimpl/CoreServices.java | 6 +-- .../activityimpl/ProgressAndStateMeter.java | 4 +- .../api/activityimpl/SimpleActivity.java | 42 +++++++++---------- .../api/activityimpl/input/AtomicInput.java | 6 +-- .../input/CoreInputDispenser.java | 4 +- .../marker/ByteTrackerExtent.java | 6 +-- .../marker/ContiguousOutputChunker.java | 4 +- .../activityimpl/marker/OldCoreTracker.java | 3 +- .../api/activityimpl/motor/CoreMotor.java | 6 +-- .../motor/CoreMotorDispenser.java | 4 +- .../api/activityimpl/motor/StrideTracker.java | 4 +- .../uniform/StandardActivity.java | 17 ++++---- .../uniform/StandardActivityType.java | 7 ++-- .../uniform/actions/StandardAction.java | 19 +++++---- .../api/scenarios/NBCLIScenarioParser.java | 10 ++--- .../CycleResultsArraySegmentReadableTest.java | 6 +-- .../CycleResultsRLEBufferReadableTest.java | 4 +- .../CycleResultsRLEBufferTargetTest.java | 4 +- .../tristate/CoreResultFilterTest.java | 6 +-- .../tristate/ResultFilteringSieveTest.java | 6 +-- .../modular/NBErrorHandlerTest.java | 3 +- .../RateLimiterPerfTestMethods.java | 8 ++-- .../ratelimits/TestHybridRateLimiterPerf.java | 3 +- .../ratelimits/TestRateLimiterPerf1E7.java | 3 +- .../ratelimits/TestRateLimiterPerf1E8.java | 3 +- .../ratelimits/TestRateLimiterPerfSingle.java | 3 +- .../marker/ByteTrackerExtentTest.java | 4 +- .../activityimpl/marker/CoreOutputTest.java | 7 ++-- .../engine/api/clireader/CLITest.java | 4 +- .../api/templating/CommandTemplateTest.java | 15 ++++--- 50 files changed, 155 insertions(+), 168 deletions(-) diff --git a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/core/Activity.java b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/core/Activity.java index 44c8c8f78..212317696 100644 --- a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/core/Activity.java +++ b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/core/Activity.java @@ -17,18 +17,18 @@ package io.nosqlbench.engine.api.activityapi.core; import com.codahale.metrics.Timer; -import io.nosqlbench.api.config.NBLabeledElement; -import io.nosqlbench.api.engine.activityimpl.ActivityDef; -import io.nosqlbench.api.engine.activityimpl.ParameterMap; import io.nosqlbench.engine.api.activityapi.core.progress.ProgressCapable; import io.nosqlbench.engine.api.activityapi.core.progress.StateCapable; import io.nosqlbench.engine.api.activityapi.cyclelog.filters.IntPredicateDispenser; import io.nosqlbench.engine.api.activityapi.errorhandling.ErrorMetrics; -import io.nosqlbench.engine.api.activityapi.input.InputDispenser; import io.nosqlbench.engine.api.activityapi.output.OutputDispenser; -import io.nosqlbench.engine.api.activityapi.ratelimits.RateLimiter; import io.nosqlbench.engine.api.activityimpl.SimpleActivity; import io.nosqlbench.engine.api.activityimpl.motor.RunStateTally; +import io.nosqlbench.api.config.NBLabeledElement; +import io.nosqlbench.api.engine.activityimpl.ActivityDef; +import io.nosqlbench.api.engine.activityimpl.ParameterMap; +import io.nosqlbench.engine.api.activityapi.input.InputDispenser; +import io.nosqlbench.engine.api.activityapi.ratelimits.RateLimiter; import java.io.InputStream; import java.io.PrintWriter; diff --git a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/core/ActivityInstrumentation.java b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/core/ActivityInstrumentation.java index f0d4e8bda..11682c3c0 100644 --- a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/core/ActivityInstrumentation.java +++ b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/core/ActivityInstrumentation.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. @@ -19,6 +19,8 @@ package io.nosqlbench.engine.api.activityapi.core; import com.codahale.metrics.Counter; import com.codahale.metrics.Histogram; import com.codahale.metrics.Timer; +import io.nosqlbench.engine.api.activityapi.planning.OpSequence; +import io.nosqlbench.adapters.api.activityimpl.OpDispenser; import java.util.concurrent.Future; @@ -80,8 +82,8 @@ public interface ActivityInstrumentation { /** * The bind timer keeps track of how long it takes for NoSQLBench to create an instance * of an executable operation, given the cycle. This is usually done by using an - * {@link io.nosqlbench.engine.api.activityapi.planning.OpSequence} in conjunction with - * an {@link io.nosqlbench.engine.api.activityimpl.OpDispenser}. This is named for "binding + * {@link OpSequence} in conjunction with + * an {@link OpDispenser}. This is named for "binding * a cycle to an operation". * @return a new or existing {@link Timer} */ diff --git a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/core/ActivityType.java b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/core/ActivityType.java index caf022eb0..60b18b473 100644 --- a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/core/ActivityType.java +++ b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/core/ActivityType.java @@ -16,14 +16,14 @@ package io.nosqlbench.engine.api.activityapi.core; -import io.nosqlbench.api.config.NBLabeledElement; -import io.nosqlbench.engine.api.activityapi.input.InputDispenser; import io.nosqlbench.engine.api.activityapi.output.OutputDispenser; -import io.nosqlbench.api.engine.activityimpl.ActivityDef; import io.nosqlbench.engine.api.activityimpl.CoreServices; import io.nosqlbench.engine.api.activityimpl.SimpleActivity; import io.nosqlbench.engine.api.activityimpl.action.CoreActionDispenser; import io.nosqlbench.engine.api.activityimpl.motor.CoreMotorDispenser; +import io.nosqlbench.api.config.NBLabeledElement; +import io.nosqlbench.engine.api.activityapi.input.InputDispenser; +import io.nosqlbench.api.engine.activityimpl.ActivityDef; import java.util.Map; import java.util.Optional; @@ -120,7 +120,7 @@ public interface ActivityType { final InputDispenser inputDispenser, final ActionDispenser actionDispenser, final OutputDispenser outputDispenser) { - return new CoreMotorDispenser (activity, inputDispenser, actionDispenser, outputDispenser); + return new CoreMotorDispenser(activity, inputDispenser, actionDispenser, outputDispenser); } /** diff --git a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/core/Motor.java b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/core/Motor.java index 995e58e6b..107fcb1f8 100644 --- a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/core/Motor.java +++ b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/core/Motor.java @@ -16,8 +16,8 @@ package io.nosqlbench.engine.api.activityapi.core; -import io.nosqlbench.engine.api.activityapi.input.Input; import io.nosqlbench.engine.api.activityimpl.MotorState; +import io.nosqlbench.engine.api.activityapi.input.Input; /** * The core threading harness within an activity. diff --git a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/core/ops/fluent/OpTrackerImpl.java b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/core/ops/fluent/OpTrackerImpl.java index eed80d722..a704c9742 100644 --- a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/core/ops/fluent/OpTrackerImpl.java +++ b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/core/ops/fluent/OpTrackerImpl.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. @@ -18,10 +18,10 @@ package io.nosqlbench.engine.api.activityapi.core.ops.fluent; import com.codahale.metrics.Counter; import com.codahale.metrics.Timer; +import io.nosqlbench.api.engine.activityimpl.ActivityDef; import io.nosqlbench.engine.api.activityapi.core.Activity; import io.nosqlbench.engine.api.activityapi.core.ActivityDefObserver; import io.nosqlbench.engine.api.activityapi.core.ops.fluent.opfacets.*; -import io.nosqlbench.api.engine.activityimpl.ActivityDef; import java.util.concurrent.TimeUnit; import java.util.concurrent.atomic.AtomicInteger; diff --git a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/cyclelog/buffers/CycleResultSegmentsReadable.java b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/cyclelog/buffers/CycleResultSegmentsReadable.java index 06d006091..c20aca8a5 100644 --- a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/cyclelog/buffers/CycleResultSegmentsReadable.java +++ b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/cyclelog/buffers/CycleResultSegmentsReadable.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. @@ -16,8 +16,8 @@ package io.nosqlbench.engine.api.activityapi.cyclelog.buffers; -import io.nosqlbench.engine.api.activityapi.cyclelog.buffers.results.CycleResult; import io.nosqlbench.engine.api.activityapi.cyclelog.buffers.results.CycleResultsSegment; +import io.nosqlbench.engine.api.activityapi.cyclelog.buffers.results.CycleResult; import java.util.Iterator; diff --git a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/cyclelog/buffers/results_rle/CycleResultsRLEBufferReadable.java b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/cyclelog/buffers/results_rle/CycleResultsRLEBufferReadable.java index 517dfb0f0..5e729d879 100644 --- a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/cyclelog/buffers/results_rle/CycleResultsRLEBufferReadable.java +++ b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/cyclelog/buffers/results_rle/CycleResultsRLEBufferReadable.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. @@ -16,9 +16,9 @@ package io.nosqlbench.engine.api.activityapi.cyclelog.buffers.results_rle; +import io.nosqlbench.engine.api.activityapi.cyclelog.buffers.results.ResultReadable; import io.nosqlbench.engine.api.activityapi.cyclelog.buffers.CycleResultSegmentsReadable; import io.nosqlbench.engine.api.activityapi.cyclelog.buffers.results.CycleResultsSegment; -import io.nosqlbench.engine.api.activityapi.cyclelog.buffers.results.ResultReadable; import java.nio.ByteBuffer; diff --git a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/cyclelog/buffers/results_rle/CycleResultsRLEBufferTarget.java b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/cyclelog/buffers/results_rle/CycleResultsRLEBufferTarget.java index 5fd6751cb..f7d5762f3 100644 --- a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/cyclelog/buffers/results_rle/CycleResultsRLEBufferTarget.java +++ b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/cyclelog/buffers/results_rle/CycleResultsRLEBufferTarget.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. @@ -16,8 +16,8 @@ package io.nosqlbench.engine.api.activityapi.cyclelog.buffers.results_rle; -import io.nosqlbench.engine.api.activityapi.cyclelog.buffers.results.CycleResult; import io.nosqlbench.engine.api.activityapi.cyclelog.buffers.results.ResultReadable; +import io.nosqlbench.engine.api.activityapi.cyclelog.buffers.results.CycleResult; import io.nosqlbench.engine.api.activityapi.cyclelog.inputs.cyclelog.CanFilterResultValue; import io.nosqlbench.engine.api.activityapi.output.Output; import org.apache.logging.log4j.Logger; diff --git a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/cyclelog/buffers/results_rle/CycleSpanResults.java b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/cyclelog/buffers/results_rle/CycleSpanResults.java index f859b3624..07fbfdf68 100644 --- a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/cyclelog/buffers/results_rle/CycleSpanResults.java +++ b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/cyclelog/buffers/results_rle/CycleSpanResults.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. @@ -16,10 +16,10 @@ package io.nosqlbench.engine.api.activityapi.cyclelog.buffers.results_rle; -import io.nosqlbench.engine.api.activityapi.cyclelog.buffers.results.CycleResult; import io.nosqlbench.engine.api.activityapi.cyclelog.buffers.results.CycleResultsSegment; -import io.nosqlbench.engine.api.activityapi.cyclelog.buffers.results.ResultReadable; import io.nosqlbench.engine.api.activityapi.cyclelog.buffers.results.MutableCycleResult; +import io.nosqlbench.engine.api.activityapi.cyclelog.buffers.results.ResultReadable; +import io.nosqlbench.engine.api.activityapi.cyclelog.buffers.results.CycleResult; /** diff --git a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/cyclelog/filters/ExperimentalResultFilterType.java b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/cyclelog/filters/ExperimentalResultFilterType.java index 6cbe65d67..d35a5f019 100644 --- a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/cyclelog/filters/ExperimentalResultFilterType.java +++ b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/cyclelog/filters/ExperimentalResultFilterType.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. @@ -16,8 +16,8 @@ package io.nosqlbench.engine.api.activityapi.cyclelog.filters; -import io.nosqlbench.engine.api.activityapi.core.Activity; import io.nosqlbench.engine.api.util.SimpleConfig; +import io.nosqlbench.engine.api.activityapi.core.Activity; import io.nosqlbench.nb.annotations.Maturity; import io.nosqlbench.api.spi.SimpleServiceLoader; diff --git a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/cyclelog/inputs/cyclelog/CycleLogInput.java b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/cyclelog/inputs/cyclelog/CycleLogInput.java index f0250a54f..af7ad192d 100644 --- a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/cyclelog/inputs/cyclelog/CycleLogInput.java +++ b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/cyclelog/inputs/cyclelog/CycleLogInput.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. @@ -16,15 +16,15 @@ package io.nosqlbench.engine.api.activityapi.cyclelog.inputs.cyclelog; -import io.nosqlbench.engine.api.activityapi.core.Activity; +import io.nosqlbench.engine.api.activityapi.cyclelog.buffers.results.CycleResultsSegment; import io.nosqlbench.engine.api.activityapi.cyclelog.buffers.results.CycleSegment; import io.nosqlbench.engine.api.activityapi.cyclelog.buffers.results.CycleSegmentBuffer; -import io.nosqlbench.engine.api.activityapi.cyclelog.buffers.results.CycleResult; -import io.nosqlbench.engine.api.activityapi.cyclelog.buffers.results.CycleResultsSegment; import io.nosqlbench.engine.api.activityapi.cyclelog.buffers.results.ResultReadable; import io.nosqlbench.engine.api.activityapi.cyclelog.buffers.results_rle.CycleResultsRLEBufferReadable; -import io.nosqlbench.engine.api.activityapi.input.Input; import io.nosqlbench.engine.api.util.SimpleConfig; +import io.nosqlbench.engine.api.activityapi.core.Activity; +import io.nosqlbench.engine.api.activityapi.cyclelog.buffers.results.CycleResult; +import io.nosqlbench.engine.api.activityapi.input.Input; import org.apache.logging.log4j.Logger; import org.apache.logging.log4j.LogManager; diff --git a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/cyclelog/outputs/cyclelog/CycleLogDumperUtility.java b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/cyclelog/outputs/cyclelog/CycleLogDumperUtility.java index 3dc2cff2e..4db29224a 100644 --- a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/cyclelog/outputs/cyclelog/CycleLogDumperUtility.java +++ b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/cyclelog/outputs/cyclelog/CycleLogDumperUtility.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. @@ -16,9 +16,9 @@ package io.nosqlbench.engine.api.activityapi.cyclelog.outputs.cyclelog; -import io.nosqlbench.engine.api.activityapi.cyclelog.buffers.results.CycleResult; import io.nosqlbench.engine.api.activityapi.cyclelog.buffers.results.CycleResultsSegment; import io.nosqlbench.engine.api.activityapi.cyclelog.buffers.results_rle.CycleResultsRLEBufferReadable; +import io.nosqlbench.engine.api.activityapi.cyclelog.buffers.results.CycleResult; import java.io.File; import java.io.RandomAccessFile; diff --git a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/cyclelog/outputs/cyclelog/CycleLogOutput.java b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/cyclelog/outputs/cyclelog/CycleLogOutput.java index 876298592..6b7359d84 100644 --- a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/cyclelog/outputs/cyclelog/CycleLogOutput.java +++ b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/cyclelog/outputs/cyclelog/CycleLogOutput.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. @@ -16,15 +16,15 @@ package io.nosqlbench.engine.api.activityapi.cyclelog.outputs.cyclelog; -import io.nosqlbench.engine.api.activityapi.core.Activity; -import io.nosqlbench.engine.api.activityapi.cyclelog.buffers.results.CycleResult; import io.nosqlbench.engine.api.activityapi.cyclelog.buffers.results.CycleResultsSegment; import io.nosqlbench.engine.api.activityapi.cyclelog.buffers.results.ResultReadable; import io.nosqlbench.engine.api.activityapi.cyclelog.buffers.results_rle.CycleResultsRLEBufferTarget; import io.nosqlbench.engine.api.activityapi.cyclelog.buffers.results_rle.CycleSpanResults; +import io.nosqlbench.engine.api.util.SimpleConfig; +import io.nosqlbench.engine.api.activityapi.core.Activity; +import io.nosqlbench.engine.api.activityapi.cyclelog.buffers.results.CycleResult; import io.nosqlbench.engine.api.activityapi.cyclelog.inputs.cyclelog.CanFilterResultValue; import io.nosqlbench.engine.api.activityapi.output.Output; -import io.nosqlbench.engine.api.util.SimpleConfig; import org.apache.logging.log4j.Logger; import org.apache.logging.log4j.LogManager; diff --git a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/cyclelog/outputs/logger/LoggingMarkerDispenser.java b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/cyclelog/outputs/logger/LoggingMarkerDispenser.java index 45bf1f4fb..1cc7d6235 100644 --- a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/cyclelog/outputs/logger/LoggingMarkerDispenser.java +++ b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/cyclelog/outputs/logger/LoggingMarkerDispenser.java @@ -16,7 +16,6 @@ package io.nosqlbench.engine.api.activityapi.cyclelog.outputs.logger; -import io.nosqlbench.engine.api.activityapi.core.Activity; import io.nosqlbench.engine.api.activityapi.output.Output; import io.nosqlbench.engine.api.activityapi.output.OutputDispenser; import io.nosqlbench.engine.api.activityapi.core.Activity; diff --git a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/errorhandling/modular/handlers/CounterErrorHandler.java b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/errorhandling/modular/handlers/CounterErrorHandler.java index 034583c93..54a05b2fa 100644 --- a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/errorhandling/modular/handlers/CounterErrorHandler.java +++ b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/errorhandling/modular/handlers/CounterErrorHandler.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. @@ -18,8 +18,8 @@ package io.nosqlbench.engine.api.activityapi.errorhandling.modular.handlers; import io.nosqlbench.engine.api.activityapi.errorhandling.ErrorMetrics; import io.nosqlbench.engine.api.activityapi.errorhandling.modular.ErrorDetail; -import io.nosqlbench.engine.api.activityapi.errorhandling.modular.ErrorHandler; import io.nosqlbench.engine.api.metrics.ExceptionCountMetrics; +import io.nosqlbench.engine.api.activityapi.errorhandling.modular.ErrorHandler; import io.nosqlbench.nb.annotations.Service; import java.util.function.Supplier; diff --git a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/errorhandling/modular/handlers/HistogramErrorHandler.java b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/errorhandling/modular/handlers/HistogramErrorHandler.java index 83b829d8f..62c9f2f1a 100644 --- a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/errorhandling/modular/handlers/HistogramErrorHandler.java +++ b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/errorhandling/modular/handlers/HistogramErrorHandler.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. @@ -18,8 +18,8 @@ package io.nosqlbench.engine.api.activityapi.errorhandling.modular.handlers; import io.nosqlbench.engine.api.activityapi.errorhandling.ErrorMetrics; import io.nosqlbench.engine.api.activityapi.errorhandling.modular.ErrorDetail; -import io.nosqlbench.engine.api.activityapi.errorhandling.modular.ErrorHandler; import io.nosqlbench.engine.api.metrics.ExceptionHistoMetrics; +import io.nosqlbench.engine.api.activityapi.errorhandling.modular.ErrorHandler; import io.nosqlbench.nb.annotations.Service; import java.util.function.Supplier; diff --git a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/output/Output.java b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/output/Output.java index 88013d17c..4045d4ac3 100644 --- a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/output/Output.java +++ b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/output/Output.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. @@ -16,8 +16,8 @@ package io.nosqlbench.engine.api.activityapi.output; -import io.nosqlbench.engine.api.activityapi.cyclelog.buffers.results.CycleResult; import io.nosqlbench.engine.api.activityapi.cyclelog.buffers.results.CycleResultsSegment; +import io.nosqlbench.engine.api.activityapi.cyclelog.buffers.results.CycleResult; /** * A cycle output is simply a type that knows how to do something diff --git a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/planning/OpSource.java b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/planning/OpSource.java index 1fe759316..625e7e9a8 100644 --- a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/planning/OpSource.java +++ b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/planning/OpSource.java @@ -16,8 +16,8 @@ package io.nosqlbench.engine.api.activityapi.planning; -import io.nosqlbench.engine.api.activityimpl.OpDispenser; -import io.nosqlbench.engine.api.activityimpl.uniform.flowtypes.Op; +import io.nosqlbench.adapters.api.activityimpl.OpDispenser; +import io.nosqlbench.adapters.api.activityimpl.uniform.flowtypes.Op; import java.util.function.LongFunction; diff --git a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/ratelimits/HybridRateLimiter.java b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/ratelimits/HybridRateLimiter.java index f764e8867..791a4f6ae 100644 --- a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/ratelimits/HybridRateLimiter.java +++ b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/ratelimits/HybridRateLimiter.java @@ -18,12 +18,7 @@ package io.nosqlbench.engine.api.activityapi.ratelimits; import com.codahale.metrics.Gauge; import io.nosqlbench.api.config.NBLabeledElement; -import io.nosqlbench.api.config.NBNamedElement; -import io.nosqlbench.engine.api.activityapi.core.Startable; import io.nosqlbench.api.engine.metrics.ActivityMetrics; -import io.nosqlbench.engine.api.activityapi.ratelimits.RateLimiters.BurstRateGauge; -import io.nosqlbench.engine.api.activityapi.ratelimits.RateLimiters.RateGauge; -import io.nosqlbench.engine.api.activityapi.ratelimits.RateLimiters.WaitTimeGauge; import io.nosqlbench.nb.annotations.Service; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; diff --git a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/ratelimits/InlineTokenPool.java b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/ratelimits/InlineTokenPool.java index ed7aa27ae..089e7f121 100644 --- a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/ratelimits/InlineTokenPool.java +++ b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/ratelimits/InlineTokenPool.java @@ -17,6 +17,7 @@ package io.nosqlbench.engine.api.activityapi.ratelimits; import com.codahale.metrics.Timer; +import io.nosqlbench.engine.api.util.Colors; import io.nosqlbench.api.config.NBLabeledElement; import io.nosqlbench.api.engine.activityimpl.ActivityDef; import io.nosqlbench.api.engine.metrics.ActivityMetrics; @@ -25,7 +26,6 @@ import org.apache.logging.log4j.Logger; import java.io.RandomAccessFile; import java.nio.ByteBuffer; -import java.nio.channels.FileChannel; import java.nio.channels.FileChannel.MapMode; import java.util.concurrent.TimeUnit; import java.util.concurrent.locks.Condition; @@ -33,8 +33,6 @@ import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.LockSupport; import java.util.concurrent.locks.ReentrantLock; -import static io.nosqlbench.engine.api.util.Colors.*; - /** *

Synopsis

* diff --git a/engine-api/src/main/java/io/nosqlbench/engine/api/activityimpl/CoreServices.java b/engine-api/src/main/java/io/nosqlbench/engine/api/activityimpl/CoreServices.java index 2d335f2f0..a6c8f218d 100644 --- a/engine-api/src/main/java/io/nosqlbench/engine/api/activityimpl/CoreServices.java +++ b/engine-api/src/main/java/io/nosqlbench/engine/api/activityimpl/CoreServices.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. @@ -16,15 +16,15 @@ package io.nosqlbench.engine.api.activityimpl; -import io.nosqlbench.engine.api.activityapi.core.Activity; import io.nosqlbench.engine.api.activityapi.cyclelog.buffers.results.ResultReadable; +import io.nosqlbench.engine.api.util.SimpleConfig; +import io.nosqlbench.engine.api.activityapi.core.Activity; import io.nosqlbench.engine.api.activityapi.cyclelog.filters.ResultFilterDispenser; import io.nosqlbench.engine.api.activityapi.cyclelog.filters.ResultValueFilterType; import io.nosqlbench.engine.api.activityapi.input.InputDispenser; import io.nosqlbench.engine.api.activityapi.input.InputType; import io.nosqlbench.engine.api.activityapi.output.OutputDispenser; import io.nosqlbench.engine.api.activityapi.output.OutputType; -import io.nosqlbench.engine.api.util.SimpleConfig; import java.util.Optional; import java.util.function.Predicate; diff --git a/engine-api/src/main/java/io/nosqlbench/engine/api/activityimpl/ProgressAndStateMeter.java b/engine-api/src/main/java/io/nosqlbench/engine/api/activityimpl/ProgressAndStateMeter.java index 2020afd40..6c5c56131 100644 --- a/engine-api/src/main/java/io/nosqlbench/engine/api/activityimpl/ProgressAndStateMeter.java +++ b/engine-api/src/main/java/io/nosqlbench/engine/api/activityimpl/ProgressAndStateMeter.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. @@ -17,8 +17,8 @@ package io.nosqlbench.engine.api.activityimpl; import io.nosqlbench.engine.api.activityapi.core.progress.InputProgressMeter; -import io.nosqlbench.engine.api.activityapi.core.RunState; import io.nosqlbench.engine.api.activityapi.core.progress.StateCapable; +import io.nosqlbench.engine.api.activityapi.core.RunState; public class ProgressAndStateMeter implements InputProgressMeter, StateCapable { private final InputProgressMeter meter; diff --git a/engine-api/src/main/java/io/nosqlbench/engine/api/activityimpl/SimpleActivity.java b/engine-api/src/main/java/io/nosqlbench/engine/api/activityimpl/SimpleActivity.java index decfa1782..3c875cab0 100644 --- a/engine-api/src/main/java/io/nosqlbench/engine/api/activityimpl/SimpleActivity.java +++ b/engine-api/src/main/java/io/nosqlbench/engine/api/activityimpl/SimpleActivity.java @@ -17,40 +17,40 @@ package io.nosqlbench.engine.api.activityimpl; import com.codahale.metrics.Timer; +import io.nosqlbench.engine.api.activityapi.core.*; +import io.nosqlbench.engine.api.activityapi.core.progress.ActivityMetricProgressMeter; +import io.nosqlbench.engine.api.activityapi.core.progress.ProgressMeterDisplay; +import io.nosqlbench.engine.api.activityapi.errorhandling.ErrorMetrics; +import io.nosqlbench.engine.api.activityapi.errorhandling.modular.NBErrorHandler; +import io.nosqlbench.engine.api.activityapi.planning.OpSequence; +import io.nosqlbench.engine.api.activityapi.planning.SequencerType; +import io.nosqlbench.engine.api.activityapi.ratelimits.RateLimiters; +import io.nosqlbench.engine.api.activityapi.ratelimits.RateSpec; +import io.nosqlbench.adapters.api.activityimpl.OpDispenser; +import io.nosqlbench.adapters.api.activityimpl.OpMapper; import io.nosqlbench.api.config.NBLabeledElement; import io.nosqlbench.api.config.NBLabels; -import io.nosqlbench.api.config.params.ParamsParser; import io.nosqlbench.api.config.standard.NBConfiguration; import io.nosqlbench.api.engine.activityimpl.ActivityDef; import io.nosqlbench.api.engine.metrics.ActivityMetrics; import io.nosqlbench.api.errors.BasicError; import io.nosqlbench.api.errors.OpConfigError; -import io.nosqlbench.engine.api.activityapi.core.*; -import io.nosqlbench.engine.api.activityapi.core.progress.ActivityMetricProgressMeter; -import io.nosqlbench.engine.api.activityapi.core.progress.ProgressCapable; -import io.nosqlbench.engine.api.activityapi.core.progress.ProgressMeterDisplay; import io.nosqlbench.engine.api.activityapi.cyclelog.filters.IntPredicateDispenser; -import io.nosqlbench.engine.api.activityapi.errorhandling.ErrorMetrics; -import io.nosqlbench.engine.api.activityapi.errorhandling.modular.NBErrorHandler; import io.nosqlbench.engine.api.activityapi.input.InputDispenser; import io.nosqlbench.engine.api.activityapi.output.OutputDispenser; -import io.nosqlbench.engine.api.activityapi.planning.OpSequence; import io.nosqlbench.engine.api.activityapi.planning.SequencePlanner; -import io.nosqlbench.engine.api.activityapi.planning.SequencerType; import io.nosqlbench.engine.api.activityapi.ratelimits.RateLimiter; -import io.nosqlbench.engine.api.activityapi.ratelimits.RateLimiters; -import io.nosqlbench.engine.api.activityapi.ratelimits.RateSpec; -import io.nosqlbench.engine.api.activityconfig.OpsLoader; -import io.nosqlbench.engine.api.activityconfig.yaml.OpTemplate; -import io.nosqlbench.engine.api.activityconfig.yaml.OpTemplateFormat; -import io.nosqlbench.engine.api.activityconfig.yaml.OpsDocList; +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.engine.api.activityimpl.motor.RunStateTally; -import io.nosqlbench.engine.api.activityimpl.uniform.DriverAdapter; -import io.nosqlbench.engine.api.activityimpl.uniform.DryRunOpDispenserWrapper; -import io.nosqlbench.engine.api.activityimpl.uniform.decorators.SyntheticOpTemplateProvider; -import io.nosqlbench.engine.api.activityimpl.uniform.flowtypes.Op; -import io.nosqlbench.engine.api.templating.CommandTemplate; -import io.nosqlbench.engine.api.templating.ParsedOp; +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; diff --git a/engine-api/src/main/java/io/nosqlbench/engine/api/activityimpl/input/AtomicInput.java b/engine-api/src/main/java/io/nosqlbench/engine/api/activityimpl/input/AtomicInput.java index 7eebea523..afcdd2c89 100644 --- a/engine-api/src/main/java/io/nosqlbench/engine/api/activityimpl/input/AtomicInput.java +++ b/engine-api/src/main/java/io/nosqlbench/engine/api/activityimpl/input/AtomicInput.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. @@ -15,11 +15,11 @@ */ package io.nosqlbench.engine.api.activityimpl.input; +import io.nosqlbench.engine.api.activityapi.core.progress.ProgressMeterDisplay; +import io.nosqlbench.engine.api.activityapi.cyclelog.buffers.results.CycleSegment; import io.nosqlbench.engine.api.activityapi.core.ActivityDefObserver; import io.nosqlbench.engine.api.activityapi.core.progress.CycleMeter; import io.nosqlbench.engine.api.activityapi.core.progress.ProgressCapable; -import io.nosqlbench.engine.api.activityapi.core.progress.ProgressMeterDisplay; -import io.nosqlbench.engine.api.activityapi.cyclelog.buffers.results.CycleSegment; import io.nosqlbench.engine.api.activityapi.input.Input; import io.nosqlbench.api.engine.activityimpl.ActivityDef; import io.nosqlbench.api.engine.util.Unit; diff --git a/engine-api/src/main/java/io/nosqlbench/engine/api/activityimpl/input/CoreInputDispenser.java b/engine-api/src/main/java/io/nosqlbench/engine/api/activityimpl/input/CoreInputDispenser.java index 80f0b0b5f..50884907b 100644 --- a/engine-api/src/main/java/io/nosqlbench/engine/api/activityimpl/input/CoreInputDispenser.java +++ b/engine-api/src/main/java/io/nosqlbench/engine/api/activityimpl/input/CoreInputDispenser.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. @@ -16,12 +16,12 @@ package io.nosqlbench.engine.api.activityimpl.input; +import io.nosqlbench.engine.api.util.SimpleConfig; import io.nosqlbench.engine.api.activityapi.core.ActivitiesAware; import io.nosqlbench.engine.api.activityapi.core.Activity; import io.nosqlbench.engine.api.activityapi.input.Input; import io.nosqlbench.engine.api.activityapi.input.InputDispenser; import io.nosqlbench.engine.api.activityapi.input.InputType; -import io.nosqlbench.engine.api.util.SimpleConfig; import java.util.Map; diff --git a/engine-api/src/main/java/io/nosqlbench/engine/api/activityimpl/marker/ByteTrackerExtent.java b/engine-api/src/main/java/io/nosqlbench/engine/api/activityimpl/marker/ByteTrackerExtent.java index 304210d53..01643500f 100644 --- a/engine-api/src/main/java/io/nosqlbench/engine/api/activityimpl/marker/ByteTrackerExtent.java +++ b/engine-api/src/main/java/io/nosqlbench/engine/api/activityimpl/marker/ByteTrackerExtent.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. @@ -16,9 +16,9 @@ package io.nosqlbench.engine.api.activityimpl.marker; +import io.nosqlbench.engine.api.activityapi.cyclelog.buffers.results.CycleResultsSegment; import io.nosqlbench.engine.api.activityapi.cyclelog.buffers.CycleResultSegmentsReadable; import io.nosqlbench.engine.api.activityapi.cyclelog.buffers.results.CycleResultsIntervalSegment; -import io.nosqlbench.engine.api.activityapi.cyclelog.buffers.results.CycleResultsSegment; import java.util.Arrays; @@ -206,7 +206,7 @@ public class ByteTrackerExtent implements CycleResultSegmentsReadable { } ByteTrackerExtent newLastExtent = new ByteTrackerExtent( - lastExtent.getMin() + size, lastExtent.getMin() + (size * 2) + lastExtent.getMin() + size, lastExtent.getMin() + (size * 2L) ); if (!lastExtent.getNextExtent().compareAndSet(null, newLastExtent)) { diff --git a/engine-api/src/main/java/io/nosqlbench/engine/api/activityimpl/marker/ContiguousOutputChunker.java b/engine-api/src/main/java/io/nosqlbench/engine/api/activityimpl/marker/ContiguousOutputChunker.java index 77c96cb02..3d91e89fa 100644 --- a/engine-api/src/main/java/io/nosqlbench/engine/api/activityimpl/marker/ContiguousOutputChunker.java +++ b/engine-api/src/main/java/io/nosqlbench/engine/api/activityimpl/marker/ContiguousOutputChunker.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. @@ -16,10 +16,10 @@ package io.nosqlbench.engine.api.activityimpl.marker; +import io.nosqlbench.engine.api.activityapi.cyclelog.buffers.results.CycleResultsSegment; import io.nosqlbench.engine.api.activityapi.core.Activity; import io.nosqlbench.engine.api.activityapi.cyclelog.buffers.results.CycleResult; import io.nosqlbench.engine.api.activityapi.cyclelog.buffers.results.CycleResultsIntervalSegment; -import io.nosqlbench.engine.api.activityapi.cyclelog.buffers.results.CycleResultsSegment; import io.nosqlbench.engine.api.activityapi.output.Output; import org.apache.logging.log4j.Logger; import org.apache.logging.log4j.LogManager; diff --git a/engine-api/src/main/java/io/nosqlbench/engine/api/activityimpl/marker/OldCoreTracker.java b/engine-api/src/main/java/io/nosqlbench/engine/api/activityimpl/marker/OldCoreTracker.java index 186368930..7fea6402d 100644 --- a/engine-api/src/main/java/io/nosqlbench/engine/api/activityimpl/marker/OldCoreTracker.java +++ b/engine-api/src/main/java/io/nosqlbench/engine/api/activityimpl/marker/OldCoreTracker.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. @@ -18,7 +18,6 @@ package io.nosqlbench.engine.api.activityimpl.marker; import io.nosqlbench.engine.api.activityapi.cyclelog.buffers.results.CycleResultsSegment; import io.nosqlbench.engine.api.activityapi.cyclelog.buffers.CycleResultSegmentsReadable; -import io.nosqlbench.engine.api.activityapi.cyclelog.buffers.results.CycleResultsSegment; import java.util.Iterator; diff --git a/engine-api/src/main/java/io/nosqlbench/engine/api/activityimpl/motor/CoreMotor.java b/engine-api/src/main/java/io/nosqlbench/engine/api/activityimpl/motor/CoreMotor.java index 343e89b6a..e4595fac7 100644 --- a/engine-api/src/main/java/io/nosqlbench/engine/api/activityimpl/motor/CoreMotor.java +++ b/engine-api/src/main/java/io/nosqlbench/engine/api/activityimpl/motor/CoreMotor.java @@ -18,18 +18,18 @@ package io.nosqlbench.engine.api.activityimpl.motor; import com.codahale.metrics.Counter; import com.codahale.metrics.Timer; import io.nosqlbench.engine.api.activityapi.core.*; -import io.nosqlbench.engine.api.activityapi.core.ops.fluent.OpTracker; -import io.nosqlbench.engine.api.activityapi.core.ops.fluent.OpTrackerImpl; import io.nosqlbench.engine.api.activityapi.core.ops.fluent.opfacets.TrackedOp; import io.nosqlbench.engine.api.activityapi.cyclelog.buffers.op_output.StrideOutputConsumer; import io.nosqlbench.engine.api.activityapi.cyclelog.buffers.results.CycleResultSegmentBuffer; import io.nosqlbench.engine.api.activityapi.cyclelog.buffers.results.CycleResultsSegment; import io.nosqlbench.engine.api.activityapi.cyclelog.buffers.results.CycleSegment; +import io.nosqlbench.engine.api.activityimpl.MotorState; +import io.nosqlbench.engine.api.activityapi.core.ops.fluent.OpTracker; +import io.nosqlbench.engine.api.activityapi.core.ops.fluent.OpTrackerImpl; import io.nosqlbench.engine.api.activityapi.input.Input; import io.nosqlbench.engine.api.activityapi.output.Output; import io.nosqlbench.engine.api.activityapi.ratelimits.RateLimiter; import io.nosqlbench.api.engine.activityimpl.ActivityDef; -import io.nosqlbench.engine.api.activityimpl.MotorState; import org.apache.logging.log4j.Logger; import org.apache.logging.log4j.LogManager; diff --git a/engine-api/src/main/java/io/nosqlbench/engine/api/activityimpl/motor/CoreMotorDispenser.java b/engine-api/src/main/java/io/nosqlbench/engine/api/activityimpl/motor/CoreMotorDispenser.java index 8381b6834..d8b7f71ad 100644 --- a/engine-api/src/main/java/io/nosqlbench/engine/api/activityimpl/motor/CoreMotorDispenser.java +++ b/engine-api/src/main/java/io/nosqlbench/engine/api/activityimpl/motor/CoreMotorDispenser.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. @@ -15,12 +15,12 @@ */ package io.nosqlbench.engine.api.activityimpl.motor; +import io.nosqlbench.api.engine.activityimpl.ActivityDef; import io.nosqlbench.engine.api.activityapi.core.*; import io.nosqlbench.engine.api.activityapi.input.Input; import io.nosqlbench.engine.api.activityapi.input.InputDispenser; import io.nosqlbench.engine.api.activityapi.output.Output; import io.nosqlbench.engine.api.activityapi.output.OutputDispenser; -import io.nosqlbench.api.engine.activityimpl.ActivityDef; import java.util.function.IntPredicate; diff --git a/engine-api/src/main/java/io/nosqlbench/engine/api/activityimpl/motor/StrideTracker.java b/engine-api/src/main/java/io/nosqlbench/engine/api/activityimpl/motor/StrideTracker.java index 7cef12796..a83155d70 100644 --- a/engine-api/src/main/java/io/nosqlbench/engine/api/activityimpl/motor/StrideTracker.java +++ b/engine-api/src/main/java/io/nosqlbench/engine/api/activityimpl/motor/StrideTracker.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. @@ -23,8 +23,8 @@ import io.nosqlbench.engine.api.activityapi.cyclelog.buffers.op_output.StrideOut import io.nosqlbench.engine.api.activityapi.cyclelog.buffers.results.CycleResult; import io.nosqlbench.engine.api.activityapi.cyclelog.buffers.results.CycleResultsSegment; import io.nosqlbench.engine.api.activityapi.output.Output; -import org.apache.logging.log4j.Logger; import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; import java.util.Iterator; import java.util.List; diff --git a/engine-api/src/main/java/io/nosqlbench/engine/api/activityimpl/uniform/StandardActivity.java b/engine-api/src/main/java/io/nosqlbench/engine/api/activityimpl/uniform/StandardActivity.java index 7b7f120e6..a22792530 100644 --- a/engine-api/src/main/java/io/nosqlbench/engine/api/activityimpl/uniform/StandardActivity.java +++ b/engine-api/src/main/java/io/nosqlbench/engine/api/activityimpl/uniform/StandardActivity.java @@ -16,6 +16,7 @@ package io.nosqlbench.engine.api.activityimpl.uniform; +import io.nosqlbench.adapters.api.activityimpl.uniform.DriverAdapter; import io.nosqlbench.api.config.NBLabeledElement; import io.nosqlbench.api.config.NBLabels; import io.nosqlbench.api.config.standard.*; @@ -23,15 +24,15 @@ import io.nosqlbench.api.engine.activityimpl.ActivityDef; import io.nosqlbench.api.errors.BasicError; import io.nosqlbench.api.errors.OpConfigError; import io.nosqlbench.engine.api.activityapi.planning.OpSequence; -import io.nosqlbench.engine.api.activityconfig.OpsLoader; -import io.nosqlbench.engine.api.activityconfig.yaml.OpTemplate; -import io.nosqlbench.engine.api.activityconfig.yaml.OpsDocList; -import io.nosqlbench.engine.api.activityimpl.OpDispenser; -import io.nosqlbench.engine.api.activityimpl.OpMapper; +import io.nosqlbench.adapters.api.activityconfig.OpsLoader; +import io.nosqlbench.adapters.api.activityconfig.yaml.OpTemplate; +import io.nosqlbench.adapters.api.activityconfig.yaml.OpsDocList; +import io.nosqlbench.adapters.api.activityimpl.OpDispenser; +import io.nosqlbench.adapters.api.activityimpl.OpMapper; import io.nosqlbench.engine.api.activityimpl.SimpleActivity; -import io.nosqlbench.engine.api.activityimpl.uniform.decorators.SyntheticOpTemplateProvider; -import io.nosqlbench.engine.api.activityimpl.uniform.flowtypes.Op; -import io.nosqlbench.engine.api.templating.ParsedOp; +import io.nosqlbench.adapters.api.activityimpl.uniform.decorators.SyntheticOpTemplateProvider; +import io.nosqlbench.adapters.api.activityimpl.uniform.flowtypes.Op; +import io.nosqlbench.adapters.api.templating.ParsedOp; import io.nosqlbench.nb.annotations.ServiceSelector; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; diff --git a/engine-api/src/main/java/io/nosqlbench/engine/api/activityimpl/uniform/StandardActivityType.java b/engine-api/src/main/java/io/nosqlbench/engine/api/activityimpl/uniform/StandardActivityType.java index 343fdf57a..95eb3428f 100644 --- a/engine-api/src/main/java/io/nosqlbench/engine/api/activityimpl/uniform/StandardActivityType.java +++ b/engine-api/src/main/java/io/nosqlbench/engine/api/activityimpl/uniform/StandardActivityType.java @@ -16,6 +16,7 @@ package io.nosqlbench.engine.api.activityimpl.uniform; +import io.nosqlbench.adapters.api.activityimpl.uniform.DriverAdapter; import io.nosqlbench.api.config.NBLabeledElement; import io.nosqlbench.api.config.standard.NBConfigModel; import io.nosqlbench.api.config.standard.NBConfiguration; @@ -23,8 +24,8 @@ import io.nosqlbench.api.config.standard.NBReconfigurable; import io.nosqlbench.api.engine.activityimpl.ActivityDef; import io.nosqlbench.engine.api.activityapi.core.ActionDispenser; import io.nosqlbench.engine.api.activityapi.core.ActivityType; -import io.nosqlbench.engine.api.activityconfig.OpsLoader; -import io.nosqlbench.engine.api.activityconfig.yaml.OpsDocList; +import io.nosqlbench.adapters.api.activityconfig.OpsLoader; +import io.nosqlbench.adapters.api.activityconfig.yaml.OpsDocList; import io.nosqlbench.engine.api.activityimpl.SimpleActivity; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; @@ -37,7 +38,7 @@ import java.util.Optional; public class StandardActivityType> extends SimpleActivity implements ActivityType { private static final Logger logger = LogManager.getLogger("ACTIVITY"); - private final Map adapters = new HashMap<>(); + private final Map adapters = new HashMap<>(); public StandardActivityType(final DriverAdapter adapter, final ActivityDef activityDef, final NBLabeledElement parentLabels) { super(activityDef diff --git a/engine-api/src/main/java/io/nosqlbench/engine/api/activityimpl/uniform/actions/StandardAction.java b/engine-api/src/main/java/io/nosqlbench/engine/api/activityimpl/uniform/actions/StandardAction.java index b283e9d80..8c374ee6b 100644 --- a/engine-api/src/main/java/io/nosqlbench/engine/api/activityimpl/uniform/actions/StandardAction.java +++ b/engine-api/src/main/java/io/nosqlbench/engine/api/activityimpl/uniform/actions/StandardAction.java @@ -18,32 +18,33 @@ package io.nosqlbench.engine.api.activityimpl.uniform.actions; import com.codahale.metrics.Histogram; import com.codahale.metrics.Timer; -import io.nosqlbench.api.errors.ExpectedResultVerificationError; +import io.nosqlbench.adapters.api.activityimpl.OpDispenser; +import io.nosqlbench.adapters.api.activityimpl.uniform.flowtypes.*; +import io.nosqlbench.adapters.api.evalcontext.CycleFunction; +import io.nosqlbench.api.engine.activityimpl.ActivityDef; +import io.nosqlbench.api.errors.ResultVerificationError; import io.nosqlbench.engine.api.activityapi.core.ActivityDefObserver; import io.nosqlbench.engine.api.activityapi.core.SyncAction; import io.nosqlbench.engine.api.activityapi.errorhandling.modular.ErrorDetail; import io.nosqlbench.engine.api.activityapi.errorhandling.modular.NBErrorHandler; import io.nosqlbench.engine.api.activityapi.planning.OpSequence; -import io.nosqlbench.api.engine.activityimpl.ActivityDef; -import io.nosqlbench.engine.api.activityimpl.OpDispenser; import io.nosqlbench.engine.api.activityimpl.uniform.StandardActivity; -import io.nosqlbench.engine.api.activityimpl.uniform.flowtypes.*; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; -import org.mvel2.MVEL; -import java.io.Serializable; import java.util.concurrent.TimeUnit; /** * This is the generified version of an Action. All driver adapters us this, as opposed * to previous NB versions where it was implemented for each driver. - * + *

* This allows the API to be consolidated so that the internal machinery of NB * works in a very consistent and uniform way for all users and drivers. * - * @param The type of activity - * @param The type of operation + * @param + * The type of activity + * @param + * The type of operation */ public class StandardAction, R extends Op> implements SyncAction, ActivityDefObserver { private final static Logger logger = LogManager.getLogger("ACTION"); diff --git a/engine-api/src/main/java/io/nosqlbench/engine/api/scenarios/NBCLIScenarioParser.java b/engine-api/src/main/java/io/nosqlbench/engine/api/scenarios/NBCLIScenarioParser.java index 8c0532479..8007a1e25 100644 --- a/engine-api/src/main/java/io/nosqlbench/engine/api/scenarios/NBCLIScenarioParser.java +++ b/engine-api/src/main/java/io/nosqlbench/engine/api/scenarios/NBCLIScenarioParser.java @@ -16,11 +16,11 @@ package io.nosqlbench.engine.api.scenarios; -import io.nosqlbench.engine.api.activityconfig.OpsLoader; -import io.nosqlbench.engine.api.activityconfig.rawyaml.RawOpsLoader; -import io.nosqlbench.engine.api.activityconfig.yaml.OpsDocList; -import io.nosqlbench.engine.api.activityconfig.yaml.Scenarios; -import io.nosqlbench.engine.api.templating.StrInterpolator; +import io.nosqlbench.adapters.api.activityconfig.OpsLoader; +import io.nosqlbench.adapters.api.activityconfig.rawyaml.RawOpsLoader; +import io.nosqlbench.adapters.api.activityconfig.yaml.OpsDocList; +import io.nosqlbench.adapters.api.activityconfig.yaml.Scenarios; +import io.nosqlbench.adapters.api.templating.StrInterpolator; import io.nosqlbench.api.content.Content; import io.nosqlbench.api.content.NBIO; import io.nosqlbench.api.content.NBPathsAPI; diff --git a/engine-api/src/test/java/io/nosqlbench/engine/api/activityapi/cyclelog/CycleResultsArraySegmentReadableTest.java b/engine-api/src/test/java/io/nosqlbench/engine/api/activityapi/cyclelog/CycleResultsArraySegmentReadableTest.java index 02c646f8f..24ddaac7f 100644 --- a/engine-api/src/test/java/io/nosqlbench/engine/api/activityapi/cyclelog/CycleResultsArraySegmentReadableTest.java +++ b/engine-api/src/test/java/io/nosqlbench/engine/api/activityapi/cyclelog/CycleResultsArraySegmentReadableTest.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. @@ -16,9 +16,9 @@ package io.nosqlbench.engine.api.activityapi.cyclelog; -import io.nosqlbench.engine.api.activityapi.cyclelog.buffers.results.CycleResult; -import io.nosqlbench.engine.api.activityapi.cyclelog.buffers.results.CycleResultsSegment; import io.nosqlbench.engine.api.activityapi.cyclelog.buffers.results.CycleResultSegmentBuffer; +import io.nosqlbench.engine.api.activityapi.cyclelog.buffers.results.CycleResultsSegment; +import io.nosqlbench.engine.api.activityapi.cyclelog.buffers.results.CycleResult; import org.junit.jupiter.api.Test; import java.util.stream.StreamSupport; diff --git a/engine-api/src/test/java/io/nosqlbench/engine/api/activityapi/cyclelog/buffers/CycleResultsRLEBufferReadableTest.java b/engine-api/src/test/java/io/nosqlbench/engine/api/activityapi/cyclelog/buffers/CycleResultsRLEBufferReadableTest.java index 10b09f048..2da163cb7 100644 --- a/engine-api/src/test/java/io/nosqlbench/engine/api/activityapi/cyclelog/buffers/CycleResultsRLEBufferReadableTest.java +++ b/engine-api/src/test/java/io/nosqlbench/engine/api/activityapi/cyclelog/buffers/CycleResultsRLEBufferReadableTest.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. @@ -16,10 +16,10 @@ package io.nosqlbench.engine.api.activityapi.cyclelog.buffers; -import io.nosqlbench.engine.api.activityapi.cyclelog.buffers.results.CycleResult; import io.nosqlbench.engine.api.activityapi.cyclelog.buffers.results.CycleResultsSegment; import io.nosqlbench.engine.api.activityapi.cyclelog.buffers.results_rle.CycleResultsRLEBufferReadable; import io.nosqlbench.engine.api.activityapi.cyclelog.buffers.results_rle.CycleResultsRLEBufferTarget; +import io.nosqlbench.engine.api.activityapi.cyclelog.buffers.results.CycleResult; import org.junit.jupiter.api.Test; import java.nio.ByteBuffer; diff --git a/engine-api/src/test/java/io/nosqlbench/engine/api/activityapi/cyclelog/buffers/CycleResultsRLEBufferTargetTest.java b/engine-api/src/test/java/io/nosqlbench/engine/api/activityapi/cyclelog/buffers/CycleResultsRLEBufferTargetTest.java index 0a2296107..ff4875afa 100644 --- a/engine-api/src/test/java/io/nosqlbench/engine/api/activityapi/cyclelog/buffers/CycleResultsRLEBufferTargetTest.java +++ b/engine-api/src/test/java/io/nosqlbench/engine/api/activityapi/cyclelog/buffers/CycleResultsRLEBufferTargetTest.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. @@ -16,9 +16,9 @@ package io.nosqlbench.engine.api.activityapi.cyclelog.buffers; -import io.nosqlbench.engine.api.activityapi.cyclelog.buffers.results.CycleResult; import io.nosqlbench.engine.api.activityapi.cyclelog.buffers.results_rle.CycleResultsRLEBufferReadable; import io.nosqlbench.engine.api.activityapi.cyclelog.buffers.results_rle.CycleResultsRLEBufferTarget; +import io.nosqlbench.engine.api.activityapi.cyclelog.buffers.results.CycleResult; import org.junit.jupiter.api.Test; import java.util.ArrayList; diff --git a/engine-api/src/test/java/io/nosqlbench/engine/api/activityapi/cyclelog/tristate/CoreResultFilterTest.java b/engine-api/src/test/java/io/nosqlbench/engine/api/activityapi/cyclelog/tristate/CoreResultFilterTest.java index 2ec2acd41..091261b5f 100644 --- a/engine-api/src/test/java/io/nosqlbench/engine/api/activityapi/cyclelog/tristate/CoreResultFilterTest.java +++ b/engine-api/src/test/java/io/nosqlbench/engine/api/activityapi/cyclelog/tristate/CoreResultFilterTest.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. @@ -16,11 +16,11 @@ package io.nosqlbench.engine.api.activityapi.cyclelog.tristate; +import io.nosqlbench.engine.api.activityapi.cyclelog.buffers.results.MutableCycleResult; import io.nosqlbench.engine.api.activityapi.cyclelog.buffers.results.ResultReadable; +import io.nosqlbench.engine.api.activityapi.cyclelog.filters.ResultValueFilterType; import io.nosqlbench.engine.api.activityapi.cyclelog.filters.CoreResultValueFilter; import io.nosqlbench.engine.api.activityapi.cyclelog.filters.ResultFilterDispenser; -import io.nosqlbench.engine.api.activityapi.cyclelog.filters.ResultValueFilterType; -import io.nosqlbench.engine.api.activityapi.cyclelog.buffers.results.MutableCycleResult; import org.junit.jupiter.api.Test; import java.util.function.Predicate; diff --git a/engine-api/src/test/java/io/nosqlbench/engine/api/activityapi/cyclelog/tristate/ResultFilteringSieveTest.java b/engine-api/src/test/java/io/nosqlbench/engine/api/activityapi/cyclelog/tristate/ResultFilteringSieveTest.java index d00debcbd..764e08570 100644 --- a/engine-api/src/test/java/io/nosqlbench/engine/api/activityapi/cyclelog/tristate/ResultFilteringSieveTest.java +++ b/engine-api/src/test/java/io/nosqlbench/engine/api/activityapi/cyclelog/tristate/ResultFilteringSieveTest.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. @@ -16,11 +16,11 @@ package io.nosqlbench.engine.api.activityapi.cyclelog.tristate; -import io.nosqlbench.engine.api.activityapi.cyclelog.buffers.results.CycleResult; +import io.nosqlbench.engine.api.activityapi.cyclelog.buffers.results.MutableCycleResult; import io.nosqlbench.engine.api.activityapi.cyclelog.buffers.results.ResultReadable; import io.nosqlbench.engine.api.activityapi.cyclelog.filters.tristate.ResultFilteringSieve; import io.nosqlbench.engine.api.activityapi.cyclelog.filters.tristate.TristateFilter; -import io.nosqlbench.engine.api.activityapi.cyclelog.buffers.results.MutableCycleResult; +import io.nosqlbench.engine.api.activityapi.cyclelog.buffers.results.CycleResult; import org.junit.jupiter.api.Test; import java.util.ArrayList; diff --git a/engine-api/src/test/java/io/nosqlbench/engine/api/activityapi/errorhandling/modular/NBErrorHandlerTest.java b/engine-api/src/test/java/io/nosqlbench/engine/api/activityapi/errorhandling/modular/NBErrorHandlerTest.java index ad30522de..639579579 100644 --- a/engine-api/src/test/java/io/nosqlbench/engine/api/activityapi/errorhandling/modular/NBErrorHandlerTest.java +++ b/engine-api/src/test/java/io/nosqlbench/engine/api/activityapi/errorhandling/modular/NBErrorHandlerTest.java @@ -20,8 +20,7 @@ import com.codahale.metrics.Counter; import com.codahale.metrics.Histogram; import com.codahale.metrics.Meter; import com.codahale.metrics.Timer; -import io.nosqlbench.api.config.NBLabeledElement; -import io.nosqlbench.api.errors.ExpectedResultVerificationError; +import io.nosqlbench.api.errors.ResultMismatchError; import io.nosqlbench.engine.api.activityapi.errorhandling.ErrorMetrics; import io.nosqlbench.engine.api.activityapi.errorhandling.modular.handlers.CountErrorHandler; import io.nosqlbench.engine.api.activityapi.errorhandling.modular.handlers.CounterErrorHandler; diff --git a/engine-api/src/test/java/io/nosqlbench/engine/api/activityapi/ratelimits/RateLimiterPerfTestMethods.java b/engine-api/src/test/java/io/nosqlbench/engine/api/activityapi/ratelimits/RateLimiterPerfTestMethods.java index 4dd1d7bb1..4843fc455 100644 --- a/engine-api/src/test/java/io/nosqlbench/engine/api/activityapi/ratelimits/RateLimiterPerfTestMethods.java +++ b/engine-api/src/test/java/io/nosqlbench/engine/api/activityapi/ratelimits/RateLimiterPerfTestMethods.java @@ -16,6 +16,7 @@ package io.nosqlbench.engine.api.activityapi.ratelimits; +import io.nosqlbench.engine.api.util.Colors; import io.nosqlbench.api.config.NBLabels; import io.nosqlbench.api.engine.metrics.DeltaHdrHistogramReservoir; import io.nosqlbench.api.testutils.Bounds; @@ -30,9 +31,6 @@ import java.util.concurrent.*; import java.util.function.Function; import java.util.stream.Collectors; -import static io.nosqlbench.engine.api.util.Colors.ANSI_Blue; -import static io.nosqlbench.engine.api.util.Colors.ANSI_Reset; - public class RateLimiterPerfTestMethods { // public Perf testFindOverheads(RateLimiter rl) { @@ -142,12 +140,12 @@ public class RateLimiterPerfTestMethods { System.out.println(rl); - System.out.println(ANSI_Blue + + System.out.println(Colors.ANSI_Blue + String.format( "spec: %s\n count: %9d, duration %.5fS, acquires/s %.3f, nanos/op: %f\n delay: %d (%.5fS)", rl.getRateSpec(), count, duration, acqops, 1_000_000_000.0d / acqops, divDelay, divDelay / 1_000_000_000.0d) + - ANSI_Reset); + Colors.ANSI_Reset); } diff --git a/engine-api/src/test/java/io/nosqlbench/engine/api/activityapi/ratelimits/TestHybridRateLimiterPerf.java b/engine-api/src/test/java/io/nosqlbench/engine/api/activityapi/ratelimits/TestHybridRateLimiterPerf.java index cd3e90cab..18692f880 100644 --- a/engine-api/src/test/java/io/nosqlbench/engine/api/activityapi/ratelimits/TestHybridRateLimiterPerf.java +++ b/engine-api/src/test/java/io/nosqlbench/engine/api/activityapi/ratelimits/TestHybridRateLimiterPerf.java @@ -19,7 +19,6 @@ package io.nosqlbench.engine.api.activityapi.ratelimits; import io.nosqlbench.api.config.NBLabeledElement; import io.nosqlbench.api.testutils.Perf; import io.nosqlbench.api.testutils.Result; -import io.nosqlbench.engine.api.activityapi.ratelimits.RateSpec.Verb; import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.Test; @@ -28,7 +27,7 @@ import java.util.function.Function; public class TestHybridRateLimiterPerf { - private final Function rlFunction = rs -> new HybridRateLimiter(NBLabeledElement.EMPTY,"hybrid", rs.withVerb(Verb.start)); + private final Function rlFunction = rs -> new HybridRateLimiter(NBLabeledElement.EMPTY,"hybrid", rs.withVerb(RateSpec.Verb.start)); private final RateLimiterPerfTestMethods methods = new RateLimiterPerfTestMethods(); @Test diff --git a/engine-api/src/test/java/io/nosqlbench/engine/api/activityapi/ratelimits/TestRateLimiterPerf1E7.java b/engine-api/src/test/java/io/nosqlbench/engine/api/activityapi/ratelimits/TestRateLimiterPerf1E7.java index a8c617549..1ffc378d3 100644 --- a/engine-api/src/test/java/io/nosqlbench/engine/api/activityapi/ratelimits/TestRateLimiterPerf1E7.java +++ b/engine-api/src/test/java/io/nosqlbench/engine/api/activityapi/ratelimits/TestRateLimiterPerf1E7.java @@ -18,7 +18,6 @@ package io.nosqlbench.engine.api.activityapi.ratelimits; import io.nosqlbench.api.config.NBLabeledElement; import io.nosqlbench.api.testutils.Perf; -import io.nosqlbench.engine.api.activityapi.ratelimits.RateSpec.Verb; import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.Test; @@ -33,7 +32,7 @@ import java.util.function.Function; */ public class TestRateLimiterPerf1E7 { - private final Function rlFunction = rs -> new HybridRateLimiter(NBLabeledElement.forKV("alias","tokenrl"),"hybrid", rs.withVerb(Verb.configure)); + private final Function rlFunction = rs -> new HybridRateLimiter(NBLabeledElement.forKV("alias","tokenrl"),"hybrid", rs.withVerb(RateSpec.Verb.configure)); private final RateLimiterPerfTestMethods methods = new RateLimiterPerfTestMethods(); // 160 threads at 10_000_000 ops/s diff --git a/engine-api/src/test/java/io/nosqlbench/engine/api/activityapi/ratelimits/TestRateLimiterPerf1E8.java b/engine-api/src/test/java/io/nosqlbench/engine/api/activityapi/ratelimits/TestRateLimiterPerf1E8.java index 54e5568a5..6534afbbb 100644 --- a/engine-api/src/test/java/io/nosqlbench/engine/api/activityapi/ratelimits/TestRateLimiterPerf1E8.java +++ b/engine-api/src/test/java/io/nosqlbench/engine/api/activityapi/ratelimits/TestRateLimiterPerf1E8.java @@ -18,7 +18,6 @@ package io.nosqlbench.engine.api.activityapi.ratelimits; import io.nosqlbench.api.config.NBLabeledElement; import io.nosqlbench.api.testutils.Perf; -import io.nosqlbench.engine.api.activityapi.ratelimits.RateSpec.Verb; import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.Test; @@ -39,7 +38,7 @@ public class TestRateLimiterPerf1E8 { rs -> new HybridRateLimiter( this.def, "hybrid", - rs.withVerb(Verb.configure) + rs.withVerb(RateSpec.Verb.configure) ); private final RateLimiterPerfTestMethods methods = new RateLimiterPerfTestMethods(); diff --git a/engine-api/src/test/java/io/nosqlbench/engine/api/activityapi/ratelimits/TestRateLimiterPerfSingle.java b/engine-api/src/test/java/io/nosqlbench/engine/api/activityapi/ratelimits/TestRateLimiterPerfSingle.java index 5f36b5afc..4f08715e9 100644 --- a/engine-api/src/test/java/io/nosqlbench/engine/api/activityapi/ratelimits/TestRateLimiterPerfSingle.java +++ b/engine-api/src/test/java/io/nosqlbench/engine/api/activityapi/ratelimits/TestRateLimiterPerfSingle.java @@ -18,7 +18,6 @@ package io.nosqlbench.engine.api.activityapi.ratelimits; import io.nosqlbench.api.config.NBLabeledElement; import io.nosqlbench.api.testutils.Result; -import io.nosqlbench.engine.api.activityapi.ratelimits.RateSpec.Verb; import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.Test; @@ -33,7 +32,7 @@ import java.util.function.Function; */ public class TestRateLimiterPerfSingle { - private final Function rlFunction = rs -> new HybridRateLimiter(NBLabeledElement.forKV("alias","tokenrl"),"hybrid", rs.withVerb(Verb.start)); + private final Function rlFunction = rs -> new HybridRateLimiter(NBLabeledElement.forKV("alias","tokenrl"),"hybrid", rs.withVerb(RateSpec.Verb.start)); private final RateLimiterPerfTestMethods methods = new RateLimiterPerfTestMethods(); @Test diff --git a/engine-api/src/test/java/io/nosqlbench/engine/api/activityimpl/marker/ByteTrackerExtentTest.java b/engine-api/src/test/java/io/nosqlbench/engine/api/activityimpl/marker/ByteTrackerExtentTest.java index 0abc67a5c..18f8e01e6 100644 --- a/engine-api/src/test/java/io/nosqlbench/engine/api/activityimpl/marker/ByteTrackerExtentTest.java +++ b/engine-api/src/test/java/io/nosqlbench/engine/api/activityimpl/marker/ByteTrackerExtentTest.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. @@ -16,8 +16,8 @@ package io.nosqlbench.engine.api.activityimpl.marker; -import io.nosqlbench.engine.api.activityapi.cyclelog.buffers.results.CycleResult; import io.nosqlbench.engine.api.activityapi.cyclelog.buffers.results.CycleResultsSegment; +import io.nosqlbench.engine.api.activityapi.cyclelog.buffers.results.CycleResult; import org.junit.jupiter.api.Test; import java.util.ArrayList; diff --git a/engine-api/src/test/java/io/nosqlbench/engine/api/activityimpl/marker/CoreOutputTest.java b/engine-api/src/test/java/io/nosqlbench/engine/api/activityimpl/marker/CoreOutputTest.java index 890c32110..ea8830f95 100644 --- a/engine-api/src/test/java/io/nosqlbench/engine/api/activityimpl/marker/CoreOutputTest.java +++ b/engine-api/src/test/java/io/nosqlbench/engine/api/activityimpl/marker/CoreOutputTest.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. @@ -16,10 +16,11 @@ package io.nosqlbench.engine.api.activityimpl.marker; -import io.nosqlbench.engine.api.activityapi.cyclelog.buffers.results.CycleResult; import io.nosqlbench.engine.api.activityapi.cyclelog.buffers.results.CycleResultSegmentBuffer; import io.nosqlbench.engine.api.activityapi.cyclelog.buffers.results.CycleResultsSegment; +import io.nosqlbench.engine.api.activityapi.cyclelog.buffers.results.CycleResult; import io.nosqlbench.engine.api.activityapi.output.Output; +import org.assertj.core.api.Assertions; import org.junit.jupiter.api.Test; import java.util.ArrayList; @@ -39,7 +40,7 @@ public class CoreOutputTest { ct4.onCycleResult(1,1); ct4.onCycleResult(2,2); ct4.onCycleResult(3,3); - assertThat(r.segments).hasSize(1); + Assertions.assertThat(r.segments).hasSize(1); long[] cycles = StreamSupport.stream(r.segments.get(0).spliterator(), false) .mapToLong(CycleResult::getCycle).toArray(); diff --git a/engine-api/src/test/java/io/nosqlbench/engine/api/clireader/CLITest.java b/engine-api/src/test/java/io/nosqlbench/engine/api/clireader/CLITest.java index fb8346dfe..77999b184 100644 --- a/engine-api/src/test/java/io/nosqlbench/engine/api/clireader/CLITest.java +++ b/engine-api/src/test/java/io/nosqlbench/engine/api/clireader/CLITest.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. @@ -18,8 +18,6 @@ package io.nosqlbench.engine.api.clireader; import org.junit.jupiter.api.Test; -import static org.assertj.core.api.Assertions.assertThat; - class CLITest { @Test diff --git a/engine-api/src/test/java/io/nosqlbench/engine/api/templating/CommandTemplateTest.java b/engine-api/src/test/java/io/nosqlbench/engine/api/templating/CommandTemplateTest.java index 29b49ebfa..43141779b 100644 --- a/engine-api/src/test/java/io/nosqlbench/engine/api/templating/CommandTemplateTest.java +++ b/engine-api/src/test/java/io/nosqlbench/engine/api/templating/CommandTemplateTest.java @@ -18,10 +18,11 @@ package io.nosqlbench.engine.api.templating; import com.google.gson.Gson; import com.google.gson.GsonBuilder; -import io.nosqlbench.engine.api.activityconfig.OpsLoader; -import io.nosqlbench.engine.api.activityconfig.yaml.OpTemplate; -import io.nosqlbench.engine.api.activityconfig.yaml.OpTemplateFormat; -import io.nosqlbench.engine.api.activityconfig.yaml.OpsDocList; +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; @@ -35,8 +36,7 @@ public class CommandTemplateTest { @Test public void testCommandTemplate() { - OpsDocList opsDocs = OpsLoader.loadString("" + - "ops:\n" + + OpsDocList opsDocs = OpsLoader.loadString("ops:\n" + " - s1: test1=foo test2=bar", OpTemplateFormat.yaml, Map.of(), null); OpTemplate optpl = opsDocs.getOps().get(0); @@ -47,8 +47,7 @@ public class CommandTemplateTest { @Test public void testCommandTemplateFormat() { Gson gson = new GsonBuilder().setPrettyPrinting().create(); - OpsDocList stmtsDocs = OpsLoader.loadString("" + - "ops:\n" + + OpsDocList stmtsDocs = OpsLoader.loadString("ops:\n" + " - s1: test1=foo test2={bar}\n" + " bindings:\n" + " bar: NumberNameToString();\n", From f53f52efa4332f524b74bb7f3e37d117b8470169 Mon Sep 17 00:00:00 2001 From: Jonathan Shook Date: Tue, 25 Jul 2023 11:50:44 -0500 Subject: [PATCH 07/14] pinecone adapter updates for vector branch --- .../pinecone/PineconeDriverAdapter.java | 8 ++--- .../adapter/pinecone/PineconeOpMapper.java | 8 ++--- .../PineconeDeleteOpDispenser.java | 2 +- ...PineconeDescribeIndexStatsOpDispenser.java | 2 +- .../PineconeFetchOpDispenser.java | 2 +- .../opdispensers/PineconeOpDispenser.java | 4 +-- .../PineconeQueryOpDispenser.java | 2 +- .../PineconeUpdateOpDispenser.java | 2 +- .../PineconeUpsertOpDispenser.java | 2 +- .../pinecone/ops/PineconeDeleteOp.java | 5 +-- .../ops/PineconeDescribeIndexStatsOp.java | 8 ++--- .../adapter/pinecone/ops/PineconeFetchOp.java | 5 +-- .../adapter/pinecone/ops/PineconeOp.java | 4 +-- .../adapter/pinecone/ops/PineconeQueryOp.java | 5 +-- .../pinecone/ops/PineconeUpdateOp.java | 5 +-- .../pinecone/ops/PineconeUpsertOp.java | 6 ++-- .../resources/activities/pinecone-verify.yaml | 36 +++++++++++++++++++ .../pinecone/PineconeOpMapperTest.java | 14 ++++---- 18 files changed, 81 insertions(+), 39 deletions(-) create mode 100644 adapter-pinecone/src/main/resources/activities/pinecone-verify.yaml 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 962a1dcb2..122840172 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 @@ -19,10 +19,10 @@ package io.nosqlbench.adapter.pinecone; import io.nosqlbench.adapter.pinecone.ops.PineconeOp; import io.nosqlbench.api.config.standard.NBConfigModel; import io.nosqlbench.api.config.standard.NBConfiguration; -import io.nosqlbench.engine.api.activityimpl.OpMapper; -import io.nosqlbench.engine.api.activityimpl.uniform.BaseDriverAdapter; -import io.nosqlbench.engine.api.activityimpl.uniform.DriverAdapter; -import io.nosqlbench.engine.api.activityimpl.uniform.DriverSpaceCache; +import io.nosqlbench.adapters.api.activityimpl.OpMapper; +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.annotations.Service; import java.util.function.Function; diff --git a/adapter-pinecone/src/main/java/io/nosqlbench/adapter/pinecone/PineconeOpMapper.java b/adapter-pinecone/src/main/java/io/nosqlbench/adapter/pinecone/PineconeOpMapper.java index cb3b5e91c..101e38d76 100644 --- a/adapter-pinecone/src/main/java/io/nosqlbench/adapter/pinecone/PineconeOpMapper.java +++ b/adapter-pinecone/src/main/java/io/nosqlbench/adapter/pinecone/PineconeOpMapper.java @@ -20,10 +20,10 @@ import io.nosqlbench.adapter.pinecone.opdispensers.*; import io.nosqlbench.adapter.pinecone.ops.PineconeOp; import io.nosqlbench.adapter.pinecone.ops.PineconeOpTypes; import io.nosqlbench.api.config.standard.NBConfiguration; -import io.nosqlbench.engine.api.activityimpl.OpDispenser; -import io.nosqlbench.engine.api.activityimpl.OpMapper; -import io.nosqlbench.engine.api.activityimpl.uniform.DriverSpaceCache; -import io.nosqlbench.engine.api.templating.ParsedOp; +import io.nosqlbench.adapters.api.activityimpl.OpDispenser; +import io.nosqlbench.adapters.api.activityimpl.OpMapper; +import io.nosqlbench.adapters.api.activityimpl.uniform.DriverSpaceCache; +import io.nosqlbench.adapters.api.templating.ParsedOp; import io.nosqlbench.engine.api.templating.TypeAndTarget; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; diff --git a/adapter-pinecone/src/main/java/io/nosqlbench/adapter/pinecone/opdispensers/PineconeDeleteOpDispenser.java b/adapter-pinecone/src/main/java/io/nosqlbench/adapter/pinecone/opdispensers/PineconeDeleteOpDispenser.java index 47fdf0eeb..7460d9074 100644 --- a/adapter-pinecone/src/main/java/io/nosqlbench/adapter/pinecone/opdispensers/PineconeDeleteOpDispenser.java +++ b/adapter-pinecone/src/main/java/io/nosqlbench/adapter/pinecone/opdispensers/PineconeDeleteOpDispenser.java @@ -21,7 +21,7 @@ import io.nosqlbench.adapter.pinecone.PineconeDriverAdapter; import io.nosqlbench.adapter.pinecone.PineconeSpace; import io.nosqlbench.adapter.pinecone.ops.PineconeDeleteOp; import io.nosqlbench.adapter.pinecone.ops.PineconeOp; -import io.nosqlbench.engine.api.templating.ParsedOp; +import io.nosqlbench.adapters.api.templating.ParsedOp; import io.pinecone.proto.DeleteRequest; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; diff --git a/adapter-pinecone/src/main/java/io/nosqlbench/adapter/pinecone/opdispensers/PineconeDescribeIndexStatsOpDispenser.java b/adapter-pinecone/src/main/java/io/nosqlbench/adapter/pinecone/opdispensers/PineconeDescribeIndexStatsOpDispenser.java index e62fafc58..e472d1ee8 100644 --- a/adapter-pinecone/src/main/java/io/nosqlbench/adapter/pinecone/opdispensers/PineconeDescribeIndexStatsOpDispenser.java +++ b/adapter-pinecone/src/main/java/io/nosqlbench/adapter/pinecone/opdispensers/PineconeDescribeIndexStatsOpDispenser.java @@ -21,7 +21,7 @@ import io.nosqlbench.adapter.pinecone.PineconeDriverAdapter; import io.nosqlbench.adapter.pinecone.PineconeSpace; import io.nosqlbench.adapter.pinecone.ops.PineconeDescribeIndexStatsOp; import io.nosqlbench.adapter.pinecone.ops.PineconeOp; -import io.nosqlbench.engine.api.templating.ParsedOp; +import io.nosqlbench.adapters.api.templating.ParsedOp; import io.pinecone.proto.DescribeIndexStatsRequest; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; diff --git a/adapter-pinecone/src/main/java/io/nosqlbench/adapter/pinecone/opdispensers/PineconeFetchOpDispenser.java b/adapter-pinecone/src/main/java/io/nosqlbench/adapter/pinecone/opdispensers/PineconeFetchOpDispenser.java index 2bcbfaa41..7c1d042e4 100644 --- a/adapter-pinecone/src/main/java/io/nosqlbench/adapter/pinecone/opdispensers/PineconeFetchOpDispenser.java +++ b/adapter-pinecone/src/main/java/io/nosqlbench/adapter/pinecone/opdispensers/PineconeFetchOpDispenser.java @@ -20,7 +20,7 @@ import io.nosqlbench.adapter.pinecone.PineconeDriverAdapter; import io.nosqlbench.adapter.pinecone.PineconeSpace; import io.nosqlbench.adapter.pinecone.ops.PineconeFetchOp; import io.nosqlbench.adapter.pinecone.ops.PineconeOp; -import io.nosqlbench.engine.api.templating.ParsedOp; +import io.nosqlbench.adapters.api.templating.ParsedOp; import io.pinecone.proto.FetchRequest; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; diff --git a/adapter-pinecone/src/main/java/io/nosqlbench/adapter/pinecone/opdispensers/PineconeOpDispenser.java b/adapter-pinecone/src/main/java/io/nosqlbench/adapter/pinecone/opdispensers/PineconeOpDispenser.java index 5a2c3d4c8..de327e264 100644 --- a/adapter-pinecone/src/main/java/io/nosqlbench/adapter/pinecone/opdispensers/PineconeOpDispenser.java +++ b/adapter-pinecone/src/main/java/io/nosqlbench/adapter/pinecone/opdispensers/PineconeOpDispenser.java @@ -22,8 +22,8 @@ import com.google.protobuf.Value; import io.nosqlbench.adapter.pinecone.PineconeDriverAdapter; import io.nosqlbench.adapter.pinecone.PineconeSpace; import io.nosqlbench.adapter.pinecone.ops.PineconeOp; -import io.nosqlbench.engine.api.activityimpl.BaseOpDispenser; -import io.nosqlbench.engine.api.templating.ParsedOp; +import io.nosqlbench.adapters.api.activityimpl.BaseOpDispenser; +import io.nosqlbench.adapters.api.templating.ParsedOp; import java.util.ArrayList; import java.util.HashMap; diff --git a/adapter-pinecone/src/main/java/io/nosqlbench/adapter/pinecone/opdispensers/PineconeQueryOpDispenser.java b/adapter-pinecone/src/main/java/io/nosqlbench/adapter/pinecone/opdispensers/PineconeQueryOpDispenser.java index c537016b4..745c69bef 100644 --- a/adapter-pinecone/src/main/java/io/nosqlbench/adapter/pinecone/opdispensers/PineconeQueryOpDispenser.java +++ b/adapter-pinecone/src/main/java/io/nosqlbench/adapter/pinecone/opdispensers/PineconeQueryOpDispenser.java @@ -21,7 +21,7 @@ import io.nosqlbench.adapter.pinecone.PineconeDriverAdapter; import io.nosqlbench.adapter.pinecone.PineconeSpace; import io.nosqlbench.adapter.pinecone.ops.PineconeOp; import io.nosqlbench.adapter.pinecone.ops.PineconeQueryOp; -import io.nosqlbench.engine.api.templating.ParsedOp; +import io.nosqlbench.adapters.api.templating.ParsedOp; import io.pinecone.proto.QueryRequest; import io.pinecone.proto.QueryVector; import io.pinecone.proto.SparseValues; diff --git a/adapter-pinecone/src/main/java/io/nosqlbench/adapter/pinecone/opdispensers/PineconeUpdateOpDispenser.java b/adapter-pinecone/src/main/java/io/nosqlbench/adapter/pinecone/opdispensers/PineconeUpdateOpDispenser.java index e38d8cd93..cd55b50f9 100644 --- a/adapter-pinecone/src/main/java/io/nosqlbench/adapter/pinecone/opdispensers/PineconeUpdateOpDispenser.java +++ b/adapter-pinecone/src/main/java/io/nosqlbench/adapter/pinecone/opdispensers/PineconeUpdateOpDispenser.java @@ -21,7 +21,7 @@ import io.nosqlbench.adapter.pinecone.PineconeDriverAdapter; import io.nosqlbench.adapter.pinecone.PineconeSpace; import io.nosqlbench.adapter.pinecone.ops.PineconeOp; import io.nosqlbench.adapter.pinecone.ops.PineconeUpdateOp; -import io.nosqlbench.engine.api.templating.ParsedOp; +import io.nosqlbench.adapters.api.templating.ParsedOp; import io.pinecone.proto.SparseValues; import io.pinecone.proto.UpdateRequest; import org.apache.logging.log4j.LogManager; diff --git a/adapter-pinecone/src/main/java/io/nosqlbench/adapter/pinecone/opdispensers/PineconeUpsertOpDispenser.java b/adapter-pinecone/src/main/java/io/nosqlbench/adapter/pinecone/opdispensers/PineconeUpsertOpDispenser.java index 033929b99..adc4636fb 100644 --- a/adapter-pinecone/src/main/java/io/nosqlbench/adapter/pinecone/opdispensers/PineconeUpsertOpDispenser.java +++ b/adapter-pinecone/src/main/java/io/nosqlbench/adapter/pinecone/opdispensers/PineconeUpsertOpDispenser.java @@ -21,7 +21,7 @@ import io.nosqlbench.adapter.pinecone.PineconeDriverAdapter; import io.nosqlbench.adapter.pinecone.PineconeSpace; import io.nosqlbench.adapter.pinecone.ops.PineconeOp; import io.nosqlbench.adapter.pinecone.ops.PineconeUpsertOp; -import io.nosqlbench.engine.api.templating.ParsedOp; +import io.nosqlbench.adapters.api.templating.ParsedOp; import io.pinecone.proto.SparseValues; import io.pinecone.proto.UpsertRequest; import io.pinecone.proto.Vector; diff --git a/adapter-pinecone/src/main/java/io/nosqlbench/adapter/pinecone/ops/PineconeDeleteOp.java b/adapter-pinecone/src/main/java/io/nosqlbench/adapter/pinecone/ops/PineconeDeleteOp.java index c7ccde330..b46284d79 100644 --- a/adapter-pinecone/src/main/java/io/nosqlbench/adapter/pinecone/ops/PineconeDeleteOp.java +++ b/adapter-pinecone/src/main/java/io/nosqlbench/adapter/pinecone/ops/PineconeDeleteOp.java @@ -16,7 +16,7 @@ package io.nosqlbench.adapter.pinecone.ops; -import io.nosqlbench.engine.api.templating.ParsedOp; +import io.nosqlbench.adapters.api.templating.ParsedOp; import io.pinecone.PineconeConnection; import io.pinecone.proto.DeleteRequest; import io.pinecone.proto.DeleteResponse; @@ -41,8 +41,9 @@ public class PineconeDeleteOp extends PineconeOp { } @Override - public void run() { + public Object apply(long value) { DeleteResponse response = connection.getBlockingStub().delete(request); logger.debug("Pinecone delete request successful: " + response.toString()); + return response; } } diff --git a/adapter-pinecone/src/main/java/io/nosqlbench/adapter/pinecone/ops/PineconeDescribeIndexStatsOp.java b/adapter-pinecone/src/main/java/io/nosqlbench/adapter/pinecone/ops/PineconeDescribeIndexStatsOp.java index da9f0b97d..549c05357 100644 --- a/adapter-pinecone/src/main/java/io/nosqlbench/adapter/pinecone/ops/PineconeDescribeIndexStatsOp.java +++ b/adapter-pinecone/src/main/java/io/nosqlbench/adapter/pinecone/ops/PineconeDescribeIndexStatsOp.java @@ -16,7 +16,7 @@ package io.nosqlbench.adapter.pinecone.ops; -import io.nosqlbench.engine.api.templating.ParsedOp; +import io.nosqlbench.adapters.api.templating.ParsedOp; import io.pinecone.proto.DescribeIndexStatsRequest; import io.pinecone.proto.DescribeIndexStatsResponse; import io.pinecone.PineconeConnection; @@ -43,8 +43,8 @@ public class PineconeDescribeIndexStatsOp extends PineconeOp { this.request = request; } - @Override - public void run() { + @Override + public Object apply(long value) { DescribeIndexStatsResponse response = connection.getBlockingStub().describeIndexStats(request); if (logger.isDebugEnabled()) { logger.debug("Vector counts:"); @@ -52,6 +52,6 @@ public class PineconeDescribeIndexStatsOp extends PineconeOp { logger.debug(namespace.getKey() + ": " + namespace.getValue().getVectorCount()); } } + return response; } - } diff --git a/adapter-pinecone/src/main/java/io/nosqlbench/adapter/pinecone/ops/PineconeFetchOp.java b/adapter-pinecone/src/main/java/io/nosqlbench/adapter/pinecone/ops/PineconeFetchOp.java index a5d11264e..06ebd7bdb 100644 --- a/adapter-pinecone/src/main/java/io/nosqlbench/adapter/pinecone/ops/PineconeFetchOp.java +++ b/adapter-pinecone/src/main/java/io/nosqlbench/adapter/pinecone/ops/PineconeFetchOp.java @@ -16,7 +16,7 @@ package io.nosqlbench.adapter.pinecone.ops; -import io.nosqlbench.engine.api.templating.ParsedOp; +import io.nosqlbench.adapters.api.templating.ParsedOp; import io.pinecone.proto.FetchRequest; import io.pinecone.PineconeConnection; import io.pinecone.proto.FetchResponse; @@ -44,12 +44,13 @@ public class PineconeFetchOp extends PineconeOp { } @Override - public void run() { + public Object apply(long value) { FetchResponse response = connection.getBlockingStub().fetch(request); if (logger.isDebugEnabled()) { for (Map.Entry vectors: response.getVectorsMap().entrySet()) { logger.debug(vectors.getKey() + ": " + vectors.getValue().toString()); } } + return response; } } diff --git a/adapter-pinecone/src/main/java/io/nosqlbench/adapter/pinecone/ops/PineconeOp.java b/adapter-pinecone/src/main/java/io/nosqlbench/adapter/pinecone/ops/PineconeOp.java index cefd6fb56..18b76ad39 100644 --- a/adapter-pinecone/src/main/java/io/nosqlbench/adapter/pinecone/ops/PineconeOp.java +++ b/adapter-pinecone/src/main/java/io/nosqlbench/adapter/pinecone/ops/PineconeOp.java @@ -16,10 +16,10 @@ package io.nosqlbench.adapter.pinecone.ops; -import io.nosqlbench.engine.api.activityimpl.uniform.flowtypes.RunnableOp; +import io.nosqlbench.adapters.api.activityimpl.uniform.flowtypes.CycleOp; import io.pinecone.PineconeConnection; -public abstract class PineconeOp implements RunnableOp { +public abstract class PineconeOp implements CycleOp { protected final PineconeConnection connection; public PineconeOp(PineconeConnection connection) { diff --git a/adapter-pinecone/src/main/java/io/nosqlbench/adapter/pinecone/ops/PineconeQueryOp.java b/adapter-pinecone/src/main/java/io/nosqlbench/adapter/pinecone/ops/PineconeQueryOp.java index 2f1572829..117bf5f04 100644 --- a/adapter-pinecone/src/main/java/io/nosqlbench/adapter/pinecone/ops/PineconeQueryOp.java +++ b/adapter-pinecone/src/main/java/io/nosqlbench/adapter/pinecone/ops/PineconeQueryOp.java @@ -16,7 +16,7 @@ package io.nosqlbench.adapter.pinecone.ops; -import io.nosqlbench.engine.api.templating.ParsedOp; +import io.nosqlbench.adapters.api.templating.ParsedOp; import io.pinecone.proto.QueryRequest; import io.pinecone.PineconeConnection; import io.pinecone.proto.QueryResponse; @@ -43,7 +43,7 @@ public class PineconeQueryOp extends PineconeOp { } @Override - public void run() { + public Object apply(long value) { QueryResponse response = connection.getBlockingStub().query(request); if (logger.isDebugEnabled()) { for (ScoredVector scored : response.getMatchesList()) { @@ -55,5 +55,6 @@ public class PineconeQueryOp extends PineconeOp { } } } + return response; } } diff --git a/adapter-pinecone/src/main/java/io/nosqlbench/adapter/pinecone/ops/PineconeUpdateOp.java b/adapter-pinecone/src/main/java/io/nosqlbench/adapter/pinecone/ops/PineconeUpdateOp.java index d1ead4efd..86740d726 100644 --- a/adapter-pinecone/src/main/java/io/nosqlbench/adapter/pinecone/ops/PineconeUpdateOp.java +++ b/adapter-pinecone/src/main/java/io/nosqlbench/adapter/pinecone/ops/PineconeUpdateOp.java @@ -16,7 +16,7 @@ package io.nosqlbench.adapter.pinecone.ops; -import io.nosqlbench.engine.api.templating.ParsedOp; +import io.nosqlbench.adapters.api.templating.ParsedOp; import io.pinecone.proto.UpdateRequest; import io.pinecone.PineconeConnection; import io.pinecone.proto.UpdateResponse; @@ -41,8 +41,9 @@ public class PineconeUpdateOp extends PineconeOp { } @Override - public void run() { + public Object apply(long value) { UpdateResponse response = connection.getBlockingStub().update(request); logger.debug("UpdateResponse successful: " + response.toString()); + return response; } } diff --git a/adapter-pinecone/src/main/java/io/nosqlbench/adapter/pinecone/ops/PineconeUpsertOp.java b/adapter-pinecone/src/main/java/io/nosqlbench/adapter/pinecone/ops/PineconeUpsertOp.java index b17e4f12b..eb286916a 100644 --- a/adapter-pinecone/src/main/java/io/nosqlbench/adapter/pinecone/ops/PineconeUpsertOp.java +++ b/adapter-pinecone/src/main/java/io/nosqlbench/adapter/pinecone/ops/PineconeUpsertOp.java @@ -16,7 +16,7 @@ package io.nosqlbench.adapter.pinecone.ops; -import io.nosqlbench.engine.api.templating.ParsedOp; +import io.nosqlbench.adapters.api.templating.ParsedOp; import io.pinecone.proto.UpsertRequest; import io.pinecone.PineconeConnection; import io.pinecone.proto.UpsertResponse; @@ -41,8 +41,10 @@ public class PineconeUpsertOp extends PineconeOp { } @Override - public void run() { + public Object apply(long value) { UpsertResponse response = connection.getBlockingStub().upsert(request); logger.debug("Put " + response.getUpsertedCount() + " vectors into the index"); + return response; } + } diff --git a/adapter-pinecone/src/main/resources/activities/pinecone-verify.yaml b/adapter-pinecone/src/main/resources/activities/pinecone-verify.yaml new file mode 100644 index 000000000..6d6d78d1a --- /dev/null +++ b/adapter-pinecone/src/main/resources/activities/pinecone-verify.yaml @@ -0,0 +1,36 @@ +scenarios: + default: + mixed: run driver=pinecone cycles=1000 apiKey=2f55b2f0-670f-4c51-9073-4d37142b761a projectName=a850334 environment=us-east-1-aws tags='block:main-.*' + +bindings: + id: Mod(<>); ToString() -> String + vector_value: CircleVectors(100000, "io.nosqlbench.virtdata.library.basics.shared.vectors.algorithms.GoldenAngle") + state: StateCodes() + +blocks: +# main-write: +# params: +# ratio: 1 +# ops: +# op1: +# upsert: "circles" +# namespace: "example_namespace" +# upsert_vectors: +# - id: "{id}" +# values: "{vector_value}" +# metadata: +# state: "{state}" + main-read: + params: + ratio: 1 + ops: + op1: + query: "circles" + vector: "{vector_value}" + namespace: "example_namespace" + top_k: 1 + include_values: true + include_metadata: true + #result should be type QueryResponse + verifier: | + result.getMatchesList().get(0).getValuesList()=={vector_value} diff --git a/adapter-pinecone/src/test/java/io/nosqlbench/adapter/pinecone/PineconeOpMapperTest.java b/adapter-pinecone/src/test/java/io/nosqlbench/adapter/pinecone/PineconeOpMapperTest.java index 77f55260b..14b250c4b 100644 --- a/adapter-pinecone/src/test/java/io/nosqlbench/adapter/pinecone/PineconeOpMapperTest.java +++ b/adapter-pinecone/src/test/java/io/nosqlbench/adapter/pinecone/PineconeOpMapperTest.java @@ -20,13 +20,13 @@ import io.nosqlbench.adapter.pinecone.opdispensers.*; import io.nosqlbench.adapter.pinecone.ops.*; import io.nosqlbench.api.config.NBLabeledElement; import io.nosqlbench.api.config.standard.NBConfiguration; -import io.nosqlbench.engine.api.activityconfig.OpsLoader; -import io.nosqlbench.engine.api.activityconfig.yaml.OpTemplate; -import io.nosqlbench.engine.api.activityconfig.yaml.OpTemplateFormat; -import io.nosqlbench.engine.api.activityconfig.yaml.OpsDocList; -import io.nosqlbench.engine.api.activityimpl.OpDispenser; -import io.nosqlbench.engine.api.activityimpl.uniform.DriverSpaceCache; -import io.nosqlbench.engine.api.templating.ParsedOp; +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.activityimpl.OpDispenser; +import io.nosqlbench.adapters.api.activityimpl.uniform.DriverSpaceCache; +import io.nosqlbench.adapters.api.templating.ParsedOp; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.junit.jupiter.api.BeforeAll; From ed4f620a858aa49715a61dac6831fa506968aa1f Mon Sep 17 00:00:00 2001 From: Jonathan Shook Date: Tue, 25 Jul 2023 11:50:47 -0500 Subject: [PATCH 08/14] cqld4 adapter updates for vector branch --- adapter-cqld4/pom.xml | 9 ++- .../adapter/cqld4/CqlDriverAdapterStub.java | 4 +- .../adapter/cqld4/Cqld4DriverAdapter.java | 12 ++-- .../adapter/cqld4/RSProcessors.java | 4 +- .../adapter/cqld4/ResultSetProcessor.java | 4 +- .../CQLD4PreparedStmtDiagnostics.java | 58 +++++++++++------- .../CqlD4RainbowTableDispenser.java | 6 +- .../opdispensers/Cqld4BaseOpDispenser.java | 6 +- .../Cqld4FluentGraphOpDispenser.java | 10 ++-- .../opdispensers/Cqld4GremlinOpDispenser.java | 8 +-- .../Cqld4PreparedStmtDispenser.java | 5 +- .../opdispensers/Cqld4RawStmtDispenser.java | 4 +- .../Cqld4SimpleCqlStmtDispenser.java | 4 +- .../opdispensers/Cqld4SsTableDispenser.java | 4 +- .../opmappers/CqlD4CqlSimpleStmtMapper.java | 10 ++-- .../opmappers/CqlD4PreparedStmtMapper.java | 8 +-- .../opmappers/CqlD4RainbowTableMapper.java | 10 ++-- .../cqld4/opmappers/CqlD4RawStmtMapper.java | 10 ++-- .../cqld4/opmappers/Cqld4CoreOpMapper.java | 14 ++--- .../opmappers/Cqld4FluentGraphOpMapper.java | 10 ++-- .../cqld4/opmappers/Cqld4GremlinOpMapper.java | 10 ++-- .../adapter/cqld4/optypes/Cqld4CqlOp.java | 2 +- .../cqld4/optypes/Cqld4FluentGraphOp.java | 6 +- .../cqld4/optypes/Cqld4RainbowTableOp.java | 4 +- .../cqld4/optypes/Cqld4ScriptGraphOp.java | 6 +- .../cqlgen/core/CGDefaultCqlBindings.java | 4 +- .../geometry/NormalizeCqlVector.java | 47 ++++++--------- .../functions/to_cqlvector/CqlVector.java | 5 +- .../functions/to_cqlvector/ToCqlVector.java | 53 ---------------- .../from_double_ary/ToCqlVector.java | 38 ++++++++++++ .../from_float_ary/ToCqlVector.java | 38 ++++++++++++ .../from_number_list/ToCqlVector.java | 38 ++++++++++++ .../geometry/NormalizeCqlVectorTest.java | 60 +++++++++++++++++++ .../functions/to_cqlvector/CqlVectorTest.java | 15 ++--- .../to_cqlvector/ToCqlVectorTest.java | 1 + 35 files changed, 324 insertions(+), 203 deletions(-) rename adapter-cqld4/src/main/java/io/nosqlbench/adapter/cqld4/{opdispensers => diagnostics}/CQLD4PreparedStmtDiagnostics.java (76%) delete mode 100644 adapter-cqld4/src/main/java/io/nosqlbench/datamappers/functions/to_cqlvector/ToCqlVector.java create mode 100644 adapter-cqld4/src/main/java/io/nosqlbench/datamappers/functions/to_cqlvector/from_double_ary/ToCqlVector.java create mode 100644 adapter-cqld4/src/main/java/io/nosqlbench/datamappers/functions/to_cqlvector/from_float_ary/ToCqlVector.java create mode 100644 adapter-cqld4/src/main/java/io/nosqlbench/datamappers/functions/to_cqlvector/from_number_list/ToCqlVector.java create mode 100644 adapter-cqld4/src/test/java/io/nosqlbench/datamappers/functions/geometry/NormalizeCqlVectorTest.java diff --git a/adapter-cqld4/pom.xml b/adapter-cqld4/pom.xml index eb4a2027a..5d6631b5c 100644 --- a/adapter-cqld4/pom.xml +++ b/adapter-cqld4/pom.xml @@ -42,9 +42,8 @@ - org.codehaus.groovy + org.apache.groovy groovy - 3.0.17 @@ -61,13 +60,13 @@ com.datastax.oss java-driver-core - 4.16.0 + 4.17.0 com.datastax.oss java-driver-query-builder - 4.16.0 + 4.17.0 @@ -100,7 +99,7 @@ org.antlr antlr4-maven-plugin - 4.12.0 + 4.13.0 src/main/java/io/nosqlbench/cqlgen/grammars 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 39e0a3592..b8a4ebe52 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 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. @@ -16,7 +16,7 @@ package io.nosqlbench.adapter.cqld4; -import io.nosqlbench.engine.api.activityimpl.uniform.DriverAdapter; +import io.nosqlbench.adapters.api.activityimpl.uniform.DriverAdapter; 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 9a23965d4..cc1eddfcc 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 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. @@ -19,11 +19,11 @@ package io.nosqlbench.adapter.cqld4; import io.nosqlbench.adapter.cqld4.opmappers.Cqld4CoreOpMapper; import io.nosqlbench.api.config.standard.NBConfigModel; import io.nosqlbench.api.config.standard.NBConfiguration; -import io.nosqlbench.engine.api.activityimpl.OpMapper; -import io.nosqlbench.engine.api.activityimpl.uniform.BaseDriverAdapter; -import io.nosqlbench.engine.api.activityimpl.uniform.DriverAdapter; -import io.nosqlbench.engine.api.activityimpl.uniform.DriverSpaceCache; -import io.nosqlbench.engine.api.activityimpl.uniform.flowtypes.Op; +import io.nosqlbench.adapters.api.activityimpl.OpMapper; +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.adapters.api.activityimpl.uniform.flowtypes.Op; 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/RSProcessors.java b/adapter-cqld4/src/main/java/io/nosqlbench/adapter/cqld4/RSProcessors.java index 25b98f15d..ffe9c46bf 100644 --- a/adapter-cqld4/src/main/java/io/nosqlbench/adapter/cqld4/RSProcessors.java +++ b/adapter-cqld4/src/main/java/io/nosqlbench/adapter/cqld4/RSProcessors.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. @@ -18,7 +18,7 @@ package io.nosqlbench.adapter.cqld4; import com.datastax.oss.driver.api.core.cql.ResultSet; import com.datastax.oss.driver.api.core.cql.Row; -import io.nosqlbench.engine.api.activityimpl.uniform.ResultProcessor; +import io.nosqlbench.adapters.api.activityimpl.uniform.ResultProcessor; import java.util.ArrayList; import java.util.List; diff --git a/adapter-cqld4/src/main/java/io/nosqlbench/adapter/cqld4/ResultSetProcessor.java b/adapter-cqld4/src/main/java/io/nosqlbench/adapter/cqld4/ResultSetProcessor.java index be96b795b..06f6d4a32 100644 --- a/adapter-cqld4/src/main/java/io/nosqlbench/adapter/cqld4/ResultSetProcessor.java +++ b/adapter-cqld4/src/main/java/io/nosqlbench/adapter/cqld4/ResultSetProcessor.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. @@ -18,7 +18,7 @@ package io.nosqlbench.adapter.cqld4; import com.datastax.oss.driver.api.core.cql.ResultSet; import com.datastax.oss.driver.api.core.cql.Row; -import io.nosqlbench.engine.api.activityimpl.uniform.ResultProcessor; +import io.nosqlbench.adapters.api.activityimpl.uniform.ResultProcessor; public interface ResultSetProcessor extends ResultProcessor { } diff --git a/adapter-cqld4/src/main/java/io/nosqlbench/adapter/cqld4/opdispensers/CQLD4PreparedStmtDiagnostics.java b/adapter-cqld4/src/main/java/io/nosqlbench/adapter/cqld4/diagnostics/CQLD4PreparedStmtDiagnostics.java similarity index 76% rename from adapter-cqld4/src/main/java/io/nosqlbench/adapter/cqld4/opdispensers/CQLD4PreparedStmtDiagnostics.java rename to adapter-cqld4/src/main/java/io/nosqlbench/adapter/cqld4/diagnostics/CQLD4PreparedStmtDiagnostics.java index c05bd9fb7..4c82ecad6 100644 --- a/adapter-cqld4/src/main/java/io/nosqlbench/adapter/cqld4/opdispensers/CQLD4PreparedStmtDiagnostics.java +++ b/adapter-cqld4/src/main/java/io/nosqlbench/adapter/cqld4/diagnostics/CQLD4PreparedStmtDiagnostics.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. @@ -14,7 +14,7 @@ * limitations under the License. */ -package io.nosqlbench.adapter.cqld4.opdispensers; +package io.nosqlbench.adapter.cqld4.diagnostics; import com.datastax.oss.driver.api.core.CqlIdentifier; import com.datastax.oss.driver.api.core.cql.BoundStatement; @@ -25,8 +25,10 @@ import com.datastax.oss.driver.api.core.data.CqlDuration; import com.datastax.oss.driver.api.core.data.CqlVector; import com.datastax.oss.driver.api.core.data.TupleValue; import com.datastax.oss.driver.api.core.data.UdtValue; -import com.datastax.oss.driver.api.core.type.CqlVectorType; import com.datastax.oss.driver.api.core.type.DataType; +import com.datastax.oss.driver.api.core.type.VectorType; +import com.datastax.oss.driver.api.core.type.codec.ExtraTypeCodecs; +import com.datastax.oss.driver.api.core.type.codec.TypeCodec; import io.nosqlbench.adapter.cqld4.optypes.Cqld4CqlOp; import io.nosqlbench.api.errors.OpConfigError; import org.apache.logging.log4j.LogManager; @@ -41,10 +43,12 @@ import java.time.LocalDate; import java.time.LocalTime; import java.util.UUID; import java.util.*; +import java.util.concurrent.ConcurrentHashMap; import java.util.function.LongFunction; import static com.datastax.oss.protocol.internal.ProtocolConstants.DataType.*; + /** * This should only be used when there is an exception thrown by some higher level logic. * The purpose of this class is to do a more thorough job of checking each step of binding @@ -53,18 +57,28 @@ import static com.datastax.oss.protocol.internal.ProtocolConstants.DataType.*; */ public class CQLD4PreparedStmtDiagnostics { private static final Logger logger = LogManager.getLogger(CQLD4PreparedStmtDiagnostics.class); + private static final ConcurrentHashMap> vectorCodecs = new ConcurrentHashMap<>(); - public static BoundStatement bindStatement(BoundStatement bound, CqlIdentifier colname, - Object colval, DataType coltype) { - + public static BoundStatement bindStatement( + BoundStatement bound, + CqlIdentifier colname, + Object colval, + DataType coltype + ) { return switch (coltype.getProtocolCode()) { case CUSTOM -> { - if (coltype instanceof CqlVectorType) { - yield bound.setCqlVector(colname, (CqlVector) colval); + if (coltype instanceof VectorType vt) { + if (colval instanceof CqlVector cv) { + yield bound.setVector(colname, cv, cv.get(0).getClass()); + } else if (colval instanceof float[] floatAry) { + TypeCodec codec = vectorCodecs.computeIfAbsent(vt, v -> ExtraTypeCodecs.floatVectorToArray(v.getDimensions())); + yield bound.set(colname, floatAry, codec); + } else { + throw new RuntimeException("Unrecognized vector Java type to bind to " + coltype.asCql(true, true) + " value=" +colval.getClass().getSimpleName()); + } + } else { + throw new RuntimeException("Unrecognized custom type for diagnostics: " + coltype.asCql(true, true) + " value= " +colval.getClass().getSimpleName()); } - throw new RuntimeException("Unhandled CUSTOM type for diagnostic: " - + coltype.getClass().getSimpleName()); - } case ASCII, VARCHAR -> bound.setString(colname, (String) colval); case BIGINT, COUNTER -> bound.setLong(colname, (long) colval); @@ -112,22 +126,22 @@ public class CQLD4PreparedStmtDiagnostics { yield bound.setTupleValue(colname, tuple); } default -> throw new RuntimeException("Unknown CQL type for diagnostic " + - "(type:'" + coltype + "',code:'" + coltype.getProtocolCode() + "'"); + "(type:'" + coltype + "',code:'" + coltype.getProtocolCode() + "'"); }; } public static Cqld4CqlOp rebindWithDiagnostics( - PreparedStatement preparedStmt, - LongFunction fieldsF, - long cycle, - Exception exception + PreparedStatement preparedStmt, + LongFunction fieldsF, + long cycle, + Exception exception ) { logger.error(exception); ColumnDefinitions defs = preparedStmt.getVariableDefinitions(); Object[] values = fieldsF.apply(cycle); if (defs.size() != values.length) { throw new OpConfigError("There are " + defs.size() + " anchors in statement '" + preparedStmt.getQuery() + "'" + - "but " + values.length + " values were provided. These must match."); + "but " + values.length + " values were provided. These must match."); } BoundStatement bound = preparedStmt.bind(); @@ -143,11 +157,11 @@ public class CQLD4PreparedStmtDiagnostics { String fullValue = value.toString(); String valueToPrint = fullValue.length() > 100 ? fullValue.substring(0, 100) + " ... (abbreviated for console, since the size is " + fullValue.length() + ")" : fullValue; String errormsg = String.format( - "Unable to bind column '%s' to cql type '%s' with value '%s' (class '%s')", - defname, - type.asCql(false, false), - valueToPrint, - value.getClass().getCanonicalName() + "Unable to bind column '%s' to cql type '%s' with value '%s' (class '%s')", + defname, + type.asCql(false, false), + valueToPrint, + value.getClass().getCanonicalName() ); logger.error(errormsg); throw new OpConfigError(errormsg, e); diff --git a/adapter-cqld4/src/main/java/io/nosqlbench/adapter/cqld4/opdispensers/CqlD4RainbowTableDispenser.java b/adapter-cqld4/src/main/java/io/nosqlbench/adapter/cqld4/opdispensers/CqlD4RainbowTableDispenser.java index bf3ed3802..f5b6aa735 100644 --- a/adapter-cqld4/src/main/java/io/nosqlbench/adapter/cqld4/opdispensers/CqlD4RainbowTableDispenser.java +++ b/adapter-cqld4/src/main/java/io/nosqlbench/adapter/cqld4/opdispensers/CqlD4RainbowTableDispenser.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. @@ -18,8 +18,8 @@ package io.nosqlbench.adapter.cqld4.opdispensers; import com.datastax.oss.driver.api.core.CqlSession; import io.nosqlbench.adapter.cqld4.optypes.Cqld4CqlOp; -import io.nosqlbench.engine.api.activityimpl.uniform.DriverAdapter; -import io.nosqlbench.engine.api.templating.ParsedOp; +import io.nosqlbench.adapters.api.activityimpl.uniform.DriverAdapter; +import io.nosqlbench.adapters.api.templating.ParsedOp; import java.util.function.LongFunction; diff --git a/adapter-cqld4/src/main/java/io/nosqlbench/adapter/cqld4/opdispensers/Cqld4BaseOpDispenser.java b/adapter-cqld4/src/main/java/io/nosqlbench/adapter/cqld4/opdispensers/Cqld4BaseOpDispenser.java index 964f76d58..a127536a1 100644 --- a/adapter-cqld4/src/main/java/io/nosqlbench/adapter/cqld4/opdispensers/Cqld4BaseOpDispenser.java +++ b/adapter-cqld4/src/main/java/io/nosqlbench/adapter/cqld4/opdispensers/Cqld4BaseOpDispenser.java @@ -26,9 +26,9 @@ import com.datastax.oss.driver.api.core.metadata.token.Token; import io.nosqlbench.adapter.cqld4.Cqld4OpMetrics; import io.nosqlbench.adapter.cqld4.Cqld4Space; import io.nosqlbench.adapter.cqld4.optypes.Cqld4CqlOp; -import io.nosqlbench.engine.api.activityimpl.BaseOpDispenser; -import io.nosqlbench.engine.api.activityimpl.uniform.DriverAdapter; -import io.nosqlbench.engine.api.templating.ParsedOp; +import io.nosqlbench.adapters.api.activityimpl.BaseOpDispenser; +import io.nosqlbench.adapters.api.activityimpl.uniform.DriverAdapter; +import io.nosqlbench.adapters.api.templating.ParsedOp; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; diff --git a/adapter-cqld4/src/main/java/io/nosqlbench/adapter/cqld4/opdispensers/Cqld4FluentGraphOpDispenser.java b/adapter-cqld4/src/main/java/io/nosqlbench/adapter/cqld4/opdispensers/Cqld4FluentGraphOpDispenser.java index 06a295056..c1d3c9378 100644 --- a/adapter-cqld4/src/main/java/io/nosqlbench/adapter/cqld4/opdispensers/Cqld4FluentGraphOpDispenser.java +++ b/adapter-cqld4/src/main/java/io/nosqlbench/adapter/cqld4/opdispensers/Cqld4FluentGraphOpDispenser.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. @@ -22,10 +22,10 @@ import com.datastax.oss.driver.api.core.CqlSession; import groovy.lang.Script; import io.nosqlbench.adapter.cqld4.Cqld4Space; import io.nosqlbench.adapter.cqld4.optypes.Cqld4FluentGraphOp; -import io.nosqlbench.engine.api.activityimpl.BaseOpDispenser; -import io.nosqlbench.engine.api.activityimpl.uniform.DriverAdapter; -import io.nosqlbench.engine.api.activityimpl.uniform.flowtypes.Op; -import io.nosqlbench.engine.api.templating.ParsedOp; +import io.nosqlbench.adapters.api.activityimpl.BaseOpDispenser; +import io.nosqlbench.adapters.api.activityimpl.uniform.DriverAdapter; +import io.nosqlbench.adapters.api.activityimpl.uniform.flowtypes.Op; +import io.nosqlbench.adapters.api.templating.ParsedOp; import io.nosqlbench.virtdata.core.bindings.Bindings; import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversal; import org.apache.tinkerpop.gremlin.structure.Vertex; diff --git a/adapter-cqld4/src/main/java/io/nosqlbench/adapter/cqld4/opdispensers/Cqld4GremlinOpDispenser.java b/adapter-cqld4/src/main/java/io/nosqlbench/adapter/cqld4/opdispensers/Cqld4GremlinOpDispenser.java index 38bef6703..44799e2f0 100644 --- a/adapter-cqld4/src/main/java/io/nosqlbench/adapter/cqld4/opdispensers/Cqld4GremlinOpDispenser.java +++ b/adapter-cqld4/src/main/java/io/nosqlbench/adapter/cqld4/opdispensers/Cqld4GremlinOpDispenser.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. @@ -21,9 +21,9 @@ import com.datastax.dse.driver.api.core.graph.ScriptGraphStatementBuilder; import com.datastax.oss.driver.api.core.CqlSession; import io.nosqlbench.adapter.cqld4.Cqld4Space; import io.nosqlbench.adapter.cqld4.optypes.Cqld4ScriptGraphOp; -import io.nosqlbench.engine.api.activityimpl.BaseOpDispenser; -import io.nosqlbench.engine.api.activityimpl.uniform.DriverAdapter; -import io.nosqlbench.engine.api.templating.ParsedOp; +import io.nosqlbench.adapters.api.activityimpl.BaseOpDispenser; +import io.nosqlbench.adapters.api.activityimpl.uniform.DriverAdapter; +import io.nosqlbench.adapters.api.templating.ParsedOp; import java.util.Optional; import java.util.function.LongFunction; diff --git a/adapter-cqld4/src/main/java/io/nosqlbench/adapter/cqld4/opdispensers/Cqld4PreparedStmtDispenser.java b/adapter-cqld4/src/main/java/io/nosqlbench/adapter/cqld4/opdispensers/Cqld4PreparedStmtDispenser.java index 398ce1e6e..ebf8b5063 100644 --- a/adapter-cqld4/src/main/java/io/nosqlbench/adapter/cqld4/opdispensers/Cqld4PreparedStmtDispenser.java +++ b/adapter-cqld4/src/main/java/io/nosqlbench/adapter/cqld4/opdispensers/Cqld4PreparedStmtDispenser.java @@ -21,10 +21,11 @@ import com.datastax.oss.driver.api.core.cql.BoundStatement; import com.datastax.oss.driver.api.core.cql.PreparedStatement; import com.datastax.oss.driver.api.core.cql.Statement; import io.nosqlbench.adapter.cqld4.RSProcessors; +import io.nosqlbench.adapter.cqld4.diagnostics.CQLD4PreparedStmtDiagnostics; import io.nosqlbench.adapter.cqld4.optypes.Cqld4CqlOp; import io.nosqlbench.adapter.cqld4.optypes.Cqld4CqlPreparedStatement; -import io.nosqlbench.engine.api.activityimpl.uniform.DriverAdapter; -import io.nosqlbench.engine.api.templating.ParsedOp; +import io.nosqlbench.adapters.api.activityimpl.uniform.DriverAdapter; +import io.nosqlbench.adapters.api.templating.ParsedOp; import io.nosqlbench.api.errors.OpConfigError; import io.nosqlbench.virtdata.core.templates.ParsedTemplateString; import org.apache.logging.log4j.LogManager; diff --git a/adapter-cqld4/src/main/java/io/nosqlbench/adapter/cqld4/opdispensers/Cqld4RawStmtDispenser.java b/adapter-cqld4/src/main/java/io/nosqlbench/adapter/cqld4/opdispensers/Cqld4RawStmtDispenser.java index 7043b6715..d5854eee5 100644 --- a/adapter-cqld4/src/main/java/io/nosqlbench/adapter/cqld4/opdispensers/Cqld4RawStmtDispenser.java +++ b/adapter-cqld4/src/main/java/io/nosqlbench/adapter/cqld4/opdispensers/Cqld4RawStmtDispenser.java @@ -22,8 +22,8 @@ import com.datastax.oss.driver.api.core.cql.SimpleStatementBuilder; import com.datastax.oss.driver.api.core.cql.Statement; import io.nosqlbench.adapter.cqld4.optypes.Cqld4CqlOp; import io.nosqlbench.adapter.cqld4.optypes.Cqld4CqlSimpleStatement; -import io.nosqlbench.engine.api.activityimpl.uniform.DriverAdapter; -import io.nosqlbench.engine.api.templating.ParsedOp; +import io.nosqlbench.adapters.api.activityimpl.uniform.DriverAdapter; +import io.nosqlbench.adapters.api.templating.ParsedOp; import java.util.function.LongFunction; diff --git a/adapter-cqld4/src/main/java/io/nosqlbench/adapter/cqld4/opdispensers/Cqld4SimpleCqlStmtDispenser.java b/adapter-cqld4/src/main/java/io/nosqlbench/adapter/cqld4/opdispensers/Cqld4SimpleCqlStmtDispenser.java index 0f71fb262..71eea4ac3 100644 --- a/adapter-cqld4/src/main/java/io/nosqlbench/adapter/cqld4/opdispensers/Cqld4SimpleCqlStmtDispenser.java +++ b/adapter-cqld4/src/main/java/io/nosqlbench/adapter/cqld4/opdispensers/Cqld4SimpleCqlStmtDispenser.java @@ -20,8 +20,8 @@ import com.datastax.oss.driver.api.core.CqlSession; import com.datastax.oss.driver.api.core.cql.SimpleStatement; import com.datastax.oss.driver.api.core.cql.Statement; import io.nosqlbench.adapter.cqld4.optypes.Cqld4CqlSimpleStatement; -import io.nosqlbench.engine.api.activityimpl.uniform.DriverAdapter; -import io.nosqlbench.engine.api.templating.ParsedOp; +import io.nosqlbench.adapters.api.activityimpl.uniform.DriverAdapter; +import io.nosqlbench.adapters.api.templating.ParsedOp; import java.util.function.LongFunction; diff --git a/adapter-cqld4/src/main/java/io/nosqlbench/adapter/cqld4/opdispensers/Cqld4SsTableDispenser.java b/adapter-cqld4/src/main/java/io/nosqlbench/adapter/cqld4/opdispensers/Cqld4SsTableDispenser.java index 66e2651aa..2967ca3e8 100644 --- a/adapter-cqld4/src/main/java/io/nosqlbench/adapter/cqld4/opdispensers/Cqld4SsTableDispenser.java +++ b/adapter-cqld4/src/main/java/io/nosqlbench/adapter/cqld4/opdispensers/Cqld4SsTableDispenser.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. @@ -20,7 +20,7 @@ import com.datastax.oss.driver.api.core.CqlSession; import com.datastax.oss.driver.api.core.cql.Statement; import io.nosqlbench.adapter.cqld4.Cqld4DriverAdapter; import io.nosqlbench.adapter.cqld4.optypes.Cqld4CqlOp; -import io.nosqlbench.engine.api.templating.ParsedOp; +import io.nosqlbench.adapters.api.templating.ParsedOp; import java.util.function.LongFunction; diff --git a/adapter-cqld4/src/main/java/io/nosqlbench/adapter/cqld4/opmappers/CqlD4CqlSimpleStmtMapper.java b/adapter-cqld4/src/main/java/io/nosqlbench/adapter/cqld4/opmappers/CqlD4CqlSimpleStmtMapper.java index 35cc48ed1..a07e03a42 100644 --- a/adapter-cqld4/src/main/java/io/nosqlbench/adapter/cqld4/opmappers/CqlD4CqlSimpleStmtMapper.java +++ b/adapter-cqld4/src/main/java/io/nosqlbench/adapter/cqld4/opmappers/CqlD4CqlSimpleStmtMapper.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. @@ -19,10 +19,10 @@ package io.nosqlbench.adapter.cqld4.opmappers; import com.datastax.oss.driver.api.core.CqlSession; import io.nosqlbench.adapter.cqld4.opdispensers.Cqld4SimpleCqlStmtDispenser; import io.nosqlbench.adapter.cqld4.optypes.Cqld4CqlOp; -import io.nosqlbench.engine.api.activityimpl.OpDispenser; -import io.nosqlbench.engine.api.activityimpl.OpMapper; -import io.nosqlbench.engine.api.activityimpl.uniform.DriverAdapter; -import io.nosqlbench.engine.api.templating.ParsedOp; +import io.nosqlbench.adapters.api.activityimpl.OpDispenser; +import io.nosqlbench.adapters.api.activityimpl.OpMapper; +import io.nosqlbench.adapters.api.activityimpl.uniform.DriverAdapter; +import io.nosqlbench.adapters.api.templating.ParsedOp; import java.util.function.LongFunction; diff --git a/adapter-cqld4/src/main/java/io/nosqlbench/adapter/cqld4/opmappers/CqlD4PreparedStmtMapper.java b/adapter-cqld4/src/main/java/io/nosqlbench/adapter/cqld4/opmappers/CqlD4PreparedStmtMapper.java index 140234d27..efd5a43dc 100644 --- a/adapter-cqld4/src/main/java/io/nosqlbench/adapter/cqld4/opmappers/CqlD4PreparedStmtMapper.java +++ b/adapter-cqld4/src/main/java/io/nosqlbench/adapter/cqld4/opmappers/CqlD4PreparedStmtMapper.java @@ -23,10 +23,10 @@ import io.nosqlbench.adapter.cqld4.ResultSetProcessor; import io.nosqlbench.adapter.cqld4.opdispensers.Cqld4PreparedStmtDispenser; import io.nosqlbench.adapter.cqld4.optypes.Cqld4CqlOp; import io.nosqlbench.adapter.cqld4.processors.CqlFieldCaptureProcessor; -import io.nosqlbench.engine.api.activityimpl.OpDispenser; -import io.nosqlbench.engine.api.activityimpl.OpMapper; -import io.nosqlbench.engine.api.activityimpl.uniform.DriverAdapter; -import io.nosqlbench.engine.api.templating.ParsedOp; +import io.nosqlbench.adapters.api.activityimpl.OpDispenser; +import io.nosqlbench.adapters.api.activityimpl.OpMapper; +import io.nosqlbench.adapters.api.activityimpl.uniform.DriverAdapter; +import io.nosqlbench.adapters.api.templating.ParsedOp; import io.nosqlbench.engine.api.templating.TypeAndTarget; import io.nosqlbench.api.config.params.ParamsParser; import io.nosqlbench.api.errors.BasicError; diff --git a/adapter-cqld4/src/main/java/io/nosqlbench/adapter/cqld4/opmappers/CqlD4RainbowTableMapper.java b/adapter-cqld4/src/main/java/io/nosqlbench/adapter/cqld4/opmappers/CqlD4RainbowTableMapper.java index d05bcc3ff..8656a26ab 100644 --- a/adapter-cqld4/src/main/java/io/nosqlbench/adapter/cqld4/opmappers/CqlD4RainbowTableMapper.java +++ b/adapter-cqld4/src/main/java/io/nosqlbench/adapter/cqld4/opmappers/CqlD4RainbowTableMapper.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. @@ -18,10 +18,10 @@ package io.nosqlbench.adapter.cqld4.opmappers; import com.datastax.oss.driver.api.core.CqlSession; import io.nosqlbench.adapter.cqld4.optypes.Cqld4RainbowTableOp; -import io.nosqlbench.engine.api.activityimpl.OpDispenser; -import io.nosqlbench.engine.api.activityimpl.OpMapper; -import io.nosqlbench.engine.api.activityimpl.uniform.DriverAdapter; -import io.nosqlbench.engine.api.templating.ParsedOp; +import io.nosqlbench.adapters.api.activityimpl.OpDispenser; +import io.nosqlbench.adapters.api.activityimpl.OpMapper; +import io.nosqlbench.adapters.api.activityimpl.uniform.DriverAdapter; +import io.nosqlbench.adapters.api.templating.ParsedOp; import java.util.function.LongFunction; diff --git a/adapter-cqld4/src/main/java/io/nosqlbench/adapter/cqld4/opmappers/CqlD4RawStmtMapper.java b/adapter-cqld4/src/main/java/io/nosqlbench/adapter/cqld4/opmappers/CqlD4RawStmtMapper.java index 7a53ff2da..14035a551 100644 --- a/adapter-cqld4/src/main/java/io/nosqlbench/adapter/cqld4/opmappers/CqlD4RawStmtMapper.java +++ b/adapter-cqld4/src/main/java/io/nosqlbench/adapter/cqld4/opmappers/CqlD4RawStmtMapper.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. @@ -19,10 +19,10 @@ package io.nosqlbench.adapter.cqld4.opmappers; import com.datastax.oss.driver.api.core.CqlSession; import io.nosqlbench.adapter.cqld4.opdispensers.Cqld4RawStmtDispenser; import io.nosqlbench.adapter.cqld4.optypes.Cqld4CqlOp; -import io.nosqlbench.engine.api.activityimpl.OpDispenser; -import io.nosqlbench.engine.api.activityimpl.OpMapper; -import io.nosqlbench.engine.api.activityimpl.uniform.DriverAdapter; -import io.nosqlbench.engine.api.templating.ParsedOp; +import io.nosqlbench.adapters.api.activityimpl.OpDispenser; +import io.nosqlbench.adapters.api.activityimpl.OpMapper; +import io.nosqlbench.adapters.api.activityimpl.uniform.DriverAdapter; +import io.nosqlbench.adapters.api.templating.ParsedOp; import java.util.function.LongFunction; diff --git a/adapter-cqld4/src/main/java/io/nosqlbench/adapter/cqld4/opmappers/Cqld4CoreOpMapper.java b/adapter-cqld4/src/main/java/io/nosqlbench/adapter/cqld4/opmappers/Cqld4CoreOpMapper.java index 07d9a8583..87014d3d4 100644 --- a/adapter-cqld4/src/main/java/io/nosqlbench/adapter/cqld4/opmappers/Cqld4CoreOpMapper.java +++ b/adapter-cqld4/src/main/java/io/nosqlbench/adapter/cqld4/opmappers/Cqld4CoreOpMapper.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. @@ -19,12 +19,12 @@ package io.nosqlbench.adapter.cqld4.opmappers; import com.datastax.oss.driver.api.core.CqlSession; import io.nosqlbench.adapter.cqld4.Cqld4Space; import io.nosqlbench.api.config.standard.NBConfiguration; -import io.nosqlbench.engine.api.activityimpl.OpDispenser; -import io.nosqlbench.engine.api.activityimpl.OpMapper; -import io.nosqlbench.engine.api.activityimpl.uniform.DriverAdapter; -import io.nosqlbench.engine.api.activityimpl.uniform.DriverSpaceCache; -import io.nosqlbench.engine.api.activityimpl.uniform.flowtypes.Op; -import io.nosqlbench.engine.api.templating.ParsedOp; +import io.nosqlbench.adapters.api.activityimpl.OpDispenser; +import io.nosqlbench.adapters.api.activityimpl.OpMapper; +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.adapters.api.templating.ParsedOp; import io.nosqlbench.engine.api.templating.TypeAndTarget; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; diff --git a/adapter-cqld4/src/main/java/io/nosqlbench/adapter/cqld4/opmappers/Cqld4FluentGraphOpMapper.java b/adapter-cqld4/src/main/java/io/nosqlbench/adapter/cqld4/opmappers/Cqld4FluentGraphOpMapper.java index 403622995..58c4bc3f5 100644 --- a/adapter-cqld4/src/main/java/io/nosqlbench/adapter/cqld4/opmappers/Cqld4FluentGraphOpMapper.java +++ b/adapter-cqld4/src/main/java/io/nosqlbench/adapter/cqld4/opmappers/Cqld4FluentGraphOpMapper.java @@ -22,11 +22,11 @@ import groovy.lang.Binding; import groovy.lang.GroovyShell; import groovy.lang.Script; import io.nosqlbench.adapter.cqld4.opdispensers.Cqld4FluentGraphOpDispenser; -import io.nosqlbench.engine.api.activityimpl.OpDispenser; -import io.nosqlbench.engine.api.activityimpl.OpMapper; -import io.nosqlbench.engine.api.activityimpl.uniform.DriverAdapter; -import io.nosqlbench.engine.api.activityimpl.uniform.flowtypes.Op; -import io.nosqlbench.engine.api.templating.ParsedOp; +import io.nosqlbench.adapters.api.activityimpl.OpDispenser; +import io.nosqlbench.adapters.api.activityimpl.OpMapper; +import io.nosqlbench.adapters.api.activityimpl.uniform.DriverAdapter; +import io.nosqlbench.adapters.api.activityimpl.uniform.flowtypes.Op; +import io.nosqlbench.adapters.api.templating.ParsedOp; import io.nosqlbench.engine.api.templating.TypeAndTarget; import io.nosqlbench.api.errors.OpConfigError; import io.nosqlbench.virtdata.core.bindings.Bindings; diff --git a/adapter-cqld4/src/main/java/io/nosqlbench/adapter/cqld4/opmappers/Cqld4GremlinOpMapper.java b/adapter-cqld4/src/main/java/io/nosqlbench/adapter/cqld4/opmappers/Cqld4GremlinOpMapper.java index 03741c9bf..ec1123522 100644 --- a/adapter-cqld4/src/main/java/io/nosqlbench/adapter/cqld4/opmappers/Cqld4GremlinOpMapper.java +++ b/adapter-cqld4/src/main/java/io/nosqlbench/adapter/cqld4/opmappers/Cqld4GremlinOpMapper.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. @@ -19,10 +19,10 @@ package io.nosqlbench.adapter.cqld4.opmappers; import com.datastax.oss.driver.api.core.CqlSession; import io.nosqlbench.adapter.cqld4.opdispensers.Cqld4GremlinOpDispenser; import io.nosqlbench.adapter.cqld4.optypes.Cqld4ScriptGraphOp; -import io.nosqlbench.engine.api.activityimpl.OpDispenser; -import io.nosqlbench.engine.api.activityimpl.OpMapper; -import io.nosqlbench.engine.api.activityimpl.uniform.DriverAdapter; -import io.nosqlbench.engine.api.templating.ParsedOp; +import io.nosqlbench.adapters.api.activityimpl.OpDispenser; +import io.nosqlbench.adapters.api.activityimpl.OpMapper; +import io.nosqlbench.adapters.api.activityimpl.uniform.DriverAdapter; +import io.nosqlbench.adapters.api.templating.ParsedOp; import java.util.function.LongFunction; 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 8e675b36d..eae2a5eac 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 @@ -26,7 +26,7 @@ import io.nosqlbench.adapter.cqld4.exceptions.ChangeUnappliedCycleException; import io.nosqlbench.adapter.cqld4.exceptions.ExceededRetryReplaceException; import io.nosqlbench.adapter.cqld4.exceptions.UndefinedResultSetException; import io.nosqlbench.adapter.cqld4.exceptions.UnexpectedPagingException; -import io.nosqlbench.engine.api.activityimpl.uniform.flowtypes.*; +import io.nosqlbench.adapters.api.activityimpl.uniform.flowtypes.*; import java.util.ArrayList; import java.util.Iterator; diff --git a/adapter-cqld4/src/main/java/io/nosqlbench/adapter/cqld4/optypes/Cqld4FluentGraphOp.java b/adapter-cqld4/src/main/java/io/nosqlbench/adapter/cqld4/optypes/Cqld4FluentGraphOp.java index 7cc7508fd..2a25b6917 100644 --- a/adapter-cqld4/src/main/java/io/nosqlbench/adapter/cqld4/optypes/Cqld4FluentGraphOp.java +++ b/adapter-cqld4/src/main/java/io/nosqlbench/adapter/cqld4/optypes/Cqld4FluentGraphOp.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. @@ -19,8 +19,8 @@ package io.nosqlbench.adapter.cqld4.optypes; import com.datastax.dse.driver.api.core.graph.FluentGraphStatement; import com.datastax.dse.driver.api.core.graph.GraphResultSet; import com.datastax.oss.driver.api.core.CqlSession; -import io.nosqlbench.engine.api.activityimpl.uniform.flowtypes.CycleOp; -import io.nosqlbench.engine.api.activityimpl.uniform.flowtypes.OpResultSize; +import io.nosqlbench.adapters.api.activityimpl.uniform.flowtypes.CycleOp; +import io.nosqlbench.adapters.api.activityimpl.uniform.flowtypes.OpResultSize; public class Cqld4FluentGraphOp implements CycleOp, OpResultSize { private final CqlSession session; diff --git a/adapter-cqld4/src/main/java/io/nosqlbench/adapter/cqld4/optypes/Cqld4RainbowTableOp.java b/adapter-cqld4/src/main/java/io/nosqlbench/adapter/cqld4/optypes/Cqld4RainbowTableOp.java index fd40498b7..92fad8ed1 100644 --- a/adapter-cqld4/src/main/java/io/nosqlbench/adapter/cqld4/optypes/Cqld4RainbowTableOp.java +++ b/adapter-cqld4/src/main/java/io/nosqlbench/adapter/cqld4/optypes/Cqld4RainbowTableOp.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. @@ -17,7 +17,7 @@ package io.nosqlbench.adapter.cqld4.optypes; import com.datastax.oss.driver.api.core.cql.ResultSet; -import io.nosqlbench.engine.api.activityimpl.uniform.flowtypes.*; +import io.nosqlbench.adapters.api.activityimpl.uniform.flowtypes.*; import java.util.Map; diff --git a/adapter-cqld4/src/main/java/io/nosqlbench/adapter/cqld4/optypes/Cqld4ScriptGraphOp.java b/adapter-cqld4/src/main/java/io/nosqlbench/adapter/cqld4/optypes/Cqld4ScriptGraphOp.java index 05a5670e2..fb6227c79 100644 --- a/adapter-cqld4/src/main/java/io/nosqlbench/adapter/cqld4/optypes/Cqld4ScriptGraphOp.java +++ b/adapter-cqld4/src/main/java/io/nosqlbench/adapter/cqld4/optypes/Cqld4ScriptGraphOp.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. @@ -19,8 +19,8 @@ package io.nosqlbench.adapter.cqld4.optypes; import com.datastax.dse.driver.api.core.graph.GraphResultSet; import com.datastax.dse.driver.api.core.graph.ScriptGraphStatement; import com.datastax.oss.driver.api.core.CqlSession; -import io.nosqlbench.engine.api.activityimpl.uniform.flowtypes.CycleOp; -import io.nosqlbench.engine.api.activityimpl.uniform.flowtypes.OpResultSize; +import io.nosqlbench.adapters.api.activityimpl.uniform.flowtypes.CycleOp; +import io.nosqlbench.adapters.api.activityimpl.uniform.flowtypes.OpResultSize; public class Cqld4ScriptGraphOp implements CycleOp, OpResultSize { private final CqlSession session; diff --git a/adapter-cqld4/src/main/java/io/nosqlbench/cqlgen/core/CGDefaultCqlBindings.java b/adapter-cqld4/src/main/java/io/nosqlbench/cqlgen/core/CGDefaultCqlBindings.java index f6d5e9d5a..9f32c45d1 100644 --- a/adapter-cqld4/src/main/java/io/nosqlbench/cqlgen/core/CGDefaultCqlBindings.java +++ b/adapter-cqld4/src/main/java/io/nosqlbench/cqlgen/core/CGDefaultCqlBindings.java @@ -21,8 +21,8 @@ import io.nosqlbench.api.content.NBIO; import io.nosqlbench.cqlgen.api.BindingsLibrary; import io.nosqlbench.cqlgen.binders.Binding; import io.nosqlbench.cqlgen.model.CqlColumnBase; -import io.nosqlbench.engine.api.activityconfig.OpsLoader; -import io.nosqlbench.engine.api.activityconfig.yaml.OpsDocList; +import io.nosqlbench.adapters.api.activityconfig.OpsLoader; +import io.nosqlbench.adapters.api.activityconfig.yaml.OpsDocList; import java.io.File; import java.io.InputStream; diff --git a/adapter-cqld4/src/main/java/io/nosqlbench/datamappers/functions/geometry/NormalizeCqlVector.java b/adapter-cqld4/src/main/java/io/nosqlbench/datamappers/functions/geometry/NormalizeCqlVector.java index 4b1ecf6da..c8e73357b 100644 --- a/adapter-cqld4/src/main/java/io/nosqlbench/datamappers/functions/geometry/NormalizeCqlVector.java +++ b/adapter-cqld4/src/main/java/io/nosqlbench/datamappers/functions/geometry/NormalizeCqlVector.java @@ -23,7 +23,7 @@ import io.nosqlbench.virtdata.api.annotations.ThreadSafeMapper; import io.nosqlbench.virtdata.library.basics.shared.from_long.to_vector.NormalizeDoubleListVector; import io.nosqlbench.virtdata.library.basics.shared.from_long.to_vector.NormalizeFloatListVector; -import java.util.ArrayList; +import java.util.Arrays; import java.util.List; import java.util.function.Function; @@ -33,37 +33,28 @@ import java.util.function.Function; */ @ThreadSafeMapper @Categories(Category.experimental) -public class NormalizeCqlVector implements Function { +public class NormalizeCqlVector implements Function { private final NormalizeDoubleListVector ndv = new NormalizeDoubleListVector(); private final NormalizeFloatListVector nfv = new NormalizeFloatListVector(); @Override - public com.datastax.oss.driver.api.core.data.CqlVector apply(CqlVector cqlVector) { - - CqlVector.Builder builder = CqlVector.builder(); - Iterable values = cqlVector.getValues(); - List list = new ArrayList<>(); - values.forEach(list::add); - - if (list.isEmpty()) { - - builder.add(List.of()); - } else if (list.get(0) instanceof Float) { - List floats = new ArrayList<>(); - list.forEach(o -> floats.add((Float) o)); - for (Float fv : floats) { - builder.add(fv); - } - - } else if (list.get(0) instanceof Double) { - List doubles = new ArrayList<>(); - list.forEach(o -> doubles.add((Double) o)); - for (Double dv : doubles) { - builder.add(dv); - } - } else { - throw new RuntimeException("Only Doubles and Floats are recognized."); + public CqlVector apply(CqlVector cqlVector) { + double[] vals = new double[cqlVector.size()]; + double accumulator= 0.0d; + for (int i = 0; i < vals.length; i++) { + vals[i]=cqlVector.get(i).doubleValue(); + accumulator+=vals[i]*vals[i]; + } + double factor = 1.0d/Math.sqrt(Arrays.stream(vals).map(d -> d * d).sum()); + + if (cqlVector.get(0) instanceof Float) { + List list = Arrays.stream(vals).mapToObj(d -> Float.valueOf((float) (d * factor))).toList(); + return CqlVector.newInstance(list); + } else if (cqlVector.get(0) instanceof Double) { + List list = Arrays.stream(vals).mapToObj(d -> Double.valueOf((float) (d * factor))).toList(); + return CqlVector.newInstance(list); + } else { + throw new RuntimeException(NormalizeCqlVector.class.getCanonicalName()+ " only supports Double and Float type"); } - return builder.build(); } } diff --git a/adapter-cqld4/src/main/java/io/nosqlbench/datamappers/functions/to_cqlvector/CqlVector.java b/adapter-cqld4/src/main/java/io/nosqlbench/datamappers/functions/to_cqlvector/CqlVector.java index 95060862f..087aafab3 100644 --- a/adapter-cqld4/src/main/java/io/nosqlbench/datamappers/functions/to_cqlvector/CqlVector.java +++ b/adapter-cqld4/src/main/java/io/nosqlbench/datamappers/functions/to_cqlvector/CqlVector.java @@ -43,8 +43,7 @@ public class CqlVector implements LongFunction { - - @Override - public CqlVector apply(Object object) { - Object[] ary = null; - if (object instanceof List list) { - ary = list.toArray(); - } else if (object instanceof Number number) { - ary = new Object[]{number.floatValue()}; - } else if (object.getClass().isArray()) { - ary = (Object[]) object; - } else { - throw new RuntimeException("Unsupported input type for CqlVector: " + object.getClass().getCanonicalName()); - } - CqlVector.Builder vbuilder = CqlVector.builder(); - vbuilder.add(ary); - return vbuilder.build(); - } -} diff --git a/adapter-cqld4/src/main/java/io/nosqlbench/datamappers/functions/to_cqlvector/from_double_ary/ToCqlVector.java b/adapter-cqld4/src/main/java/io/nosqlbench/datamappers/functions/to_cqlvector/from_double_ary/ToCqlVector.java new file mode 100644 index 000000000..cab2f877c --- /dev/null +++ b/adapter-cqld4/src/main/java/io/nosqlbench/datamappers/functions/to_cqlvector/from_double_ary/ToCqlVector.java @@ -0,0 +1,38 @@ +/* + * 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.datamappers.functions.to_cqlvector.from_double_ary; + +import com.datastax.oss.driver.api.core.data.CqlVector; +import io.nosqlbench.virtdata.api.annotations.Categories; +import io.nosqlbench.virtdata.api.annotations.Category; +import io.nosqlbench.virtdata.api.annotations.ThreadSafeMapper; + +import java.util.function.Function; + +@ThreadSafeMapper +@Categories(Category.experimental) +public class ToCqlVector implements Function { + + @Override + public CqlVector apply(double[] doubles) { + Double[] numbers = new Double[doubles.length]; + for (int i = 0; i < doubles.length; i++) { + numbers[i]=doubles[i]; + } + return CqlVector.newInstance(numbers); + } +} diff --git a/adapter-cqld4/src/main/java/io/nosqlbench/datamappers/functions/to_cqlvector/from_float_ary/ToCqlVector.java b/adapter-cqld4/src/main/java/io/nosqlbench/datamappers/functions/to_cqlvector/from_float_ary/ToCqlVector.java new file mode 100644 index 000000000..8c45f6b8c --- /dev/null +++ b/adapter-cqld4/src/main/java/io/nosqlbench/datamappers/functions/to_cqlvector/from_float_ary/ToCqlVector.java @@ -0,0 +1,38 @@ +/* + * 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.datamappers.functions.to_cqlvector.from_float_ary; + +import com.datastax.oss.driver.api.core.data.CqlVector; +import io.nosqlbench.virtdata.api.annotations.Categories; +import io.nosqlbench.virtdata.api.annotations.Category; +import io.nosqlbench.virtdata.api.annotations.ThreadSafeMapper; + +import java.util.function.Function; + +@ThreadSafeMapper +@Categories(Category.experimental) +public class ToCqlVector implements Function { + + @Override + public CqlVector apply(float[] floats) { + Float[] numbers = new Float[floats.length]; + for (int i = 0; i < floats.length; i++) { + numbers[i]=floats[i]; + } + return CqlVector.newInstance(numbers); + } +} diff --git a/adapter-cqld4/src/main/java/io/nosqlbench/datamappers/functions/to_cqlvector/from_number_list/ToCqlVector.java b/adapter-cqld4/src/main/java/io/nosqlbench/datamappers/functions/to_cqlvector/from_number_list/ToCqlVector.java new file mode 100644 index 000000000..f886e5c89 --- /dev/null +++ b/adapter-cqld4/src/main/java/io/nosqlbench/datamappers/functions/to_cqlvector/from_number_list/ToCqlVector.java @@ -0,0 +1,38 @@ +/* + * 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.datamappers.functions.to_cqlvector.from_number_list; + +import com.datastax.oss.driver.api.core.data.CqlVector; +import io.nosqlbench.virtdata.api.annotations.Categories; +import io.nosqlbench.virtdata.api.annotations.Category; +import io.nosqlbench.virtdata.api.annotations.ThreadSafeMapper; + +import java.util.List; +import java.util.function.Function; + +@ThreadSafeMapper +@Categories(Category.experimental) +public class ToCqlVector implements Function { + + @Override + public CqlVector apply(List objects) { + if (objects.size()==0) { + throw new RuntimeException("Empty lists are not supported for vectors."); + } + return CqlVector.newInstance((List)objects); + } +} diff --git a/adapter-cqld4/src/test/java/io/nosqlbench/datamappers/functions/geometry/NormalizeCqlVectorTest.java b/adapter-cqld4/src/test/java/io/nosqlbench/datamappers/functions/geometry/NormalizeCqlVectorTest.java new file mode 100644 index 000000000..a33276042 --- /dev/null +++ b/adapter-cqld4/src/test/java/io/nosqlbench/datamappers/functions/geometry/NormalizeCqlVectorTest.java @@ -0,0 +1,60 @@ +/* + * 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.datamappers.functions.geometry; + +import com.datastax.oss.driver.api.core.data.CqlVector; +import org.assertj.core.data.Offset; +import org.junit.jupiter.api.Test; + +import java.util.ArrayList; +import java.util.List; + +import static org.assertj.core.api.Assertions.assertThat; + +public class NormalizeCqlVectorTest { + + @Test + public void normalizeCqlVectorFloats() { + CqlVector square = CqlVector.newInstance(1.0f, 1.0f); + NormalizeCqlVector nv = new NormalizeCqlVector(); + CqlVector normaled = nv.apply(square); + + List sides = new ArrayList(); + for (int i = 0; i < normaled.size(); i++) { + sides.add(normaled.get(i)); + } + assertThat(sides.size()).isEqualTo(2); + assertThat(sides.get(0)).isInstanceOf(Float.class); + assertThat(sides.get(1)).isInstanceOf(Float.class); + assertThat(((Float)sides.get(0)).doubleValue()).isCloseTo(0.707, Offset.offset(0.001d)); + assertThat(((Float)sides.get(1)).doubleValue()).isCloseTo(0.707, Offset.offset(0.001d)); + } + + @Test + public void normalizeCqlVectorDoubles() { + CqlVector square = CqlVector.newInstance(1.0d, 1.0d); + NormalizeCqlVector nv = new NormalizeCqlVector(); + CqlVector normaled = nv.apply(square); + + assertThat(normaled.size()).isEqualTo(2); + assertThat(normaled.get(0)).isInstanceOf(Double.class); + assertThat(normaled.get(1)).isInstanceOf(Double.class); + assertThat(normaled.get(0).doubleValue()).isCloseTo(0.707, Offset.offset(0.001d)); + assertThat(normaled.get(1).doubleValue()).isCloseTo(0.707, Offset.offset(0.001d)); + } + +} diff --git a/adapter-cqld4/src/test/java/io/nosqlbench/datamappers/functions/to_cqlvector/CqlVectorTest.java b/adapter-cqld4/src/test/java/io/nosqlbench/datamappers/functions/to_cqlvector/CqlVectorTest.java index d6a7e20d4..6229d71d0 100644 --- a/adapter-cqld4/src/test/java/io/nosqlbench/datamappers/functions/to_cqlvector/CqlVectorTest.java +++ b/adapter-cqld4/src/test/java/io/nosqlbench/datamappers/functions/to_cqlvector/CqlVectorTest.java @@ -16,26 +16,21 @@ package io.nosqlbench.datamappers.functions.to_cqlvector; -import io.nosqlbench.virtdata.library.basics.shared.from_long.to_collection.ListSized; +import io.nosqlbench.virtdata.library.basics.shared.from_long.to_collection.ListSizedStepped; import io.nosqlbench.virtdata.library.basics.shared.from_long.to_float.HashRange; import org.junit.jupiter.api.Test; -import java.util.ArrayList; -import java.util.List; - import static org.assertj.core.api.Assertions.assertThat; public class CqlVectorTest { @Test public void testCqlVector() { - CqlVector func = new CqlVector(new ListSized(2, new HashRange(0.2f, 5.0f))); - com.datastax.oss.driver.api.core.data.CqlVector result = func.apply(23L); - List values = new ArrayList<>(); - for (Object value : result.getValues()) { - values.add(value); + CqlVector func = new CqlVector(new ListSizedStepped(2, new HashRange(0.2f, 5.0f))); + com.datastax.oss.driver.api.core.data.CqlVector vector = func.apply(23L); + for (Object value : vector) { + assertThat(value).isInstanceOf(Float.class); } - assertThat(values.get(0)).isInstanceOf(Float.class); } } diff --git a/adapter-cqld4/src/test/java/io/nosqlbench/datamappers/functions/to_cqlvector/ToCqlVectorTest.java b/adapter-cqld4/src/test/java/io/nosqlbench/datamappers/functions/to_cqlvector/ToCqlVectorTest.java index b8e52aafd..080d226e5 100644 --- a/adapter-cqld4/src/test/java/io/nosqlbench/datamappers/functions/to_cqlvector/ToCqlVectorTest.java +++ b/adapter-cqld4/src/test/java/io/nosqlbench/datamappers/functions/to_cqlvector/ToCqlVectorTest.java @@ -17,6 +17,7 @@ package io.nosqlbench.datamappers.functions.to_cqlvector; import com.datastax.oss.driver.api.core.data.CqlVector; +import io.nosqlbench.datamappers.functions.to_cqlvector.from_number_list.ToCqlVector; import org.junit.jupiter.api.Test; import java.util.List; From 76b740f8ab04d76fd8ccb1a216671833e47c0592 Mon Sep 17 00:00:00 2001 From: Jonathan Shook Date: Tue, 25 Jul 2023 11:50:51 -0500 Subject: [PATCH 09/14] add cqlvector examples --- .../adapter/amqp/AmqpDriverAdapter.java | 10 +++++----- .../nosqlbench/adapter/amqp/AmqpOpMapper.java | 12 ++++++------ .../amqp/dispensers/AmqpBaseOpDispenser.java | 6 +++--- .../dispensers/AmqpMsgRecvOpDispenser.java | 6 +++--- .../dispensers/AmqpMsgSendOpDispenser.java | 6 +++--- .../adapter/amqp/ops/AmqpTimeTrackOp.java | 17 ++++++++--------- .../adapter/diag/DiagDriverAdapter.java | 16 ++++++++-------- .../io/nosqlbench/adapter/diag/DiagOp.java | 4 ++-- .../adapter/diag/DiagOpDispenser.java | 4 ++-- .../nosqlbench/adapter/diag/DiagOpMapper.java | 8 ++++---- .../dynamodb/DynamoDBDriverAdapter.java | 10 +++++----- .../adapter/dynamodb/DynamoDBOpMapper.java | 12 ++++++------ .../DDBCreateTableOpDispenser.java | 8 ++++---- .../DDBDeleteTableOpDispenser.java | 8 ++++---- .../opdispensers/DDBGetItemOpDispenser.java | 8 ++++---- .../opdispensers/DDBPutItemOpDispenser.java | 8 ++++---- .../opdispensers/DDBQueryOpDispenser.java | 8 ++++---- .../opdispensers/RawDynamoDBOpDispenser.java | 18 ++++++++---------- .../adapter/dynamodb/optypes/DDBGetItemOp.java | 4 ++-- .../adapter/dynamodb/optypes/DDBQueryOp.java | 4 ++-- .../adapter/dynamodb/optypes/DynamoDBOp.java | 4 ++-- .../adapter/http/HttpDriverAdapter.java | 10 +++++----- .../nosqlbench/adapter/http/core/HttpOp.java | 4 ++-- .../adapter/http/core/HttpOpDispenser.java | 8 ++++---- .../adapter/http/core/HttpOpMapper.java | 12 ++++++------ .../adapter/http/HttpOpMapperTest.java | 12 ++++++------ .../adapter/jdbc/JDBCDriverAdapter.java | 8 ++++---- .../nosqlbench/adapter/jdbc/JDBCOpMapper.java | 10 +++++----- .../jdbc/opdispensers/JDBCBaseOpDispenser.java | 6 +++--- .../opdispensers/JDBCExecuteOpDispenser.java | 4 ++-- .../JDBCExecuteQueryOpDispenser.java | 4 ++-- .../adapter/jdbc/optypes/JDBCOp.java | 2 +- .../adapter/kafka/KafkaDriverAdapter.java | 10 +++++----- .../adapter/kafka/KafkaOpMapper.java | 12 ++++++------ .../kafka/dispensers/KafkaBaseOpDispenser.java | 6 +++--- .../dispensers/MessageConsumerOpDispenser.java | 6 +++--- .../dispensers/MessageProducerOpDispenser.java | 6 +++--- .../nosqlbench/adapter/kafka/ops/KafkaOp.java | 17 ++++++++--------- .../kafka/ops/OpTimeTrackKafkaConsumer.java | 2 +- .../kafka/ops/OpTimeTrackKafkaProducer.java | 5 ++--- .../adapter/mongodb/core/MongoOpMapper.java | 12 ++++++------ .../mongodb/core/MongodbDriverAdapter.java | 10 +++++----- .../dispensers/MongoCommandOpDispenser.java | 10 +++++----- .../dispensers/MongoDbUpdateOpDispenser.java | 10 +++++----- .../mongodb/ops/MongoDirectCommandOp.java | 4 ++-- .../adapter/pulsar/PulsarDriverAdapter.java | 11 +++++------ .../adapter/pulsar/PulsarOpMapper.java | 12 ++++++------ .../dispensers/AdminNamespaceOpDispenser.java | 7 +++---- .../dispensers/AdminTenantOpDispenser.java | 7 +++---- .../dispensers/AdminTopicOpDispenser.java | 7 +++---- .../dispensers/MessageConsumerOpDispenser.java | 7 +++---- .../dispensers/MessageProducerOpDispenser.java | 6 +++--- .../dispensers/MessageReaderOpDispenser.java | 8 +++----- .../dispensers/PulsarAdminOpDispenser.java | 6 +++--- .../dispensers/PulsarBaseOpDispenser.java | 7 +++---- .../dispensers/PulsarClientOpDispenser.java | 6 +++--- .../adapter/pulsar/ops/MessageConsumerOp.java | 3 +-- .../adapter/pulsar/ops/MessageProducerOp.java | 6 ++---- .../adapter/pulsar/ops/PulsarAdminOp.java | 3 +-- .../adapter/pulsar/ops/PulsarOp.java | 17 ++++++++--------- .../adapter/s4j/S4JDriverAdapter.java | 10 +++++----- .../io/nosqlbench/adapter/s4j/S4JOpMapper.java | 12 ++++++------ .../dispensers/MessageConsumerOpDispenser.java | 6 +++--- .../dispensers/MessageProducerOpDispenser.java | 6 +++--- .../s4j/dispensers/S4JBaseOpDispenser.java | 6 +++--- .../io/nosqlbench/adapter/s4j/ops/S4JOp.java | 17 ++++++++--------- .../adapter/stdout/StdoutDriverAdapter.java | 16 ++++++++-------- .../io/nosqlbench/adapter/stdout/StdoutOp.java | 10 +++++----- .../adapter/stdout/StdoutOpDispenser.java | 8 ++++---- .../adapter/stdout/StdoutOpMapper.java | 12 ++++++------ .../tcpclient/TcpClientDriverAdapter.java | 14 +++++++------- .../adapter/tcpclient/TcpClientOp.java | 4 ++-- .../tcpclient/TcpClientOpDispenser.java | 6 +++--- .../adapter/tcpclient/TcpClientOpMapper.java | 10 +++++----- .../tcpserver/TcpServerDriverAdapter.java | 14 +++++++------- .../adapter/tcpserver/TcpServerOp.java | 4 ++-- .../tcpserver/TcpServerOpDispenser.java | 6 +++--- .../adapter/tcpserver/TcpServerOpMapper.java | 10 +++++----- .../adapter/venice/VeniceDriverAdapter.java | 10 +++++----- .../adapter/venice/VeniceOpMapper.java | 12 ++++++------ .../dispensers/ReadSingleKeyOpDispenser.java | 12 +++--------- .../dispensers/VeniceBaseOpDispenser.java | 6 +++--- .../venice/dispensers/WriteOpDispenser.java | 6 +++--- .../adapter/venice/ops/VeniceOp.java | 17 ++++++++--------- ...ExpectedResultVerificationErrorHandler.java | 8 ++++---- 85 files changed, 350 insertions(+), 376 deletions(-) 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 cb2c837f3..8da1be82a 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 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. @@ -19,10 +19,10 @@ package io.nosqlbench.adapter.amqp; import io.nosqlbench.adapter.amqp.ops.AmqpTimeTrackOp; import io.nosqlbench.api.config.standard.NBConfigModel; import io.nosqlbench.api.config.standard.NBConfiguration; -import io.nosqlbench.engine.api.activityimpl.OpMapper; -import io.nosqlbench.engine.api.activityimpl.uniform.BaseDriverAdapter; -import io.nosqlbench.engine.api.activityimpl.uniform.DriverAdapter; -import io.nosqlbench.engine.api.activityimpl.uniform.DriverSpaceCache; +import io.nosqlbench.adapters.api.activityimpl.OpMapper; +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.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/AmqpOpMapper.java b/adapter-amqp/src/main/java/io/nosqlbench/adapter/amqp/AmqpOpMapper.java index f6b3b4a71..ccd7f1926 100644 --- a/adapter-amqp/src/main/java/io/nosqlbench/adapter/amqp/AmqpOpMapper.java +++ b/adapter-amqp/src/main/java/io/nosqlbench/adapter/amqp/AmqpOpMapper.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. @@ -20,11 +20,11 @@ import io.nosqlbench.adapter.amqp.dispensers.AmqpMsgRecvOpDispenser; import io.nosqlbench.adapter.amqp.dispensers.AmqpMsgSendOpDispenser; import io.nosqlbench.adapter.amqp.ops.AmqpTimeTrackOp; import io.nosqlbench.api.config.standard.NBConfiguration; -import io.nosqlbench.engine.api.activityimpl.OpDispenser; -import io.nosqlbench.engine.api.activityimpl.OpMapper; -import io.nosqlbench.engine.api.activityimpl.uniform.DriverAdapter; -import io.nosqlbench.engine.api.activityimpl.uniform.DriverSpaceCache; -import io.nosqlbench.engine.api.templating.ParsedOp; +import io.nosqlbench.adapters.api.activityimpl.OpDispenser; +import io.nosqlbench.adapters.api.activityimpl.OpMapper; +import io.nosqlbench.adapters.api.activityimpl.uniform.DriverAdapter; +import io.nosqlbench.adapters.api.activityimpl.uniform.DriverSpaceCache; +import io.nosqlbench.adapters.api.templating.ParsedOp; import io.nosqlbench.engine.api.templating.TypeAndTarget; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; diff --git a/adapter-amqp/src/main/java/io/nosqlbench/adapter/amqp/dispensers/AmqpBaseOpDispenser.java b/adapter-amqp/src/main/java/io/nosqlbench/adapter/amqp/dispensers/AmqpBaseOpDispenser.java index 4edfbc18b..54c35c27c 100644 --- a/adapter-amqp/src/main/java/io/nosqlbench/adapter/amqp/dispensers/AmqpBaseOpDispenser.java +++ b/adapter-amqp/src/main/java/io/nosqlbench/adapter/amqp/dispensers/AmqpBaseOpDispenser.java @@ -21,9 +21,9 @@ import io.nosqlbench.adapter.amqp.AmqpSpace; import io.nosqlbench.adapter.amqp.exception.AmqpAdapterUnexpectedException; import io.nosqlbench.adapter.amqp.ops.AmqpTimeTrackOp; import io.nosqlbench.adapter.amqp.util.AmqpAdapterMetrics; -import io.nosqlbench.engine.api.activityimpl.BaseOpDispenser; -import io.nosqlbench.engine.api.activityimpl.uniform.DriverAdapter; -import io.nosqlbench.engine.api.templating.ParsedOp; +import io.nosqlbench.adapters.api.activityimpl.BaseOpDispenser; +import io.nosqlbench.adapters.api.activityimpl.uniform.DriverAdapter; +import io.nosqlbench.adapters.api.templating.ParsedOp; import org.apache.commons.lang3.math.NumberUtils; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; diff --git a/adapter-amqp/src/main/java/io/nosqlbench/adapter/amqp/dispensers/AmqpMsgRecvOpDispenser.java b/adapter-amqp/src/main/java/io/nosqlbench/adapter/amqp/dispensers/AmqpMsgRecvOpDispenser.java index 754f469b6..c5583a619 100644 --- a/adapter-amqp/src/main/java/io/nosqlbench/adapter/amqp/dispensers/AmqpMsgRecvOpDispenser.java +++ b/adapter-amqp/src/main/java/io/nosqlbench/adapter/amqp/dispensers/AmqpMsgRecvOpDispenser.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. @@ -22,8 +22,8 @@ import io.nosqlbench.adapter.amqp.AmqpSpace; import io.nosqlbench.adapter.amqp.exception.AmqpAdapterUnexpectedException; import io.nosqlbench.adapter.amqp.ops.OpTimeTrackAmqpMsgRecvOp; import io.nosqlbench.adapter.amqp.ops.AmqpTimeTrackOp; -import io.nosqlbench.engine.api.activityimpl.uniform.DriverAdapter; -import io.nosqlbench.engine.api.templating.ParsedOp; +import io.nosqlbench.adapters.api.activityimpl.uniform.DriverAdapter; +import io.nosqlbench.adapters.api.templating.ParsedOp; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; diff --git a/adapter-amqp/src/main/java/io/nosqlbench/adapter/amqp/dispensers/AmqpMsgSendOpDispenser.java b/adapter-amqp/src/main/java/io/nosqlbench/adapter/amqp/dispensers/AmqpMsgSendOpDispenser.java index 8508ea570..90fabd50b 100644 --- a/adapter-amqp/src/main/java/io/nosqlbench/adapter/amqp/dispensers/AmqpMsgSendOpDispenser.java +++ b/adapter-amqp/src/main/java/io/nosqlbench/adapter/amqp/dispensers/AmqpMsgSendOpDispenser.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. @@ -24,8 +24,8 @@ import io.nosqlbench.adapter.amqp.exception.AmqpAdapterUnexpectedException; import io.nosqlbench.adapter.amqp.ops.OpTimeTrackAmqpMsgSendOp; import io.nosqlbench.adapter.amqp.ops.AmqpTimeTrackOp; import io.nosqlbench.adapter.amqp.util.AmqpAdapterUtil; -import io.nosqlbench.engine.api.activityimpl.uniform.DriverAdapter; -import io.nosqlbench.engine.api.templating.ParsedOp; +import io.nosqlbench.adapters.api.activityimpl.uniform.DriverAdapter; +import io.nosqlbench.adapters.api.templating.ParsedOp; import org.apache.commons.lang3.BooleanUtils; import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.math.NumberUtils; diff --git a/adapter-amqp/src/main/java/io/nosqlbench/adapter/amqp/ops/AmqpTimeTrackOp.java b/adapter-amqp/src/main/java/io/nosqlbench/adapter/amqp/ops/AmqpTimeTrackOp.java index a35ef777e..01ff4918c 100644 --- a/adapter-amqp/src/main/java/io/nosqlbench/adapter/amqp/ops/AmqpTimeTrackOp.java +++ b/adapter-amqp/src/main/java/io/nosqlbench/adapter/amqp/ops/AmqpTimeTrackOp.java @@ -1,18 +1,17 @@ /* - * Copyright (c) 2022 nosqlbench + * 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 + * 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. + * 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.adapter.amqp.ops; @@ -20,7 +19,7 @@ package io.nosqlbench.adapter.amqp.ops; import com.rabbitmq.client.Channel; import io.nosqlbench.adapter.amqp.AmqpSpace; import io.nosqlbench.adapter.amqp.util.AmqpAdapterMetrics; -import io.nosqlbench.engine.api.activityimpl.uniform.flowtypes.CycleOp; +import io.nosqlbench.adapters.api.activityimpl.uniform.flowtypes.CycleOp; public abstract class AmqpTimeTrackOp implements CycleOp { private final AmqpAdapterMetrics amqpAdapterMetrics; 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 fb4baa286..5580a7fc9 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 @@ -17,14 +17,14 @@ package io.nosqlbench.adapter.diag; -import io.nosqlbench.engine.api.activityconfig.OpsLoader; -import io.nosqlbench.engine.api.activityconfig.yaml.OpTemplate; -import io.nosqlbench.engine.api.activityconfig.yaml.OpTemplateFormat; -import io.nosqlbench.engine.api.activityconfig.yaml.OpsDocList; -import io.nosqlbench.engine.api.activityimpl.OpMapper; -import io.nosqlbench.engine.api.activityimpl.uniform.BaseDriverAdapter; -import io.nosqlbench.engine.api.activityimpl.uniform.DriverAdapter; -import io.nosqlbench.engine.api.activityimpl.uniform.decorators.SyntheticOpTemplateProvider; +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.activityimpl.OpMapper; +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.annotations.Service; import io.nosqlbench.api.config.params.NBParams; import io.nosqlbench.api.config.standard.NBConfigModel; diff --git a/adapter-diag/src/main/java/io/nosqlbench/adapter/diag/DiagOp.java b/adapter-diag/src/main/java/io/nosqlbench/adapter/diag/DiagOp.java index cf6d2f2b7..81efecb54 100644 --- a/adapter-diag/src/main/java/io/nosqlbench/adapter/diag/DiagOp.java +++ b/adapter-diag/src/main/java/io/nosqlbench/adapter/diag/DiagOp.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. @@ -17,7 +17,7 @@ package io.nosqlbench.adapter.diag; import io.nosqlbench.adapter.diag.optasks.DiagTask; -import io.nosqlbench.engine.api.activityimpl.uniform.flowtypes.CycleOp; +import io.nosqlbench.adapters.api.activityimpl.uniform.flowtypes.CycleOp; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; 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 12b85a12c..9a8881dca 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 @@ -21,8 +21,8 @@ import io.nosqlbench.api.config.standard.NBConfigModel; import io.nosqlbench.api.config.standard.NBConfiguration; import io.nosqlbench.api.config.standard.NBReconfigurable; import io.nosqlbench.engine.api.activityapi.ratelimits.RateLimiter; -import io.nosqlbench.engine.api.activityimpl.BaseOpDispenser; -import io.nosqlbench.engine.api.templating.ParsedOp; +import io.nosqlbench.adapters.api.activityimpl.BaseOpDispenser; +import io.nosqlbench.adapters.api.templating.ParsedOp; import io.nosqlbench.nb.annotations.ServiceSelector; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; diff --git a/adapter-diag/src/main/java/io/nosqlbench/adapter/diag/DiagOpMapper.java b/adapter-diag/src/main/java/io/nosqlbench/adapter/diag/DiagOpMapper.java index 2e7328b1f..10e21b860 100644 --- a/adapter-diag/src/main/java/io/nosqlbench/adapter/diag/DiagOpMapper.java +++ b/adapter-diag/src/main/java/io/nosqlbench/adapter/diag/DiagOpMapper.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. @@ -19,9 +19,9 @@ package io.nosqlbench.adapter.diag; import io.nosqlbench.api.config.standard.NBConfigModel; import io.nosqlbench.api.config.standard.NBConfiguration; import io.nosqlbench.api.config.standard.NBReconfigurable; -import io.nosqlbench.engine.api.activityimpl.OpDispenser; -import io.nosqlbench.engine.api.activityimpl.OpMapper; -import io.nosqlbench.engine.api.templating.ParsedOp; +import io.nosqlbench.adapters.api.activityimpl.OpDispenser; +import io.nosqlbench.adapters.api.activityimpl.OpMapper; +import io.nosqlbench.adapters.api.templating.ParsedOp; import java.util.ArrayList; import java.util.LinkedHashMap; 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 5ad0c4393..6a086087f 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 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. @@ -17,10 +17,10 @@ package io.nosqlbench.adapter.dynamodb; import io.nosqlbench.adapter.dynamodb.optypes.DynamoDBOp; -import io.nosqlbench.engine.api.activityimpl.OpMapper; -import io.nosqlbench.engine.api.activityimpl.uniform.BaseDriverAdapter; -import io.nosqlbench.engine.api.activityimpl.uniform.DriverAdapter; -import io.nosqlbench.engine.api.activityimpl.uniform.DriverSpaceCache; +import io.nosqlbench.adapters.api.activityimpl.OpMapper; +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.annotations.Maturity; import io.nosqlbench.nb.annotations.Service; import io.nosqlbench.api.config.standard.NBConfigModel; diff --git a/adapter-dynamodb/src/main/java/io/nosqlbench/adapter/dynamodb/DynamoDBOpMapper.java b/adapter-dynamodb/src/main/java/io/nosqlbench/adapter/dynamodb/DynamoDBOpMapper.java index a11a9d635..685cf7fd8 100644 --- a/adapter-dynamodb/src/main/java/io/nosqlbench/adapter/dynamodb/DynamoDBOpMapper.java +++ b/adapter-dynamodb/src/main/java/io/nosqlbench/adapter/dynamodb/DynamoDBOpMapper.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. @@ -19,11 +19,11 @@ package io.nosqlbench.adapter.dynamodb; import com.amazonaws.services.dynamodbv2.document.DynamoDB; import io.nosqlbench.adapter.dynamodb.opdispensers.*; import io.nosqlbench.adapter.dynamodb.optypes.DynamoDBOp; -import io.nosqlbench.engine.api.activityimpl.OpDispenser; -import io.nosqlbench.engine.api.activityimpl.OpMapper; -import io.nosqlbench.engine.api.activityimpl.uniform.DriverAdapter; -import io.nosqlbench.engine.api.activityimpl.uniform.DriverSpaceCache; -import io.nosqlbench.engine.api.templating.ParsedOp; +import io.nosqlbench.adapters.api.activityimpl.OpDispenser; +import io.nosqlbench.adapters.api.activityimpl.OpMapper; +import io.nosqlbench.adapters.api.activityimpl.uniform.DriverAdapter; +import io.nosqlbench.adapters.api.activityimpl.uniform.DriverSpaceCache; +import io.nosqlbench.adapters.api.templating.ParsedOp; import io.nosqlbench.engine.api.templating.TypeAndTarget; import io.nosqlbench.api.config.standard.NBConfiguration; diff --git a/adapter-dynamodb/src/main/java/io/nosqlbench/adapter/dynamodb/opdispensers/DDBCreateTableOpDispenser.java b/adapter-dynamodb/src/main/java/io/nosqlbench/adapter/dynamodb/opdispensers/DDBCreateTableOpDispenser.java index 0061c76af..647c38407 100644 --- a/adapter-dynamodb/src/main/java/io/nosqlbench/adapter/dynamodb/opdispensers/DDBCreateTableOpDispenser.java +++ b/adapter-dynamodb/src/main/java/io/nosqlbench/adapter/dynamodb/opdispensers/DDBCreateTableOpDispenser.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. @@ -21,9 +21,9 @@ import com.amazonaws.services.dynamodbv2.model.*; import io.nosqlbench.adapter.dynamodb.DynamoDBSpace; import io.nosqlbench.adapter.dynamodb.optypes.DDBCreateTableOp; import io.nosqlbench.adapter.dynamodb.optypes.DynamoDBOp; -import io.nosqlbench.engine.api.activityimpl.BaseOpDispenser; -import io.nosqlbench.engine.api.activityimpl.uniform.DriverAdapter; -import io.nosqlbench.engine.api.templating.ParsedOp; +import io.nosqlbench.adapters.api.activityimpl.BaseOpDispenser; +import io.nosqlbench.adapters.api.activityimpl.uniform.DriverAdapter; +import io.nosqlbench.adapters.api.templating.ParsedOp; import java.util.ArrayList; import java.util.Collection; diff --git a/adapter-dynamodb/src/main/java/io/nosqlbench/adapter/dynamodb/opdispensers/DDBDeleteTableOpDispenser.java b/adapter-dynamodb/src/main/java/io/nosqlbench/adapter/dynamodb/opdispensers/DDBDeleteTableOpDispenser.java index 347c783a1..1f923f474 100644 --- a/adapter-dynamodb/src/main/java/io/nosqlbench/adapter/dynamodb/opdispensers/DDBDeleteTableOpDispenser.java +++ b/adapter-dynamodb/src/main/java/io/nosqlbench/adapter/dynamodb/opdispensers/DDBDeleteTableOpDispenser.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. @@ -21,9 +21,9 @@ import com.amazonaws.services.dynamodbv2.model.DeleteTableRequest; import io.nosqlbench.adapter.dynamodb.DynamoDBSpace; import io.nosqlbench.adapter.dynamodb.optypes.DDBDeleteTableOp; import io.nosqlbench.adapter.dynamodb.optypes.DynamoDBOp; -import io.nosqlbench.engine.api.activityimpl.BaseOpDispenser; -import io.nosqlbench.engine.api.activityimpl.uniform.DriverAdapter; -import io.nosqlbench.engine.api.templating.ParsedOp; +import io.nosqlbench.adapters.api.activityimpl.BaseOpDispenser; +import io.nosqlbench.adapters.api.activityimpl.uniform.DriverAdapter; +import io.nosqlbench.adapters.api.templating.ParsedOp; import java.util.function.LongFunction; diff --git a/adapter-dynamodb/src/main/java/io/nosqlbench/adapter/dynamodb/opdispensers/DDBGetItemOpDispenser.java b/adapter-dynamodb/src/main/java/io/nosqlbench/adapter/dynamodb/opdispensers/DDBGetItemOpDispenser.java index b6405a6ec..9edd4f9a9 100644 --- a/adapter-dynamodb/src/main/java/io/nosqlbench/adapter/dynamodb/opdispensers/DDBGetItemOpDispenser.java +++ b/adapter-dynamodb/src/main/java/io/nosqlbench/adapter/dynamodb/opdispensers/DDBGetItemOpDispenser.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. @@ -23,9 +23,9 @@ import com.amazonaws.services.dynamodbv2.document.spec.GetItemSpec; import io.nosqlbench.adapter.dynamodb.DynamoDBSpace; import io.nosqlbench.adapter.dynamodb.optypes.DDBGetItemOp; import io.nosqlbench.adapter.dynamodb.optypes.DynamoDBOp; -import io.nosqlbench.engine.api.activityimpl.BaseOpDispenser; -import io.nosqlbench.engine.api.activityimpl.uniform.DriverAdapter; -import io.nosqlbench.engine.api.templating.ParsedOp; +import io.nosqlbench.adapters.api.activityimpl.BaseOpDispenser; +import io.nosqlbench.adapters.api.activityimpl.uniform.DriverAdapter; +import io.nosqlbench.adapters.api.templating.ParsedOp; import java.util.Map; import java.util.Optional; diff --git a/adapter-dynamodb/src/main/java/io/nosqlbench/adapter/dynamodb/opdispensers/DDBPutItemOpDispenser.java b/adapter-dynamodb/src/main/java/io/nosqlbench/adapter/dynamodb/opdispensers/DDBPutItemOpDispenser.java index 7665fdcbd..69f188c27 100644 --- a/adapter-dynamodb/src/main/java/io/nosqlbench/adapter/dynamodb/opdispensers/DDBPutItemOpDispenser.java +++ b/adapter-dynamodb/src/main/java/io/nosqlbench/adapter/dynamodb/opdispensers/DDBPutItemOpDispenser.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. @@ -21,9 +21,9 @@ import com.amazonaws.services.dynamodbv2.document.Item; import io.nosqlbench.adapter.dynamodb.DynamoDBSpace; import io.nosqlbench.adapter.dynamodb.optypes.DDBPutItemOp; import io.nosqlbench.adapter.dynamodb.optypes.DynamoDBOp; -import io.nosqlbench.engine.api.activityimpl.BaseOpDispenser; -import io.nosqlbench.engine.api.activityimpl.uniform.DriverAdapter; -import io.nosqlbench.engine.api.templating.ParsedOp; +import io.nosqlbench.adapters.api.activityimpl.BaseOpDispenser; +import io.nosqlbench.adapters.api.activityimpl.uniform.DriverAdapter; +import io.nosqlbench.adapters.api.templating.ParsedOp; import io.nosqlbench.api.errors.OpConfigError; import java.util.Map; diff --git a/adapter-dynamodb/src/main/java/io/nosqlbench/adapter/dynamodb/opdispensers/DDBQueryOpDispenser.java b/adapter-dynamodb/src/main/java/io/nosqlbench/adapter/dynamodb/opdispensers/DDBQueryOpDispenser.java index 31114b5f6..8eac3b040 100644 --- a/adapter-dynamodb/src/main/java/io/nosqlbench/adapter/dynamodb/opdispensers/DDBQueryOpDispenser.java +++ b/adapter-dynamodb/src/main/java/io/nosqlbench/adapter/dynamodb/opdispensers/DDBQueryOpDispenser.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. @@ -23,9 +23,9 @@ import com.amazonaws.services.dynamodbv2.document.spec.QuerySpec; import io.nosqlbench.adapter.dynamodb.DynamoDBSpace; import io.nosqlbench.adapter.dynamodb.optypes.DDBQueryOp; import io.nosqlbench.adapter.dynamodb.optypes.DynamoDBOp; -import io.nosqlbench.engine.api.activityimpl.BaseOpDispenser; -import io.nosqlbench.engine.api.activityimpl.uniform.DriverAdapter; -import io.nosqlbench.engine.api.templating.ParsedOp; +import io.nosqlbench.adapters.api.activityimpl.BaseOpDispenser; +import io.nosqlbench.adapters.api.activityimpl.uniform.DriverAdapter; +import io.nosqlbench.adapters.api.templating.ParsedOp; import java.util.Map; import java.util.Optional; diff --git a/adapter-dynamodb/src/main/java/io/nosqlbench/adapter/dynamodb/opdispensers/RawDynamoDBOpDispenser.java b/adapter-dynamodb/src/main/java/io/nosqlbench/adapter/dynamodb/opdispensers/RawDynamoDBOpDispenser.java index e4e58b1ea..9fda48775 100644 --- a/adapter-dynamodb/src/main/java/io/nosqlbench/adapter/dynamodb/opdispensers/RawDynamoDBOpDispenser.java +++ b/adapter-dynamodb/src/main/java/io/nosqlbench/adapter/dynamodb/opdispensers/RawDynamoDBOpDispenser.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. @@ -20,9 +20,9 @@ import com.amazonaws.services.dynamodbv2.document.DynamoDB; import io.nosqlbench.adapter.dynamodb.DynamoDBSpace; import io.nosqlbench.adapter.dynamodb.optypes.DynamoDBOp; import io.nosqlbench.adapter.dynamodb.optypes.RawDynamodOp; -import io.nosqlbench.engine.api.activityimpl.BaseOpDispenser; -import io.nosqlbench.engine.api.activityimpl.uniform.DriverAdapter; -import io.nosqlbench.engine.api.templating.ParsedOp; +import io.nosqlbench.adapters.api.activityimpl.BaseOpDispenser; +import io.nosqlbench.adapters.api.activityimpl.uniform.DriverAdapter; +import io.nosqlbench.adapters.api.templating.ParsedOp; import java.util.function.LongFunction; @@ -36,12 +36,10 @@ public class RawDynamoDBOpDispenser extends BaseOpDispenserGetItem API diff --git a/adapter-dynamodb/src/main/java/io/nosqlbench/adapter/dynamodb/optypes/DDBQueryOp.java b/adapter-dynamodb/src/main/java/io/nosqlbench/adapter/dynamodb/optypes/DDBQueryOp.java index 002908d0e..6cb984306 100644 --- a/adapter-dynamodb/src/main/java/io/nosqlbench/adapter/dynamodb/optypes/DDBQueryOp.java +++ b/adapter-dynamodb/src/main/java/io/nosqlbench/adapter/dynamodb/optypes/DDBQueryOp.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. @@ -21,7 +21,7 @@ import com.amazonaws.services.dynamodbv2.document.ItemCollection; import com.amazonaws.services.dynamodbv2.document.QueryOutcome; import com.amazonaws.services.dynamodbv2.document.Table; import com.amazonaws.services.dynamodbv2.document.spec.QuerySpec; -import io.nosqlbench.engine.api.activityimpl.uniform.flowtypes.OpResultSize; +import io.nosqlbench.adapters.api.activityimpl.uniform.flowtypes.OpResultSize; public class DDBQueryOp extends DynamoDBOp implements OpResultSize { diff --git a/adapter-dynamodb/src/main/java/io/nosqlbench/adapter/dynamodb/optypes/DynamoDBOp.java b/adapter-dynamodb/src/main/java/io/nosqlbench/adapter/dynamodb/optypes/DynamoDBOp.java index 94f73bb18..fcdededac 100644 --- a/adapter-dynamodb/src/main/java/io/nosqlbench/adapter/dynamodb/optypes/DynamoDBOp.java +++ b/adapter-dynamodb/src/main/java/io/nosqlbench/adapter/dynamodb/optypes/DynamoDBOp.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. @@ -17,7 +17,7 @@ package io.nosqlbench.adapter.dynamodb.optypes; import com.amazonaws.services.dynamodbv2.document.DynamoDB; -import io.nosqlbench.engine.api.activityimpl.uniform.flowtypes.CycleOp; +import io.nosqlbench.adapters.api.activityimpl.uniform.flowtypes.CycleOp; /** * https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/HowItWorks.ReadWriteCapacityMode.html?icmpid=docs_dynamodb_help_panel_hp_capacity#HowItWorks.ProvisionedThroughput.Manual 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 15690b238..64b694626 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 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. @@ -22,10 +22,10 @@ import io.nosqlbench.adapter.http.core.HttpOpMapper; import io.nosqlbench.adapter.http.core.HttpSpace; import io.nosqlbench.api.config.standard.ConfigModel; import io.nosqlbench.api.config.standard.Param; -import io.nosqlbench.engine.api.activityimpl.OpMapper; -import io.nosqlbench.engine.api.activityimpl.uniform.BaseDriverAdapter; -import io.nosqlbench.engine.api.activityimpl.uniform.DriverAdapter; -import io.nosqlbench.engine.api.activityimpl.uniform.DriverSpaceCache; +import io.nosqlbench.adapters.api.activityimpl.OpMapper; +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.annotations.Service; import io.nosqlbench.api.config.standard.NBConfigModel; import io.nosqlbench.api.config.standard.NBConfiguration; diff --git a/adapter-http/src/main/java/io/nosqlbench/adapter/http/core/HttpOp.java b/adapter-http/src/main/java/io/nosqlbench/adapter/http/core/HttpOp.java index f4fac900a..c43850184 100644 --- a/adapter-http/src/main/java/io/nosqlbench/adapter/http/core/HttpOp.java +++ b/adapter-http/src/main/java/io/nosqlbench/adapter/http/core/HttpOp.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. @@ -18,7 +18,7 @@ package io.nosqlbench.adapter.http.core; import io.nosqlbench.adapter.http.errors.InvalidResponseBodyException; import io.nosqlbench.adapter.http.errors.InvalidStatusCodeException; -import io.nosqlbench.engine.api.activityimpl.uniform.flowtypes.RunnableOp; +import io.nosqlbench.adapters.api.activityimpl.uniform.flowtypes.RunnableOp; import java.net.http.HttpClient; import java.net.http.HttpRequest; diff --git a/adapter-http/src/main/java/io/nosqlbench/adapter/http/core/HttpOpDispenser.java b/adapter-http/src/main/java/io/nosqlbench/adapter/http/core/HttpOpDispenser.java index 679f2758d..0de375824 100644 --- a/adapter-http/src/main/java/io/nosqlbench/adapter/http/core/HttpOpDispenser.java +++ b/adapter-http/src/main/java/io/nosqlbench/adapter/http/core/HttpOpDispenser.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. @@ -16,9 +16,9 @@ package io.nosqlbench.adapter.http.core; -import io.nosqlbench.engine.api.activityimpl.BaseOpDispenser; -import io.nosqlbench.engine.api.activityimpl.uniform.DriverAdapter; -import io.nosqlbench.engine.api.templating.ParsedOp; +import io.nosqlbench.adapters.api.activityimpl.BaseOpDispenser; +import io.nosqlbench.adapters.api.activityimpl.uniform.DriverAdapter; +import io.nosqlbench.adapters.api.templating.ParsedOp; import java.net.URI; import java.net.http.HttpClient; diff --git a/adapter-http/src/main/java/io/nosqlbench/adapter/http/core/HttpOpMapper.java b/adapter-http/src/main/java/io/nosqlbench/adapter/http/core/HttpOpMapper.java index ecb452019..a0829d52b 100644 --- a/adapter-http/src/main/java/io/nosqlbench/adapter/http/core/HttpOpMapper.java +++ b/adapter-http/src/main/java/io/nosqlbench/adapter/http/core/HttpOpMapper.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. @@ -16,11 +16,11 @@ package io.nosqlbench.adapter.http.core; -import io.nosqlbench.engine.api.activityimpl.OpDispenser; -import io.nosqlbench.engine.api.activityimpl.OpMapper; -import io.nosqlbench.engine.api.activityimpl.uniform.DriverAdapter; -import io.nosqlbench.engine.api.activityimpl.uniform.DriverSpaceCache; -import io.nosqlbench.engine.api.templating.ParsedOp; +import io.nosqlbench.adapters.api.activityimpl.OpDispenser; +import io.nosqlbench.adapters.api.activityimpl.OpMapper; +import io.nosqlbench.adapters.api.activityimpl.uniform.DriverAdapter; +import io.nosqlbench.adapters.api.activityimpl.uniform.DriverSpaceCache; +import io.nosqlbench.adapters.api.templating.ParsedOp; import io.nosqlbench.api.config.standard.NBConfiguration; import java.util.function.LongFunction; diff --git a/adapter-http/src/test/java/io/nosqlbench/adapter/http/HttpOpMapperTest.java b/adapter-http/src/test/java/io/nosqlbench/adapter/http/HttpOpMapperTest.java index e6b9c9d96..f48be3f31 100644 --- a/adapter-http/src/test/java/io/nosqlbench/adapter/http/HttpOpMapperTest.java +++ b/adapter-http/src/test/java/io/nosqlbench/adapter/http/HttpOpMapperTest.java @@ -20,12 +20,12 @@ import io.nosqlbench.adapter.http.core.HttpOpMapper; import io.nosqlbench.adapter.http.core.HttpSpace; import io.nosqlbench.api.config.NBLabeledElement; import io.nosqlbench.api.config.standard.NBConfiguration; -import io.nosqlbench.engine.api.activityconfig.OpsLoader; -import io.nosqlbench.engine.api.activityconfig.yaml.OpTemplate; -import io.nosqlbench.engine.api.activityconfig.yaml.OpTemplateFormat; -import io.nosqlbench.engine.api.activityconfig.yaml.OpsDocList; -import io.nosqlbench.engine.api.activityimpl.uniform.DriverSpaceCache; -import io.nosqlbench.engine.api.templating.ParsedOp; +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.activityimpl.uniform.DriverSpaceCache; +import io.nosqlbench.adapters.api.templating.ParsedOp; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.junit.jupiter.api.BeforeAll; 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 abe2d0042..48ccda948 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 @@ -19,10 +19,10 @@ package io.nosqlbench.adapter.jdbc; import io.nosqlbench.adapter.jdbc.optypes.JDBCOp; import io.nosqlbench.api.config.standard.NBConfigModel; import io.nosqlbench.api.config.standard.NBConfiguration; -import io.nosqlbench.engine.api.activityimpl.OpMapper; -import io.nosqlbench.engine.api.activityimpl.uniform.BaseDriverAdapter; -import io.nosqlbench.engine.api.activityimpl.uniform.DriverAdapter; -import io.nosqlbench.engine.api.activityimpl.uniform.DriverSpaceCache; +import io.nosqlbench.adapters.api.activityimpl.OpMapper; +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.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/JDBCOpMapper.java b/adapter-jdbc/src/main/java/io/nosqlbench/adapter/jdbc/JDBCOpMapper.java index 4d3bae1f2..22ef43104 100644 --- a/adapter-jdbc/src/main/java/io/nosqlbench/adapter/jdbc/JDBCOpMapper.java +++ b/adapter-jdbc/src/main/java/io/nosqlbench/adapter/jdbc/JDBCOpMapper.java @@ -20,11 +20,11 @@ import io.nosqlbench.adapter.jdbc.opdispensers.JDBCExecuteOpDispenser; import io.nosqlbench.adapter.jdbc.opdispensers.JDBCExecuteQueryOpDispenser; import io.nosqlbench.adapter.jdbc.optypes.JDBCOp; import io.nosqlbench.api.config.standard.NBConfiguration; -import io.nosqlbench.engine.api.activityimpl.OpDispenser; -import io.nosqlbench.engine.api.activityimpl.OpMapper; -import io.nosqlbench.engine.api.activityimpl.uniform.DriverAdapter; -import io.nosqlbench.engine.api.activityimpl.uniform.DriverSpaceCache; -import io.nosqlbench.engine.api.templating.ParsedOp; +import io.nosqlbench.adapters.api.activityimpl.OpDispenser; +import io.nosqlbench.adapters.api.activityimpl.OpMapper; +import io.nosqlbench.adapters.api.activityimpl.uniform.DriverAdapter; +import io.nosqlbench.adapters.api.activityimpl.uniform.DriverSpaceCache; +import io.nosqlbench.adapters.api.templating.ParsedOp; import io.nosqlbench.engine.api.templating.TypeAndTarget; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; diff --git a/adapter-jdbc/src/main/java/io/nosqlbench/adapter/jdbc/opdispensers/JDBCBaseOpDispenser.java b/adapter-jdbc/src/main/java/io/nosqlbench/adapter/jdbc/opdispensers/JDBCBaseOpDispenser.java index b9bede3f6..1d92802d9 100644 --- a/adapter-jdbc/src/main/java/io/nosqlbench/adapter/jdbc/opdispensers/JDBCBaseOpDispenser.java +++ b/adapter-jdbc/src/main/java/io/nosqlbench/adapter/jdbc/opdispensers/JDBCBaseOpDispenser.java @@ -18,9 +18,9 @@ package io.nosqlbench.adapter.jdbc.opdispensers; import io.nosqlbench.adapter.jdbc.JDBCSpace; import io.nosqlbench.adapter.jdbc.optypes.JDBCOp; -import io.nosqlbench.engine.api.activityimpl.BaseOpDispenser; -import io.nosqlbench.engine.api.activityimpl.uniform.DriverAdapter; -import io.nosqlbench.engine.api.templating.ParsedOp; +import io.nosqlbench.adapters.api.activityimpl.BaseOpDispenser; +import io.nosqlbench.adapters.api.activityimpl.uniform.DriverAdapter; +import io.nosqlbench.adapters.api.templating.ParsedOp; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; diff --git a/adapter-jdbc/src/main/java/io/nosqlbench/adapter/jdbc/opdispensers/JDBCExecuteOpDispenser.java b/adapter-jdbc/src/main/java/io/nosqlbench/adapter/jdbc/opdispensers/JDBCExecuteOpDispenser.java index f830267d9..24d914485 100644 --- a/adapter-jdbc/src/main/java/io/nosqlbench/adapter/jdbc/opdispensers/JDBCExecuteOpDispenser.java +++ b/adapter-jdbc/src/main/java/io/nosqlbench/adapter/jdbc/opdispensers/JDBCExecuteOpDispenser.java @@ -19,8 +19,8 @@ package io.nosqlbench.adapter.jdbc.opdispensers; import io.nosqlbench.adapter.jdbc.JDBCSpace; import io.nosqlbench.adapter.jdbc.optypes.JDBCExecuteOp; import io.nosqlbench.adapter.jdbc.optypes.JDBCOp; -import io.nosqlbench.engine.api.activityimpl.uniform.DriverAdapter; -import io.nosqlbench.engine.api.templating.ParsedOp; +import io.nosqlbench.adapters.api.activityimpl.uniform.DriverAdapter; +import io.nosqlbench.adapters.api.templating.ParsedOp; import java.sql.Connection; import java.util.function.LongFunction; diff --git a/adapter-jdbc/src/main/java/io/nosqlbench/adapter/jdbc/opdispensers/JDBCExecuteQueryOpDispenser.java b/adapter-jdbc/src/main/java/io/nosqlbench/adapter/jdbc/opdispensers/JDBCExecuteQueryOpDispenser.java index 4c78b207a..95143b79f 100644 --- a/adapter-jdbc/src/main/java/io/nosqlbench/adapter/jdbc/opdispensers/JDBCExecuteQueryOpDispenser.java +++ b/adapter-jdbc/src/main/java/io/nosqlbench/adapter/jdbc/opdispensers/JDBCExecuteQueryOpDispenser.java @@ -19,8 +19,8 @@ package io.nosqlbench.adapter.jdbc.opdispensers; import io.nosqlbench.adapter.jdbc.JDBCSpace; import io.nosqlbench.adapter.jdbc.optypes.JDBCExecuteQueryOp; import io.nosqlbench.adapter.jdbc.optypes.JDBCOp; -import io.nosqlbench.engine.api.activityimpl.uniform.DriverAdapter; -import io.nosqlbench.engine.api.templating.ParsedOp; +import io.nosqlbench.adapters.api.activityimpl.uniform.DriverAdapter; +import io.nosqlbench.adapters.api.templating.ParsedOp; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; diff --git a/adapter-jdbc/src/main/java/io/nosqlbench/adapter/jdbc/optypes/JDBCOp.java b/adapter-jdbc/src/main/java/io/nosqlbench/adapter/jdbc/optypes/JDBCOp.java index 4e23fa8c7..340ac6869 100644 --- a/adapter-jdbc/src/main/java/io/nosqlbench/adapter/jdbc/optypes/JDBCOp.java +++ b/adapter-jdbc/src/main/java/io/nosqlbench/adapter/jdbc/optypes/JDBCOp.java @@ -16,7 +16,7 @@ package io.nosqlbench.adapter.jdbc.optypes; -import io.nosqlbench.engine.api.activityimpl.uniform.flowtypes.RunnableOp; +import io.nosqlbench.adapters.api.activityimpl.uniform.flowtypes.RunnableOp; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; 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 606b21885..3b5fd6149 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 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. @@ -19,10 +19,10 @@ package io.nosqlbench.adapter.kafka; import io.nosqlbench.adapter.kafka.ops.KafkaOp; import io.nosqlbench.api.config.standard.NBConfigModel; import io.nosqlbench.api.config.standard.NBConfiguration; -import io.nosqlbench.engine.api.activityimpl.OpMapper; -import io.nosqlbench.engine.api.activityimpl.uniform.BaseDriverAdapter; -import io.nosqlbench.engine.api.activityimpl.uniform.DriverAdapter; -import io.nosqlbench.engine.api.activityimpl.uniform.DriverSpaceCache; +import io.nosqlbench.adapters.api.activityimpl.OpMapper; +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.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/KafkaOpMapper.java b/adapter-kafka/src/main/java/io/nosqlbench/adapter/kafka/KafkaOpMapper.java index 750a46460..b5ba25a08 100644 --- a/adapter-kafka/src/main/java/io/nosqlbench/adapter/kafka/KafkaOpMapper.java +++ b/adapter-kafka/src/main/java/io/nosqlbench/adapter/kafka/KafkaOpMapper.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. @@ -20,11 +20,11 @@ import io.nosqlbench.adapter.kafka.dispensers.MessageConsumerOpDispenser; import io.nosqlbench.adapter.kafka.dispensers.MessageProducerOpDispenser; import io.nosqlbench.adapter.kafka.ops.KafkaOp; import io.nosqlbench.api.config.standard.NBConfiguration; -import io.nosqlbench.engine.api.activityimpl.OpDispenser; -import io.nosqlbench.engine.api.activityimpl.OpMapper; -import io.nosqlbench.engine.api.activityimpl.uniform.DriverAdapter; -import io.nosqlbench.engine.api.activityimpl.uniform.DriverSpaceCache; -import io.nosqlbench.engine.api.templating.ParsedOp; +import io.nosqlbench.adapters.api.activityimpl.OpDispenser; +import io.nosqlbench.adapters.api.activityimpl.OpMapper; +import io.nosqlbench.adapters.api.activityimpl.uniform.DriverAdapter; +import io.nosqlbench.adapters.api.activityimpl.uniform.DriverSpaceCache; +import io.nosqlbench.adapters.api.templating.ParsedOp; import io.nosqlbench.engine.api.templating.TypeAndTarget; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; diff --git a/adapter-kafka/src/main/java/io/nosqlbench/adapter/kafka/dispensers/KafkaBaseOpDispenser.java b/adapter-kafka/src/main/java/io/nosqlbench/adapter/kafka/dispensers/KafkaBaseOpDispenser.java index 9d77b9526..c5ae35b32 100644 --- a/adapter-kafka/src/main/java/io/nosqlbench/adapter/kafka/dispensers/KafkaBaseOpDispenser.java +++ b/adapter-kafka/src/main/java/io/nosqlbench/adapter/kafka/dispensers/KafkaBaseOpDispenser.java @@ -21,9 +21,9 @@ import io.nosqlbench.adapter.kafka.exception.KafkaAdapterInvalidParamException; import io.nosqlbench.adapter.kafka.ops.KafkaOp; import io.nosqlbench.adapter.kafka.util.KafkaAdapterMetrics; import io.nosqlbench.adapter.kafka.util.KafkaAdapterUtil.DOC_LEVEL_PARAMS; -import io.nosqlbench.engine.api.activityimpl.BaseOpDispenser; -import io.nosqlbench.engine.api.activityimpl.uniform.DriverAdapter; -import io.nosqlbench.engine.api.templating.ParsedOp; +import io.nosqlbench.adapters.api.activityimpl.BaseOpDispenser; +import io.nosqlbench.adapters.api.activityimpl.uniform.DriverAdapter; +import io.nosqlbench.adapters.api.templating.ParsedOp; import org.apache.commons.lang3.BooleanUtils; import org.apache.commons.lang3.math.NumberUtils; import org.apache.logging.log4j.LogManager; diff --git a/adapter-kafka/src/main/java/io/nosqlbench/adapter/kafka/dispensers/MessageConsumerOpDispenser.java b/adapter-kafka/src/main/java/io/nosqlbench/adapter/kafka/dispensers/MessageConsumerOpDispenser.java index fb0277de8..bde8f1b60 100644 --- a/adapter-kafka/src/main/java/io/nosqlbench/adapter/kafka/dispensers/MessageConsumerOpDispenser.java +++ b/adapter-kafka/src/main/java/io/nosqlbench/adapter/kafka/dispensers/MessageConsumerOpDispenser.java @@ -24,9 +24,9 @@ import io.nosqlbench.adapter.kafka.ops.OpTimeTrackKafkaConsumer; import io.nosqlbench.adapter.kafka.util.EndToEndStartingTimeSource; import io.nosqlbench.adapter.kafka.util.KafkaAdapterUtil; import io.nosqlbench.adapter.kafka.util.KafkaAdapterUtil.DOC_LEVEL_PARAMS; -import io.nosqlbench.engine.api.metrics.ReceivedMessageSequenceTracker; -import io.nosqlbench.engine.api.activityimpl.uniform.DriverAdapter; -import io.nosqlbench.engine.api.templating.ParsedOp; +import io.nosqlbench.adapters.api.metrics.ReceivedMessageSequenceTracker; +import io.nosqlbench.adapters.api.activityimpl.uniform.DriverAdapter; +import io.nosqlbench.adapters.api.templating.ParsedOp; import org.apache.commons.lang3.BooleanUtils; import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.math.NumberUtils; diff --git a/adapter-kafka/src/main/java/io/nosqlbench/adapter/kafka/dispensers/MessageProducerOpDispenser.java b/adapter-kafka/src/main/java/io/nosqlbench/adapter/kafka/dispensers/MessageProducerOpDispenser.java index 934dfd748..e92c3e87d 100644 --- a/adapter-kafka/src/main/java/io/nosqlbench/adapter/kafka/dispensers/MessageProducerOpDispenser.java +++ b/adapter-kafka/src/main/java/io/nosqlbench/adapter/kafka/dispensers/MessageProducerOpDispenser.java @@ -23,9 +23,9 @@ import io.nosqlbench.adapter.kafka.ops.OpTimeTrackKafkaClient; import io.nosqlbench.adapter.kafka.ops.OpTimeTrackKafkaProducer; import io.nosqlbench.adapter.kafka.util.KafkaAdapterUtil; import io.nosqlbench.adapter.kafka.util.KafkaAdapterUtil.DOC_LEVEL_PARAMS; -import io.nosqlbench.engine.api.activityimpl.uniform.DriverAdapter; -import io.nosqlbench.engine.api.metrics.EndToEndMetricsAdapterUtil; -import io.nosqlbench.engine.api.templating.ParsedOp; +import io.nosqlbench.adapters.api.activityimpl.uniform.DriverAdapter; +import io.nosqlbench.adapters.api.metrics.EndToEndMetricsAdapterUtil; +import io.nosqlbench.adapters.api.templating.ParsedOp; import org.apache.commons.lang3.StringUtils; import org.apache.kafka.clients.producer.KafkaProducer; import org.apache.kafka.clients.producer.ProducerRecord; diff --git a/adapter-kafka/src/main/java/io/nosqlbench/adapter/kafka/ops/KafkaOp.java b/adapter-kafka/src/main/java/io/nosqlbench/adapter/kafka/ops/KafkaOp.java index d6e3a0573..d2be61ba6 100644 --- a/adapter-kafka/src/main/java/io/nosqlbench/adapter/kafka/ops/KafkaOp.java +++ b/adapter-kafka/src/main/java/io/nosqlbench/adapter/kafka/ops/KafkaOp.java @@ -1,18 +1,17 @@ /* - * Copyright (c) 2022 nosqlbench + * 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 + * 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. + * 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.adapter.kafka.ops; @@ -20,7 +19,7 @@ package io.nosqlbench.adapter.kafka.ops; import com.codahale.metrics.Histogram; import io.nosqlbench.adapter.kafka.KafkaSpace; import io.nosqlbench.adapter.kafka.util.KafkaAdapterMetrics; -import io.nosqlbench.engine.api.activityimpl.uniform.flowtypes.CycleOp; +import io.nosqlbench.adapters.api.activityimpl.uniform.flowtypes.CycleOp; public class KafkaOp implements CycleOp { private final KafkaAdapterMetrics kafkaAdapterMetrics; diff --git a/adapter-kafka/src/main/java/io/nosqlbench/adapter/kafka/ops/OpTimeTrackKafkaConsumer.java b/adapter-kafka/src/main/java/io/nosqlbench/adapter/kafka/ops/OpTimeTrackKafkaConsumer.java index 3b16b9556..167909aaf 100644 --- a/adapter-kafka/src/main/java/io/nosqlbench/adapter/kafka/ops/OpTimeTrackKafkaConsumer.java +++ b/adapter-kafka/src/main/java/io/nosqlbench/adapter/kafka/ops/OpTimeTrackKafkaConsumer.java @@ -21,7 +21,7 @@ import io.nosqlbench.adapter.kafka.KafkaSpace; import io.nosqlbench.adapter.kafka.util.EndToEndStartingTimeSource; import io.nosqlbench.adapter.kafka.util.KafkaAdapterMetrics; import io.nosqlbench.adapter.kafka.util.KafkaAdapterUtil; -import io.nosqlbench.engine.api.metrics.ReceivedMessageSequenceTracker; +import io.nosqlbench.adapters.api.metrics.ReceivedMessageSequenceTracker; import org.apache.commons.lang3.StringUtils; import org.apache.kafka.clients.consumer.*; import org.apache.kafka.common.TopicPartition; diff --git a/adapter-kafka/src/main/java/io/nosqlbench/adapter/kafka/ops/OpTimeTrackKafkaProducer.java b/adapter-kafka/src/main/java/io/nosqlbench/adapter/kafka/ops/OpTimeTrackKafkaProducer.java index ad75b3eb1..9c0183103 100644 --- a/adapter-kafka/src/main/java/io/nosqlbench/adapter/kafka/ops/OpTimeTrackKafkaProducer.java +++ b/adapter-kafka/src/main/java/io/nosqlbench/adapter/kafka/ops/OpTimeTrackKafkaProducer.java @@ -19,13 +19,12 @@ package io.nosqlbench.adapter.kafka.ops; import io.nosqlbench.adapter.kafka.KafkaSpace; import io.nosqlbench.adapter.kafka.exception.KafkaAdapterUnexpectedException; import io.nosqlbench.adapter.kafka.util.KafkaAdapterUtil; -import io.nosqlbench.engine.api.metrics.MessageSequenceNumberSendingHandler; -import io.nosqlbench.engine.api.metrics.EndToEndMetricsAdapterUtil; +import io.nosqlbench.adapters.api.metrics.MessageSequenceNumberSendingHandler; +import io.nosqlbench.adapters.api.metrics.EndToEndMetricsAdapterUtil; import org.apache.kafka.clients.producer.Callback; import org.apache.kafka.clients.producer.KafkaProducer; import org.apache.kafka.clients.producer.ProducerRecord; import org.apache.kafka.clients.producer.RecordMetadata; -import org.apache.kafka.common.KafkaException; import org.apache.kafka.common.errors.AuthorizationException; import org.apache.kafka.common.errors.OutOfOrderSequenceException; import org.apache.kafka.common.errors.ProducerFencedException; diff --git a/adapter-mongodb/src/main/java/io/nosqlbench/adapter/mongodb/core/MongoOpMapper.java b/adapter-mongodb/src/main/java/io/nosqlbench/adapter/mongodb/core/MongoOpMapper.java index b6e879949..4ebc6e76c 100644 --- a/adapter-mongodb/src/main/java/io/nosqlbench/adapter/mongodb/core/MongoOpMapper.java +++ b/adapter-mongodb/src/main/java/io/nosqlbench/adapter/mongodb/core/MongoOpMapper.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. @@ -19,11 +19,11 @@ package io.nosqlbench.adapter.mongodb.core; import io.nosqlbench.adapter.mongodb.dispensers.MongoCommandOpDispenser; import io.nosqlbench.api.config.standard.NBConfiguration; import io.nosqlbench.api.errors.BasicError; -import io.nosqlbench.engine.api.activityimpl.OpDispenser; -import io.nosqlbench.engine.api.activityimpl.OpMapper; -import io.nosqlbench.engine.api.activityimpl.uniform.DriverSpaceCache; -import io.nosqlbench.engine.api.activityimpl.uniform.flowtypes.Op; -import io.nosqlbench.engine.api.templating.ParsedOp; +import io.nosqlbench.adapters.api.activityimpl.OpDispenser; +import io.nosqlbench.adapters.api.activityimpl.OpMapper; +import io.nosqlbench.adapters.api.activityimpl.uniform.DriverSpaceCache; +import io.nosqlbench.adapters.api.activityimpl.uniform.flowtypes.Op; +import io.nosqlbench.adapters.api.templating.ParsedOp; import io.nosqlbench.engine.api.templating.TypeAndTarget; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; 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 b3e52bcae..fd2b28f32 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 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. @@ -18,10 +18,10 @@ package io.nosqlbench.adapter.mongodb.core; import io.nosqlbench.api.config.standard.NBConfigModel; import io.nosqlbench.api.config.standard.NBConfiguration; -import io.nosqlbench.engine.api.activityimpl.OpMapper; -import io.nosqlbench.engine.api.activityimpl.uniform.BaseDriverAdapter; -import io.nosqlbench.engine.api.activityimpl.uniform.DriverAdapter; -import io.nosqlbench.engine.api.activityimpl.uniform.flowtypes.Op; +import io.nosqlbench.adapters.api.activityimpl.OpMapper; +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.annotations.Service; import java.util.function.Function; diff --git a/adapter-mongodb/src/main/java/io/nosqlbench/adapter/mongodb/dispensers/MongoCommandOpDispenser.java b/adapter-mongodb/src/main/java/io/nosqlbench/adapter/mongodb/dispensers/MongoCommandOpDispenser.java index ca643dc4b..2be65f599 100644 --- a/adapter-mongodb/src/main/java/io/nosqlbench/adapter/mongodb/dispensers/MongoCommandOpDispenser.java +++ b/adapter-mongodb/src/main/java/io/nosqlbench/adapter/mongodb/dispensers/MongoCommandOpDispenser.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. @@ -18,10 +18,10 @@ package io.nosqlbench.adapter.mongodb.dispensers; import io.nosqlbench.adapter.mongodb.core.MongoSpace; import io.nosqlbench.adapter.mongodb.ops.MongoDirectCommandOp; -import io.nosqlbench.engine.api.activityimpl.BaseOpDispenser; -import io.nosqlbench.engine.api.activityimpl.uniform.DriverAdapter; -import io.nosqlbench.engine.api.activityimpl.uniform.flowtypes.Op; -import io.nosqlbench.engine.api.templating.ParsedOp; +import io.nosqlbench.adapters.api.activityimpl.BaseOpDispenser; +import io.nosqlbench.adapters.api.activityimpl.uniform.DriverAdapter; +import io.nosqlbench.adapters.api.activityimpl.uniform.flowtypes.Op; +import io.nosqlbench.adapters.api.templating.ParsedOp; import org.bson.Document; import org.bson.conversions.Bson; diff --git a/adapter-mongodb/src/main/java/io/nosqlbench/adapter/mongodb/dispensers/MongoDbUpdateOpDispenser.java b/adapter-mongodb/src/main/java/io/nosqlbench/adapter/mongodb/dispensers/MongoDbUpdateOpDispenser.java index 0eec16592..0829fd2e9 100644 --- a/adapter-mongodb/src/main/java/io/nosqlbench/adapter/mongodb/dispensers/MongoDbUpdateOpDispenser.java +++ b/adapter-mongodb/src/main/java/io/nosqlbench/adapter/mongodb/dispensers/MongoDbUpdateOpDispenser.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. @@ -20,9 +20,9 @@ import com.mongodb.client.MongoClient; import com.mongodb.client.MongoDatabase; import io.nosqlbench.adapter.mongodb.core.MongoSpace; import io.nosqlbench.adapter.mongodb.core.MongodbDriverAdapter; -import io.nosqlbench.engine.api.activityimpl.BaseOpDispenser; -import io.nosqlbench.engine.api.activityimpl.uniform.flowtypes.Op; -import io.nosqlbench.engine.api.templating.ParsedOp; +import io.nosqlbench.adapters.api.activityimpl.BaseOpDispenser; +import io.nosqlbench.adapters.api.activityimpl.uniform.flowtypes.Op; +import io.nosqlbench.adapters.api.templating.ParsedOp; import java.util.function.LongFunction; @@ -33,7 +33,7 @@ import java.util.function.LongFunction; public class MongoDbUpdateOpDispenser extends BaseOpDispenser { private final LongFunction spaceF; private final LongFunction opF; - private LongFunction collectionF; + private final LongFunction collectionF; public MongoDbUpdateOpDispenser(MongodbDriverAdapter adapter, ParsedOp pop, LongFunction collectionF) { super(adapter, pop); diff --git a/adapter-mongodb/src/main/java/io/nosqlbench/adapter/mongodb/ops/MongoDirectCommandOp.java b/adapter-mongodb/src/main/java/io/nosqlbench/adapter/mongodb/ops/MongoDirectCommandOp.java index 17dffd223..3efac8fa8 100644 --- a/adapter-mongodb/src/main/java/io/nosqlbench/adapter/mongodb/ops/MongoDirectCommandOp.java +++ b/adapter-mongodb/src/main/java/io/nosqlbench/adapter/mongodb/ops/MongoDirectCommandOp.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. @@ -17,7 +17,7 @@ package io.nosqlbench.adapter.mongodb.ops; import com.mongodb.client.MongoClient; -import io.nosqlbench.engine.api.activityimpl.uniform.flowtypes.CycleOp; +import io.nosqlbench.adapters.api.activityimpl.uniform.flowtypes.CycleOp; import org.bson.Document; import org.bson.conversions.Bson; 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 4d0c2c7fb..bca96f555 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 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. @@ -17,11 +17,10 @@ package io.nosqlbench.adapter.pulsar; import io.nosqlbench.adapter.pulsar.ops.PulsarOp; -import io.nosqlbench.engine.api.activityimpl.OpMapper; -import io.nosqlbench.engine.api.activityimpl.uniform.BaseDriverAdapter; -import io.nosqlbench.engine.api.activityimpl.uniform.DriverAdapter; -import io.nosqlbench.engine.api.activityimpl.uniform.DriverSpaceCache; -import io.nosqlbench.nb.annotations.Maturity; +import io.nosqlbench.adapters.api.activityimpl.OpMapper; +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.annotations.Service; import io.nosqlbench.api.config.standard.NBConfigModel; import io.nosqlbench.api.config.standard.NBConfiguration; diff --git a/adapter-pulsar/src/main/java/io/nosqlbench/adapter/pulsar/PulsarOpMapper.java b/adapter-pulsar/src/main/java/io/nosqlbench/adapter/pulsar/PulsarOpMapper.java index a3db586ee..2062af56d 100644 --- a/adapter-pulsar/src/main/java/io/nosqlbench/adapter/pulsar/PulsarOpMapper.java +++ b/adapter-pulsar/src/main/java/io/nosqlbench/adapter/pulsar/PulsarOpMapper.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. @@ -19,11 +19,11 @@ package io.nosqlbench.adapter.pulsar; import io.nosqlbench.adapter.pulsar.dispensers.*; import io.nosqlbench.adapter.pulsar.ops.PulsarOp; import io.nosqlbench.api.config.standard.NBConfiguration; -import io.nosqlbench.engine.api.activityimpl.OpDispenser; -import io.nosqlbench.engine.api.activityimpl.OpMapper; -import io.nosqlbench.engine.api.activityimpl.uniform.DriverAdapter; -import io.nosqlbench.engine.api.activityimpl.uniform.DriverSpaceCache; -import io.nosqlbench.engine.api.templating.ParsedOp; +import io.nosqlbench.adapters.api.activityimpl.OpDispenser; +import io.nosqlbench.adapters.api.activityimpl.OpMapper; +import io.nosqlbench.adapters.api.activityimpl.uniform.DriverAdapter; +import io.nosqlbench.adapters.api.activityimpl.uniform.DriverSpaceCache; +import io.nosqlbench.adapters.api.templating.ParsedOp; import io.nosqlbench.engine.api.templating.TypeAndTarget; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; diff --git a/adapter-pulsar/src/main/java/io/nosqlbench/adapter/pulsar/dispensers/AdminNamespaceOpDispenser.java b/adapter-pulsar/src/main/java/io/nosqlbench/adapter/pulsar/dispensers/AdminNamespaceOpDispenser.java index eb41ce1ed..2b6233a11 100644 --- a/adapter-pulsar/src/main/java/io/nosqlbench/adapter/pulsar/dispensers/AdminNamespaceOpDispenser.java +++ b/adapter-pulsar/src/main/java/io/nosqlbench/adapter/pulsar/dispensers/AdminNamespaceOpDispenser.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. @@ -18,11 +18,10 @@ package io.nosqlbench.adapter.pulsar.dispensers; import io.nosqlbench.adapter.pulsar.PulsarSpace; import io.nosqlbench.adapter.pulsar.ops.AdminNamespaceOp; -import io.nosqlbench.engine.api.activityimpl.uniform.DriverAdapter; -import io.nosqlbench.engine.api.templating.ParsedOp; +import io.nosqlbench.adapters.api.activityimpl.uniform.DriverAdapter; +import io.nosqlbench.adapters.api.templating.ParsedOp; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; -import org.apache.pulsar.client.admin.PulsarAdmin; import java.util.function.LongFunction; diff --git a/adapter-pulsar/src/main/java/io/nosqlbench/adapter/pulsar/dispensers/AdminTenantOpDispenser.java b/adapter-pulsar/src/main/java/io/nosqlbench/adapter/pulsar/dispensers/AdminTenantOpDispenser.java index e19897ed2..e05c1a588 100644 --- a/adapter-pulsar/src/main/java/io/nosqlbench/adapter/pulsar/dispensers/AdminTenantOpDispenser.java +++ b/adapter-pulsar/src/main/java/io/nosqlbench/adapter/pulsar/dispensers/AdminTenantOpDispenser.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. @@ -18,11 +18,10 @@ package io.nosqlbench.adapter.pulsar.dispensers; import io.nosqlbench.adapter.pulsar.PulsarSpace; import io.nosqlbench.adapter.pulsar.ops.AdminTenantOp; -import io.nosqlbench.engine.api.activityimpl.uniform.DriverAdapter; -import io.nosqlbench.engine.api.templating.ParsedOp; +import io.nosqlbench.adapters.api.activityimpl.uniform.DriverAdapter; +import io.nosqlbench.adapters.api.templating.ParsedOp; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; -import org.apache.pulsar.client.admin.PulsarAdmin; import java.util.*; import java.util.function.LongFunction; diff --git a/adapter-pulsar/src/main/java/io/nosqlbench/adapter/pulsar/dispensers/AdminTopicOpDispenser.java b/adapter-pulsar/src/main/java/io/nosqlbench/adapter/pulsar/dispensers/AdminTopicOpDispenser.java index c92436128..219d22ff0 100644 --- a/adapter-pulsar/src/main/java/io/nosqlbench/adapter/pulsar/dispensers/AdminTopicOpDispenser.java +++ b/adapter-pulsar/src/main/java/io/nosqlbench/adapter/pulsar/dispensers/AdminTopicOpDispenser.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. @@ -18,11 +18,10 @@ package io.nosqlbench.adapter.pulsar.dispensers; import io.nosqlbench.adapter.pulsar.PulsarSpace; import io.nosqlbench.adapter.pulsar.ops.AdminTopicOp; -import io.nosqlbench.engine.api.activityimpl.uniform.DriverAdapter; -import io.nosqlbench.engine.api.templating.ParsedOp; +import io.nosqlbench.adapters.api.activityimpl.uniform.DriverAdapter; +import io.nosqlbench.adapters.api.templating.ParsedOp; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; -import org.apache.pulsar.client.admin.PulsarAdmin; import java.util.function.LongFunction; diff --git a/adapter-pulsar/src/main/java/io/nosqlbench/adapter/pulsar/dispensers/MessageConsumerOpDispenser.java b/adapter-pulsar/src/main/java/io/nosqlbench/adapter/pulsar/dispensers/MessageConsumerOpDispenser.java index 7b3b55123..8cc539550 100644 --- a/adapter-pulsar/src/main/java/io/nosqlbench/adapter/pulsar/dispensers/MessageConsumerOpDispenser.java +++ b/adapter-pulsar/src/main/java/io/nosqlbench/adapter/pulsar/dispensers/MessageConsumerOpDispenser.java @@ -19,13 +19,12 @@ package io.nosqlbench.adapter.pulsar.dispensers; import io.nosqlbench.adapter.pulsar.PulsarSpace; import io.nosqlbench.adapter.pulsar.ops.MessageConsumerOp; import io.nosqlbench.adapter.pulsar.util.EndToEndStartingTimeSource; -import io.nosqlbench.adapter.pulsar.util.PulsarAdapterUtil; import io.nosqlbench.adapter.pulsar.util.PulsarAdapterUtil.CONSUMER_CONF_CUSTOM_KEY; import io.nosqlbench.adapter.pulsar.util.PulsarAdapterUtil.CONSUMER_CONF_STD_KEY; import io.nosqlbench.adapter.pulsar.util.PulsarAdapterUtil.DOC_LEVEL_PARAMS; -import io.nosqlbench.engine.api.metrics.ReceivedMessageSequenceTracker; -import io.nosqlbench.engine.api.activityimpl.uniform.DriverAdapter; -import io.nosqlbench.engine.api.templating.ParsedOp; +import io.nosqlbench.adapters.api.metrics.ReceivedMessageSequenceTracker; +import io.nosqlbench.adapters.api.activityimpl.uniform.DriverAdapter; +import io.nosqlbench.adapters.api.templating.ParsedOp; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.apache.pulsar.client.api.Consumer; diff --git a/adapter-pulsar/src/main/java/io/nosqlbench/adapter/pulsar/dispensers/MessageProducerOpDispenser.java b/adapter-pulsar/src/main/java/io/nosqlbench/adapter/pulsar/dispensers/MessageProducerOpDispenser.java index 72703c44c..63ffbd1ca 100644 --- a/adapter-pulsar/src/main/java/io/nosqlbench/adapter/pulsar/dispensers/MessageProducerOpDispenser.java +++ b/adapter-pulsar/src/main/java/io/nosqlbench/adapter/pulsar/dispensers/MessageProducerOpDispenser.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. @@ -19,8 +19,8 @@ package io.nosqlbench.adapter.pulsar.dispensers; import io.nosqlbench.adapter.pulsar.PulsarSpace; import io.nosqlbench.adapter.pulsar.ops.MessageProducerOp; import io.nosqlbench.adapter.pulsar.util.PulsarAdapterUtil; -import io.nosqlbench.engine.api.activityimpl.uniform.DriverAdapter; -import io.nosqlbench.engine.api.templating.ParsedOp; +import io.nosqlbench.adapters.api.activityimpl.uniform.DriverAdapter; +import io.nosqlbench.adapters.api.templating.ParsedOp; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.apache.pulsar.client.api.Producer; diff --git a/adapter-pulsar/src/main/java/io/nosqlbench/adapter/pulsar/dispensers/MessageReaderOpDispenser.java b/adapter-pulsar/src/main/java/io/nosqlbench/adapter/pulsar/dispensers/MessageReaderOpDispenser.java index 3d40563e1..47ac52c88 100644 --- a/adapter-pulsar/src/main/java/io/nosqlbench/adapter/pulsar/dispensers/MessageReaderOpDispenser.java +++ b/adapter-pulsar/src/main/java/io/nosqlbench/adapter/pulsar/dispensers/MessageReaderOpDispenser.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. @@ -19,13 +19,11 @@ package io.nosqlbench.adapter.pulsar.dispensers; import io.nosqlbench.adapter.pulsar.PulsarSpace; import io.nosqlbench.adapter.pulsar.ops.MessageReaderOp; import io.nosqlbench.adapter.pulsar.util.PulsarAdapterUtil; -import io.nosqlbench.engine.api.activityimpl.uniform.DriverAdapter; -import io.nosqlbench.engine.api.templating.ParsedOp; +import io.nosqlbench.adapters.api.activityimpl.uniform.DriverAdapter; +import io.nosqlbench.adapters.api.templating.ParsedOp; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; -import org.apache.pulsar.client.api.PulsarClient; import org.apache.pulsar.client.api.Reader; -import org.apache.pulsar.client.api.Schema; import java.util.function.LongFunction; diff --git a/adapter-pulsar/src/main/java/io/nosqlbench/adapter/pulsar/dispensers/PulsarAdminOpDispenser.java b/adapter-pulsar/src/main/java/io/nosqlbench/adapter/pulsar/dispensers/PulsarAdminOpDispenser.java index a56752e29..34759741f 100644 --- a/adapter-pulsar/src/main/java/io/nosqlbench/adapter/pulsar/dispensers/PulsarAdminOpDispenser.java +++ b/adapter-pulsar/src/main/java/io/nosqlbench/adapter/pulsar/dispensers/PulsarAdminOpDispenser.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. @@ -18,8 +18,8 @@ package io.nosqlbench.adapter.pulsar.dispensers; import io.nosqlbench.adapter.pulsar.PulsarSpace; import io.nosqlbench.adapter.pulsar.util.PulsarAdapterUtil; -import io.nosqlbench.engine.api.activityimpl.uniform.DriverAdapter; -import io.nosqlbench.engine.api.templating.ParsedOp; +import io.nosqlbench.adapters.api.activityimpl.uniform.DriverAdapter; +import io.nosqlbench.adapters.api.templating.ParsedOp; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.apache.pulsar.client.admin.PulsarAdmin; diff --git a/adapter-pulsar/src/main/java/io/nosqlbench/adapter/pulsar/dispensers/PulsarBaseOpDispenser.java b/adapter-pulsar/src/main/java/io/nosqlbench/adapter/pulsar/dispensers/PulsarBaseOpDispenser.java index 70e279bd9..3c415468b 100644 --- a/adapter-pulsar/src/main/java/io/nosqlbench/adapter/pulsar/dispensers/PulsarBaseOpDispenser.java +++ b/adapter-pulsar/src/main/java/io/nosqlbench/adapter/pulsar/dispensers/PulsarBaseOpDispenser.java @@ -33,10 +33,9 @@ import io.nosqlbench.adapter.pulsar.util.PulsarAdapterUtil.PULSAR_API_TYPE; import io.nosqlbench.adapter.pulsar.util.PulsarAdapterUtil.READER_CONF_CUSTOM_KEY; import io.nosqlbench.adapter.pulsar.util.PulsarAdapterUtil.READER_CONF_STD_KEY; import io.nosqlbench.adapter.pulsar.util.PulsarAdapterUtil.READER_MSG_POSITION_TYPE; -import io.nosqlbench.api.config.NBLabels; -import io.nosqlbench.engine.api.activityimpl.BaseOpDispenser; -import io.nosqlbench.engine.api.activityimpl.uniform.DriverAdapter; -import io.nosqlbench.engine.api.templating.ParsedOp; +import io.nosqlbench.adapters.api.activityimpl.BaseOpDispenser; +import io.nosqlbench.adapters.api.activityimpl.uniform.DriverAdapter; +import io.nosqlbench.adapters.api.templating.ParsedOp; import org.apache.commons.lang3.BooleanUtils; import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.math.NumberUtils; diff --git a/adapter-pulsar/src/main/java/io/nosqlbench/adapter/pulsar/dispensers/PulsarClientOpDispenser.java b/adapter-pulsar/src/main/java/io/nosqlbench/adapter/pulsar/dispensers/PulsarClientOpDispenser.java index 3e92da254..9f35627e6 100644 --- a/adapter-pulsar/src/main/java/io/nosqlbench/adapter/pulsar/dispensers/PulsarClientOpDispenser.java +++ b/adapter-pulsar/src/main/java/io/nosqlbench/adapter/pulsar/dispensers/PulsarClientOpDispenser.java @@ -20,9 +20,9 @@ import com.codahale.metrics.Timer.Context; import io.nosqlbench.adapter.pulsar.PulsarSpace; import io.nosqlbench.adapter.pulsar.exception.PulsarAdapterUnexpectedException; import io.nosqlbench.adapter.pulsar.util.PulsarAdapterUtil.DOC_LEVEL_PARAMS; -import io.nosqlbench.engine.api.activityimpl.uniform.DriverAdapter; -import io.nosqlbench.engine.api.metrics.EndToEndMetricsAdapterUtil.MSG_SEQ_ERROR_SIMU_TYPE; -import io.nosqlbench.engine.api.templating.ParsedOp; +import io.nosqlbench.adapters.api.activityimpl.uniform.DriverAdapter; +import io.nosqlbench.adapters.api.metrics.EndToEndMetricsAdapterUtil.MSG_SEQ_ERROR_SIMU_TYPE; +import io.nosqlbench.adapters.api.templating.ParsedOp; import org.apache.commons.lang3.StringUtils; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; diff --git a/adapter-pulsar/src/main/java/io/nosqlbench/adapter/pulsar/ops/MessageConsumerOp.java b/adapter-pulsar/src/main/java/io/nosqlbench/adapter/pulsar/ops/MessageConsumerOp.java index df5707bb0..2400907ec 100644 --- a/adapter-pulsar/src/main/java/io/nosqlbench/adapter/pulsar/ops/MessageConsumerOp.java +++ b/adapter-pulsar/src/main/java/io/nosqlbench/adapter/pulsar/ops/MessageConsumerOp.java @@ -16,12 +16,11 @@ package io.nosqlbench.adapter.pulsar.ops; -import com.codahale.metrics.Timer; import com.codahale.metrics.Timer.Context; import io.nosqlbench.adapter.pulsar.exception.PulsarAdapterAsyncOperationFailedException; import io.nosqlbench.adapter.pulsar.exception.PulsarAdapterUnexpectedException; import io.nosqlbench.adapter.pulsar.util.*; -import io.nosqlbench.engine.api.metrics.ReceivedMessageSequenceTracker; +import io.nosqlbench.adapters.api.metrics.ReceivedMessageSequenceTracker; import org.apache.commons.lang3.StringUtils; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; diff --git a/adapter-pulsar/src/main/java/io/nosqlbench/adapter/pulsar/ops/MessageProducerOp.java b/adapter-pulsar/src/main/java/io/nosqlbench/adapter/pulsar/ops/MessageProducerOp.java index ec57efb1a..d462ac122 100644 --- a/adapter-pulsar/src/main/java/io/nosqlbench/adapter/pulsar/ops/MessageProducerOp.java +++ b/adapter-pulsar/src/main/java/io/nosqlbench/adapter/pulsar/ops/MessageProducerOp.java @@ -16,16 +16,14 @@ package io.nosqlbench.adapter.pulsar.ops; -import com.codahale.metrics.Timer; import com.codahale.metrics.Timer.Context; import io.nosqlbench.adapter.pulsar.exception.PulsarAdapterAsyncOperationFailedException; import io.nosqlbench.adapter.pulsar.exception.PulsarAdapterUnexpectedException; -import io.nosqlbench.engine.api.metrics.EndToEndMetricsAdapterUtil.MSG_SEQ_ERROR_SIMU_TYPE; -import io.nosqlbench.engine.api.metrics.MessageSequenceNumberSendingHandler; +import io.nosqlbench.adapters.api.metrics.EndToEndMetricsAdapterUtil.MSG_SEQ_ERROR_SIMU_TYPE; +import io.nosqlbench.adapters.api.metrics.MessageSequenceNumberSendingHandler; import io.nosqlbench.adapter.pulsar.util.PulsarAdapterMetrics; import io.nosqlbench.adapter.pulsar.util.PulsarAdapterUtil; import io.nosqlbench.adapter.pulsar.util.PulsarAvroSchemaUtil; -import io.nosqlbench.engine.api.metrics.EndToEndMetricsAdapterUtil; import org.apache.commons.lang3.StringUtils; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; diff --git a/adapter-pulsar/src/main/java/io/nosqlbench/adapter/pulsar/ops/PulsarAdminOp.java b/adapter-pulsar/src/main/java/io/nosqlbench/adapter/pulsar/ops/PulsarAdminOp.java index b1be645d2..90e883b1c 100644 --- a/adapter-pulsar/src/main/java/io/nosqlbench/adapter/pulsar/ops/PulsarAdminOp.java +++ b/adapter-pulsar/src/main/java/io/nosqlbench/adapter/pulsar/ops/PulsarAdminOp.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. @@ -17,7 +17,6 @@ package io.nosqlbench.adapter.pulsar.ops; import io.nosqlbench.adapter.pulsar.util.PulsarAdapterMetrics; -import io.nosqlbench.engine.api.activityimpl.uniform.flowtypes.CycleOp; import org.apache.pulsar.client.admin.PulsarAdmin; public abstract class PulsarAdminOp extends PulsarOp { diff --git a/adapter-pulsar/src/main/java/io/nosqlbench/adapter/pulsar/ops/PulsarOp.java b/adapter-pulsar/src/main/java/io/nosqlbench/adapter/pulsar/ops/PulsarOp.java index a3e0b87b1..015933ee9 100644 --- a/adapter-pulsar/src/main/java/io/nosqlbench/adapter/pulsar/ops/PulsarOp.java +++ b/adapter-pulsar/src/main/java/io/nosqlbench/adapter/pulsar/ops/PulsarOp.java @@ -1,24 +1,23 @@ /* - * Copyright (c) 2022 nosqlbench + * 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 + * 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. + * 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.adapter.pulsar.ops; import io.nosqlbench.adapter.pulsar.util.PulsarAdapterMetrics; -import io.nosqlbench.engine.api.activityimpl.uniform.flowtypes.CycleOp; +import io.nosqlbench.adapters.api.activityimpl.uniform.flowtypes.CycleOp; public abstract class PulsarOp implements CycleOp { protected final boolean asyncApi; 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 49527f9c0..b49789dd0 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 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. @@ -19,10 +19,10 @@ package io.nosqlbench.adapter.s4j; import io.nosqlbench.adapter.s4j.ops.S4JOp; import io.nosqlbench.api.config.standard.NBConfigModel; import io.nosqlbench.api.config.standard.NBConfiguration; -import io.nosqlbench.engine.api.activityimpl.OpMapper; -import io.nosqlbench.engine.api.activityimpl.uniform.BaseDriverAdapter; -import io.nosqlbench.engine.api.activityimpl.uniform.DriverAdapter; -import io.nosqlbench.engine.api.activityimpl.uniform.DriverSpaceCache; +import io.nosqlbench.adapters.api.activityimpl.OpMapper; +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.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/S4JOpMapper.java b/adapter-s4j/src/main/java/io/nosqlbench/adapter/s4j/S4JOpMapper.java index 95b39ec57..32300db12 100644 --- a/adapter-s4j/src/main/java/io/nosqlbench/adapter/s4j/S4JOpMapper.java +++ b/adapter-s4j/src/main/java/io/nosqlbench/adapter/s4j/S4JOpMapper.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. @@ -20,11 +20,11 @@ import io.nosqlbench.adapter.s4j.dispensers.MessageConsumerOpDispenser; import io.nosqlbench.adapter.s4j.dispensers.MessageProducerOpDispenser; import io.nosqlbench.adapter.s4j.ops.S4JOp; import io.nosqlbench.api.config.standard.NBConfiguration; -import io.nosqlbench.engine.api.activityimpl.OpDispenser; -import io.nosqlbench.engine.api.activityimpl.OpMapper; -import io.nosqlbench.engine.api.activityimpl.uniform.DriverAdapter; -import io.nosqlbench.engine.api.activityimpl.uniform.DriverSpaceCache; -import io.nosqlbench.engine.api.templating.ParsedOp; +import io.nosqlbench.adapters.api.activityimpl.OpDispenser; +import io.nosqlbench.adapters.api.activityimpl.OpMapper; +import io.nosqlbench.adapters.api.activityimpl.uniform.DriverAdapter; +import io.nosqlbench.adapters.api.activityimpl.uniform.DriverSpaceCache; +import io.nosqlbench.adapters.api.templating.ParsedOp; import io.nosqlbench.engine.api.templating.TypeAndTarget; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; diff --git a/adapter-s4j/src/main/java/io/nosqlbench/adapter/s4j/dispensers/MessageConsumerOpDispenser.java b/adapter-s4j/src/main/java/io/nosqlbench/adapter/s4j/dispensers/MessageConsumerOpDispenser.java index 2feb4a94d..e4ebd1d00 100644 --- a/adapter-s4j/src/main/java/io/nosqlbench/adapter/s4j/dispensers/MessageConsumerOpDispenser.java +++ b/adapter-s4j/src/main/java/io/nosqlbench/adapter/s4j/dispensers/MessageConsumerOpDispenser.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. @@ -20,8 +20,8 @@ import io.nosqlbench.adapter.s4j.S4JSpace; import io.nosqlbench.adapter.s4j.ops.MessageConsumerOp; import io.nosqlbench.adapter.s4j.util.S4JAdapterUtil; import io.nosqlbench.adapter.s4j.util.S4JJMSContextWrapper; -import io.nosqlbench.engine.api.activityimpl.uniform.DriverAdapter; -import io.nosqlbench.engine.api.templating.ParsedOp; +import io.nosqlbench.adapters.api.activityimpl.uniform.DriverAdapter; +import io.nosqlbench.adapters.api.templating.ParsedOp; import org.apache.commons.lang3.StringUtils; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; diff --git a/adapter-s4j/src/main/java/io/nosqlbench/adapter/s4j/dispensers/MessageProducerOpDispenser.java b/adapter-s4j/src/main/java/io/nosqlbench/adapter/s4j/dispensers/MessageProducerOpDispenser.java index c0cccc5de..ebbda3a75 100644 --- a/adapter-s4j/src/main/java/io/nosqlbench/adapter/s4j/dispensers/MessageProducerOpDispenser.java +++ b/adapter-s4j/src/main/java/io/nosqlbench/adapter/s4j/dispensers/MessageProducerOpDispenser.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. @@ -22,8 +22,8 @@ import io.nosqlbench.adapter.s4j.exception.S4JAdapterUnexpectedException; import io.nosqlbench.adapter.s4j.ops.MessageProducerOp; import io.nosqlbench.adapter.s4j.util.S4JAdapterUtil; import io.nosqlbench.adapter.s4j.util.S4JJMSContextWrapper; -import io.nosqlbench.engine.api.activityimpl.uniform.DriverAdapter; -import io.nosqlbench.engine.api.templating.ParsedOp; +import io.nosqlbench.adapters.api.activityimpl.uniform.DriverAdapter; +import io.nosqlbench.adapters.api.templating.ParsedOp; import org.apache.commons.lang3.BooleanUtils; import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.math.NumberUtils; diff --git a/adapter-s4j/src/main/java/io/nosqlbench/adapter/s4j/dispensers/S4JBaseOpDispenser.java b/adapter-s4j/src/main/java/io/nosqlbench/adapter/s4j/dispensers/S4JBaseOpDispenser.java index 45381a983..5150fe329 100644 --- a/adapter-s4j/src/main/java/io/nosqlbench/adapter/s4j/dispensers/S4JBaseOpDispenser.java +++ b/adapter-s4j/src/main/java/io/nosqlbench/adapter/s4j/dispensers/S4JBaseOpDispenser.java @@ -20,9 +20,9 @@ import com.datastax.oss.pulsar.jms.PulsarJMSContext; import io.nosqlbench.adapter.s4j.S4JSpace; import io.nosqlbench.adapter.s4j.ops.S4JOp; import io.nosqlbench.adapter.s4j.util.*; -import io.nosqlbench.engine.api.activityimpl.BaseOpDispenser; -import io.nosqlbench.engine.api.activityimpl.uniform.DriverAdapter; -import io.nosqlbench.engine.api.templating.ParsedOp; +import io.nosqlbench.adapters.api.activityimpl.BaseOpDispenser; +import io.nosqlbench.adapters.api.activityimpl.uniform.DriverAdapter; +import io.nosqlbench.adapters.api.templating.ParsedOp; import org.apache.commons.lang3.BooleanUtils; import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.math.NumberUtils; diff --git a/adapter-s4j/src/main/java/io/nosqlbench/adapter/s4j/ops/S4JOp.java b/adapter-s4j/src/main/java/io/nosqlbench/adapter/s4j/ops/S4JOp.java index 4fee61dab..5716736f2 100644 --- a/adapter-s4j/src/main/java/io/nosqlbench/adapter/s4j/ops/S4JOp.java +++ b/adapter-s4j/src/main/java/io/nosqlbench/adapter/s4j/ops/S4JOp.java @@ -1,18 +1,17 @@ /* - * Copyright (c) 2022 nosqlbench + * 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 + * 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. + * 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.adapter.s4j.ops; @@ -20,7 +19,7 @@ package io.nosqlbench.adapter.s4j.ops; import com.codahale.metrics.Histogram; import io.nosqlbench.adapter.s4j.S4JSpace; import io.nosqlbench.adapter.s4j.util.S4JAdapterMetrics; -import io.nosqlbench.engine.api.activityimpl.uniform.flowtypes.CycleOp; +import io.nosqlbench.adapters.api.activityimpl.uniform.flowtypes.CycleOp; import javax.jms.Destination; import javax.jms.JMSContext; 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 1bf1156d5..138abee75 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 @@ -16,14 +16,14 @@ package io.nosqlbench.adapter.stdout; -import io.nosqlbench.engine.api.activityconfig.yaml.OpData; -import io.nosqlbench.engine.api.activityconfig.yaml.OpTemplate; -import io.nosqlbench.engine.api.activityconfig.yaml.OpsDocList; -import io.nosqlbench.engine.api.activityimpl.OpMapper; -import io.nosqlbench.engine.api.activityimpl.uniform.BaseDriverAdapter; -import io.nosqlbench.engine.api.activityimpl.uniform.DriverAdapter; -import io.nosqlbench.engine.api.activityimpl.uniform.DriverSpaceCache; -import io.nosqlbench.engine.api.activityimpl.uniform.decorators.SyntheticOpTemplateProvider; +import io.nosqlbench.adapters.api.activityconfig.yaml.OpData; +import io.nosqlbench.adapters.api.activityconfig.yaml.OpTemplate; +import io.nosqlbench.adapters.api.activityconfig.yaml.OpsDocList; +import io.nosqlbench.adapters.api.activityimpl.OpMapper; +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.adapters.api.activityimpl.uniform.decorators.SyntheticOpTemplateProvider; import io.nosqlbench.nb.annotations.Service; import io.nosqlbench.api.config.standard.ConfigModel; import io.nosqlbench.api.config.standard.NBConfigModel; diff --git a/adapter-stdout/src/main/java/io/nosqlbench/adapter/stdout/StdoutOp.java b/adapter-stdout/src/main/java/io/nosqlbench/adapter/stdout/StdoutOp.java index 1f3842357..9a4a1d4dd 100644 --- a/adapter-stdout/src/main/java/io/nosqlbench/adapter/stdout/StdoutOp.java +++ b/adapter-stdout/src/main/java/io/nosqlbench/adapter/stdout/StdoutOp.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. @@ -16,9 +16,9 @@ package io.nosqlbench.adapter.stdout; -import io.nosqlbench.engine.api.activityimpl.uniform.flowtypes.RunnableOp; +import io.nosqlbench.adapters.api.activityimpl.uniform.flowtypes.CycleOp; -public class StdoutOp implements RunnableOp { +public class StdoutOp implements CycleOp { private final StdoutSpace ctx; private final String text; @@ -29,8 +29,8 @@ public class StdoutOp implements RunnableOp { } @Override - public void run() { + public String apply(long cycle) { ctx.writeflush(text); - + return text; } } diff --git a/adapter-stdout/src/main/java/io/nosqlbench/adapter/stdout/StdoutOpDispenser.java b/adapter-stdout/src/main/java/io/nosqlbench/adapter/stdout/StdoutOpDispenser.java index 08276ad94..5d08f151f 100644 --- a/adapter-stdout/src/main/java/io/nosqlbench/adapter/stdout/StdoutOpDispenser.java +++ b/adapter-stdout/src/main/java/io/nosqlbench/adapter/stdout/StdoutOpDispenser.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. @@ -16,9 +16,9 @@ package io.nosqlbench.adapter.stdout; -import io.nosqlbench.engine.api.activityimpl.BaseOpDispenser; -import io.nosqlbench.engine.api.activityimpl.uniform.DriverAdapter; -import io.nosqlbench.engine.api.templating.ParsedOp; +import io.nosqlbench.adapters.api.activityimpl.BaseOpDispenser; +import io.nosqlbench.adapters.api.activityimpl.uniform.DriverAdapter; +import io.nosqlbench.adapters.api.templating.ParsedOp; import java.util.function.LongFunction; diff --git a/adapter-stdout/src/main/java/io/nosqlbench/adapter/stdout/StdoutOpMapper.java b/adapter-stdout/src/main/java/io/nosqlbench/adapter/stdout/StdoutOpMapper.java index eb0a5deb2..ef9eb50ad 100644 --- a/adapter-stdout/src/main/java/io/nosqlbench/adapter/stdout/StdoutOpMapper.java +++ b/adapter-stdout/src/main/java/io/nosqlbench/adapter/stdout/StdoutOpMapper.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. @@ -16,11 +16,11 @@ package io.nosqlbench.adapter.stdout; -import io.nosqlbench.engine.api.activityimpl.OpDispenser; -import io.nosqlbench.engine.api.activityimpl.OpMapper; -import io.nosqlbench.engine.api.activityimpl.uniform.DriverAdapter; -import io.nosqlbench.engine.api.activityimpl.uniform.DriverSpaceCache; -import io.nosqlbench.engine.api.templating.ParsedOp; +import io.nosqlbench.adapters.api.activityimpl.OpDispenser; +import io.nosqlbench.adapters.api.activityimpl.OpMapper; +import io.nosqlbench.adapters.api.activityimpl.uniform.DriverAdapter; +import io.nosqlbench.adapters.api.activityimpl.uniform.DriverSpaceCache; +import io.nosqlbench.adapters.api.templating.ParsedOp; import java.util.function.LongFunction; 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 a0d61ad1c..626b5b142 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 @@ -20,13 +20,13 @@ import io.nosqlbench.adapter.stdout.StdoutDriverAdapter; import io.nosqlbench.api.config.standard.ConfigModel; import io.nosqlbench.api.config.standard.NBConfigModel; import io.nosqlbench.api.config.standard.NBConfiguration; -import io.nosqlbench.engine.api.activityconfig.yaml.OpTemplate; -import io.nosqlbench.engine.api.activityconfig.yaml.OpsDocList; -import io.nosqlbench.engine.api.activityimpl.OpMapper; -import io.nosqlbench.engine.api.activityimpl.uniform.BaseDriverAdapter; -import io.nosqlbench.engine.api.activityimpl.uniform.DriverAdapter; -import io.nosqlbench.engine.api.activityimpl.uniform.DriverSpaceCache; -import io.nosqlbench.engine.api.activityimpl.uniform.decorators.SyntheticOpTemplateProvider; +import io.nosqlbench.adapters.api.activityconfig.yaml.OpTemplate; +import io.nosqlbench.adapters.api.activityconfig.yaml.OpsDocList; +import io.nosqlbench.adapters.api.activityimpl.OpMapper; +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.adapters.api.activityimpl.uniform.decorators.SyntheticOpTemplateProvider; 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/TcpClientOp.java b/adapter-tcp/src/main/java/io/nosqlbench/adapter/tcpclient/TcpClientOp.java index 827bac8e2..a742c4580 100644 --- a/adapter-tcp/src/main/java/io/nosqlbench/adapter/tcpclient/TcpClientOp.java +++ b/adapter-tcp/src/main/java/io/nosqlbench/adapter/tcpclient/TcpClientOp.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. @@ -16,7 +16,7 @@ package io.nosqlbench.adapter.tcpclient; -import io.nosqlbench.engine.api.activityimpl.uniform.flowtypes.RunnableOp; +import io.nosqlbench.adapters.api.activityimpl.uniform.flowtypes.RunnableOp; public class TcpClientOp implements RunnableOp { diff --git a/adapter-tcp/src/main/java/io/nosqlbench/adapter/tcpclient/TcpClientOpDispenser.java b/adapter-tcp/src/main/java/io/nosqlbench/adapter/tcpclient/TcpClientOpDispenser.java index 95a6835ea..815ed2336 100644 --- a/adapter-tcp/src/main/java/io/nosqlbench/adapter/tcpclient/TcpClientOpDispenser.java +++ b/adapter-tcp/src/main/java/io/nosqlbench/adapter/tcpclient/TcpClientOpDispenser.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. @@ -16,8 +16,8 @@ package io.nosqlbench.adapter.tcpclient; -import io.nosqlbench.engine.api.activityimpl.BaseOpDispenser; -import io.nosqlbench.engine.api.templating.ParsedOp; +import io.nosqlbench.adapters.api.activityimpl.BaseOpDispenser; +import io.nosqlbench.adapters.api.templating.ParsedOp; import java.util.function.LongFunction; diff --git a/adapter-tcp/src/main/java/io/nosqlbench/adapter/tcpclient/TcpClientOpMapper.java b/adapter-tcp/src/main/java/io/nosqlbench/adapter/tcpclient/TcpClientOpMapper.java index e7684d43b..dfd45aa6f 100644 --- a/adapter-tcp/src/main/java/io/nosqlbench/adapter/tcpclient/TcpClientOpMapper.java +++ b/adapter-tcp/src/main/java/io/nosqlbench/adapter/tcpclient/TcpClientOpMapper.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. @@ -16,10 +16,10 @@ package io.nosqlbench.adapter.tcpclient; -import io.nosqlbench.engine.api.activityimpl.OpDispenser; -import io.nosqlbench.engine.api.activityimpl.OpMapper; -import io.nosqlbench.engine.api.activityimpl.uniform.DriverSpaceCache; -import io.nosqlbench.engine.api.templating.ParsedOp; +import io.nosqlbench.adapters.api.activityimpl.OpDispenser; +import io.nosqlbench.adapters.api.activityimpl.OpMapper; +import io.nosqlbench.adapters.api.activityimpl.uniform.DriverSpaceCache; +import io.nosqlbench.adapters.api.templating.ParsedOp; import java.util.function.LongFunction; 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 832b3eb45..595824e5e 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 @@ -19,13 +19,13 @@ import io.nosqlbench.adapter.stdout.StdoutDriverAdapter; import io.nosqlbench.api.config.standard.ConfigModel; import io.nosqlbench.api.config.standard.NBConfigModel; import io.nosqlbench.api.config.standard.NBConfiguration; -import io.nosqlbench.engine.api.activityconfig.yaml.OpTemplate; -import io.nosqlbench.engine.api.activityconfig.yaml.OpsDocList; -import io.nosqlbench.engine.api.activityimpl.OpMapper; -import io.nosqlbench.engine.api.activityimpl.uniform.BaseDriverAdapter; -import io.nosqlbench.engine.api.activityimpl.uniform.DriverAdapter; -import io.nosqlbench.engine.api.activityimpl.uniform.DriverSpaceCache; -import io.nosqlbench.engine.api.activityimpl.uniform.decorators.SyntheticOpTemplateProvider; +import io.nosqlbench.adapters.api.activityconfig.yaml.OpTemplate; +import io.nosqlbench.adapters.api.activityconfig.yaml.OpsDocList; +import io.nosqlbench.adapters.api.activityimpl.OpMapper; +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.adapters.api.activityimpl.uniform.decorators.SyntheticOpTemplateProvider; 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/TcpServerOp.java b/adapter-tcp/src/main/java/io/nosqlbench/adapter/tcpserver/TcpServerOp.java index 845291642..8b895166e 100644 --- a/adapter-tcp/src/main/java/io/nosqlbench/adapter/tcpserver/TcpServerOp.java +++ b/adapter-tcp/src/main/java/io/nosqlbench/adapter/tcpserver/TcpServerOp.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. @@ -16,7 +16,7 @@ package io.nosqlbench.adapter.tcpserver; -import io.nosqlbench.engine.api.activityimpl.uniform.flowtypes.RunnableOp; +import io.nosqlbench.adapters.api.activityimpl.uniform.flowtypes.RunnableOp; public class TcpServerOp implements RunnableOp { private final TcpServerAdapterSpace ctx; diff --git a/adapter-tcp/src/main/java/io/nosqlbench/adapter/tcpserver/TcpServerOpDispenser.java b/adapter-tcp/src/main/java/io/nosqlbench/adapter/tcpserver/TcpServerOpDispenser.java index 90333ec0d..f60cc2f20 100644 --- a/adapter-tcp/src/main/java/io/nosqlbench/adapter/tcpserver/TcpServerOpDispenser.java +++ b/adapter-tcp/src/main/java/io/nosqlbench/adapter/tcpserver/TcpServerOpDispenser.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. @@ -16,8 +16,8 @@ package io.nosqlbench.adapter.tcpserver; -import io.nosqlbench.engine.api.activityimpl.BaseOpDispenser; -import io.nosqlbench.engine.api.templating.ParsedOp; +import io.nosqlbench.adapters.api.activityimpl.BaseOpDispenser; +import io.nosqlbench.adapters.api.templating.ParsedOp; import java.util.function.LongFunction; diff --git a/adapter-tcp/src/main/java/io/nosqlbench/adapter/tcpserver/TcpServerOpMapper.java b/adapter-tcp/src/main/java/io/nosqlbench/adapter/tcpserver/TcpServerOpMapper.java index dac0c7402..7d894288b 100644 --- a/adapter-tcp/src/main/java/io/nosqlbench/adapter/tcpserver/TcpServerOpMapper.java +++ b/adapter-tcp/src/main/java/io/nosqlbench/adapter/tcpserver/TcpServerOpMapper.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. @@ -16,10 +16,10 @@ package io.nosqlbench.adapter.tcpserver; -import io.nosqlbench.engine.api.activityimpl.OpDispenser; -import io.nosqlbench.engine.api.activityimpl.OpMapper; -import io.nosqlbench.engine.api.activityimpl.uniform.DriverSpaceCache; -import io.nosqlbench.engine.api.templating.ParsedOp; +import io.nosqlbench.adapters.api.activityimpl.OpDispenser; +import io.nosqlbench.adapters.api.activityimpl.OpMapper; +import io.nosqlbench.adapters.api.activityimpl.uniform.DriverSpaceCache; +import io.nosqlbench.adapters.api.templating.ParsedOp; import java.util.function.LongFunction; diff --git a/adapter-venice/src/main/java/io/nosqlbench/adapter/venice/VeniceDriverAdapter.java b/adapter-venice/src/main/java/io/nosqlbench/adapter/venice/VeniceDriverAdapter.java index 09b8e7df5..11241bd8d 100644 --- a/adapter-venice/src/main/java/io/nosqlbench/adapter/venice/VeniceDriverAdapter.java +++ b/adapter-venice/src/main/java/io/nosqlbench/adapter/venice/VeniceDriverAdapter.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. @@ -19,10 +19,10 @@ package io.nosqlbench.adapter.venice; import io.nosqlbench.adapter.venice.ops.VeniceOp; import io.nosqlbench.api.config.standard.NBConfigModel; import io.nosqlbench.api.config.standard.NBConfiguration; -import io.nosqlbench.engine.api.activityimpl.OpMapper; -import io.nosqlbench.engine.api.activityimpl.uniform.BaseDriverAdapter; -import io.nosqlbench.engine.api.activityimpl.uniform.DriverAdapter; -import io.nosqlbench.engine.api.activityimpl.uniform.DriverSpaceCache; +import io.nosqlbench.adapters.api.activityimpl.OpMapper; +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.annotations.Service; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; diff --git a/adapter-venice/src/main/java/io/nosqlbench/adapter/venice/VeniceOpMapper.java b/adapter-venice/src/main/java/io/nosqlbench/adapter/venice/VeniceOpMapper.java index da427b190..b020643bd 100644 --- a/adapter-venice/src/main/java/io/nosqlbench/adapter/venice/VeniceOpMapper.java +++ b/adapter-venice/src/main/java/io/nosqlbench/adapter/venice/VeniceOpMapper.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. @@ -19,11 +19,11 @@ package io.nosqlbench.adapter.venice; import io.nosqlbench.adapter.venice.dispensers.*; import io.nosqlbench.adapter.venice.ops.VeniceOp; import io.nosqlbench.api.config.standard.NBConfiguration; -import io.nosqlbench.engine.api.activityimpl.OpDispenser; -import io.nosqlbench.engine.api.activityimpl.OpMapper; -import io.nosqlbench.engine.api.activityimpl.uniform.DriverAdapter; -import io.nosqlbench.engine.api.activityimpl.uniform.DriverSpaceCache; -import io.nosqlbench.engine.api.templating.ParsedOp; +import io.nosqlbench.adapters.api.activityimpl.OpDispenser; +import io.nosqlbench.adapters.api.activityimpl.OpMapper; +import io.nosqlbench.adapters.api.activityimpl.uniform.DriverAdapter; +import io.nosqlbench.adapters.api.activityimpl.uniform.DriverSpaceCache; +import io.nosqlbench.adapters.api.templating.ParsedOp; import io.nosqlbench.engine.api.templating.TypeAndTarget; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; diff --git a/adapter-venice/src/main/java/io/nosqlbench/adapter/venice/dispensers/ReadSingleKeyOpDispenser.java b/adapter-venice/src/main/java/io/nosqlbench/adapter/venice/dispensers/ReadSingleKeyOpDispenser.java index 3967940c2..0c7945078 100644 --- a/adapter-venice/src/main/java/io/nosqlbench/adapter/venice/dispensers/ReadSingleKeyOpDispenser.java +++ b/adapter-venice/src/main/java/io/nosqlbench/adapter/venice/dispensers/ReadSingleKeyOpDispenser.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. @@ -19,19 +19,13 @@ package io.nosqlbench.adapter.venice.dispensers; import io.nosqlbench.adapter.venice.VeniceSpace; import io.nosqlbench.adapter.venice.ops.ReadSingleKeyOp; import io.nosqlbench.adapter.venice.util.AvroUtils; -import io.nosqlbench.engine.api.activityimpl.uniform.DriverAdapter; -import io.nosqlbench.engine.api.templating.ParsedOp; +import io.nosqlbench.adapters.api.activityimpl.uniform.DriverAdapter; +import io.nosqlbench.adapters.api.templating.ParsedOp; import org.apache.avro.Schema; -import org.apache.commons.lang3.BooleanUtils; -import org.apache.commons.lang3.StringUtils; -import org.apache.commons.lang3.math.NumberUtils; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; -import java.util.HashMap; -import java.util.List; -import java.util.Map; import java.util.function.LongFunction; public class ReadSingleKeyOpDispenser extends VeniceBaseOpDispenser { diff --git a/adapter-venice/src/main/java/io/nosqlbench/adapter/venice/dispensers/VeniceBaseOpDispenser.java b/adapter-venice/src/main/java/io/nosqlbench/adapter/venice/dispensers/VeniceBaseOpDispenser.java index 9a0df6865..137896754 100644 --- a/adapter-venice/src/main/java/io/nosqlbench/adapter/venice/dispensers/VeniceBaseOpDispenser.java +++ b/adapter-venice/src/main/java/io/nosqlbench/adapter/venice/dispensers/VeniceBaseOpDispenser.java @@ -19,9 +19,9 @@ package io.nosqlbench.adapter.venice.dispensers; import io.nosqlbench.adapter.venice.VeniceSpace; import io.nosqlbench.adapter.venice.ops.VeniceOp; import io.nosqlbench.adapter.venice.util.*; -import io.nosqlbench.engine.api.activityimpl.BaseOpDispenser; -import io.nosqlbench.engine.api.activityimpl.uniform.DriverAdapter; -import io.nosqlbench.engine.api.templating.ParsedOp; +import io.nosqlbench.adapters.api.activityimpl.BaseOpDispenser; +import io.nosqlbench.adapters.api.activityimpl.uniform.DriverAdapter; +import io.nosqlbench.adapters.api.templating.ParsedOp; import org.apache.avro.Schema; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; diff --git a/adapter-venice/src/main/java/io/nosqlbench/adapter/venice/dispensers/WriteOpDispenser.java b/adapter-venice/src/main/java/io/nosqlbench/adapter/venice/dispensers/WriteOpDispenser.java index 134cd963e..a7b7081ea 100644 --- a/adapter-venice/src/main/java/io/nosqlbench/adapter/venice/dispensers/WriteOpDispenser.java +++ b/adapter-venice/src/main/java/io/nosqlbench/adapter/venice/dispensers/WriteOpDispenser.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. @@ -19,8 +19,8 @@ package io.nosqlbench.adapter.venice.dispensers; import io.nosqlbench.adapter.venice.VeniceSpace; import io.nosqlbench.adapter.venice.ops.WriteOp; import io.nosqlbench.adapter.venice.util.AvroUtils; -import io.nosqlbench.engine.api.activityimpl.uniform.DriverAdapter; -import io.nosqlbench.engine.api.templating.ParsedOp; +import io.nosqlbench.adapters.api.activityimpl.uniform.DriverAdapter; +import io.nosqlbench.adapters.api.templating.ParsedOp; import org.apache.avro.Schema; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; diff --git a/adapter-venice/src/main/java/io/nosqlbench/adapter/venice/ops/VeniceOp.java b/adapter-venice/src/main/java/io/nosqlbench/adapter/venice/ops/VeniceOp.java index e3a637fdd..376c88f84 100644 --- a/adapter-venice/src/main/java/io/nosqlbench/adapter/venice/ops/VeniceOp.java +++ b/adapter-venice/src/main/java/io/nosqlbench/adapter/venice/ops/VeniceOp.java @@ -1,25 +1,24 @@ /* - * Copyright (c) 2022 nosqlbench + * 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 + * 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. + * 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.adapter.venice.ops; import io.nosqlbench.adapter.venice.VeniceSpace; import io.nosqlbench.adapter.venice.util.VeniceAdapterMetrics; -import io.nosqlbench.engine.api.activityimpl.uniform.flowtypes.CycleOp; +import io.nosqlbench.adapters.api.activityimpl.uniform.flowtypes.CycleOp; diff --git a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/errorhandling/modular/handlers/ExpectedResultVerificationErrorHandler.java b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/errorhandling/modular/handlers/ExpectedResultVerificationErrorHandler.java index c2ca0cde9..e152164aa 100644 --- a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/errorhandling/modular/handlers/ExpectedResultVerificationErrorHandler.java +++ b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/errorhandling/modular/handlers/ExpectedResultVerificationErrorHandler.java @@ -16,11 +16,11 @@ package io.nosqlbench.engine.api.activityapi.errorhandling.modular.handlers; -import io.nosqlbench.api.errors.ExpectedResultVerificationError; +import io.nosqlbench.api.errors.ResultMismatchError; import io.nosqlbench.engine.api.activityapi.errorhandling.ErrorMetrics; import io.nosqlbench.engine.api.activityapi.errorhandling.modular.ErrorDetail; -import io.nosqlbench.engine.api.activityapi.errorhandling.modular.ErrorHandler; import io.nosqlbench.engine.api.metrics.ExceptionExpectedResultVerificationMetrics; +import io.nosqlbench.engine.api.activityapi.errorhandling.modular.ErrorHandler; import io.nosqlbench.nb.annotations.Service; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; @@ -38,9 +38,9 @@ public class ExpectedResultVerificationErrorHandler implements ErrorHandler, Err @Override public ErrorDetail handleError(String name, Throwable t, long cycle, long durationInNanos, ErrorDetail detail) { - if (t instanceof ExpectedResultVerificationError erve) { + if (t instanceof ResultMismatchError erve) { if (erve.getTriesLeft() == 0) { - logger.warn("Cycle: {} Verification of result did not pass following expression: {}", cycle, erve.getExpectedResultExpression()); + logger.warn("Cycle: {} Verification of result did not pass following expression: {}", cycle, erve.getExpressionDetails()); exceptionExpectedResultVerificationMetrics.countVerificationErrors(); } else { logger.info("Cycle: {} Verification of result did not pass. {} retries left.", cycle, erve.getTriesLeft()); From ebfe389563a2e310cd7099cf54c3958500480591 Mon Sep 17 00:00:00 2001 From: Jonathan Shook Date: Wed, 26 Jul 2023 11:28:45 -0500 Subject: [PATCH 10/14] pom dependency fixups after partial merge fixes --- adapter-cqld4/pom.xml | 5 ----- mvn-defaults/pom.xml | 10 ---------- 2 files changed, 15 deletions(-) diff --git a/adapter-cqld4/pom.xml b/adapter-cqld4/pom.xml index adec3300c..e67654ca0 100644 --- a/adapter-cqld4/pom.xml +++ b/adapter-cqld4/pom.xml @@ -41,11 +41,6 @@ ${revision} - - org.apache.groovy - groovy - - org.apache.tinkerpop gremlin-core diff --git a/mvn-defaults/pom.xml b/mvn-defaults/pom.xml index 958e4ad38..b3e24a184 100644 --- a/mvn-defaults/pom.xml +++ b/mvn-defaults/pom.xml @@ -191,16 +191,6 @@ java-driver-query-builder 4.16.0 - - org.snakeyaml - snakeyaml-engine - 2.6 - - - org.xerial.snappy - snappy-java - 1.1.10.1 - com.esri.geometry esri-geometry-api From 145b02ebd420593e845fd95d0458bdc739a89161 Mon Sep 17 00:00:00 2001 From: Jonathan Shook Date: Thu, 27 Jul 2023 12:39:12 -0500 Subject: [PATCH 11/14] re-enable nashorn compat, which converts .property to .getProperty() where needed --- .../io/nosqlbench/engine/core/lifecycle/scenario/Scenario.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/engine-core/src/main/java/io/nosqlbench/engine/core/lifecycle/scenario/Scenario.java b/engine-core/src/main/java/io/nosqlbench/engine/core/lifecycle/scenario/Scenario.java index 11be7a761..ee9ce4aa5 100644 --- a/engine-core/src/main/java/io/nosqlbench/engine/core/lifecycle/scenario/Scenario.java +++ b/engine-core/src/main/java/io/nosqlbench/engine/core/lifecycle/scenario/Scenario.java @@ -200,7 +200,7 @@ public class Scenario implements Callable, NBLabeledElem .allowEnvironmentAccess(EnvironmentAccess.INHERIT) .allowPolyglotAccess(PolyglotAccess.ALL) .option("js.ecmascript-version", "2022") - .option("js.nashorn-compat", "false"); + .option("js.nashorn-compat", "true"); final Builder engineBuilder = org.graalvm.polyglot.Engine.newBuilder(); engineBuilder.option("engine.WarnInterpreterOnly", "false"); From 99b84d5e35ddcf8034a5de131dc94a6ce6fbb129 Mon Sep 17 00:00:00 2001 From: Jonathan Shook Date: Thu, 27 Jul 2023 12:39:30 -0500 Subject: [PATCH 12/14] align test name to file --- .../java/io/nosqlbench/nbr/examples/ScriptExampleTests.java | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/nbr-examples/src/test/java/io/nosqlbench/nbr/examples/ScriptExampleTests.java b/nbr-examples/src/test/java/io/nosqlbench/nbr/examples/ScriptExampleTests.java index 8888077e9..6a52cfe2d 100644 --- a/nbr-examples/src/test/java/io/nosqlbench/nbr/examples/ScriptExampleTests.java +++ b/nbr-examples/src/test/java/io/nosqlbench/nbr/examples/ScriptExampleTests.java @@ -125,10 +125,9 @@ public class ScriptExampleTests { } @Test - public void testExtensionCsvLogger() { + public void testExtensionCsvMetrics() { ExecutionMetricsResult scenarioResult = runScenario("extension_csvmetrics"); - assertThat(scenarioResult.getIOLog()).contains("started new " + - "csvlogger: logs/csvmetricstestdir"); + assertThat(scenarioResult.getIOLog()).contains("started new csvmetrics: logs/csvmetricstestdir"); } @Test From 745d203766698e3af7c52e49d0210449070088bf Mon Sep 17 00:00:00 2001 From: Jonathan Shook Date: Wed, 16 Aug 2023 15:44:29 -0500 Subject: [PATCH 13/14] align test name to file --- .../PolyglotMetricRegistryBindings.java | 35 ++++++-- .../engine/core/metrics/MetricMap.java | 82 ++++++++++++------- .../engine/core/metrics/MetricMapTest.java | 49 +++++++++++ .../extensions/csvmetrics/CSVMetrics.java | 4 +- .../csvmetrics/CSVMetricsPlugin.java | 4 +- .../metrics/instruments/NBMetricTimer.java | 5 ++ .../scripts/examples/extension_csvmetrics.js | 10 ++- 7 files changed, 143 insertions(+), 46 deletions(-) create mode 100644 engine-core/src/test/java/io/nosqlbench/engine/core/metrics/MetricMapTest.java diff --git a/engine-core/src/main/java/io/nosqlbench/engine/core/lifecycle/scenario/script/bindings/PolyglotMetricRegistryBindings.java b/engine-core/src/main/java/io/nosqlbench/engine/core/lifecycle/scenario/script/bindings/PolyglotMetricRegistryBindings.java index 427e528d6..b14db824b 100644 --- a/engine-core/src/main/java/io/nosqlbench/engine/core/lifecycle/scenario/script/bindings/PolyglotMetricRegistryBindings.java +++ b/engine-core/src/main/java/io/nosqlbench/engine/core/lifecycle/scenario/script/bindings/PolyglotMetricRegistryBindings.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. @@ -17,14 +17,16 @@ package io.nosqlbench.engine.core.lifecycle.scenario.script.bindings; import com.codahale.metrics.*; -import com.codahale.metrics.Timer; import io.nosqlbench.engine.core.metrics.MetricMap; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.graalvm.polyglot.Value; import org.graalvm.polyglot.proxy.ProxyObject; -import java.util.*; +import java.util.ArrayList; +import java.util.LinkedHashMap; +import java.util.Map; +import java.util.Objects; /** * A view of metrics objects as an object tree. @@ -82,7 +84,7 @@ public class PolyglotMetricRegistryBindings implements ProxyObject, MetricRegist @Override public void onGaugeRemoved(String name) { - metrics.findOwner(name).remove(name); + metrics.findOrCreateDottedParentPath(name).remove(name); logger.debug("gauge removed: " + name); } @@ -94,7 +96,7 @@ public class PolyglotMetricRegistryBindings implements ProxyObject, MetricRegist @Override public void onCounterRemoved(String name) { - metrics.findOwner(name).remove(name); + metrics.findOrCreateDottedParentPath(name).remove(name); logger.debug("counter removed: " + name); } @@ -106,7 +108,7 @@ public class PolyglotMetricRegistryBindings implements ProxyObject, MetricRegist @Override public void onHistogramRemoved(String name) { - metrics.findOwner(name).remove(name); + metrics.findOrCreateDottedParentPath(name).remove(name); logger.debug("histogram removed: " + name); } @@ -118,7 +120,7 @@ public class PolyglotMetricRegistryBindings implements ProxyObject, MetricRegist @Override public void onMeterRemoved(String name) { - metrics.findOwner(name).remove(name); + metrics.findOrCreateDottedParentPath(name).remove(name); logger.debug("meter removed: " + name); } @@ -131,7 +133,7 @@ public class PolyglotMetricRegistryBindings implements ProxyObject, MetricRegist @Override public void onTimerRemoved(String name) { - metrics.findOwner(name).remove(name); + metrics.findOrCreateDottedParentPath(name).remove(name); logger.debug("timer removed: " + name); } @@ -154,4 +156,21 @@ public class PolyglotMetricRegistryBindings implements ProxyObject, MetricRegist return totalMap; } + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + + PolyglotMetricRegistryBindings that = (PolyglotMetricRegistryBindings) o; + + if (!registry.equals(that.registry)) return false; + return Objects.equals(metrics, that.metrics); + } + + @Override + public int hashCode() { + int result = registry.hashCode(); + result = 31 * result + (metrics != null ? metrics.hashCode() : 0); + return result; + } } diff --git a/engine-core/src/main/java/io/nosqlbench/engine/core/metrics/MetricMap.java b/engine-core/src/main/java/io/nosqlbench/engine/core/metrics/MetricMap.java index c339d3537..6801efb3e 100644 --- a/engine-core/src/main/java/io/nosqlbench/engine/core/metrics/MetricMap.java +++ b/engine-core/src/main/java/io/nosqlbench/engine/core/metrics/MetricMap.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. @@ -17,10 +17,12 @@ package io.nosqlbench.engine.core.metrics; import com.codahale.metrics.Metric; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; import org.graalvm.polyglot.Value; import org.graalvm.polyglot.proxy.ProxyObject; -import org.apache.logging.log4j.Logger; -import org.apache.logging.log4j.LogManager; + +import java.security.InvalidParameterException; import java.util.*; public class MetricMap implements ProxyObject { @@ -30,56 +32,62 @@ public class MetricMap implements ProxyObject { private final String parent_name; private final HashMap map = new HashMap<>(); + public final static char DELIM = '.'; + public MetricMap(String name, String parent) { this.name = name; this.parent_name = parent; } - public MetricMap findOwner(String metricName) { + public MetricMap() { + this("ROOT", "ROOT"); // because of auto-intern, the root node is the only one with parent==parent + } + + public MetricMap findOrCreateDottedParentPath(String metricName) { String[] names = metricName.split("\\."); String[] pathTraversal = Arrays.copyOfRange(names, 0, names.length - 1); - MetricMap owner = findPath(pathTraversal); + MetricMap owner = findOrCreateNodePath(pathTraversal); return owner; } + public MetricMap findOrCreateDottedNodePath(String nodeName) { + String[] names = nodeName.split("\\."); + MetricMap owner = findOrCreateNodePath(names); + return owner; + } @Override public String toString() { return "MetricMap{" + "name='" + name + '\'' + ", map=" + map + - (parent_name!=null ? ", parent=" + parent_name : "") + + (parent_name != null ? ", parent=" + parent_name : "") + '}'; } - public MetricMap findPath(String... names) { - MetricMap current = this; - for (int i = 0; i < names.length; i++) { - String edgeName = names[i]; - - if (current.map.containsKey(edgeName)) { - Object element = current.map.get(edgeName); - if (element instanceof MetricMap) { - current = (MetricMap) element; - logger.trace(() -> "traversing edge:" + edgeName); - } else { - String error = "edge exists at level:" + i; - logger.error(error); - throw new RuntimeException(error); - } - } else { - MetricMap newMap = new MetricMap(edgeName,this.name); - current.map.put(edgeName, newMap); - current = newMap; - logger.trace(() -> "adding edge:" + edgeName); - } + /** + * Given an array of non-delimited component names, walk from the root node to each name, creating any needed nodes + * along the way. + * + * @param names the names of the nodes to traverse or create + * @return The MetricMap node in the node tree with the given path-wise address. + * @throws InvalidParameterException if any of the component names includes a delimiter + */ + public MetricMap findOrCreateNodePath(String... names) { + if (names.length == 0) { + return this; } - return current; + String nodeName = names[0]; + if (nodeName.contains(String.valueOf(DELIM))) { + throw new InvalidParameterException("Path components must not include interior delimiters. (" + DELIM + ")."); + } + MetricMap childNode = (MetricMap) map.computeIfAbsent(nodeName, name -> new MetricMap(names[0], this.name)); + return childNode.findOrCreateNodePath(Arrays.copyOfRange(names, 1, names.length)); } public void add(String name, Metric metric) { - MetricMap owner = findOwner(name); - String leafName = name.substring(name.lastIndexOf(".")+1); - owner.map.put(leafName,metric); + MetricMap owner = findOrCreateDottedParentPath(name); + String leafName = name.substring(name.lastIndexOf(".") + 1); + owner.map.put(leafName, metric); } public void remove(String name) { @@ -100,6 +108,9 @@ public class MetricMap implements ProxyObject { @Override public Object getMember(String key) { + if (key.contains(".")) { + throw new InvalidParameterException("Members of the metrics registry tree must have names which do not include the '.' delimiter."); + } Object got = get(key); return got; } @@ -120,4 +131,13 @@ public class MetricMap implements ProxyObject { public void putMember(String key, Value value) { throw new RuntimeException("Not allowed here"); } + + + @Override + public int hashCode() { + int result = name != null ? name.hashCode() : 0; + result = 31 * result + (parent_name != null ? parent_name.hashCode() : 0); + result = 31 * result + map.hashCode(); + return result; + } } diff --git a/engine-core/src/test/java/io/nosqlbench/engine/core/metrics/MetricMapTest.java b/engine-core/src/test/java/io/nosqlbench/engine/core/metrics/MetricMapTest.java new file mode 100644 index 000000000..bde1e674f --- /dev/null +++ b/engine-core/src/test/java/io/nosqlbench/engine/core/metrics/MetricMapTest.java @@ -0,0 +1,49 @@ +/* + * 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.engine.core.metrics; + +import org.junit.jupiter.api.Test; + +import static org.assertj.core.api.Assertions.assertThat; + +class MetricMapTest { + + @Test + public void testNodeByNodeConstruction() { + MetricMap root = new MetricMap(); + MetricMap alpha = root.findOrCreateNodePath("alpha"); + MetricMap beta = alpha.findOrCreateNodePath("beta"); + MetricMap gamma = beta.findOrCreateNodePath("gamma"); + + assertThat(root.containsKey("alpha")).isTrue(); + assertThat(root.findOrCreateNodePath("alpha","beta","gamma")==gamma).isTrue(); + assertThat(root.findOrCreateDottedNodePath("alpha.beta.gamma")==gamma).isTrue(); + } + + @Test + public void testConcatenatedConstruction() { + MetricMap root = new MetricMap(); + MetricMap gamma = root.findOrCreateDottedNodePath("alpha.beta.gamma"); + assertThat(root.findOrCreateDottedParentPath("alpha.beta.gamma.abstract_leaf_node")).isEqualTo(gamma); + MetricMap alpha = root.findOrCreateDottedParentPath("alpha.beta"); + MetricMap beta = alpha.findOrCreateDottedParentPath("beta.gamma"); + MetricMap betaToo = beta.findOrCreateDottedParentPath("gamma"); + assertThat(beta).isEqualTo(betaToo); + } + + +} diff --git a/engine-extensions/src/main/java/io/nosqlbench/engine/extensions/csvmetrics/CSVMetrics.java b/engine-extensions/src/main/java/io/nosqlbench/engine/extensions/csvmetrics/CSVMetrics.java index 43fff8a80..e4acc3654 100644 --- a/engine-extensions/src/main/java/io/nosqlbench/engine/extensions/csvmetrics/CSVMetrics.java +++ b/engine-extensions/src/main/java/io/nosqlbench/engine/extensions/csvmetrics/CSVMetrics.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. @@ -22,6 +22,7 @@ import com.codahale.metrics.MetricRegistry; import org.apache.logging.log4j.Logger; import java.io.File; +import java.util.Objects; import java.util.concurrent.TimeUnit; public class CSVMetrics { @@ -80,6 +81,7 @@ public class CSVMetrics { } public CSVMetrics add(Metric metric) { + Objects.requireNonNull(metric); filter.add(metric); return this; } diff --git a/engine-extensions/src/main/java/io/nosqlbench/engine/extensions/csvmetrics/CSVMetricsPlugin.java b/engine-extensions/src/main/java/io/nosqlbench/engine/extensions/csvmetrics/CSVMetricsPlugin.java index ff2d65a23..6b89ced14 100644 --- a/engine-extensions/src/main/java/io/nosqlbench/engine/extensions/csvmetrics/CSVMetricsPlugin.java +++ b/engine-extensions/src/main/java/io/nosqlbench/engine/extensions/csvmetrics/CSVMetricsPlugin.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. @@ -40,7 +40,7 @@ public class CSVMetricsPlugin { */ public CSVMetrics log(String filename) { CSVMetrics csvMetrics = new CSVMetrics(filename, logger, metricRegistry); - writeStdout("started new csvlogger: " + filename + "\n"); + writeStdout("started new csvmetrics: " + filename + "\n"); return csvMetrics; } diff --git a/nb-api/src/main/java/io/nosqlbench/api/engine/metrics/instruments/NBMetricTimer.java b/nb-api/src/main/java/io/nosqlbench/api/engine/metrics/instruments/NBMetricTimer.java index 1eb122f69..90655d115 100644 --- a/nb-api/src/main/java/io/nosqlbench/api/engine/metrics/instruments/NBMetricTimer.java +++ b/nb-api/src/main/java/io/nosqlbench/api/engine/metrics/instruments/NBMetricTimer.java @@ -87,4 +87,9 @@ public class NBMetricTimer extends Timer implements DeltaSnapshotter, HdrDeltaHi public NBLabels getLabels() { return labels; } + + @Override + public String toString() { + return "NBTIMER:"+this.getLabels().toString(); + } } diff --git a/nbr-examples/src/test/resources/scripts/examples/extension_csvmetrics.js b/nbr-examples/src/test/resources/scripts/examples/extension_csvmetrics.js index 6a50f33cf..90e28f9ef 100644 --- a/nbr-examples/src/test/resources/scripts/examples/extension_csvmetrics.js +++ b/nbr-examples/src/test/resources/scripts/examples/extension_csvmetrics.js @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 nosqlbench + * 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. @@ -20,11 +20,13 @@ activitydef = { "alias" : "csvmetrics", "driver" : "diag", "cycles" : "50000", - "threads" : "20", - "op": '{"log":"level=debug,interval=1000"}', - "targetrate" : "10000.0" + "threads" : "1", + "op": "log: level=debug", + "rate" : "100.0" }; scenario.start(activitydef); +scenario.waitMillis(500); + csvlogger.add(metrics.csvmetrics.cycles.servicetime); csvlogger.start(500,"MILLISECONDS"); From 54ccf8a92e6e5dda57aa2dac66fe1e9d35aa31a9 Mon Sep 17 00:00:00 2001 From: Jonathan Shook Date: Wed, 16 Aug 2023 16:36:54 -0500 Subject: [PATCH 14/14] disable hd5-loader for now --- pom.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pom.xml b/pom.xml index 173c73523..75216c96f 100644 --- a/pom.xml +++ b/pom.xml @@ -67,7 +67,7 @@ adapter-kafka adapter-amqp adapter-jdbc - hdf-loader + virtdata-api @@ -116,7 +116,7 @@ adapter-amqp adapter-jdbc adapter-pinecone - hdf-loader + virtdata-api