diff --git a/nb-adapters/adapter-azure-aisearch/src/main/java/io/nosqlbench/adapter/azureaisearch/AzureAISearchDriverAdapter.java b/nb-adapters/adapter-azure-aisearch/src/main/java/io/nosqlbench/adapter/azureaisearch/AzureAISearchDriverAdapter.java index 93a566537..d24aea3ec 100644 --- a/nb-adapters/adapter-azure-aisearch/src/main/java/io/nosqlbench/adapter/azureaisearch/AzureAISearchDriverAdapter.java +++ b/nb-adapters/adapter-azure-aisearch/src/main/java/io/nosqlbench/adapter/azureaisearch/AzureAISearchDriverAdapter.java @@ -32,14 +32,14 @@ import io.nosqlbench.nb.api.labels.NBLabels; import static io.nosqlbench.adapter.azureaisearch.AzureAISearchAdapterUtils.AZURE_AI_SEARCH; @Service(value = DriverAdapter.class, selector = AZURE_AI_SEARCH) -public class AzureAISearchDriverAdapter extends BaseDriverAdapter { +public class AzureAISearchDriverAdapter extends BaseDriverAdapter, AzureAISearchSpace> { public AzureAISearchDriverAdapter(NBComponent parentComponent, NBLabels labels) { super(parentComponent, labels); } @Override - public OpMapper getOpMapper() { + public OpMapper,AzureAISearchSpace> getOpMapper() { return new AzureAISearchOpMapper(this); } diff --git a/nb-adapters/adapter-azure-aisearch/src/main/java/io/nosqlbench/adapter/azureaisearch/AzureAISearchOpMapper.java b/nb-adapters/adapter-azure-aisearch/src/main/java/io/nosqlbench/adapter/azureaisearch/AzureAISearchOpMapper.java index 872ef2306..b34946c56 100644 --- a/nb-adapters/adapter-azure-aisearch/src/main/java/io/nosqlbench/adapter/azureaisearch/AzureAISearchOpMapper.java +++ b/nb-adapters/adapter-azure-aisearch/src/main/java/io/nosqlbench/adapter/azureaisearch/AzureAISearchOpMapper.java @@ -16,6 +16,7 @@ package io.nosqlbench.adapter.azureaisearch; +import io.nosqlbench.adapters.api.activityimpl.uniform.flowtypes.CycleOp; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; @@ -34,7 +35,7 @@ import io.nosqlbench.engine.api.templating.TypeAndTarget; import java.util.function.LongFunction; -public class AzureAISearchOpMapper implements OpMapper { +public class AzureAISearchOpMapper implements OpMapper, AzureAISearchSpace> { private static final Logger logger = LogManager.getLogger(AzureAISearchOpMapper.class); private final AzureAISearchDriverAdapter adapter; @@ -60,7 +61,7 @@ public class AzureAISearchOpMapper implements OpMapper apply(ParsedOp op, LongFunction spaceInitF) { + public OpDispenser> apply(ParsedOp op, LongFunction spaceInitF) { TypeAndTarget typeAndTarget = op.getTypeAndTarget(AzureAISearchOpType.class, String.class, "type", "target"); diff --git a/nb-adapters/adapter-azure-aisearch/src/main/java/io/nosqlbench/adapter/azureaisearch/opsdispenser/AzureAISearchBaseOpDispenser.java b/nb-adapters/adapter-azure-aisearch/src/main/java/io/nosqlbench/adapter/azureaisearch/opsdispenser/AzureAISearchBaseOpDispenser.java index dd32f9566..74a892c6c 100644 --- a/nb-adapters/adapter-azure-aisearch/src/main/java/io/nosqlbench/adapter/azureaisearch/opsdispenser/AzureAISearchBaseOpDispenser.java +++ b/nb-adapters/adapter-azure-aisearch/src/main/java/io/nosqlbench/adapter/azureaisearch/opsdispenser/AzureAISearchBaseOpDispenser.java @@ -29,7 +29,7 @@ import io.nosqlbench.adapters.api.activityimpl.uniform.DriverAdapter; import io.nosqlbench.adapters.api.templating.ParsedOp; public abstract class AzureAISearchBaseOpDispenser - extends BaseOpDispenser { + extends BaseOpDispenser, AzureAISearchSpace> { protected final LongFunction azureAISearchSpaceFunction; protected final LongFunction clientFunction; diff --git a/nb-adapters/adapter-cqld4/src/main/java/io/nosqlbench/adapter/cqld4/Cqld4DriverAdapter.java b/nb-adapters/adapter-cqld4/src/main/java/io/nosqlbench/adapter/cqld4/Cqld4DriverAdapter.java index 63796f0d8..d7a4cc85f 100644 --- a/nb-adapters/adapter-cqld4/src/main/java/io/nosqlbench/adapter/cqld4/Cqld4DriverAdapter.java +++ b/nb-adapters/adapter-cqld4/src/main/java/io/nosqlbench/adapter/cqld4/Cqld4DriverAdapter.java @@ -18,13 +18,11 @@ package io.nosqlbench.adapter.cqld4; import io.nosqlbench.adapter.cqld4.opmappers.Cqld4CoreOpMapper; import io.nosqlbench.adapter.cqld4.optypes.Cqld4BaseOp; -import io.nosqlbench.adapter.cqld4.optypes.Cqld4CqlOp; import io.nosqlbench.nb.api.config.standard.NBConfigModel; import io.nosqlbench.nb.api.config.standard.NBConfiguration; 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.api.labels.NBLabels; import io.nosqlbench.nb.api.components.core.NBComponent; import io.nosqlbench.nb.annotations.Service; @@ -39,7 +37,7 @@ import java.util.function.Function; import java.util.function.LongFunction; @Service(value = DriverAdapter.class, selector = "cqld4") -public class Cqld4DriverAdapter extends BaseDriverAdapter { +public class Cqld4DriverAdapter extends BaseDriverAdapter, Cqld4Space> { private final static Logger logger = LogManager.getLogger(Cqld4DriverAdapter.class); public Cqld4DriverAdapter(NBComponent parentComponent, NBLabels labels) { @@ -47,7 +45,7 @@ public class Cqld4DriverAdapter extends BaseDriverAdapter getOpMapper() { + public OpMapper, Cqld4Space> getOpMapper() { NBConfiguration config = getConfiguration(); return new Cqld4CoreOpMapper(this, config); } diff --git a/nb-adapters/adapter-cqld4/src/main/java/io/nosqlbench/adapter/cqld4/opdispensers/Cqld4BaseOpDispenser.java b/nb-adapters/adapter-cqld4/src/main/java/io/nosqlbench/adapter/cqld4/opdispensers/Cqld4BaseOpDispenser.java index 7fdcf2706..1dff52384 100644 --- a/nb-adapters/adapter-cqld4/src/main/java/io/nosqlbench/adapter/cqld4/opdispensers/Cqld4BaseOpDispenser.java +++ b/nb-adapters/adapter-cqld4/src/main/java/io/nosqlbench/adapter/cqld4/opdispensers/Cqld4BaseOpDispenser.java @@ -43,7 +43,7 @@ import java.util.Map; import java.util.function.IntFunction; import java.util.function.LongFunction; -public abstract class Cqld4BaseOpDispenser extends BaseOpDispenser implements CqlOpMetrics { +public abstract class Cqld4BaseOpDispenser> extends BaseOpDispenser implements CqlOpMetrics { private final static Logger logger = LogManager.getLogger("CQLD4"); diff --git a/nb-adapters/adapter-cqld4/src/main/java/io/nosqlbench/adapter/cqld4/opdispensers/Cqld4GremlinOpDispenser.java b/nb-adapters/adapter-cqld4/src/main/java/io/nosqlbench/adapter/cqld4/opdispensers/Cqld4GremlinOpDispenser.java index d190d8e1b..315cc04a3 100644 --- a/nb-adapters/adapter-cqld4/src/main/java/io/nosqlbench/adapter/cqld4/opdispensers/Cqld4GremlinOpDispenser.java +++ b/nb-adapters/adapter-cqld4/src/main/java/io/nosqlbench/adapter/cqld4/opdispensers/Cqld4GremlinOpDispenser.java @@ -31,7 +31,7 @@ import io.nosqlbench.adapters.api.templating.ParsedOp; import java.util.Optional; import java.util.function.LongFunction; -public class Cqld4GremlinOpDispenser extends BaseOpDispenser { +public class Cqld4GremlinOpDispenser extends BaseOpDispenser, Cqld4Space> { private final LongFunction stmtFunc; private final LongFunction sessionFunc; diff --git a/nb-adapters/adapter-cqld4/src/main/java/io/nosqlbench/adapter/cqld4/opmappers/CqlD4BatchStmtMapper.java b/nb-adapters/adapter-cqld4/src/main/java/io/nosqlbench/adapter/cqld4/opmappers/CqlD4BatchStmtMapper.java index cd908b327..7d8c66ac7 100644 --- a/nb-adapters/adapter-cqld4/src/main/java/io/nosqlbench/adapter/cqld4/opmappers/CqlD4BatchStmtMapper.java +++ b/nb-adapters/adapter-cqld4/src/main/java/io/nosqlbench/adapter/cqld4/opmappers/CqlD4BatchStmtMapper.java @@ -16,6 +16,7 @@ package io.nosqlbench.adapter.cqld4.opmappers; +import com.datastax.oss.driver.api.core.cql.Row; import io.nosqlbench.adapter.cqld4.Cqld4DriverAdapter; import io.nosqlbench.adapter.cqld4.Cqld4Space; import io.nosqlbench.adapter.cqld4.opdispensers.CqlD4BatchStmtDispenser; @@ -25,9 +26,10 @@ import io.nosqlbench.adapters.api.activityimpl.OpDispenser; import io.nosqlbench.adapters.api.templating.ParsedOp; import io.nosqlbench.engine.api.templating.TypeAndTarget; +import java.util.List; import java.util.function.LongFunction; -public class CqlD4BatchStmtMapper extends Cqld4CqlBaseOpMapper { +public class CqlD4BatchStmtMapper> extends Cqld4CqlBaseOpMapper { private final TypeAndTarget target; diff --git a/nb-adapters/adapter-cqld4/src/main/java/io/nosqlbench/adapter/cqld4/opmappers/Cqld4BaseOpMapper.java b/nb-adapters/adapter-cqld4/src/main/java/io/nosqlbench/adapter/cqld4/opmappers/Cqld4BaseOpMapper.java index a8b854283..eb26d3d81 100644 --- a/nb-adapters/adapter-cqld4/src/main/java/io/nosqlbench/adapter/cqld4/opmappers/Cqld4BaseOpMapper.java +++ b/nb-adapters/adapter-cqld4/src/main/java/io/nosqlbench/adapter/cqld4/opmappers/Cqld4BaseOpMapper.java @@ -20,21 +20,16 @@ import com.datastax.oss.driver.api.core.CqlSession; import io.nosqlbench.adapter.cqld4.Cqld4DriverAdapter; import io.nosqlbench.adapter.cqld4.Cqld4Space; import io.nosqlbench.adapter.cqld4.optypes.Cqld4BaseOp; -import io.nosqlbench.adapter.cqld4.optypes.Cqld4CqlOp; import io.nosqlbench.adapters.api.activityimpl.OpDispenser; import io.nosqlbench.adapters.api.activityimpl.OpMapper; -import io.nosqlbench.adapters.api.activityimpl.uniform.BaseSpace; -import io.nosqlbench.adapters.api.activityimpl.uniform.DriverAdapter; -import io.nosqlbench.adapters.api.activityimpl.uniform.flowtypes.Op; +import io.nosqlbench.adapters.api.activityimpl.uniform.flowtypes.CycleOp; import io.nosqlbench.adapters.api.templating.ParsedOp; -import io.nosqlbench.engine.api.templating.TypeAndTarget; -import io.nosqlbench.nb.api.config.standard.NBConfiguration; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import java.util.function.LongFunction; -public abstract class Cqld4BaseOpMapper implements OpMapper { +public abstract class Cqld4BaseOpMapper> implements OpMapper { protected final static Logger logger = LogManager.getLogger(Cqld4BaseOpMapper.class); protected final Cqld4DriverAdapter adapter; diff --git a/nb-adapters/adapter-cqld4/src/main/java/io/nosqlbench/adapter/cqld4/opmappers/Cqld4CoreOpMapper.java b/nb-adapters/adapter-cqld4/src/main/java/io/nosqlbench/adapter/cqld4/opmappers/Cqld4CoreOpMapper.java index 5cb7280d2..627751a25 100644 --- a/nb-adapters/adapter-cqld4/src/main/java/io/nosqlbench/adapter/cqld4/opmappers/Cqld4CoreOpMapper.java +++ b/nb-adapters/adapter-cqld4/src/main/java/io/nosqlbench/adapter/cqld4/opmappers/Cqld4CoreOpMapper.java @@ -19,8 +19,7 @@ package io.nosqlbench.adapter.cqld4.opmappers; import io.nosqlbench.adapter.cqld4.Cqld4DriverAdapter; import io.nosqlbench.adapter.cqld4.Cqld4Space; import io.nosqlbench.adapter.cqld4.optypes.Cqld4BaseOp; -import io.nosqlbench.adapter.cqld4.optypes.Cqld4CqlOp; -import io.nosqlbench.adapters.api.activityimpl.uniform.DriverAdapter; +import io.nosqlbench.adapters.api.activityimpl.uniform.flowtypes.CycleOp; import io.nosqlbench.nb.api.config.standard.NBConfiguration; import io.nosqlbench.adapters.api.activityimpl.OpDispenser; import io.nosqlbench.adapters.api.templating.ParsedOp; @@ -31,12 +30,11 @@ import org.apache.logging.log4j.Logger; import java.util.function.LongFunction; -public class Cqld4CoreOpMapper extends Cqld4BaseOpMapper { +public class Cqld4CoreOpMapper extends Cqld4BaseOpMapper> { private final static Logger logger = LogManager.getLogger(Cqld4CoreOpMapper.class); - public Cqld4CoreOpMapper(Cqld4DriverAdapter adapter, - NBConfiguration config) { + public Cqld4CoreOpMapper(Cqld4DriverAdapter adapter, NBConfiguration config) { super(adapter); } @@ -53,16 +51,17 @@ public class Cqld4CoreOpMapper extends Cqld4BaseOpMapper { */ @Override - public OpDispenser apply(ParsedOp op, LongFunction cqld4SpaceLongFunction) { + public OpDispenser> apply(ParsedOp op, LongFunction cqld4SpaceLongFunction) { CqlD4OpType opType = CqlD4OpType.prepared; TypeAndTarget target = op.getTypeAndTarget(CqlD4OpType.class, String.class, "type", "stmt"); - logger.info(() -> "Using " + target.enumId + " statement form for '" + op.getName()+"'"); + logger.info(() -> "Using " + target.enumId + " statement form for '" + op.getName() + "'"); - return (OpDispenser) switch (target.enumId) { + return (OpDispenser>) switch (target.enumId) { case raw, simple, prepared, batch -> new Cqld4CqlOpMapper(adapter).apply(op, spaceFunc); case gremlin -> new Cqld4GremlinOpMapper(adapter, target.targetFunction).apply(op, spaceFunc); case fluent -> new Cqld4FluentGraphOpMapper(adapter, target).apply(op, spaceFunc); - case rainbow -> new CqlD4RainbowTableMapper(adapter, sessionFunc, target.targetFunction).apply(op, spaceFunc); + case rainbow -> + new CqlD4RainbowTableMapper(adapter, sessionFunc, target.targetFunction).apply(op, spaceFunc); default -> throw new OpConfigError("Unsupported op type " + opType); // case sst -> new Cqld4SsTableMapper(adapter, sessionFunc, target.targetFunction).apply(op); }; diff --git a/nb-adapters/adapter-cqld4/src/main/java/io/nosqlbench/adapter/cqld4/opmappers/Cqld4CqlBaseOpMapper.java b/nb-adapters/adapter-cqld4/src/main/java/io/nosqlbench/adapter/cqld4/opmappers/Cqld4CqlBaseOpMapper.java index 7b188aeaf..6e57780d6 100644 --- a/nb-adapters/adapter-cqld4/src/main/java/io/nosqlbench/adapter/cqld4/opmappers/Cqld4CqlBaseOpMapper.java +++ b/nb-adapters/adapter-cqld4/src/main/java/io/nosqlbench/adapter/cqld4/opmappers/Cqld4CqlBaseOpMapper.java @@ -22,6 +22,7 @@ import io.nosqlbench.adapter.cqld4.Cqld4DriverAdapter; import io.nosqlbench.adapter.cqld4.Cqld4Space; import io.nosqlbench.adapter.cqld4.optypes.Cqld4CqlOp; import io.nosqlbench.adapters.api.activityimpl.OpDispenser; +import io.nosqlbench.adapters.api.activityimpl.uniform.flowtypes.CycleOp; import io.nosqlbench.adapters.api.templating.ParsedOp; import java.util.function.LongFunction; @@ -34,4 +35,5 @@ public abstract class Cqld4CqlBaseOpMapper extends Cqld4Ba @Override public abstract OpDispenser apply(ParsedOp op, LongFunction spaceInitF); + } diff --git a/nb-adapters/adapter-cqld4/src/main/java/io/nosqlbench/adapter/cqld4/opmappers/Cqld4FluentGraphOpMapper.java b/nb-adapters/adapter-cqld4/src/main/java/io/nosqlbench/adapter/cqld4/opmappers/Cqld4FluentGraphOpMapper.java index b912446c9..1273761db 100644 --- a/nb-adapters/adapter-cqld4/src/main/java/io/nosqlbench/adapter/cqld4/opmappers/Cqld4FluentGraphOpMapper.java +++ b/nb-adapters/adapter-cqld4/src/main/java/io/nosqlbench/adapter/cqld4/opmappers/Cqld4FluentGraphOpMapper.java @@ -17,21 +17,14 @@ package io.nosqlbench.adapter.cqld4.opmappers; import com.datastax.dse.driver.api.core.graph.DseGraph; -import com.datastax.oss.driver.api.core.CqlSession; import groovy.lang.Binding; import groovy.lang.GroovyShell; import groovy.lang.Script; import io.nosqlbench.adapter.cqld4.Cqld4DriverAdapter; import io.nosqlbench.adapter.cqld4.Cqld4Space; import io.nosqlbench.adapter.cqld4.opdispensers.Cqld4FluentGraphOpDispenser; -import io.nosqlbench.adapter.cqld4.optypes.Cqld4BaseOp; -import io.nosqlbench.adapter.cqld4.optypes.Cqld4CqlOp; import io.nosqlbench.adapter.cqld4.optypes.Cqld4FluentGraphOp; 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.Space; -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.nb.api.errors.OpConfigError; diff --git a/nb-adapters/adapter-cqld4/src/main/java/io/nosqlbench/adapter/cqld4/optypes/Cqld4BaseOp.java b/nb-adapters/adapter-cqld4/src/main/java/io/nosqlbench/adapter/cqld4/optypes/Cqld4BaseOp.java index d9a190d28..69fb6aca0 100644 --- a/nb-adapters/adapter-cqld4/src/main/java/io/nosqlbench/adapter/cqld4/optypes/Cqld4BaseOp.java +++ b/nb-adapters/adapter-cqld4/src/main/java/io/nosqlbench/adapter/cqld4/optypes/Cqld4BaseOp.java @@ -18,7 +18,8 @@ package io.nosqlbench.adapter.cqld4.optypes; */ -import io.nosqlbench.adapters.api.activityimpl.uniform.flowtypes.Op; +import com.datastax.oss.driver.api.core.cql.ResultSet; +import io.nosqlbench.adapters.api.activityimpl.uniform.flowtypes.CycleOp; -public interface Cqld4BaseOp extends Op { +public interface Cqld4BaseOp extends CycleOp { } diff --git a/nb-adapters/adapter-cqld4/src/main/java/io/nosqlbench/adapter/cqld4/optypes/Cqld4CqlBatchStatement.java b/nb-adapters/adapter-cqld4/src/main/java/io/nosqlbench/adapter/cqld4/optypes/Cqld4CqlBatchStatement.java index c6429fe90..3697296ac 100644 --- a/nb-adapters/adapter-cqld4/src/main/java/io/nosqlbench/adapter/cqld4/optypes/Cqld4CqlBatchStatement.java +++ b/nb-adapters/adapter-cqld4/src/main/java/io/nosqlbench/adapter/cqld4/optypes/Cqld4CqlBatchStatement.java @@ -18,9 +18,13 @@ package io.nosqlbench.adapter.cqld4.optypes; import com.datastax.oss.driver.api.core.CqlSession; import com.datastax.oss.driver.api.core.cql.BatchStatement; +import com.datastax.oss.driver.api.core.cql.Row; import io.nosqlbench.adapter.cqld4.RSProcessors; import io.nosqlbench.adapter.cqld4.instruments.CqlOpMetrics; +import java.util.ArrayList; +import java.util.List; + public class Cqld4CqlBatchStatement extends Cqld4CqlOp { private final BatchStatement stmt; diff --git a/nb-adapters/adapter-cqld4/src/main/java/io/nosqlbench/adapter/cqld4/optypes/Cqld4CqlOp.java b/nb-adapters/adapter-cqld4/src/main/java/io/nosqlbench/adapter/cqld4/optypes/Cqld4CqlOp.java index 2232ba61c..801e0c779 100644 --- a/nb-adapters/adapter-cqld4/src/main/java/io/nosqlbench/adapter/cqld4/optypes/Cqld4CqlOp.java +++ b/nb-adapters/adapter-cqld4/src/main/java/io/nosqlbench/adapter/cqld4/optypes/Cqld4CqlOp.java @@ -17,10 +17,7 @@ package io.nosqlbench.adapter.cqld4.optypes; import com.datastax.oss.driver.api.core.CqlSession; -import com.datastax.oss.driver.api.core.cql.AsyncResultSet; -import com.datastax.oss.driver.api.core.cql.BoundStatement; -import com.datastax.oss.driver.api.core.cql.Row; -import com.datastax.oss.driver.api.core.cql.Statement; +import com.datastax.oss.driver.api.core.cql.*; import io.nosqlbench.adapter.cqld4.Cqld4CqlReboundStatement; import io.nosqlbench.adapter.cqld4.LWTRebinder; import io.nosqlbench.adapter.cqld4.RSProcessors; @@ -50,7 +47,7 @@ import java.util.concurrent.*; public abstract class Cqld4CqlOp - implements Cqld4BaseOp, CycleOp>, VariableCapture, OpGenerator, OpResultSize { + implements Cqld4BaseOp>, VariableCapture, OpGenerator, OpResultSize { private final static Logger logger = LogManager.getLogger(Cqld4CqlOp.class); @@ -101,7 +98,8 @@ public abstract class Cqld4CqlOp this.metrics = metrics; } - public final ArrayList apply(long cycle) { + @Override + public List apply(long cycle) { Statement statement = getStmt(); logger.trace(() -> "apply() invoked, statement obtained, executing async with page size: " + statement.getPageSize() + " thread local rows: "); @@ -136,15 +134,16 @@ public abstract class Cqld4CqlOp metrics.recordFetchedRows(fetchedRows); metrics.recordFetchedBytes(fetchedBytes); } + } // logger.trace(() -> "\n\n--- Rows collected for cycle: " + cycle + " count: " // + rs.size() + " dt: " + System.nanoTime()); // // results.set(completeRowSet); // processors.flush(); - } - private static class PrintableRowList extends ArrayList { + + public static class PrintableRowList extends ArrayList { public PrintableRowList(List values) { super(values); } @@ -159,10 +158,9 @@ public abstract class Cqld4CqlOp } } - // private BiFunction handler @Override - public Op getNextOp() { - Op next = nextOp; + public CycleOp getNextOp() { + CycleOp next = nextOp; nextOp = null; return next; } @@ -181,7 +179,7 @@ public abstract class Cqld4CqlOp } private CompletionStage> collect(AsyncResultSet resultSet, ArrayList rowList, final long cycle) { - fetchedBytes+=resultSet.getExecutionInfo().getResponseSizeInBytes(); + fetchedBytes += resultSet.getExecutionInfo().getResponseSizeInBytes(); if (++fetchedPages > maxPages) { throw new UnexpectedPagingException(resultSet, getQueryString(), fetchedPages, maxPages, getStmt().getPageSize()); } diff --git a/nb-adapters/adapter-cqld4/src/main/java/io/nosqlbench/adapter/cqld4/optypes/Cqld4CqlOpImpl.java b/nb-adapters/adapter-cqld4/src/main/java/io/nosqlbench/adapter/cqld4/optypes/Cqld4CqlOpImpl.java new file mode 100644 index 000000000..9daeef660 --- /dev/null +++ b/nb-adapters/adapter-cqld4/src/main/java/io/nosqlbench/adapter/cqld4/optypes/Cqld4CqlOpImpl.java @@ -0,0 +1,40 @@ +package io.nosqlbench.adapter.cqld4.optypes; + +/* + * Copyright (c) nosqlbench + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + + +import com.datastax.oss.driver.api.core.CqlSession; +import com.datastax.oss.driver.api.core.cql.Statement; +import io.nosqlbench.adapter.cqld4.RSProcessors; +import io.nosqlbench.adapter.cqld4.instruments.CqlOpMetrics; + +public class Cqld4CqlOpImpl extends Cqld4CqlOp { + public Cqld4CqlOpImpl(CqlSession session, int maxPages, boolean retryReplace, int maxLwtRetries, RSProcessors processors, CqlOpMetrics metrics) { + super(session, maxPages, retryReplace, maxLwtRetries, processors, metrics); + } + + @Override + public Statement getStmt() { + return null; + } + + @Override + public String getQueryString() { + return ""; + } +} diff --git a/nb-adapters/adapter-cqld4/src/main/java/io/nosqlbench/adapter/cqld4/optypes/Cqld4FluentGraphOp.java b/nb-adapters/adapter-cqld4/src/main/java/io/nosqlbench/adapter/cqld4/optypes/Cqld4FluentGraphOp.java index 17b67b072..877818e4b 100644 --- a/nb-adapters/adapter-cqld4/src/main/java/io/nosqlbench/adapter/cqld4/optypes/Cqld4FluentGraphOp.java +++ b/nb-adapters/adapter-cqld4/src/main/java/io/nosqlbench/adapter/cqld4/optypes/Cqld4FluentGraphOp.java @@ -22,7 +22,7 @@ import com.datastax.oss.driver.api.core.CqlSession; import io.nosqlbench.adapters.api.activityimpl.uniform.flowtypes.CycleOp; import io.nosqlbench.adapters.api.activityimpl.uniform.flowtypes.OpResultSize; -public class Cqld4FluentGraphOp implements Cqld4BaseOp, CycleOp, OpResultSize { +public class Cqld4FluentGraphOp implements Cqld4BaseOp, OpResultSize { private final CqlSession session; private final FluentGraphStatement stmt; private int resultSize=0; diff --git a/nb-adapters/adapter-cqld4/src/main/java/io/nosqlbench/adapter/cqld4/optypes/Cqld4RainbowTableOp.java b/nb-adapters/adapter-cqld4/src/main/java/io/nosqlbench/adapter/cqld4/optypes/Cqld4RainbowTableOp.java index 26900be27..129aad489 100644 --- a/nb-adapters/adapter-cqld4/src/main/java/io/nosqlbench/adapter/cqld4/optypes/Cqld4RainbowTableOp.java +++ b/nb-adapters/adapter-cqld4/src/main/java/io/nosqlbench/adapter/cqld4/optypes/Cqld4RainbowTableOp.java @@ -23,7 +23,7 @@ import java.util.Map; // Need to create RainbowTableStatement public class Cqld4RainbowTableOp - implements Cqld4BaseOp, CycleOp, VariableCapture, OpGenerator, OpResultSize { + implements Cqld4BaseOp, VariableCapture, OpGenerator, OpResultSize { // private final CqlSession session; // private final RainbowTableStatement stmt; @@ -35,7 +35,7 @@ public class Cqld4RainbowTableOp } @Override - public Op getNextOp() { + public CycleOp getNextOp() { throw new RuntimeException("implement me"); } diff --git a/nb-adapters/adapter-cqld4/src/main/java/io/nosqlbench/adapter/cqld4/optypes/Cqld4ScriptGraphOp.java b/nb-adapters/adapter-cqld4/src/main/java/io/nosqlbench/adapter/cqld4/optypes/Cqld4ScriptGraphOp.java index 632c9dda9..9f9dac08e 100644 --- a/nb-adapters/adapter-cqld4/src/main/java/io/nosqlbench/adapter/cqld4/optypes/Cqld4ScriptGraphOp.java +++ b/nb-adapters/adapter-cqld4/src/main/java/io/nosqlbench/adapter/cqld4/optypes/Cqld4ScriptGraphOp.java @@ -22,7 +22,7 @@ import com.datastax.oss.driver.api.core.CqlSession; import io.nosqlbench.adapters.api.activityimpl.uniform.flowtypes.CycleOp; import io.nosqlbench.adapters.api.activityimpl.uniform.flowtypes.OpResultSize; -public class Cqld4ScriptGraphOp implements Cqld4BaseOp, CycleOp, OpResultSize { +public class Cqld4ScriptGraphOp implements Cqld4BaseOp, OpResultSize { private final CqlSession session; private final ScriptGraphStatement stmt; private int resultSize=0; diff --git a/nb-adapters/adapter-dataapi/src/main/java/io/nosqlbench/adapter/dataapi/ops/DataApiBaseOp.java b/nb-adapters/adapter-dataapi/src/main/java/io/nosqlbench/adapter/dataapi/ops/DataApiBaseOp.java index 255d1d804..b120c890f 100644 --- a/nb-adapters/adapter-dataapi/src/main/java/io/nosqlbench/adapter/dataapi/ops/DataApiBaseOp.java +++ b/nb-adapters/adapter-dataapi/src/main/java/io/nosqlbench/adapter/dataapi/ops/DataApiBaseOp.java @@ -21,7 +21,7 @@ import io.nosqlbench.adapters.api.activityimpl.uniform.flowtypes.CycleOp; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; -public abstract class DataApiBaseOp implements CycleOp { +public abstract class DataApiBaseOp implements CycleOp { protected static final Logger logger = LogManager.getLogger(DataApiBaseOp.class); protected final Database db; diff --git a/nb-adapters/adapter-gcp-spanner/src/main/java/io/nosqlbench/adapter/gcpspanner/GCPSpannerDriverAdapter.java b/nb-adapters/adapter-gcp-spanner/src/main/java/io/nosqlbench/adapter/gcpspanner/GCPSpannerDriverAdapter.java index b9eb95433..830ad51af 100644 --- a/nb-adapters/adapter-gcp-spanner/src/main/java/io/nosqlbench/adapter/gcpspanner/GCPSpannerDriverAdapter.java +++ b/nb-adapters/adapter-gcp-spanner/src/main/java/io/nosqlbench/adapter/gcpspanner/GCPSpannerDriverAdapter.java @@ -32,14 +32,14 @@ import java.util.function.LongFunction; import static io.nosqlbench.adapter.gcpspanner.GCPSpannerAdapterUtils.SPANNER; @Service(value = DriverAdapter.class, selector = SPANNER) -public class GCPSpannerDriverAdapter extends BaseDriverAdapter { +public class GCPSpannerDriverAdapter extends BaseDriverAdapter, GCPSpannerSpace> { public GCPSpannerDriverAdapter(NBComponent parentComponent, NBLabels labels) { super(parentComponent, labels); } @Override - public OpMapper getOpMapper() { + public OpMapper,GCPSpannerSpace> getOpMapper() { return new GCPSpannerOpMapper(this); } diff --git a/nb-adapters/adapter-gcp-spanner/src/main/java/io/nosqlbench/adapter/gcpspanner/GCPSpannerOpMapper.java b/nb-adapters/adapter-gcp-spanner/src/main/java/io/nosqlbench/adapter/gcpspanner/GCPSpannerOpMapper.java index d935a021e..9d6e077e5 100644 --- a/nb-adapters/adapter-gcp-spanner/src/main/java/io/nosqlbench/adapter/gcpspanner/GCPSpannerOpMapper.java +++ b/nb-adapters/adapter-gcp-spanner/src/main/java/io/nosqlbench/adapter/gcpspanner/GCPSpannerOpMapper.java @@ -30,7 +30,7 @@ import org.apache.logging.log4j.Logger; import java.util.function.IntFunction; import java.util.function.LongFunction; -public class GCPSpannerOpMapper implements OpMapper { +public class GCPSpannerOpMapper implements OpMapper, GCPSpannerSpace> { private static final Logger logger = LogManager.getLogger(GCPSpannerOpMapper.class); private final GCPSpannerDriverAdapter adapter; @@ -56,12 +56,12 @@ public class GCPSpannerOpMapper implements OpMapper apply(ParsedOp op, LongFunction spaceInitF) { + public OpDispenser> apply(ParsedOp op, LongFunction spaceInitF) { TypeAndTarget typeAndTarget = op.getTypeAndTarget(GCPSpannerOpType.class, String.class, "type", "target"); logger.info(() -> "Using '" + typeAndTarget.enumId + "' op type for op template '" + op.getName() + "'"); - return switch (typeAndTarget.enumId) { + OpDispenser> dispenser = switch (typeAndTarget.enumId) { case drop_database_ddl -> new GCPSpannerDropDatabaseDdlOpDispenser(adapter, op, typeAndTarget.targetFunction); case create_database_ddl -> @@ -71,5 +71,6 @@ public class GCPSpannerOpMapper implements OpMapper new GCPSpannerInsertOpDispenser(adapter, op, typeAndTarget.targetFunction); case execute_dml -> new GCPSpannerExecuteDmlOpDispenser(adapter, op, typeAndTarget.targetFunction); }; + return dispenser; } } diff --git a/nb-adapters/adapter-gcp-spanner/src/main/java/io/nosqlbench/adapter/gcpspanner/opdispensers/GCPSpannerBaseOpDispenser.java b/nb-adapters/adapter-gcp-spanner/src/main/java/io/nosqlbench/adapter/gcpspanner/opdispensers/GCPSpannerBaseOpDispenser.java index 68e5c8c1c..593af56f9 100644 --- a/nb-adapters/adapter-gcp-spanner/src/main/java/io/nosqlbench/adapter/gcpspanner/opdispensers/GCPSpannerBaseOpDispenser.java +++ b/nb-adapters/adapter-gcp-spanner/src/main/java/io/nosqlbench/adapter/gcpspanner/opdispensers/GCPSpannerBaseOpDispenser.java @@ -32,7 +32,7 @@ import java.util.function.LongFunction; * for creating GCP Spanner operations. */ public abstract class GCPSpannerBaseOpDispenser - extends BaseOpDispenser { + extends BaseOpDispenser, GCPSpannerSpace> { /** * A function that provides the target string based on a long input. */ diff --git a/nb-adapters/adapter-gcp-spanner/src/main/java/io/nosqlbench/adapter/gcpspanner/ops/GCPSpannerBaseOp.java b/nb-adapters/adapter-gcp-spanner/src/main/java/io/nosqlbench/adapter/gcpspanner/ops/GCPSpannerBaseOp.java index dfd7c320e..65096fae3 100644 --- a/nb-adapters/adapter-gcp-spanner/src/main/java/io/nosqlbench/adapter/gcpspanner/ops/GCPSpannerBaseOp.java +++ b/nb-adapters/adapter-gcp-spanner/src/main/java/io/nosqlbench/adapter/gcpspanner/ops/GCPSpannerBaseOp.java @@ -18,7 +18,6 @@ package io.nosqlbench.adapter.gcpspanner.ops; import com.google.cloud.spanner.Spanner; import io.nosqlbench.adapters.api.activityimpl.uniform.flowtypes.CycleOp; -import io.nosqlbench.adapters.api.activityimpl.uniform.flowtypes.Op; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; diff --git a/nb-adapters/adapter-http/src/main/java/io/nosqlbench/adapter/http/core/HttpOp.java b/nb-adapters/adapter-http/src/main/java/io/nosqlbench/adapter/http/core/HttpOp.java index 9eb871ab4..3d0fe432a 100644 --- a/nb-adapters/adapter-http/src/main/java/io/nosqlbench/adapter/http/core/HttpOp.java +++ b/nb-adapters/adapter-http/src/main/java/io/nosqlbench/adapter/http/core/HttpOp.java @@ -27,7 +27,7 @@ import java.util.concurrent.CompletableFuture; import java.util.concurrent.TimeUnit; import java.util.regex.Pattern; -public class HttpOp implements CycleOp { +public class HttpOp implements CycleOp { public final Pattern ok_status; public final Pattern ok_body; diff --git a/nb-adapters/adapter-mongodb/src/main/java/io/nosqlbench/adapter/mongodb/core/MongoOpMapper.java b/nb-adapters/adapter-mongodb/src/main/java/io/nosqlbench/adapter/mongodb/core/MongoOpMapper.java index 7526e9d58..a813dd457 100644 --- a/nb-adapters/adapter-mongodb/src/main/java/io/nosqlbench/adapter/mongodb/core/MongoOpMapper.java +++ b/nb-adapters/adapter-mongodb/src/main/java/io/nosqlbench/adapter/mongodb/core/MongoOpMapper.java @@ -18,20 +18,17 @@ package io.nosqlbench.adapter.mongodb.core; import io.nosqlbench.adapter.mongodb.dispensers.MongoCommandOpDispenser; import io.nosqlbench.adapter.mongodb.ops.MongoDirectCommandOp; -import io.nosqlbench.adapters.api.activityimpl.uniform.Space; import io.nosqlbench.adapters.api.activityimpl.uniform.ConcurrentSpaceCache; import io.nosqlbench.nb.api.config.standard.NBConfiguration; import io.nosqlbench.nb.api.errors.BasicError; 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.adapters.api.templating.ParsedOp; import io.nosqlbench.engine.api.templating.TypeAndTarget; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import java.util.Optional; -import java.util.function.IntFunction; import java.util.function.LongFunction; public class MongoOpMapper implements OpMapper { diff --git a/nb-adapters/adapter-mongodb/src/main/java/io/nosqlbench/adapter/mongodb/core/MongodbDriverAdapter.java b/nb-adapters/adapter-mongodb/src/main/java/io/nosqlbench/adapter/mongodb/core/MongodbDriverAdapter.java index 090e38ea5..931091b80 100644 --- a/nb-adapters/adapter-mongodb/src/main/java/io/nosqlbench/adapter/mongodb/core/MongodbDriverAdapter.java +++ b/nb-adapters/adapter-mongodb/src/main/java/io/nosqlbench/adapter/mongodb/core/MongodbDriverAdapter.java @@ -17,31 +17,30 @@ package io.nosqlbench.adapter.mongodb.core; import io.nosqlbench.adapter.mongodb.ops.MongoDirectCommandOp; +import io.nosqlbench.adapter.mongodb.ops.MongoOp; import io.nosqlbench.nb.api.config.standard.NBConfigModel; import io.nosqlbench.nb.api.config.standard.NBConfiguration; 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.api.labels.NBLabels; import io.nosqlbench.nb.api.components.core.NBComponent; import io.nosqlbench.nb.annotations.Service; -import java.util.function.IntFunction; import java.util.function.LongFunction; /** * Special thanks to Justin Chu who authored the original NoSQLBench MongoDB ActivityType. */ @Service(value = DriverAdapter.class, selector = "mongodb") -public class MongodbDriverAdapter extends BaseDriverAdapter { +public class MongodbDriverAdapter extends BaseDriverAdapter, MongoSpace> { public MongodbDriverAdapter(NBComponent parentComponent, NBLabels labels) { super(parentComponent, labels); } @Override - public OpMapper getOpMapper() { + public OpMapper,MongoSpace> getOpMapper() { return new MongoOpMapper(this, getConfiguration(), getSpaceCache()); } diff --git a/nb-adapters/adapter-mongodb/src/main/java/io/nosqlbench/adapter/mongodb/dispensers/MongoCommandOpDispenser.java b/nb-adapters/adapter-mongodb/src/main/java/io/nosqlbench/adapter/mongodb/dispensers/MongoCommandOpDispenser.java index bb31c567c..db6431895 100644 --- a/nb-adapters/adapter-mongodb/src/main/java/io/nosqlbench/adapter/mongodb/dispensers/MongoCommandOpDispenser.java +++ b/nb-adapters/adapter-mongodb/src/main/java/io/nosqlbench/adapter/mongodb/dispensers/MongoCommandOpDispenser.java @@ -20,14 +20,11 @@ import io.nosqlbench.adapter.mongodb.core.MongoSpace; import io.nosqlbench.adapter.mongodb.ops.MongoDirectCommandOp; import io.nosqlbench.adapters.api.activityimpl.BaseOpDispenser; import io.nosqlbench.adapters.api.activityimpl.uniform.DriverAdapter; -import io.nosqlbench.adapters.api.activityimpl.uniform.Space; -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; import java.util.Map; -import java.util.function.IntFunction; import java.util.function.LongFunction; public class MongoCommandOpDispenser extends BaseOpDispenser { diff --git a/nb-adapters/adapter-mongodb/src/main/java/io/nosqlbench/adapter/mongodb/dispensers/MongoDbUpdateOpDispenser.java b/nb-adapters/adapter-mongodb/src/main/java/io/nosqlbench/adapter/mongodb/dispensers/MongoDbUpdateOpDispenser.java index 82b5af140..0b7090d3b 100644 --- a/nb-adapters/adapter-mongodb/src/main/java/io/nosqlbench/adapter/mongodb/dispensers/MongoDbUpdateOpDispenser.java +++ b/nb-adapters/adapter-mongodb/src/main/java/io/nosqlbench/adapter/mongodb/dispensers/MongoDbUpdateOpDispenser.java @@ -20,9 +20,14 @@ 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.adapter.mongodb.ops.MongoDbUpdateOp; +import io.nosqlbench.adapter.mongodb.ops.MongoDirectCommandOp; +import io.nosqlbench.adapter.mongodb.ops.MongoOp; import io.nosqlbench.adapters.api.activityimpl.BaseOpDispenser; -import io.nosqlbench.adapters.api.activityimpl.uniform.flowtypes.Op; +import io.nosqlbench.adapters.api.activityimpl.uniform.flowtypes.CycleOp; import io.nosqlbench.adapters.api.templating.ParsedOp; +import org.bson.BsonDocument; +import org.bson.conversions.Bson; import java.util.function.LongFunction; @@ -30,9 +35,9 @@ import java.util.function.LongFunction; * https://www.mongodb.com/docs/manual/reference/command/update/#mongodb-dbcommand-dbcmd.update * https://www.mongodb.com/docs/drivers/java/sync/current/usage-examples/updateOne/ */ -public class MongoDbUpdateOpDispenser extends BaseOpDispenser { +public class MongoDbUpdateOpDispenser extends BaseOpDispenser, MongoSpace> { private final LongFunction spaceF; - private final LongFunction opF; + private final LongFunction> opF; private final LongFunction collectionF; public MongoDbUpdateOpDispenser(MongodbDriverAdapter adapter, ParsedOp pop, LongFunction collectionF) { @@ -42,15 +47,16 @@ public class MongoDbUpdateOpDispenser extends BaseOpDispenser { this.opF = createOpF(pop); } - private LongFunction createOpF(ParsedOp pop) { + private LongFunction> createOpF(ParsedOp pop) { LongFunction clientF = cycle -> spaceF.apply(cycle).getClient(); LongFunction docF = l -> clientF.apply(l).getDatabase(collectionF.apply(l)); - return l -> new Op() {}; + // TODO This needs to be completed for at least one working example of a specialized op form. + return l -> new MongoDirectCommandOp(clientF.apply(l),docF.apply(l).getName(),new BsonDocument()); } @Override - public Op getOp(long value) { - Op op = opF.apply(value); + public MongoOp getOp(long value) { + MongoOp op = opF.apply(value); return op; } diff --git a/nb-adapters/adapter-mongodb/src/main/java/io/nosqlbench/adapter/mongodb/ops/MongoDbUpdateOp.java b/nb-adapters/adapter-mongodb/src/main/java/io/nosqlbench/adapter/mongodb/ops/MongoDbUpdateOp.java new file mode 100644 index 000000000..4bcf167aa --- /dev/null +++ b/nb-adapters/adapter-mongodb/src/main/java/io/nosqlbench/adapter/mongodb/ops/MongoDbUpdateOp.java @@ -0,0 +1,30 @@ +package io.nosqlbench.adapter.mongodb.ops; + +/* + * Copyright (c) nosqlbench + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + + +import io.nosqlbench.adapters.api.activityimpl.uniform.flowtypes.CycleOp; +import org.bson.Document; + +public class MongoDbUpdateOp implements CycleOp { + + @Override + public Document apply(long value) { + return null; + } +} diff --git a/nb-adapters/adapter-mongodb/src/main/java/io/nosqlbench/adapter/mongodb/ops/MongoDirectCommandOp.java b/nb-adapters/adapter-mongodb/src/main/java/io/nosqlbench/adapter/mongodb/ops/MongoDirectCommandOp.java index 48eb83ea0..5f95e8b61 100644 --- a/nb-adapters/adapter-mongodb/src/main/java/io/nosqlbench/adapter/mongodb/ops/MongoDirectCommandOp.java +++ b/nb-adapters/adapter-mongodb/src/main/java/io/nosqlbench/adapter/mongodb/ops/MongoDirectCommandOp.java @@ -21,7 +21,7 @@ import io.nosqlbench.adapters.api.activityimpl.uniform.flowtypes.CycleOp; import org.bson.Document; import org.bson.conversions.Bson; -public class MongoDirectCommandOp implements CycleOp { +public class MongoDirectCommandOp implements MongoOp { private final MongoClient client; private final Bson rqBson; diff --git a/nb-adapters/adapter-mongodb/src/main/java/io/nosqlbench/adapter/mongodb/ops/MongoOp.java b/nb-adapters/adapter-mongodb/src/main/java/io/nosqlbench/adapter/mongodb/ops/MongoOp.java new file mode 100644 index 000000000..a43bcaccd --- /dev/null +++ b/nb-adapters/adapter-mongodb/src/main/java/io/nosqlbench/adapter/mongodb/ops/MongoOp.java @@ -0,0 +1,24 @@ +package io.nosqlbench.adapter.mongodb.ops; + +/* + * Copyright (c) nosqlbench + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + + +import io.nosqlbench.adapters.api.activityimpl.uniform.flowtypes.CycleOp; + +public interface MongoOp extends CycleOp { +} diff --git a/nb-adapters/adapter-qdrant/src/main/java/io/nosqlbench/adapter/qdrant/QdrantDriverAdapter.java b/nb-adapters/adapter-qdrant/src/main/java/io/nosqlbench/adapter/qdrant/QdrantDriverAdapter.java index 26a784278..02be9e9c2 100644 --- a/nb-adapters/adapter-qdrant/src/main/java/io/nosqlbench/adapter/qdrant/QdrantDriverAdapter.java +++ b/nb-adapters/adapter-qdrant/src/main/java/io/nosqlbench/adapter/qdrant/QdrantDriverAdapter.java @@ -33,14 +33,14 @@ import java.util.function.LongFunction; import static io.nosqlbench.adapter.qdrant.QdrantAdapterUtils.QDRANT; @Service(value = DriverAdapter.class, selector = QDRANT) -public class QdrantDriverAdapter extends BaseDriverAdapter { +public class QdrantDriverAdapter extends BaseDriverAdapter, QdrantSpace> { public QdrantDriverAdapter(NBComponent parentComponent, NBLabels labels) { super(parentComponent, labels); } @Override - public OpMapper getOpMapper() { + public OpMapper,QdrantSpace> getOpMapper() { return new QdrantOpMapper(this); } diff --git a/nb-adapters/adapter-qdrant/src/main/java/io/nosqlbench/adapter/qdrant/QdrantOpMapper.java b/nb-adapters/adapter-qdrant/src/main/java/io/nosqlbench/adapter/qdrant/QdrantOpMapper.java index f5eab3e0d..696a1dc58 100644 --- a/nb-adapters/adapter-qdrant/src/main/java/io/nosqlbench/adapter/qdrant/QdrantOpMapper.java +++ b/nb-adapters/adapter-qdrant/src/main/java/io/nosqlbench/adapter/qdrant/QdrantOpMapper.java @@ -30,7 +30,7 @@ import org.apache.logging.log4j.Logger; import java.util.function.IntFunction; import java.util.function.LongFunction; -public class QdrantOpMapper implements OpMapper { +public class QdrantOpMapper implements OpMapper,QdrantSpace> { private static final Logger logger = LogManager.getLogger(QdrantOpMapper.class); private final QdrantDriverAdapter adapter; @@ -52,7 +52,7 @@ public class QdrantOpMapper implements OpMapper { * @return The correct {@link QdrantBaseOpDispenser} subclass based on the op type */ @Override - public OpDispenser apply(ParsedOp op, LongFunction spaceInitF) { + public OpDispenser> apply(ParsedOp op, LongFunction spaceInitF) { TypeAndTarget typeAndTarget = op.getTypeAndTarget( QdrantOpType.class, String.class, @@ -61,7 +61,7 @@ public class QdrantOpMapper implements OpMapper { ); logger.info(() -> "Using '" + typeAndTarget.enumId + "' op type for op template '" + op.getName() + "'"); - return switch (typeAndTarget.enumId) { + OpDispenser> dispenser = switch (typeAndTarget.enumId) { case delete_collection -> new QdrantDeleteCollectionOpDispenser(adapter, op, typeAndTarget.targetFunction); case create_collection -> new QdrantCreateCollectionOpDispenser(adapter, op, typeAndTarget.targetFunction); case create_payload_index -> @@ -78,6 +78,7 @@ public class QdrantOpMapper implements OpMapper { // default -> throw new RuntimeException("Unrecognized op type '" + typeAndTarget.enumId.name() + "' while " + // "mapping parsed op " + op); }; + return dispenser; } } diff --git a/nb-adapters/adapter-qdrant/src/main/java/io/nosqlbench/adapter/qdrant/opdispensers/QdrantBaseOpDispenser.java b/nb-adapters/adapter-qdrant/src/main/java/io/nosqlbench/adapter/qdrant/opdispensers/QdrantBaseOpDispenser.java index 1cf28b3ad..c7076f76f 100644 --- a/nb-adapters/adapter-qdrant/src/main/java/io/nosqlbench/adapter/qdrant/opdispensers/QdrantBaseOpDispenser.java +++ b/nb-adapters/adapter-qdrant/src/main/java/io/nosqlbench/adapter/qdrant/opdispensers/QdrantBaseOpDispenser.java @@ -41,12 +41,13 @@ import java.util.function.LongFunction; import static io.qdrant.client.ConditionFactory.*; -public abstract class QdrantBaseOpDispenser extends BaseOpDispenser { +public abstract class QdrantBaseOpDispenser + extends BaseOpDispenser, QdrantSpace> { protected final LongFunction qdrantSpaceFunction; protected final LongFunction clientFunction; - private final LongFunction> opF; - private final LongFunction paramF; + private final LongFunction> opF; + private final LongFunction paramF; protected QdrantBaseOpDispenser(QdrantDriverAdapter adapter, ParsedOp op, LongFunction targetF) { super((DriverAdapter)adapter, op); @@ -59,21 +60,21 @@ public abstract class QdrantBaseOpDispenser extends BaseOpDispenser getParamFunc( + public abstract LongFunction getParamFunc( LongFunction clientF, ParsedOp op, LongFunction targetF ); - public abstract LongFunction> createOpFunc( - LongFunction paramF, + public abstract LongFunction> createOpFunc( + LongFunction paramF, LongFunction clientF, ParsedOp op, LongFunction targetF ); @Override - public QdrantBaseOp getOp(long value) { + public QdrantBaseOp getOp(long value) { return opF.apply(value); } @@ -477,7 +478,7 @@ public abstract class QdrantBaseOpDispenser extends BaseOpDispenser { +public class QdrantCollectionExistsOpDispenser extends QdrantBaseOpDispenser { public QdrantCollectionExistsOpDispenser(QdrantDriverAdapter adapter, ParsedOp op, LongFunction targetFunction) { super(adapter, op, targetFunction); } @@ -41,7 +41,7 @@ public class QdrantCollectionExistsOpDispenser extends QdrantBaseOpDispenser> createOpFunc( + public LongFunction> createOpFunc( LongFunction paramF, LongFunction clientF, ParsedOp op, diff --git a/nb-adapters/adapter-qdrant/src/main/java/io/nosqlbench/adapter/qdrant/opdispensers/QdrantCollectionInfoOpDispenser.java b/nb-adapters/adapter-qdrant/src/main/java/io/nosqlbench/adapter/qdrant/opdispensers/QdrantCollectionInfoOpDispenser.java index 169fe36ef..1e10e9750 100644 --- a/nb-adapters/adapter-qdrant/src/main/java/io/nosqlbench/adapter/qdrant/opdispensers/QdrantCollectionInfoOpDispenser.java +++ b/nb-adapters/adapter-qdrant/src/main/java/io/nosqlbench/adapter/qdrant/opdispensers/QdrantCollectionInfoOpDispenser.java @@ -21,10 +21,11 @@ import io.nosqlbench.adapter.qdrant.ops.QdrantBaseOp; import io.nosqlbench.adapter.qdrant.ops.QdrantCollectionInfoOp; import io.nosqlbench.adapters.api.templating.ParsedOp; import io.qdrant.client.QdrantClient; +import io.qdrant.client.grpc.Collections; import java.util.function.LongFunction; -public class QdrantCollectionInfoOpDispenser extends QdrantBaseOpDispenser { +public class QdrantCollectionInfoOpDispenser extends QdrantBaseOpDispenser { public QdrantCollectionInfoOpDispenser(QdrantDriverAdapter adapter, ParsedOp op, LongFunction targetFunction) { super(adapter, op, targetFunction); } @@ -36,7 +37,7 @@ public class QdrantCollectionInfoOpDispenser extends QdrantBaseOpDispenser> createOpFunc( + public LongFunction> createOpFunc( LongFunction paramF, LongFunction clientF, ParsedOp op, diff --git a/nb-adapters/adapter-qdrant/src/main/java/io/nosqlbench/adapter/qdrant/opdispensers/QdrantCountPointsOpDispenser.java b/nb-adapters/adapter-qdrant/src/main/java/io/nosqlbench/adapter/qdrant/opdispensers/QdrantCountPointsOpDispenser.java index 8577cbf35..d48dba9f4 100644 --- a/nb-adapters/adapter-qdrant/src/main/java/io/nosqlbench/adapter/qdrant/opdispensers/QdrantCountPointsOpDispenser.java +++ b/nb-adapters/adapter-qdrant/src/main/java/io/nosqlbench/adapter/qdrant/opdispensers/QdrantCountPointsOpDispenser.java @@ -26,7 +26,7 @@ import io.qdrant.client.grpc.Points.Filter; import java.util.function.LongFunction; -public class QdrantCountPointsOpDispenser extends QdrantBaseOpDispenser { +public class QdrantCountPointsOpDispenser extends QdrantBaseOpDispenser { public QdrantCountPointsOpDispenser(QdrantDriverAdapter adapter, ParsedOp op, LongFunction targetFunction) { super(adapter, op, targetFunction); } @@ -50,7 +50,7 @@ public class QdrantCountPointsOpDispenser extends QdrantBaseOpDispenser> createOpFunc( + public LongFunction> createOpFunc( LongFunction paramF, LongFunction clientF, ParsedOp op, diff --git a/nb-adapters/adapter-qdrant/src/main/java/io/nosqlbench/adapter/qdrant/opdispensers/QdrantCreateCollectionOpDispenser.java b/nb-adapters/adapter-qdrant/src/main/java/io/nosqlbench/adapter/qdrant/opdispensers/QdrantCreateCollectionOpDispenser.java index 0f0805785..aa1a4b9bb 100644 --- a/nb-adapters/adapter-qdrant/src/main/java/io/nosqlbench/adapter/qdrant/opdispensers/QdrantCreateCollectionOpDispenser.java +++ b/nb-adapters/adapter-qdrant/src/main/java/io/nosqlbench/adapter/qdrant/opdispensers/QdrantCreateCollectionOpDispenser.java @@ -21,6 +21,7 @@ import java.util.Map; import java.util.Optional; import java.util.function.LongFunction; +import io.qdrant.client.grpc.Collections; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; @@ -48,7 +49,7 @@ import io.qdrant.client.grpc.Collections.VectorParamsMap; import io.qdrant.client.grpc.Collections.VectorsConfig; import io.qdrant.client.grpc.Collections.WalConfigDiff; -public class QdrantCreateCollectionOpDispenser extends QdrantBaseOpDispenser { +public class QdrantCreateCollectionOpDispenser extends QdrantBaseOpDispenser { private static final Logger logger = LogManager.getLogger(QdrantCreateCollectionOpDispenser.class); /** @@ -364,7 +365,7 @@ public class QdrantCreateCollectionOpDispenser extends QdrantBaseOpDispenser> createOpFunc( + public LongFunction> createOpFunc( LongFunction paramF, LongFunction clientF, ParsedOp op, diff --git a/nb-adapters/adapter-qdrant/src/main/java/io/nosqlbench/adapter/qdrant/opdispensers/QdrantCreatePayloadIndexOpDispenser.java b/nb-adapters/adapter-qdrant/src/main/java/io/nosqlbench/adapter/qdrant/opdispensers/QdrantCreatePayloadIndexOpDispenser.java index b69afb7fa..37b7844e2 100644 --- a/nb-adapters/adapter-qdrant/src/main/java/io/nosqlbench/adapter/qdrant/opdispensers/QdrantCreatePayloadIndexOpDispenser.java +++ b/nb-adapters/adapter-qdrant/src/main/java/io/nosqlbench/adapter/qdrant/opdispensers/QdrantCreatePayloadIndexOpDispenser.java @@ -21,6 +21,7 @@ import io.nosqlbench.adapter.qdrant.ops.QdrantBaseOp; import io.nosqlbench.adapter.qdrant.ops.QdrantCreatePayloadIndexOp; import io.nosqlbench.adapters.api.templating.ParsedOp; import io.qdrant.client.QdrantClient; +import io.qdrant.client.grpc.Points; import io.qdrant.client.grpc.Points.CreateFieldIndexCollection; import io.qdrant.client.grpc.Points.FieldType; import io.qdrant.client.grpc.Points.WriteOrdering; @@ -29,7 +30,7 @@ import io.qdrant.client.grpc.Points.WriteOrderingType; import java.util.Optional; import java.util.function.LongFunction; -public class QdrantCreatePayloadIndexOpDispenser extends QdrantBaseOpDispenser { +public class QdrantCreatePayloadIndexOpDispenser extends QdrantBaseOpDispenser { public QdrantCreatePayloadIndexOpDispenser( QdrantDriverAdapter adapter, ParsedOp op, @@ -65,7 +66,7 @@ public class QdrantCreatePayloadIndexOpDispenser extends QdrantBaseOpDispenser> createOpFunc( + public LongFunction> createOpFunc( LongFunction paramF, LongFunction clientF, ParsedOp op, diff --git a/nb-adapters/adapter-qdrant/src/main/java/io/nosqlbench/adapter/qdrant/opdispensers/QdrantDeleteCollectionOpDispenser.java b/nb-adapters/adapter-qdrant/src/main/java/io/nosqlbench/adapter/qdrant/opdispensers/QdrantDeleteCollectionOpDispenser.java index 94fbd7d09..30bea7a55 100644 --- a/nb-adapters/adapter-qdrant/src/main/java/io/nosqlbench/adapter/qdrant/opdispensers/QdrantDeleteCollectionOpDispenser.java +++ b/nb-adapters/adapter-qdrant/src/main/java/io/nosqlbench/adapter/qdrant/opdispensers/QdrantDeleteCollectionOpDispenser.java @@ -21,11 +21,14 @@ import io.nosqlbench.adapter.qdrant.ops.QdrantBaseOp; import io.nosqlbench.adapter.qdrant.ops.QdrantDeleteCollectionOp; import io.nosqlbench.adapters.api.templating.ParsedOp; import io.qdrant.client.QdrantClient; +import io.qdrant.client.grpc.Collections; import io.qdrant.client.grpc.Collections.DeleteCollection; +import java.util.List; import java.util.function.LongFunction; -public class QdrantDeleteCollectionOpDispenser extends QdrantBaseOpDispenser { +public class QdrantDeleteCollectionOpDispenser + extends QdrantBaseOpDispenser { /** * Create a new {@link QdrantDeleteCollectionOpDispenser} subclassed from {@link QdrantBaseOpDispenser}. @@ -42,21 +45,15 @@ public class QdrantDeleteCollectionOpDispenser extends QdrantBaseOpDispenser getParamFunc( - LongFunction clientF, - ParsedOp op, - LongFunction targetF) { + public LongFunction getParamFunc(LongFunction clientF, ParsedOp op, LongFunction targetF) { LongFunction ebF = l -> DeleteCollection.newBuilder().setCollectionName(targetF.apply(l)); return l -> ebF.apply(l).build(); } @Override - public LongFunction> createOpFunc( - LongFunction paramF, - LongFunction clientF, - ParsedOp op, - LongFunction targetF) { + public LongFunction> createOpFunc(LongFunction paramF, LongFunction clientF, ParsedOp op, LongFunction targetF) { return l -> new QdrantDeleteCollectionOp(clientF.apply(l), paramF.apply(l)); } + } diff --git a/nb-adapters/adapter-qdrant/src/main/java/io/nosqlbench/adapter/qdrant/opdispensers/QdrantListCollectionAliasesOpDispenser.java b/nb-adapters/adapter-qdrant/src/main/java/io/nosqlbench/adapter/qdrant/opdispensers/QdrantListCollectionAliasesOpDispenser.java index a7e110ffa..3e672e486 100644 --- a/nb-adapters/adapter-qdrant/src/main/java/io/nosqlbench/adapter/qdrant/opdispensers/QdrantListCollectionAliasesOpDispenser.java +++ b/nb-adapters/adapter-qdrant/src/main/java/io/nosqlbench/adapter/qdrant/opdispensers/QdrantListCollectionAliasesOpDispenser.java @@ -23,9 +23,10 @@ import io.nosqlbench.adapters.api.templating.ParsedOp; import io.qdrant.client.QdrantClient; import io.qdrant.client.grpc.Collections.ListCollectionAliasesRequest; +import java.util.List; import java.util.function.LongFunction; -public class QdrantListCollectionAliasesOpDispenser extends QdrantBaseOpDispenser { +public class QdrantListCollectionAliasesOpDispenser extends QdrantBaseOpDispenser> { public QdrantListCollectionAliasesOpDispenser(QdrantDriverAdapter adapter, ParsedOp op, LongFunction targetFunction) { super(adapter, op, targetFunction); @@ -42,7 +43,7 @@ public class QdrantListCollectionAliasesOpDispenser extends QdrantBaseOpDispense } @Override - public LongFunction> createOpFunc( + public LongFunction>> createOpFunc( LongFunction paramF, LongFunction clientF, ParsedOp op, LongFunction targetF) { return l -> new QdrantListCollectionAliasesOp(clientF.apply(l), paramF.apply(l)); diff --git a/nb-adapters/adapter-qdrant/src/main/java/io/nosqlbench/adapter/qdrant/opdispensers/QdrantListCollectionsOpDispenser.java b/nb-adapters/adapter-qdrant/src/main/java/io/nosqlbench/adapter/qdrant/opdispensers/QdrantListCollectionsOpDispenser.java index b91db472a..274701e0c 100644 --- a/nb-adapters/adapter-qdrant/src/main/java/io/nosqlbench/adapter/qdrant/opdispensers/QdrantListCollectionsOpDispenser.java +++ b/nb-adapters/adapter-qdrant/src/main/java/io/nosqlbench/adapter/qdrant/opdispensers/QdrantListCollectionsOpDispenser.java @@ -22,24 +22,29 @@ import io.nosqlbench.adapter.qdrant.ops.QdrantListCollectionsOp; import io.nosqlbench.adapters.api.templating.ParsedOp; import io.qdrant.client.QdrantClient; +import java.util.List; import java.util.function.LongFunction; -public class QdrantListCollectionsOpDispenser extends QdrantBaseOpDispenser { +public class QdrantListCollectionsOpDispenser extends QdrantBaseOpDispenser> { public QdrantListCollectionsOpDispenser(QdrantDriverAdapter adapter, ParsedOp op, LongFunction targetFunction) { super(adapter, op, targetFunction); } @Override - public LongFunction getParamFunc(LongFunction clientF, ParsedOp op, LongFunction targetF) { - return l -> ""; + public LongFunction getParamFunc(LongFunction clientF, ParsedOp op, + LongFunction targetF) { + return null; } @Override - public LongFunction> createOpFunc( - LongFunction paramF, + public LongFunction>> createOpFunc( + LongFunction paramF, LongFunction clientF, - ParsedOp op, LongFunction targetF) { - return l -> new QdrantListCollectionsOp(clientF.apply(l), null); + ParsedOp op, + LongFunction targetF + ) { + return l -> new QdrantListCollectionsOp(clientF.apply(l), null); } + } diff --git a/nb-adapters/adapter-qdrant/src/main/java/io/nosqlbench/adapter/qdrant/opdispensers/QdrantListSnapshotsOpDispenser.java b/nb-adapters/adapter-qdrant/src/main/java/io/nosqlbench/adapter/qdrant/opdispensers/QdrantListSnapshotsOpDispenser.java index b7df7cb3d..3f9630fc1 100644 --- a/nb-adapters/adapter-qdrant/src/main/java/io/nosqlbench/adapter/qdrant/opdispensers/QdrantListSnapshotsOpDispenser.java +++ b/nb-adapters/adapter-qdrant/src/main/java/io/nosqlbench/adapter/qdrant/opdispensers/QdrantListSnapshotsOpDispenser.java @@ -21,11 +21,13 @@ import io.nosqlbench.adapter.qdrant.ops.QdrantBaseOp; import io.nosqlbench.adapter.qdrant.ops.QdrantListSnapshotsOp; import io.nosqlbench.adapters.api.templating.ParsedOp; import io.qdrant.client.QdrantClient; +import io.qdrant.client.grpc.SnapshotsService; import io.qdrant.client.grpc.SnapshotsService.ListSnapshotsRequest; +import java.util.List; import java.util.function.LongFunction; -public class QdrantListSnapshotsOpDispenser extends QdrantBaseOpDispenser { +public class QdrantListSnapshotsOpDispenser extends QdrantBaseOpDispenser> { public QdrantListSnapshotsOpDispenser(QdrantDriverAdapter adapter, ParsedOp op, LongFunction targetFunction) { super(adapter, op, targetFunction); } @@ -41,9 +43,11 @@ public class QdrantListSnapshotsOpDispenser extends QdrantBaseOpDispenser> createOpFunc(LongFunction paramF, - LongFunction clientF, - ParsedOp op, LongFunction targetF) { + public LongFunction>> createOpFunc( + LongFunction paramF, + LongFunction clientF, + ParsedOp op, LongFunction targetF + ) { return l -> new QdrantListSnapshotsOp(clientF.apply(l), paramF.apply(l)); } } diff --git a/nb-adapters/adapter-qdrant/src/main/java/io/nosqlbench/adapter/qdrant/opdispensers/QdrantSearchPointsOpDispenser.java b/nb-adapters/adapter-qdrant/src/main/java/io/nosqlbench/adapter/qdrant/opdispensers/QdrantSearchPointsOpDispenser.java index bb8d91fc2..63e999344 100644 --- a/nb-adapters/adapter-qdrant/src/main/java/io/nosqlbench/adapter/qdrant/opdispensers/QdrantSearchPointsOpDispenser.java +++ b/nb-adapters/adapter-qdrant/src/main/java/io/nosqlbench/adapter/qdrant/opdispensers/QdrantSearchPointsOpDispenser.java @@ -33,13 +33,13 @@ import java.util.Map; import java.util.Optional; import java.util.function.LongFunction; -public class QdrantSearchPointsOpDispenser extends QdrantBaseOpDispenser { +public class QdrantSearchPointsOpDispenser extends QdrantBaseOpDispenser> { public QdrantSearchPointsOpDispenser(QdrantDriverAdapter adapter, ParsedOp op, LongFunction targetFunction) { super(adapter, op, targetFunction); } @Override - public LongFunction> createOpFunc( + public LongFunction>> createOpFunc( LongFunction paramF, LongFunction clientF, ParsedOp op, LongFunction targetF) { diff --git a/nb-adapters/adapter-qdrant/src/main/java/io/nosqlbench/adapter/qdrant/opdispensers/QdrantUpsertPointsOpDispenser.java b/nb-adapters/adapter-qdrant/src/main/java/io/nosqlbench/adapter/qdrant/opdispensers/QdrantUpsertPointsOpDispenser.java index c03f6f938..eb120f7b2 100644 --- a/nb-adapters/adapter-qdrant/src/main/java/io/nosqlbench/adapter/qdrant/opdispensers/QdrantUpsertPointsOpDispenser.java +++ b/nb-adapters/adapter-qdrant/src/main/java/io/nosqlbench/adapter/qdrant/opdispensers/QdrantUpsertPointsOpDispenser.java @@ -36,7 +36,7 @@ import java.util.*; import java.util.function.BiConsumer; import java.util.function.LongFunction; -public class QdrantUpsertPointsOpDispenser extends QdrantBaseOpDispenser { +public class QdrantUpsertPointsOpDispenser extends QdrantBaseOpDispenser { private static final Logger logger = LogManager.getLogger(QdrantUpsertPointsOpDispenser.class); /** @@ -181,7 +181,7 @@ public class QdrantUpsertPointsOpDispenser extends QdrantBaseOpDispenserUpsert Points */ @Override - public LongFunction> createOpFunc( + public LongFunction> createOpFunc( LongFunction paramF, LongFunction clientF, ParsedOp op, diff --git a/nb-adapters/adapter-qdrant/src/main/java/io/nosqlbench/adapter/qdrant/ops/QdrantBaseOp.java b/nb-adapters/adapter-qdrant/src/main/java/io/nosqlbench/adapter/qdrant/ops/QdrantBaseOp.java index 3fa6ff24d..b236d4b79 100644 --- a/nb-adapters/adapter-qdrant/src/main/java/io/nosqlbench/adapter/qdrant/ops/QdrantBaseOp.java +++ b/nb-adapters/adapter-qdrant/src/main/java/io/nosqlbench/adapter/qdrant/ops/QdrantBaseOp.java @@ -23,32 +23,32 @@ import org.apache.logging.log4j.Logger; import java.util.function.LongFunction; -public abstract class QdrantBaseOp implements CycleOp { +public abstract class QdrantBaseOp implements CycleOp { protected final static Logger logger = LogManager.getLogger(QdrantBaseOp.class); protected final QdrantClient client; - protected final T request; + protected final REQUEST request; protected final LongFunction apiCall; - public QdrantBaseOp(QdrantClient client, T requestParam) { + public QdrantBaseOp(QdrantClient client, REQUEST requestParam) { this.client = client; this.request = requestParam; this.apiCall = this::applyOp; } - public QdrantBaseOp(QdrantClient client, T requestParam, LongFunction call) { + public QdrantBaseOp(QdrantClient client, REQUEST requestParam, LongFunction call) { this.client = client; this.request = requestParam; this.apiCall = call; } @Override - public final Object apply(long value) { + public final RESULT apply(long value) { logger.trace("applying op: {}", this); try { - Object result = applyOp(value); + RESULT result = applyOp(value); return result; } catch (Exception e) { RuntimeException rte = (RuntimeException) e; @@ -56,7 +56,7 @@ public abstract class QdrantBaseOp implements CycleOp { } } - public abstract Object applyOp(long value); + public abstract RESULT applyOp(long value); @Override public String toString() { diff --git a/nb-adapters/adapter-qdrant/src/main/java/io/nosqlbench/adapter/qdrant/ops/QdrantCollectionExistsOp.java b/nb-adapters/adapter-qdrant/src/main/java/io/nosqlbench/adapter/qdrant/ops/QdrantCollectionExistsOp.java index 9ddcd42fd..4bd10572b 100644 --- a/nb-adapters/adapter-qdrant/src/main/java/io/nosqlbench/adapter/qdrant/ops/QdrantCollectionExistsOp.java +++ b/nb-adapters/adapter-qdrant/src/main/java/io/nosqlbench/adapter/qdrant/ops/QdrantCollectionExistsOp.java @@ -21,13 +21,13 @@ import io.qdrant.client.grpc.Collections.CollectionExistsRequest; import java.time.Duration; -public class QdrantCollectionExistsOp extends QdrantBaseOp { +public class QdrantCollectionExistsOp extends QdrantBaseOp { public QdrantCollectionExistsOp(QdrantClient client, CollectionExistsRequest request) { super(client, request); } @Override - public Object applyOp(long value) { + public Boolean applyOp(long value) { Boolean response; try { response = client.collectionExistsAsync(request.getCollectionName(), Duration.ofSeconds(600)).get(); diff --git a/nb-adapters/adapter-qdrant/src/main/java/io/nosqlbench/adapter/qdrant/ops/QdrantCollectionInfoOp.java b/nb-adapters/adapter-qdrant/src/main/java/io/nosqlbench/adapter/qdrant/ops/QdrantCollectionInfoOp.java index e34e234df..16fd42b64 100644 --- a/nb-adapters/adapter-qdrant/src/main/java/io/nosqlbench/adapter/qdrant/ops/QdrantCollectionInfoOp.java +++ b/nb-adapters/adapter-qdrant/src/main/java/io/nosqlbench/adapter/qdrant/ops/QdrantCollectionInfoOp.java @@ -21,13 +21,13 @@ import io.qdrant.client.grpc.Collections.CollectionInfo; import java.time.Duration; -public class QdrantCollectionInfoOp extends QdrantBaseOp { +public class QdrantCollectionInfoOp extends QdrantBaseOp { public QdrantCollectionInfoOp(QdrantClient client, String request) { super(client, request); } @Override - public Object applyOp(long value) { + public CollectionInfo applyOp(long value) { CollectionInfo response; try { response = client.getCollectionInfoAsync(request, Duration.ofSeconds(600)).get(); diff --git a/nb-adapters/adapter-qdrant/src/main/java/io/nosqlbench/adapter/qdrant/ops/QdrantCountPointsOp.java b/nb-adapters/adapter-qdrant/src/main/java/io/nosqlbench/adapter/qdrant/ops/QdrantCountPointsOp.java index 968aebe53..96db935f1 100644 --- a/nb-adapters/adapter-qdrant/src/main/java/io/nosqlbench/adapter/qdrant/ops/QdrantCountPointsOp.java +++ b/nb-adapters/adapter-qdrant/src/main/java/io/nosqlbench/adapter/qdrant/ops/QdrantCountPointsOp.java @@ -22,13 +22,13 @@ import io.qdrant.client.grpc.Points.CountPoints; import java.time.Duration; import java.util.concurrent.ExecutionException; -public class QdrantCountPointsOp extends QdrantBaseOp { +public class QdrantCountPointsOp extends QdrantBaseOp { public QdrantCountPointsOp(QdrantClient client, CountPoints request) { super(client, request); } @Override - public Object applyOp(long value) { + public Long applyOp(long value) { long result; try { boolean hasFilters = request.getFilter() != null && (request.getFilter().getMustCount() > 0 diff --git a/nb-adapters/adapter-qdrant/src/main/java/io/nosqlbench/adapter/qdrant/ops/QdrantCreateCollectionOp.java b/nb-adapters/adapter-qdrant/src/main/java/io/nosqlbench/adapter/qdrant/ops/QdrantCreateCollectionOp.java index 9c47ce0bf..4396fab75 100644 --- a/nb-adapters/adapter-qdrant/src/main/java/io/nosqlbench/adapter/qdrant/ops/QdrantCreateCollectionOp.java +++ b/nb-adapters/adapter-qdrant/src/main/java/io/nosqlbench/adapter/qdrant/ops/QdrantCreateCollectionOp.java @@ -23,7 +23,7 @@ import io.qdrant.client.grpc.Collections.CreateCollection; import java.util.concurrent.ExecutionException; -public class QdrantCreateCollectionOp extends QdrantBaseOp { +public class QdrantCreateCollectionOp extends QdrantBaseOp { /** * Create a new {@link ParsedOp} encapsulating a call to the Qdrant create collection method. * @@ -35,7 +35,7 @@ public class QdrantCreateCollectionOp extends QdrantBaseOp { } @Override - public Object applyOp(long value) { + public CollectionOperationResponse applyOp(long value) { CollectionOperationResponse response = null; try { response = client.createCollectionAsync(request).get(); diff --git a/nb-adapters/adapter-qdrant/src/main/java/io/nosqlbench/adapter/qdrant/ops/QdrantCreatePayloadIndexOp.java b/nb-adapters/adapter-qdrant/src/main/java/io/nosqlbench/adapter/qdrant/ops/QdrantCreatePayloadIndexOp.java index b8431e184..a0d23843c 100644 --- a/nb-adapters/adapter-qdrant/src/main/java/io/nosqlbench/adapter/qdrant/ops/QdrantCreatePayloadIndexOp.java +++ b/nb-adapters/adapter-qdrant/src/main/java/io/nosqlbench/adapter/qdrant/ops/QdrantCreatePayloadIndexOp.java @@ -23,13 +23,13 @@ import io.qdrant.client.grpc.Points.UpdateResult; import java.time.Duration; -public class QdrantCreatePayloadIndexOp extends QdrantBaseOp { +public class QdrantCreatePayloadIndexOp extends QdrantBaseOp { public QdrantCreatePayloadIndexOp(QdrantClient client, CreateFieldIndexCollection request) { super(client, request); } @Override - public Object applyOp(long value) { + public UpdateResult applyOp(long value) { UpdateResult response; try { response = client.createPayloadIndexAsync( diff --git a/nb-adapters/adapter-qdrant/src/main/java/io/nosqlbench/adapter/qdrant/ops/QdrantDeleteCollectionOp.java b/nb-adapters/adapter-qdrant/src/main/java/io/nosqlbench/adapter/qdrant/ops/QdrantDeleteCollectionOp.java index 2b56cbacc..8be575e16 100644 --- a/nb-adapters/adapter-qdrant/src/main/java/io/nosqlbench/adapter/qdrant/ops/QdrantDeleteCollectionOp.java +++ b/nb-adapters/adapter-qdrant/src/main/java/io/nosqlbench/adapter/qdrant/ops/QdrantDeleteCollectionOp.java @@ -22,13 +22,13 @@ import io.qdrant.client.grpc.Collections.DeleteCollection; import java.util.concurrent.ExecutionException; -public class QdrantDeleteCollectionOp extends QdrantBaseOp { +public class QdrantDeleteCollectionOp extends QdrantBaseOp { public QdrantDeleteCollectionOp(QdrantClient client, DeleteCollection request) { super(client, request); } @Override - public Object applyOp(long value) { + public CollectionOperationResponse applyOp(long value) { CollectionOperationResponse response = null; try { response = client.deleteCollectionAsync(request.getCollectionName()).get(); diff --git a/nb-adapters/adapter-qdrant/src/main/java/io/nosqlbench/adapter/qdrant/ops/QdrantListCollectionAliasesOp.java b/nb-adapters/adapter-qdrant/src/main/java/io/nosqlbench/adapter/qdrant/ops/QdrantListCollectionAliasesOp.java index 5a3664f1d..f3b82972e 100644 --- a/nb-adapters/adapter-qdrant/src/main/java/io/nosqlbench/adapter/qdrant/ops/QdrantListCollectionAliasesOp.java +++ b/nb-adapters/adapter-qdrant/src/main/java/io/nosqlbench/adapter/qdrant/ops/QdrantListCollectionAliasesOp.java @@ -22,13 +22,13 @@ import io.qdrant.client.grpc.Collections.ListCollectionAliasesRequest; import java.time.Duration; import java.util.List; -public class QdrantListCollectionAliasesOp extends QdrantBaseOp { +public class QdrantListCollectionAliasesOp extends QdrantBaseOp> { public QdrantListCollectionAliasesOp(QdrantClient client, ListCollectionAliasesRequest request) { super(client, request); } @Override - public Object applyOp(long value) { + public List applyOp(long value) { List response; try { response = client.listCollectionAliasesAsync(request.getCollectionName(), Duration.ofSeconds(600)).get(); diff --git a/nb-adapters/adapter-qdrant/src/main/java/io/nosqlbench/adapter/qdrant/ops/QdrantListCollectionsOp.java b/nb-adapters/adapter-qdrant/src/main/java/io/nosqlbench/adapter/qdrant/ops/QdrantListCollectionsOp.java index 3843c4249..9f906368c 100644 --- a/nb-adapters/adapter-qdrant/src/main/java/io/nosqlbench/adapter/qdrant/ops/QdrantListCollectionsOp.java +++ b/nb-adapters/adapter-qdrant/src/main/java/io/nosqlbench/adapter/qdrant/ops/QdrantListCollectionsOp.java @@ -21,12 +21,12 @@ import io.qdrant.client.QdrantClient; import java.time.Duration; import java.util.List; -public class QdrantListCollectionsOp extends QdrantBaseOp { +public class QdrantListCollectionsOp extends QdrantBaseOp> { public QdrantListCollectionsOp(QdrantClient client, Object request) { - super(client, request); + super(client, (Void)request); } @Override - public Object applyOp(long value) { + public List applyOp(long value) { List response; try { response = client.listCollectionsAsync(Duration.ofSeconds(300)).get(); diff --git a/nb-adapters/adapter-qdrant/src/main/java/io/nosqlbench/adapter/qdrant/ops/QdrantListSnapshotsOp.java b/nb-adapters/adapter-qdrant/src/main/java/io/nosqlbench/adapter/qdrant/ops/QdrantListSnapshotsOp.java index 8f816fcd4..612a0f58a 100644 --- a/nb-adapters/adapter-qdrant/src/main/java/io/nosqlbench/adapter/qdrant/ops/QdrantListSnapshotsOp.java +++ b/nb-adapters/adapter-qdrant/src/main/java/io/nosqlbench/adapter/qdrant/ops/QdrantListSnapshotsOp.java @@ -23,13 +23,13 @@ import io.qdrant.client.grpc.SnapshotsService.SnapshotDescription; import java.time.Duration; import java.util.List; -public class QdrantListSnapshotsOp extends QdrantBaseOp { +public class QdrantListSnapshotsOp extends QdrantBaseOp> { public QdrantListSnapshotsOp(QdrantClient client, ListSnapshotsRequest request) { super(client, request); } @Override - public Object applyOp(long value) { + public List applyOp(long value) { List response; try { response = client.listSnapshotAsync(request.getCollectionName(), Duration.ofSeconds(600)).get(); diff --git a/nb-adapters/adapter-qdrant/src/main/java/io/nosqlbench/adapter/qdrant/ops/QdrantSearchPointsOp.java b/nb-adapters/adapter-qdrant/src/main/java/io/nosqlbench/adapter/qdrant/ops/QdrantSearchPointsOp.java index a371056ce..0157c5a37 100644 --- a/nb-adapters/adapter-qdrant/src/main/java/io/nosqlbench/adapter/qdrant/ops/QdrantSearchPointsOp.java +++ b/nb-adapters/adapter-qdrant/src/main/java/io/nosqlbench/adapter/qdrant/ops/QdrantSearchPointsOp.java @@ -23,13 +23,13 @@ import io.qdrant.client.grpc.Points.SearchPoints; import java.util.List; import java.util.concurrent.ExecutionException; -public class QdrantSearchPointsOp extends QdrantBaseOp { +public class QdrantSearchPointsOp extends QdrantBaseOp> { public QdrantSearchPointsOp(QdrantClient client, SearchPoints request) { super(client, request); } @Override - public Object applyOp(long value) { + public List applyOp(long value) { List response = null; try { logger.debug("[QdrantSearchPointsOp] Cycle {} has request: {}", value, request.toString()); diff --git a/nb-adapters/adapter-qdrant/src/main/java/io/nosqlbench/adapter/qdrant/ops/QdrantUpsertPointsOp.java b/nb-adapters/adapter-qdrant/src/main/java/io/nosqlbench/adapter/qdrant/ops/QdrantUpsertPointsOp.java index ec6f5bba5..b4a02bc97 100644 --- a/nb-adapters/adapter-qdrant/src/main/java/io/nosqlbench/adapter/qdrant/ops/QdrantUpsertPointsOp.java +++ b/nb-adapters/adapter-qdrant/src/main/java/io/nosqlbench/adapter/qdrant/ops/QdrantUpsertPointsOp.java @@ -22,13 +22,13 @@ import io.qdrant.client.grpc.Points.UpsertPoints; import java.util.concurrent.ExecutionException; -public class QdrantUpsertPointsOp extends QdrantBaseOp { +public class QdrantUpsertPointsOp extends QdrantBaseOp { public QdrantUpsertPointsOp(QdrantClient client, UpsertPoints request) { super(client, request); } @Override - public Object applyOp(long value) { + public UpdateResult applyOp(long value) { UpdateResult response = null; String responseStatus; long responseOperationId; diff --git a/nb-adapters/adapter-tcp/src/main/java/io/nosqlbench/adapter/tcpclient/TcpClientOp.java b/nb-adapters/adapter-tcp/src/main/java/io/nosqlbench/adapter/tcpclient/TcpClientOp.java index a742c4580..202f5a397 100644 --- a/nb-adapters/adapter-tcp/src/main/java/io/nosqlbench/adapter/tcpclient/TcpClientOp.java +++ b/nb-adapters/adapter-tcp/src/main/java/io/nosqlbench/adapter/tcpclient/TcpClientOp.java @@ -27,6 +27,8 @@ public class TcpClientOp implements RunnableOp { this.ctx = ctx; this.text = text; } + + @Override public void run() { ctx.writeflush(text); } diff --git a/nb-apis/adapters-api/src/main/java/io/nosqlbench/adapter/diag/DriverAdapterLoader.java b/nb-apis/adapters-api/src/main/java/io/nosqlbench/adapter/diag/DriverAdapterLoader.java index de5ee0a8f..807b83f47 100644 --- a/nb-apis/adapters-api/src/main/java/io/nosqlbench/adapter/diag/DriverAdapterLoader.java +++ b/nb-apis/adapters-api/src/main/java/io/nosqlbench/adapter/diag/DriverAdapterLoader.java @@ -20,10 +20,10 @@ package io.nosqlbench.adapter.diag; import io.nosqlbench.adapters.api.activityimpl.uniform.DriverAdapter; import io.nosqlbench.adapters.api.activityimpl.uniform.Space; -import io.nosqlbench.adapters.api.activityimpl.uniform.flowtypes.Op; +import io.nosqlbench.adapters.api.activityimpl.uniform.flowtypes.CycleOp; import io.nosqlbench.nb.api.labels.NBLabels; import io.nosqlbench.nb.api.components.core.NBComponent; public interface DriverAdapterLoader { - public DriverAdapter load(NBComponent parent, NBLabels childLabels); + public ,B extends Space> DriverAdapter load(NBComponent parent, NBLabels childLabels); } diff --git a/nb-apis/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityimpl/BaseOpDispenser.java b/nb-apis/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityimpl/BaseOpDispenser.java index d100b98e8..5c8a4133a 100644 --- a/nb-apis/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityimpl/BaseOpDispenser.java +++ b/nb-apis/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityimpl/BaseOpDispenser.java @@ -20,7 +20,7 @@ import com.codahale.metrics.Timer; import groovy.lang.Binding; import io.nosqlbench.adapters.api.activityimpl.uniform.DriverAdapter; import io.nosqlbench.adapters.api.activityimpl.uniform.Space; -import io.nosqlbench.adapters.api.activityimpl.uniform.flowtypes.Op; +import io.nosqlbench.adapters.api.activityimpl.uniform.flowtypes.CycleOp; import io.nosqlbench.adapters.api.evalctx.*; import io.nosqlbench.adapters.api.metrics.ThreadLocalNamedTimers; import io.nosqlbench.adapters.api.templating.ParsedOp; @@ -46,7 +46,8 @@ import java.util.concurrent.TimeUnit; * @param * The type of operation */ -public abstract class BaseOpDispenser extends NBBaseComponent implements OpDispenser{ +public abstract class BaseOpDispenser,SPACE extends Space> + extends NBBaseComponent implements OpDispenser { protected final static Logger logger = LogManager.getLogger(BaseOpDispenser.class); public static final String VERIFIER = "verifier"; public static final String VERIFIER_INIT = "verifier-init"; diff --git a/nb-apis/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityimpl/OpDispenser.java b/nb-apis/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityimpl/OpDispenser.java index 9a5a823fd..fd34cde36 100644 --- a/nb-apis/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityimpl/OpDispenser.java +++ b/nb-apis/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityimpl/OpDispenser.java @@ -16,7 +16,7 @@ package io.nosqlbench.adapters.api.activityimpl; -import io.nosqlbench.adapters.api.activityimpl.uniform.flowtypes.Op; +import io.nosqlbench.adapters.api.activityimpl.uniform.flowtypes.CycleOp; import io.nosqlbench.adapters.api.evalctx.CycleFunction; import java.util.function.LongFunction; @@ -67,9 +67,9 @@ import java.util.function.LongFunction; * * @param The parameter type of the actual operation which will be used * to hold all the details for executing an operation, - * something that implements {@link Op}. + * something that implements {@link io.nosqlbench.adapters.api.activityimpl.uniform.flowtypes.CycleOp}. */ -public interface OpDispenser extends LongFunction, OpResultTracker { +public interface OpDispenser> extends LongFunction, OpResultTracker { /** * The apply method in an op dispenser should do all the work of diff --git a/nb-apis/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityimpl/OpMapper.java b/nb-apis/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityimpl/OpMapper.java index 8bd2acc74..078fe2802 100644 --- a/nb-apis/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityimpl/OpMapper.java +++ b/nb-apis/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityimpl/OpMapper.java @@ -18,12 +18,10 @@ package io.nosqlbench.adapters.api.activityimpl; import io.nosqlbench.adapters.api.activityimpl.uniform.DriverAdapter; import io.nosqlbench.adapters.api.activityimpl.uniform.Space; -import io.nosqlbench.adapters.api.activityimpl.uniform.flowtypes.Op; +import io.nosqlbench.adapters.api.activityimpl.uniform.flowtypes.CycleOp; import io.nosqlbench.adapters.api.templating.ParsedOp; import java.util.function.BiFunction; -import java.util.function.Function; -import java.util.function.IntFunction; import java.util.function.LongFunction; /** @@ -83,7 +81,7 @@ import java.util.function.LongFunction; * to hold all the details for executing an operation, * generally something that implements {@link Runnable}. */ -public interface OpMapper +public interface OpMapper, SPACETYPE extends Space> extends BiFunction, OpDispenser> { /** @@ -96,6 +94,7 @@ public interface OpMapper * @param spaceInitF * @return An OpDispenser which can be used to synthesize real operations. */ - OpDispenser apply(ParsedOp op, LongFunction spaceInitF); + @Override + OpDispenser apply(ParsedOp op, LongFunction spaceInitF); } diff --git a/nb-apis/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityimpl/docs/BundledDriverAdapterDocs.java b/nb-apis/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityimpl/docs/BundledDriverAdapterDocs.java index c247f9fbf..2c66f52c8 100644 --- a/nb-apis/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityimpl/docs/BundledDriverAdapterDocs.java +++ b/nb-apis/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityimpl/docs/BundledDriverAdapterDocs.java @@ -19,7 +19,7 @@ package io.nosqlbench.adapters.api.activityimpl.docs; import io.nosqlbench.adapter.diag.DriverAdapterLoader; import io.nosqlbench.adapters.api.activityimpl.uniform.DriverAdapter; import io.nosqlbench.adapters.api.activityimpl.uniform.Space; -import io.nosqlbench.adapters.api.activityimpl.uniform.flowtypes.Op; +import io.nosqlbench.adapters.api.activityimpl.uniform.flowtypes.CycleOp; import io.nosqlbench.nb.api.docsapi.BundledMarkdownManifest; import io.nosqlbench.nb.api.docsapi.Docs; import io.nosqlbench.nb.api.docsapi.DocsBinder; @@ -41,7 +41,7 @@ public class BundledDriverAdapterDocs implements BundledMarkdownManifest { List> namedProviders = loader.getNamedProviders(); for (SimpleServiceLoader.Component namedProvider : namedProviders) { DriverAdapterLoader driverAdapterLoader = namedProvider.provider.get(); - DriverAdapter driverAdapter = driverAdapterLoader.load( + DriverAdapter, Space> driverAdapter = driverAdapterLoader.load( NBComponent.EMPTY_COMPONENT, NBLabels.forKV() ); diff --git a/nb-apis/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityimpl/uniform/BaseDriverAdapter.java b/nb-apis/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityimpl/uniform/BaseDriverAdapter.java index ad95d6f60..2c6d87163 100644 --- a/nb-apis/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityimpl/uniform/BaseDriverAdapter.java +++ b/nb-apis/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityimpl/uniform/BaseDriverAdapter.java @@ -16,8 +16,8 @@ package io.nosqlbench.adapters.api.activityimpl.uniform; -import io.nosqlbench.adapters.api.activityimpl.uniform.flowtypes.Op; import io.nosqlbench.adapters.api.activityimpl.uniform.fieldmappers.FieldDestructuringMapper; +import io.nosqlbench.adapters.api.activityimpl.uniform.flowtypes.CycleOp; import io.nosqlbench.adapters.api.templating.ParsedOp; import io.nosqlbench.nb.api.config.standard.*; import io.nosqlbench.nb.api.labels.NBLabels; @@ -33,10 +33,9 @@ import java.util.Optional; import java.util.function.Function; import java.util.function.LongFunction; import java.util.function.LongToIntFunction; -import java.util.function.LongUnaryOperator; import java.util.stream.Collectors; -public abstract class BaseDriverAdapter extends NBBaseComponent implements DriverAdapter, NBConfigurable, NBReconfigurable { +public abstract class BaseDriverAdapter, S extends Space> extends NBBaseComponent implements DriverAdapter, NBConfigurable, NBReconfigurable { private final static Logger logger = LogManager.getLogger("ADAPTER"); private ConcurrentSpaceCache spaceCache; diff --git a/nb-apis/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityimpl/uniform/BaseSpace.java b/nb-apis/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityimpl/uniform/BaseSpace.java index 21e3a1fd8..75428e2f9 100644 --- a/nb-apis/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityimpl/uniform/BaseSpace.java +++ b/nb-apis/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityimpl/uniform/BaseSpace.java @@ -18,10 +18,7 @@ package io.nosqlbench.adapters.api.activityimpl.uniform; */ -import io.nosqlbench.adapters.api.activityimpl.uniform.flowtypes.Op; - -import java.util.function.IntFunction; -import java.util.function.LongFunction; +import io.nosqlbench.adapters.api.activityimpl.uniform.flowtypes.CycleOp; public class BaseSpace > implements Space { @@ -39,7 +36,7 @@ public class BaseSpace > implements Space { } public static class BasicSpace extends BaseSpace implements Space { - public BasicSpace(DriverAdapter adapter, long idx) { + public BasicSpace(DriverAdapter, BasicSpace> adapter, long idx) { super(adapter, idx); } } diff --git a/nb-apis/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityimpl/uniform/DriverAdapter.java b/nb-apis/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityimpl/uniform/DriverAdapter.java index 629ea1fb6..e3551938c 100644 --- a/nb-apis/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityimpl/uniform/DriverAdapter.java +++ b/nb-apis/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityimpl/uniform/DriverAdapter.java @@ -18,7 +18,7 @@ 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.adapters.api.activityimpl.uniform.flowtypes.CycleOp; import io.nosqlbench.nb.api.docsapi.Docs; import io.nosqlbench.nb.api.docsapi.DocsBinder; import io.nosqlbench.adapters.api.templating.ParsedOp; @@ -33,7 +33,6 @@ import java.util.List; import java.util.Map; import java.util.Optional; import java.util.function.Function; -import java.util.function.IntFunction; import java.util.function.LongFunction; /** @@ -56,7 +55,7 @@ import java.util.function.LongFunction; * during construction of R type operations, or even for individual * operations. */ -public interface DriverAdapter extends NBComponent { +public interface DriverAdapter, SPACETYPE extends Space> extends NBComponent { /** *

diff --git a/nb-apis/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityimpl/uniform/flowtypes/ChainingOp.java b/nb-apis/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityimpl/uniform/flowtypes/ChainingOp.java deleted file mode 100644 index d9db8409f..000000000 --- a/nb-apis/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityimpl/uniform/flowtypes/ChainingOp.java +++ /dev/null @@ -1,43 +0,0 @@ -/* - * Copyright (c) 2022-2023 nosqlbench - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package io.nosqlbench.adapters.api.activityimpl.uniform.flowtypes; - -import java.util.function.Function; - -/** - *

ChainingOp<I,O>: f(I) -> O<I,O>

- *

- * Run a function on the current cached result in the current thread and replace it - * with the result of the function. ChainingOps are one way of invoking - * logic within a cycle. However, they are not intended to stand alone. - * A ChainingOp must always have an input to work on, - * provided by either a {@link CycleOp} OR another call to a {@link ChainingOp}

- * - * @param Some input type, as determined by a previous {@link CycleOp} or {@link ChainingOp} on the same thread. - * @param Some output type. - */ -public interface ChainingOp extends Op, Function { - - /** - * Transform a value from a previous action and provide the result for a subsequent action. - * - * @param lastResult object form a previous operation or action - * @return a new result - */ - @Override - O apply(I lastResult); -} diff --git a/nb-apis/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityimpl/uniform/flowtypes/CycleOp.java b/nb-apis/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityimpl/uniform/flowtypes/CycleOp.java index 98bb56da6..bc08b8208 100644 --- a/nb-apis/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityimpl/uniform/flowtypes/CycleOp.java +++ b/nb-apis/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityimpl/uniform/flowtypes/CycleOp.java @@ -27,12 +27,6 @@ import java.util.function.LongFunction; * and produces a value of type T. It is implemented as * {@link LongFunction} of T.

* - *

This variant of {@link Op} has the ability to see the cycle - * which was previously used to select the op implementation.

- * - *

It also has the ability to emit an value which can be seen a subsequent operation, if - * and only if it is a {@link ChainingOp}s.

- * *

Designer Notes

*

* If you are using the value in this call to select a specific type of behavior, it is very @@ -43,12 +37,11 @@ import java.util.function.LongFunction; *

* */ -public interface CycleOp extends Op, LongFunction { +public interface CycleOp extends LongFunction { /** *

Run an action for the given cycle.

* * @param value The cycle value for which an operation is run - * @return A result object which may be used by a subsequent {@link ChainingOp} */ @Override T apply(long value); diff --git a/nb-apis/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityimpl/uniform/flowtypes/Op.java b/nb-apis/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityimpl/uniform/flowtypes/Op.java deleted file mode 100644 index 65b3b8cc5..000000000 --- a/nb-apis/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityimpl/uniform/flowtypes/Op.java +++ /dev/null @@ -1,37 +0,0 @@ -/* - * Copyright (c) 2022-2023 nosqlbench - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package io.nosqlbench.adapters.api.activityimpl.uniform.flowtypes; - -/** - *

This is the root type of any operation which is used in a NoSQLBench - * DriverAdapter. It is a tagging interface for incremental type validation - * in the NB runtime. You probably don't want to use it directly.

- * - *

Instead, use one of these: - *

    - *
  • {@link CycleOp}
  • - An interface that will called if there is nothing to consume - * the result type from your operation. In some cases preparing a result body to - * hand down the chain is more costly, so implementing this interface allows the runtime - * to be more optimized. - *
  • {@link ChainingOp}
  • - *
  • {@link RunnableOp}
  • - *
- *

- */ -// TODO: optimize the runtime around the specific op type -public interface Op { -} diff --git a/nb-apis/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityimpl/uniform/flowtypes/OpGenerator.java b/nb-apis/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityimpl/uniform/flowtypes/OpGenerator.java index 1b5b1a34d..8fe6cde6c 100644 --- a/nb-apis/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityimpl/uniform/flowtypes/OpGenerator.java +++ b/nb-apis/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityimpl/uniform/flowtypes/OpGenerator.java @@ -31,5 +31,5 @@ package io.nosqlbench.adapters.api.activityimpl.uniform.flowtypes; * */ public interface OpGenerator { - Op getNextOp(); + CycleOp getNextOp(); } diff --git a/nb-apis/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityimpl/uniform/flowtypes/RunnableOp.java b/nb-apis/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityimpl/uniform/flowtypes/RunnableOp.java index 0bab5c267..524123edf 100644 --- a/nb-apis/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityimpl/uniform/flowtypes/RunnableOp.java +++ b/nb-apis/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityimpl/uniform/flowtypes/RunnableOp.java @@ -1,34 +1,28 @@ +package io.nosqlbench.adapters.api.activityimpl.uniform.flowtypes; + /* - * Copyright (c) 2022-2023 nosqlbench - * + * Copyright (c) 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. + * + * 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.flowtypes; -/** - *

RunnableOp

- *

This is the simplest form of an executable operation in NoSQLBench. - * It is simply an operation is run for side-effect only.

- */ -public interface RunnableOp extends Op, Runnable { +public interface RunnableOp extends CycleOp,Runnable { - /** - * Invoke the operation. If you need to see the value of the current - * cycle, then you can use {@link CycleOp} instead. If you need to - * use a cached result of a previous operation, then you may need to - * use {@link ChainingOp}. - */ @Override - void run(); + default Void apply(long value) { + run(); + return null; + } } diff --git a/nb-apis/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityimpl/uniform/flowtypes/ops_pre_2057.png b/nb-apis/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityimpl/uniform/flowtypes/ops_pre_2057.png new file mode 100644 index 000000000..b5c7415d5 Binary files /dev/null and b/nb-apis/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityimpl/uniform/flowtypes/ops_pre_2057.png differ diff --git a/nb-apis/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityimpl/uniform/opwrappers/DryCycleOp.java b/nb-apis/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityimpl/uniform/opwrappers/DryCycleOp.java index 549ac043e..f8574b11c 100644 --- a/nb-apis/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityimpl/uniform/opwrappers/DryCycleOp.java +++ b/nb-apis/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityimpl/uniform/opwrappers/DryCycleOp.java @@ -17,7 +17,6 @@ package io.nosqlbench.adapters.api.activityimpl.uniform.opwrappers; import io.nosqlbench.adapters.api.activityimpl.uniform.flowtypes.CycleOp; -import io.nosqlbench.adapters.api.activityimpl.uniform.flowtypes.RunnableOp; public class DryCycleOp implements CycleOp { diff --git a/nb-apis/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityimpl/uniform/opwrappers/DryCycleOpDispenserWrapper.java b/nb-apis/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityimpl/uniform/opwrappers/DryCycleOpDispenserWrapper.java index d8a7b0129..e9402b3f9 100644 --- a/nb-apis/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityimpl/uniform/opwrappers/DryCycleOpDispenserWrapper.java +++ b/nb-apis/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityimpl/uniform/opwrappers/DryCycleOpDispenserWrapper.java @@ -21,7 +21,6 @@ import io.nosqlbench.adapters.api.activityimpl.OpDispenser; import io.nosqlbench.adapters.api.activityimpl.uniform.DriverAdapter; import io.nosqlbench.adapters.api.activityimpl.uniform.Space; import io.nosqlbench.adapters.api.activityimpl.uniform.flowtypes.CycleOp; -import io.nosqlbench.adapters.api.activityimpl.uniform.flowtypes.RunnableOp; import io.nosqlbench.adapters.api.templating.ParsedOp; public class DryCycleOpDispenserWrapper extends BaseOpDispenser, S> { diff --git a/nb-apis/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityimpl/uniform/opwrappers/DryRunableOp.java b/nb-apis/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityimpl/uniform/opwrappers/DryRunableOp.java deleted file mode 100644 index 2d541bb7f..000000000 --- a/nb-apis/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityimpl/uniform/opwrappers/DryRunableOp.java +++ /dev/null @@ -1,32 +0,0 @@ -/* - * Copyright (c) 2022-2024 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.opwrappers; - -import io.nosqlbench.adapters.api.activityimpl.uniform.flowtypes.RunnableOp; - -public class DryRunableOp implements RunnableOp { - - private final RunnableOp op; - - public DryRunableOp(RunnableOp op) { - this.op = op; - } - - @Override - public void run() { - } -} diff --git a/nb-apis/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityimpl/uniform/opwrappers/DryRunnableOpDispenserWrapper.java b/nb-apis/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityimpl/uniform/opwrappers/DryRunnableOpDispenserWrapper.java deleted file mode 100644 index 7faf56add..000000000 --- a/nb-apis/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityimpl/uniform/opwrappers/DryRunnableOpDispenserWrapper.java +++ /dev/null @@ -1,51 +0,0 @@ -/* - * Copyright (c) 2022-2024 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.opwrappers; - -import io.nosqlbench.adapters.api.activityimpl.BaseOpDispenser; -import io.nosqlbench.adapters.api.activityimpl.OpDispenser; -import io.nosqlbench.adapters.api.activityimpl.uniform.DriverAdapter; -import io.nosqlbench.adapters.api.activityimpl.uniform.Space; -import io.nosqlbench.adapters.api.activityimpl.uniform.flowtypes.RunnableOp; -import io.nosqlbench.adapters.api.templating.ParsedOp; -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; - -public class DryRunnableOpDispenserWrapper extends BaseOpDispenser { - private final OpDispenser realDispenser; - - public DryRunnableOpDispenserWrapper( - DriverAdapter adapter, - ParsedOp pop, - OpDispenser realDispenser - ) { - super(adapter, pop); - this.realDispenser = realDispenser; - logger.warn( - "initialized {} for dry run only. " + - "This op will be synthesized for each cycle, but will not be executed.", - pop.getName() - ); - - } - - @Override - public DryRunableOp getOp(long cycle) { - RunnableOp op = realDispenser.getOp(cycle); - return new DryRunableOp(op); - } -} diff --git a/nb-apis/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityimpl/uniform/opwrappers/EmitterCycleOpDispenserWrapper.java b/nb-apis/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityimpl/uniform/opwrappers/EmitterCycleOpDispenserWrapper.java index dc587a6d6..22fc1b10c 100644 --- a/nb-apis/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityimpl/uniform/opwrappers/EmitterCycleOpDispenserWrapper.java +++ b/nb-apis/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityimpl/uniform/opwrappers/EmitterCycleOpDispenserWrapper.java @@ -21,7 +21,6 @@ import io.nosqlbench.adapters.api.activityimpl.OpDispenser; import io.nosqlbench.adapters.api.activityimpl.uniform.DriverAdapter; import io.nosqlbench.adapters.api.activityimpl.uniform.Space; import io.nosqlbench.adapters.api.activityimpl.uniform.flowtypes.CycleOp; -import io.nosqlbench.adapters.api.activityimpl.uniform.flowtypes.RunnableOp; import io.nosqlbench.adapters.api.templating.ParsedOp; public class EmitterCycleOpDispenserWrapper extends BaseOpDispenser, S> { diff --git a/nb-apis/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityimpl/uniform/opwrappers/EmitterOpDispenserWrapper.java b/nb-apis/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityimpl/uniform/opwrappers/EmitterOpDispenserWrapper.java index 904e964a2..4eb8d88d8 100644 --- a/nb-apis/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityimpl/uniform/opwrappers/EmitterOpDispenserWrapper.java +++ b/nb-apis/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityimpl/uniform/opwrappers/EmitterOpDispenserWrapper.java @@ -21,14 +21,14 @@ import io.nosqlbench.adapters.api.activityimpl.OpDispenser; import io.nosqlbench.adapters.api.activityimpl.uniform.DriverAdapter; import io.nosqlbench.adapters.api.activityimpl.uniform.Space; import io.nosqlbench.adapters.api.activityimpl.uniform.flowtypes.CycleOp; -import io.nosqlbench.adapters.api.activityimpl.uniform.flowtypes.Op; import io.nosqlbench.adapters.api.templating.ParsedOp; -public class EmitterOpDispenserWrapper extends BaseOpDispenser { +public class EmitterOpDispenserWrapper extends BaseOpDispenser, Space> { private final OpDispenser> realDispenser; - public EmitterOpDispenserWrapper(DriverAdapter adapter, ParsedOp pop, OpDispenser> realDispenser) { + public EmitterOpDispenserWrapper(DriverAdapter,Space> adapter, ParsedOp pop, + OpDispenser> realDispenser) { super(adapter, pop); this.realDispenser = realDispenser; } diff --git a/nb-apis/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityimpl/uniform/opwrappers/EmitterRunnableOp.java b/nb-apis/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityimpl/uniform/opwrappers/EmitterRunnableOp.java deleted file mode 100644 index b0ba625c3..000000000 --- a/nb-apis/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityimpl/uniform/opwrappers/EmitterRunnableOp.java +++ /dev/null @@ -1,32 +0,0 @@ -/* - * Copyright (c) 2022-2024 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.opwrappers; - -import io.nosqlbench.adapters.api.activityimpl.uniform.flowtypes.RunnableOp; - -public class EmitterRunnableOp implements RunnableOp { - - private final RunnableOp runnableOp; - public EmitterRunnableOp(RunnableOp runnableOp) { - this.runnableOp = runnableOp; - } - - @Override - public void run() { - runnableOp.run(); - } -} diff --git a/nb-apis/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityimpl/uniform/opwrappers/EmitterRunnableOpDispenserWrapper.java b/nb-apis/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityimpl/uniform/opwrappers/EmitterRunnableOpDispenserWrapper.java deleted file mode 100644 index 2d90774c7..000000000 --- a/nb-apis/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityimpl/uniform/opwrappers/EmitterRunnableOpDispenserWrapper.java +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Copyright (c) 2022-2024 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.opwrappers; - -import io.nosqlbench.adapters.api.activityimpl.BaseOpDispenser; -import io.nosqlbench.adapters.api.activityimpl.OpDispenser; -import io.nosqlbench.adapters.api.activityimpl.uniform.DriverAdapter; -import io.nosqlbench.adapters.api.activityimpl.uniform.Space; -import io.nosqlbench.adapters.api.activityimpl.uniform.flowtypes.Op; -import io.nosqlbench.adapters.api.activityimpl.uniform.flowtypes.RunnableOp; -import io.nosqlbench.adapters.api.templating.ParsedOp; - -public class EmitterRunnableOpDispenserWrapper extends BaseOpDispenser { - - private final OpDispenser realDispenser; - - public EmitterRunnableOpDispenserWrapper( - DriverAdapter adapter, - ParsedOp pop, - OpDispenser realDispenser - ) { - super(adapter, pop); - this.realDispenser = realDispenser; - logger.warn( - "initialized {} for to emit the result type to stdout. ", - pop.getName() - ); - - } - - @Override - public EmitterRunnableOp getOp(long cycle) { - RunnableOp cycleOp = realDispenser.getOp(cycle); - return new EmitterRunnableOp(cycleOp); - } -} diff --git a/nb-apis/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityimpl/uniform/opwrappers/PollingOp.java b/nb-apis/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityimpl/uniform/opwrappers/PollingOp.java index ebdad3add..bcad502b9 100644 --- a/nb-apis/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityimpl/uniform/opwrappers/PollingOp.java +++ b/nb-apis/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityimpl/uniform/opwrappers/PollingOp.java @@ -17,14 +17,11 @@ package io.nosqlbench.adapters.api.activityimpl.uniform.opwrappers; import io.nosqlbench.adapters.api.activityimpl.uniform.flowtypes.CycleOp; -import io.nosqlbench.adapters.api.activityimpl.uniform.flowtypes.Op; import io.nosqlbench.adapters.api.activityimpl.uniform.flowtypes.OpGenerator; import io.nosqlbench.adapters.api.evalctx.CycleFunction; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; -import java.util.function.Predicate; - public class PollingOp implements CycleOp, OpGenerator { private final static Logger logger = LogManager.getLogger(PollingOp.class); @@ -52,7 +49,7 @@ public class PollingOp implements CycleOp, OpGenerator { } @Override - public synchronized Op getNextOp() { + public synchronized CycleOp getNextOp() { return nextOp; } diff --git a/nb-engine/nb-engine-core/src/main/java/io/nosqlbench/engine/api/activityapi/planning/OpSource.java b/nb-engine/nb-engine-core/src/main/java/io/nosqlbench/engine/api/activityapi/planning/OpSource.java index 138f16780..9b88561df 100644 --- a/nb-engine/nb-engine-core/src/main/java/io/nosqlbench/engine/api/activityapi/planning/OpSource.java +++ b/nb-engine/nb-engine-core/src/main/java/io/nosqlbench/engine/api/activityapi/planning/OpSource.java @@ -17,7 +17,6 @@ package io.nosqlbench.engine.api.activityapi.planning; import io.nosqlbench.adapters.api.activityimpl.OpDispenser; -import io.nosqlbench.adapters.api.activityimpl.uniform.flowtypes.Op; import java.util.function.LongFunction; @@ -29,7 +28,7 @@ import java.util.function.LongFunction; */ public interface OpSource extends LongFunction { - static OpSource of(OpSequence> seq) { + static > OpSource of(OpSequence> seq) { return (long l) -> seq.apply(l).getOp(l); } diff --git a/nb-engine/nb-engine-core/src/main/java/io/nosqlbench/engine/api/activityimpl/OpWrappers.java b/nb-engine/nb-engine-core/src/main/java/io/nosqlbench/engine/api/activityimpl/OpWrappers.java index 30d45924f..be32097e4 100644 --- a/nb-engine/nb-engine-core/src/main/java/io/nosqlbench/engine/api/activityimpl/OpWrappers.java +++ b/nb-engine/nb-engine-core/src/main/java/io/nosqlbench/engine/api/activityimpl/OpWrappers.java @@ -22,14 +22,9 @@ import io.nosqlbench.adapters.api.activityimpl.OpDispenser; import io.nosqlbench.adapters.api.activityimpl.uniform.DriverAdapter; import io.nosqlbench.adapters.api.activityimpl.uniform.Space; import io.nosqlbench.adapters.api.activityimpl.uniform.flowtypes.CycleOp; -import io.nosqlbench.adapters.api.activityimpl.uniform.flowtypes.Op; -import io.nosqlbench.adapters.api.activityimpl.uniform.flowtypes.RunnableOp; import io.nosqlbench.adapters.api.activityimpl.uniform.opwrappers.DryCycleOpDispenserWrapper; -import io.nosqlbench.adapters.api.activityimpl.uniform.opwrappers.DryRunnableOpDispenserWrapper; import io.nosqlbench.adapters.api.activityimpl.uniform.opwrappers.EmitterCycleOpDispenserWrapper; -import io.nosqlbench.adapters.api.activityimpl.uniform.opwrappers.EmitterRunnableOpDispenserWrapper; import io.nosqlbench.adapters.api.templating.ParsedOp; -import io.nosqlbench.nb.api.errors.OpConfigError; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; @@ -37,7 +32,7 @@ public class OpWrappers { public final static Logger logger = LogManager.getLogger(OpWrappers.class); - public static OpDispenser wrapOptionally( + public static , SPACE extends Space> OpDispenser wrapOptionally( DriverAdapter adapter, OpDispenser dispenser, ParsedOp pop, @@ -46,27 +41,8 @@ public class OpWrappers { Dryrun dryrun = Dryrun.valueOf(dryrunSpec); return switch (dryrun) { case none -> dispenser; - case op -> { - Op exampleOp = dispenser.getOp(0L); - yield switch (exampleOp) { - case RunnableOp runnableOp -> new DryRunnableOpDispenserWrapper(adapter, pop, dispenser); - case CycleOp cycleOp -> new DryCycleOpDispenserWrapper(adapter, pop, dispenser); - default -> throw new OpConfigError( - "Unable to wrap op named '" - + pop.getDefinedNames() + "' for dry run, since" - + "only RunnableOp and CycleOp types are supported"); - }; - } - case emit -> { - Op exampleOp = dispenser.getOp(0L); - yield switch (exampleOp) { - case RunnableOp runnableOp -> new EmitterRunnableOpDispenserWrapper(adapter, pop, dispenser); - case CycleOp cycleOp -> new EmitterCycleOpDispenserWrapper(adapter, pop, dispenser); - default -> - throw new OpConfigError("Unable to make op named '" + pop.getName() + "' emit a value, " + - "since only RunnableOp and CycleOp types are supported"); - }; - } + case op -> new DryCycleOpDispenserWrapper(adapter, pop, dispenser); + case emit -> new EmitterCycleOpDispenserWrapper(adapter, pop, dispenser); }; } } diff --git a/nb-engine/nb-engine-core/src/main/java/io/nosqlbench/engine/api/activityimpl/SimpleActivity.java b/nb-engine/nb-engine-core/src/main/java/io/nosqlbench/engine/api/activityimpl/SimpleActivity.java index 06736c3ab..f02cd8566 100644 --- a/nb-engine/nb-engine-core/src/main/java/io/nosqlbench/engine/api/activityimpl/SimpleActivity.java +++ b/nb-engine/nb-engine-core/src/main/java/io/nosqlbench/engine/api/activityimpl/SimpleActivity.java @@ -26,11 +26,6 @@ import io.nosqlbench.adapters.api.activityimpl.uniform.DriverAdapter; import io.nosqlbench.adapters.api.activityimpl.uniform.Space; import io.nosqlbench.adapters.api.activityimpl.uniform.decorators.SyntheticOpTemplateProvider; import io.nosqlbench.adapters.api.activityimpl.uniform.flowtypes.CycleOp; -import io.nosqlbench.adapters.api.activityimpl.uniform.flowtypes.Op; -import io.nosqlbench.adapters.api.activityimpl.uniform.flowtypes.RunnableOp; -import io.nosqlbench.adapters.api.activityimpl.uniform.opwrappers.DryRunnableOpDispenserWrapper; -import io.nosqlbench.adapters.api.activityimpl.uniform.opwrappers.EmitterCycleOpDispenserWrapper; -import io.nosqlbench.adapters.api.activityimpl.uniform.opwrappers.EmitterRunnableOpDispenserWrapper; import io.nosqlbench.adapters.api.templating.ParsedOp; import io.nosqlbench.engine.api.activityapi.core.*; import io.nosqlbench.engine.api.activityapi.core.progress.ActivityMetricProgressMeter; @@ -396,10 +391,10 @@ public class SimpleActivity extends NBStatusComponent implements Activity, Invok } - protected OpSequence> createOpSourceFromParsedOps( + protected OpSequence>> createOpSourceFromParsedOps( // Map> adapterCache, // Map> mapperCache, - List> adapters, + List, Space>> adapters, List pops ) { try { @@ -415,7 +410,7 @@ public class SimpleActivity extends NBStatusComponent implements Activity, Invok .getOptionalString("seq") .map(SequencerType::valueOf) .orElse(SequencerType.bucket); - SequencePlanner> planner = new SequencePlanner<>(sequencerType); + SequencePlanner>> planner = new SequencePlanner<>(sequencerType); for (int i = 0; i < pops.size(); i++) { long ratio = ratios.get(i); @@ -427,17 +422,17 @@ public class SimpleActivity extends NBStatusComponent implements Activity, Invok continue; } - DriverAdapter adapter = adapters.get(i); - OpMapper opMapper = adapter.getOpMapper(); + DriverAdapter, Space> adapter = adapters.get(i); + OpMapper, Space> opMapper = adapter.getOpMapper(); LongFunction spaceFunc = adapter.getSpaceFunc(pop); - OpDispenser dispenser = opMapper.apply(pop, spaceFunc); + OpDispenser> dispenser = opMapper.apply(pop, spaceFunc); String dryrunSpec = pop.takeStaticConfigOr("dryrun", "none"); dispenser = OpWrappers.wrapOptionally(adapter, dispenser, pop, dryrunSpec); // if (strict) { // optemplate.assertConsumed(); // } - planner.addOp((OpDispenser) dispenser, ratio); + planner.addOp((OpDispenser>) dispenser, ratio); } catch (Exception e) { throw new OpConfigError("Error while mapping op from template named '" + pop.getName() + "': " + e.getMessage(), e); } diff --git a/nb-engine/nb-engine-core/src/main/java/io/nosqlbench/engine/api/activityimpl/uniform/StandardActivity.java b/nb-engine/nb-engine-core/src/main/java/io/nosqlbench/engine/api/activityimpl/uniform/StandardActivity.java index b2a297021..d236bab8a 100644 --- a/nb-engine/nb-engine-core/src/main/java/io/nosqlbench/engine/api/activityimpl/uniform/StandardActivity.java +++ b/nb-engine/nb-engine-core/src/main/java/io/nosqlbench/engine/api/activityimpl/uniform/StandardActivity.java @@ -25,7 +25,7 @@ import io.nosqlbench.adapters.api.activityimpl.OpMapper; import io.nosqlbench.adapters.api.activityimpl.uniform.DriverAdapter; import io.nosqlbench.adapters.api.activityimpl.uniform.Space; import io.nosqlbench.adapters.api.activityimpl.uniform.decorators.SyntheticOpTemplateProvider; -import io.nosqlbench.adapters.api.activityimpl.uniform.flowtypes.Op; +import io.nosqlbench.adapters.api.activityimpl.uniform.flowtypes.CycleOp; import io.nosqlbench.adapters.api.templating.ParsedOp; import io.nosqlbench.nb.api.engine.metrics.instruments.MetricCategory; import io.nosqlbench.nb.api.lifecycle.Shutdownable; @@ -60,10 +60,10 @@ import java.util.concurrent.ConcurrentHashMap; * @param * The context type for the activity, AKA the 'space' for a named driver instance and its associated object graph */ -public class StandardActivity extends SimpleActivity implements SyntheticOpTemplateProvider, ActivityDefObserver { +public class StandardActivity extends SimpleActivity implements SyntheticOpTemplateProvider, ActivityDefObserver { private static final Logger logger = LogManager.getLogger("ACTIVITY"); - private final OpSequence> sequence; - private final ConcurrentHashMap> adapters = new ConcurrentHashMap<>(); + private final OpSequence>> sequence; + private final ConcurrentHashMap,Space>> adapters = new ConcurrentHashMap<>(); public StandardActivity(NBComponent parent, ActivityDef activityDef) { super(parent, activityDef); @@ -93,11 +93,11 @@ public class StandardActivity extends SimpleActivity implements List pops = new ArrayList<>(); - List> adapterlist = new ArrayList<>(); + List, Space>> adapterlist = new ArrayList<>(); NBConfigModel supersetConfig = ConfigModel.of(StandardActivity.class).add(yamlmodel); Optional defaultDriverOption = defaultDriverName; - ConcurrentHashMap> mappers = new ConcurrentHashMap<>(); + ConcurrentHashMap, ? extends Space>> mappers = new ConcurrentHashMap<>(); for (OpTemplate ot : opTemplates) { // ParsedOp incompleteOpDef = new ParsedOp(ot, NBConfiguration.empty(), List.of(), this); String driverName = ot.getOptionalStringParam("driver", String.class) @@ -113,7 +113,7 @@ public class StandardActivity extends SimpleActivity implements // HERE if (!adapters.containsKey(driverName)) { - DriverAdapter adapter = Optional.of(driverName) + DriverAdapter,Space> adapter = Optional.of(driverName) .flatMap( name -> ServiceSelector.of( name, @@ -145,7 +145,7 @@ public class StandardActivity extends SimpleActivity implements supersetConfig.assertValidConfig(activityDef.getParams().getStringStringMap()); - DriverAdapter adapter = adapters.get(driverName); + DriverAdapter, Space> adapter = adapters.get(driverName); adapterlist.add(adapter); ParsedOp pop = new ParsedOp(ot, adapter.getConfiguration(), List.of(adapter.getPreprocessor()), this); Optional discard = pop.takeOptionalStaticValue("driver", String.class); @@ -195,7 +195,7 @@ public class StandardActivity extends SimpleActivity implements } - public OpSequence> getOpSequence() { + public OpSequence>> getOpSequence() { return sequence; } @@ -262,7 +262,7 @@ public class StandardActivity extends SimpleActivity implements */ @Override public void shutdownActivity() { - for (Map.Entry> entry : adapters.entrySet()) { + for (Map.Entry,Space>> entry : adapters.entrySet()) { String adapterName = entry.getKey(); DriverAdapter adapter = entry.getValue(); for (Space space : adapter.getSpaceCache()) { diff --git a/nb-engine/nb-engine-core/src/main/java/io/nosqlbench/engine/api/activityimpl/uniform/actions/StandardAction.java b/nb-engine/nb-engine-core/src/main/java/io/nosqlbench/engine/api/activityimpl/uniform/actions/StandardAction.java index 05d4bd507..d45e01e86 100644 --- a/nb-engine/nb-engine-core/src/main/java/io/nosqlbench/engine/api/activityimpl/uniform/actions/StandardAction.java +++ b/nb-engine/nb-engine-core/src/main/java/io/nosqlbench/engine/api/activityimpl/uniform/actions/StandardAction.java @@ -46,7 +46,7 @@ import java.util.concurrent.TimeUnit; * @param * The type of operation */ -public class StandardAction
, R extends Op> implements SyncAction, ActivityDefObserver { +public class StandardAction, R extends java.util.function.LongFunction> implements SyncAction, ActivityDefObserver { private final static Logger logger = LogManager.getLogger("ACTION"); private final Timer executeTimer; private final Histogram triesHistogram; @@ -54,7 +54,7 @@ public class StandardAction, R extends Op> impl private final Timer resultTimer; private final Timer bindTimer; private final NBErrorHandler errorHandler; - private final OpSequence> opsequence; + private final OpSequence>> opsequence; private final int maxTries; private final Timer verifierTimer; @@ -73,8 +73,8 @@ public class StandardAction, R extends Op> impl @Override public int runCycle(long cycle) { - OpDispenser dispenser=null; - Op op = null; + OpDispenser> dispenser=null; + CycleOp op = null; try (Timer.Context ct = bindTimer.time()) { dispenser = opsequence.apply(cycle); @@ -96,16 +96,7 @@ public class StandardAction, R extends Op> impl dispenser.onStart(cycle); try (Timer.Context ct = executeTimer.time()) { - if (op instanceof RunnableOp runnableOp) { - runnableOp.run(); - } else if (op instanceof CycleOp cycleOp) { - result = cycleOp.apply(cycle); - } else if (op instanceof ChainingOp chainingOp) { - result = chainingOp.apply(result); - } else { - throw new RuntimeException("The op implementation did not implement any active logic. Implement " + - "one of [RunnableOp, CycleOp, or ChainingOp]"); - } + result = op.apply(cycle); // TODO: break out validation timer from execute try (Timer.Context ignored = verifierTimer.time()) { CycleFunction verifier = dispenser.getVerifier(); diff --git a/nb-virtdata/virtdata-lib-realer/src/main/java/io/nosqlbench/virtdata/library/realer/todo/inet/IPV4Addrses.java b/nb-virtdata/virtdata-lib-realer/src/main/java/io/nosqlbench/virtdata/library/realer/todo/inet/IPV4Address.java similarity index 96% rename from nb-virtdata/virtdata-lib-realer/src/main/java/io/nosqlbench/virtdata/library/realer/todo/inet/IPV4Addrses.java rename to nb-virtdata/virtdata-lib-realer/src/main/java/io/nosqlbench/virtdata/library/realer/todo/inet/IPV4Address.java index c5a4317ed..e353ff162 100644 --- a/nb-virtdata/virtdata-lib-realer/src/main/java/io/nosqlbench/virtdata/library/realer/todo/inet/IPV4Addrses.java +++ b/nb-virtdata/virtdata-lib-realer/src/main/java/io/nosqlbench/virtdata/library/realer/todo/inet/IPV4Address.java @@ -16,5 +16,5 @@ package io.nosqlbench.virtdata.library.realer.todo.inet; -public class IPV4Addrses { +public class IPV4Address { }