mirror of
https://github.com/nosqlbench/nosqlbench.git
synced 2025-02-25 18:55:28 -06:00
Merge branch 'nosqlbench:main' into main
This commit is contained in:
commit
9a00af0806
@ -1,12 +0,0 @@
|
||||
- 114aea71b (HEAD -> main) Merge branch 'main' of github.com:nosqlbench/nosqlbench
|
||||
- 0fd85c09b (origin/main) Merge pull request #728 from nosqlbench/feature/mongodb_baselines2_workloads
|
||||
- 99f0226fc Merge pull request #729 from nosqlbench/snyk-upgrade-2d988862477c7e76f15ff8b65bcdc3a4
|
||||
- d22413259 Merge pull request #727 from nosqlbench/snyk-upgrade-b28610be666fa7e80936b0c2f87df569
|
||||
- d49a5087d improved build diagnostics
|
||||
- e594aab92 (origin/snyk-upgrade-2d988862477c7e76f15ff8b65bcdc3a4) fix: upgrade com.datastax.oss:pulsar-jms from 2.4.4 to 2.4.9
|
||||
- 64990c412 (origin/feature/mongodb_baselines2_workloads) Initial working draft of MongoDB timeseries
|
||||
- 7ebb16a06 (origin/snyk-upgrade-b28610be666fa7e80936b0c2f87df569) fix: upgrade org.postgresql:postgresql from 42.4.2 to 42.5.0
|
||||
- 68cdd075b new function, security updates, actions fix
|
||||
- ec8e6ee71 Merge branch 'main' of github.com:nosqlbench/nosqlbench
|
||||
- a63fa951c actions fix release
|
||||
- 0f6bce0b0 fix typo in docker push logic
|
@ -20,7 +20,7 @@
|
||||
<parent>
|
||||
<groupId>io.nosqlbench</groupId>
|
||||
<artifactId>mvn-defaults</artifactId>
|
||||
<version>4.17.31-SNAPSHOT</version>
|
||||
<version>4.17.32-SNAPSHOT</version>
|
||||
<relativePath>../mvn-defaults</relativePath>
|
||||
</parent>
|
||||
|
||||
@ -38,7 +38,7 @@
|
||||
<dependency>
|
||||
<groupId>io.nosqlbench</groupId>
|
||||
<artifactId>adapters-api</artifactId>
|
||||
<version>4.17.31-SNAPSHOT</version>
|
||||
<version>4.17.32-SNAPSHOT</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
|
@ -24,8 +24,8 @@ import io.nosqlbench.adapter.cqld4.optypes.Cqld4CqlOp;
|
||||
public class Cqld4CqlReboundStatement extends Cqld4CqlOp {
|
||||
private final BoundStatement stmt;
|
||||
|
||||
public Cqld4CqlReboundStatement(CqlSession session, int maxpages, boolean retryreplace, BoundStatement rebound, RSProcessors processors) {
|
||||
super(session,maxpages,retryreplace,processors);
|
||||
public Cqld4CqlReboundStatement(CqlSession session, int maxPages, boolean retryReplace, int maxLwtRetries, int lwtRetryCount, BoundStatement rebound, RSProcessors processors) {
|
||||
super(session,maxPages,retryReplace,maxLwtRetries,lwtRetryCount, processors);
|
||||
this.stmt = rebound;
|
||||
}
|
||||
|
||||
|
@ -0,0 +1,45 @@
|
||||
/*
|
||||
* Copyright (c) 2022 nosqlbench
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package io.nosqlbench.adapter.cqld4.exceptions;
|
||||
|
||||
|
||||
import com.datastax.oss.driver.api.core.cql.ResultSet;
|
||||
|
||||
/**
|
||||
* This is a synthetic error generated by the cql driver in NoSQLBench when
|
||||
* the retryreplace option is used but the number of LWT round-trips from the driver
|
||||
* is excessive. The number of LWT round trips allowed is controlled by the
|
||||
* maxlwtretries op field.
|
||||
*/
|
||||
public class ExceededRetryReplaceException extends CqlGenericCycleException {
|
||||
|
||||
private final ResultSet resultSet;
|
||||
private final String queryString;
|
||||
private final int retries;
|
||||
|
||||
public ExceededRetryReplaceException(ResultSet resultSet, String queryString, int retries) {
|
||||
super("After " + retries + " retries using the retryreplace option, Operation was not applied:" + queryString);
|
||||
this.retries = retries;
|
||||
this.resultSet = resultSet;
|
||||
this.queryString = queryString;
|
||||
}
|
||||
|
||||
public ResultSet getResultSet() {
|
||||
return resultSet;
|
||||
}
|
||||
public String getQueryString() { return queryString; }
|
||||
}
|
@ -45,12 +45,14 @@ public abstract class Cqld4BaseOpDispenser extends BaseOpDispenser<Cqld4CqlOp, C
|
||||
private final Cqld4OpMetrics metrics = new Cqld4OpMetrics();
|
||||
private final LongFunction<CqlSession> sessionFunc;
|
||||
private final boolean isRetryReplace;
|
||||
private final int maxLwtRetries;
|
||||
|
||||
public Cqld4BaseOpDispenser(DriverAdapter adapter, LongFunction<CqlSession> sessionFunc, ParsedOp op) {
|
||||
super(adapter, op);
|
||||
this.sessionFunc = sessionFunc;
|
||||
this.maxpages = op.getStaticConfigOr("maxpages", 1);
|
||||
this.isRetryReplace = op.getStaticConfigOr("retryreplace", false);
|
||||
this.maxLwtRetries = op.getStaticConfigOr("maxlwtretries", 1);
|
||||
}
|
||||
|
||||
public int getMaxPages() {
|
||||
@ -61,6 +63,11 @@ public abstract class Cqld4BaseOpDispenser extends BaseOpDispenser<Cqld4CqlOp, C
|
||||
return isRetryReplace;
|
||||
}
|
||||
|
||||
public int getMaxLwtRetries() {
|
||||
return maxLwtRetries;
|
||||
}
|
||||
|
||||
|
||||
public LongFunction<CqlSession> getSessionFunc() {
|
||||
return sessionFunc;
|
||||
}
|
||||
|
@ -89,6 +89,7 @@ public class Cqld4PreparedStmtDispenser extends Cqld4BaseOpDispenser {
|
||||
boundStatement,
|
||||
getMaxPages(),
|
||||
isRetryReplace(),
|
||||
getMaxLwtRetries(),
|
||||
processors
|
||||
);
|
||||
} catch (Exception exception) {
|
||||
|
@ -49,7 +49,8 @@ public class Cqld4RawStmtDispenser extends Cqld4BaseOpDispenser {
|
||||
getSessionFunc().apply(value),
|
||||
(SimpleStatement) stmtFunc.apply(value),
|
||||
getMaxPages(),
|
||||
isRetryReplace()
|
||||
isRetryReplace(),
|
||||
getMaxLwtRetries()
|
||||
);
|
||||
}
|
||||
|
||||
|
@ -46,7 +46,8 @@ public class Cqld4SimpleCqlStmtDispenser extends Cqld4BaseOpDispenser {
|
||||
getSessionFunc().apply(value),
|
||||
(SimpleStatement) stmtFunc.apply(value),
|
||||
getMaxPages(),
|
||||
isRetryReplace()
|
||||
isRetryReplace(),
|
||||
getMaxLwtRetries()
|
||||
);
|
||||
}
|
||||
|
||||
|
@ -24,8 +24,8 @@ public class Cqld4CqlBatchStatement extends Cqld4CqlOp {
|
||||
|
||||
private final BatchStatement stmt;
|
||||
|
||||
public Cqld4CqlBatchStatement(CqlSession session, BatchStatement stmt, int maxpages, boolean retryreplace) {
|
||||
super(session,maxpages,retryreplace,new RSProcessors());
|
||||
public Cqld4CqlBatchStatement(CqlSession session, BatchStatement stmt, int maxPage, int maxLwtRetries, boolean retryReplace) {
|
||||
super(session,maxPage,retryReplace,maxLwtRetries,new RSProcessors());
|
||||
this.stmt = stmt;
|
||||
}
|
||||
|
||||
|
@ -23,6 +23,7 @@ import com.datastax.oss.driver.api.core.cql.Row;
|
||||
import com.datastax.oss.driver.api.core.cql.Statement;
|
||||
import io.nosqlbench.adapter.cqld4.*;
|
||||
import io.nosqlbench.adapter.cqld4.exceptions.ChangeUnappliedCycleException;
|
||||
import io.nosqlbench.adapter.cqld4.exceptions.ExceededRetryReplaceException;
|
||||
import io.nosqlbench.adapter.cqld4.exceptions.UndefinedResultSetException;
|
||||
import io.nosqlbench.adapter.cqld4.exceptions.UnexpectedPagingException;
|
||||
import io.nosqlbench.engine.api.activityimpl.uniform.flowtypes.*;
|
||||
@ -44,17 +45,29 @@ import java.util.Map;
|
||||
public abstract class Cqld4CqlOp implements CycleOp<ResultSet>, VariableCapture, OpGenerator, OpResultSize {
|
||||
|
||||
private final CqlSession session;
|
||||
private final int maxpages;
|
||||
private final boolean retryreplace;
|
||||
private final int maxPages;
|
||||
private final boolean retryReplace;
|
||||
private final int maxLwtRetries;
|
||||
private int retryReplaceCount =0;
|
||||
|
||||
private ResultSet rs;
|
||||
private Cqld4CqlOp nextOp;
|
||||
private final RSProcessors processors;
|
||||
|
||||
public Cqld4CqlOp(CqlSession session, int maxpages, boolean retryreplace, RSProcessors processors) {
|
||||
public Cqld4CqlOp(CqlSession session, int maxPages, boolean retryReplace, int maxLwtRetries, RSProcessors processors) {
|
||||
this.session = session;
|
||||
this.maxpages = maxpages;
|
||||
this.retryreplace = retryreplace;
|
||||
this.maxPages = maxPages;
|
||||
this.retryReplace = retryReplace;
|
||||
this.maxLwtRetries =maxLwtRetries;
|
||||
this.processors = processors;
|
||||
}
|
||||
|
||||
protected Cqld4CqlOp(CqlSession session, int maxPages, boolean retryReplace, int maxLwtRetries, int retryRplaceCount, RSProcessors processors) {
|
||||
this.session = session;
|
||||
this.maxPages = maxPages;
|
||||
this.retryReplace = retryReplace;
|
||||
this.maxLwtRetries =maxLwtRetries;
|
||||
this.retryReplaceCount=retryRplaceCount;
|
||||
this.processors = processors;
|
||||
}
|
||||
|
||||
@ -66,9 +79,13 @@ public abstract class Cqld4CqlOp implements CycleOp<ResultSet>, VariableCapture,
|
||||
int totalRows = 0;
|
||||
|
||||
if (!rs.wasApplied()) {
|
||||
if (!retryreplace) {
|
||||
if (!retryReplace) {
|
||||
throw new ChangeUnappliedCycleException(rs, getQueryString());
|
||||
} else {
|
||||
retryReplaceCount++;
|
||||
if (retryReplaceCount >maxLwtRetries) {
|
||||
throw new ExceededRetryReplaceException(rs,getQueryString(), retryReplaceCount);
|
||||
}
|
||||
Row one = rs.one();
|
||||
processors.buffer(one);
|
||||
totalRows++;
|
||||
@ -86,8 +103,8 @@ public abstract class Cqld4CqlOp implements CycleOp<ResultSet>, VariableCapture,
|
||||
Row row = reader.next();
|
||||
processors.buffer(row);
|
||||
}
|
||||
if (pages++ > maxpages) {
|
||||
throw new UnexpectedPagingException(rs, getQueryString(), pages, maxpages, stmt.getPageSize());
|
||||
if (pages++ > maxPages) {
|
||||
throw new UnexpectedPagingException(rs, getQueryString(), pages, maxPages, stmt.getPageSize());
|
||||
}
|
||||
if (rs.isFullyFetched()) {
|
||||
break;
|
||||
@ -119,7 +136,7 @@ public abstract class Cqld4CqlOp implements CycleOp<ResultSet>, VariableCapture,
|
||||
|
||||
private Cqld4CqlOp rebindLwt(Statement<?> stmt, Row row) {
|
||||
BoundStatement rebound = LWTRebinder.rebindUnappliedStatement(stmt, row);
|
||||
return new Cqld4CqlReboundStatement(session, maxpages, retryreplace, rebound, processors);
|
||||
return new Cqld4CqlReboundStatement(session, maxPages, retryReplace, maxLwtRetries, retryReplaceCount, rebound, processors);
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -24,8 +24,8 @@ public class Cqld4CqlPreparedStatement extends Cqld4CqlOp {
|
||||
|
||||
private final BoundStatement stmt;
|
||||
|
||||
public Cqld4CqlPreparedStatement(CqlSession session, BoundStatement stmt, int maxpages, boolean retryreplace, RSProcessors processors) {
|
||||
super(session,maxpages,retryreplace,processors);
|
||||
public Cqld4CqlPreparedStatement(CqlSession session, BoundStatement stmt, int maxPages, boolean retryReplace, int maxLwtRetries, RSProcessors processors) {
|
||||
super(session,maxPages,retryReplace,maxLwtRetries,processors);
|
||||
this.stmt = stmt;
|
||||
}
|
||||
|
||||
|
@ -23,8 +23,8 @@ import io.nosqlbench.adapter.cqld4.RSProcessors;
|
||||
public class Cqld4CqlSimpleStatement extends Cqld4CqlOp {
|
||||
private final SimpleStatement stmt;
|
||||
|
||||
public Cqld4CqlSimpleStatement(CqlSession session, SimpleStatement stmt, int maxpages, boolean retryreplace) {
|
||||
super(session, maxpages,retryreplace, new RSProcessors());
|
||||
public Cqld4CqlSimpleStatement(CqlSession session, SimpleStatement stmt, int maxPages, boolean retryReplace, int maxLwtRetries) {
|
||||
super(session, maxPages,retryReplace, maxLwtRetries, new RSProcessors());
|
||||
this.stmt = stmt;
|
||||
}
|
||||
|
||||
|
@ -198,6 +198,11 @@ params:
|
||||
# match the preconditions) in order to test LWT performance.
|
||||
retryreplace: true
|
||||
|
||||
# Set the number of retries allowed by the retryreplace option. This is set
|
||||
# to 1 conservatively, as with the maxpages setting. This means that you will
|
||||
# see an error if the first LWT retry after an unapplied change was not successful.
|
||||
maxlwtretries: 1
|
||||
|
||||
## The following options are meant for advanced testing scenarios only,
|
||||
## and are not generally meant to be used in typical application-level,
|
||||
## data mode, performance or scale testing. These expose properties
|
||||
|
@ -21,7 +21,7 @@
|
||||
<parent>
|
||||
<artifactId>mvn-defaults</artifactId>
|
||||
<groupId>io.nosqlbench</groupId>
|
||||
<version>4.17.31-SNAPSHOT</version>
|
||||
<version>4.17.32-SNAPSHOT</version>
|
||||
<relativePath>../mvn-defaults</relativePath>
|
||||
</parent>
|
||||
|
||||
@ -37,13 +37,13 @@
|
||||
<dependency>
|
||||
<groupId>io.nosqlbench</groupId>
|
||||
<artifactId>nb-annotations</artifactId>
|
||||
<version>4.17.31-SNAPSHOT</version>
|
||||
<version>4.17.32-SNAPSHOT</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.nosqlbench</groupId>
|
||||
<artifactId>engine-api</artifactId>
|
||||
<version>4.17.31-SNAPSHOT</version>
|
||||
<version>4.17.32-SNAPSHOT</version>
|
||||
<scope>compile</scope>
|
||||
</dependency>
|
||||
|
||||
|
@ -20,7 +20,7 @@
|
||||
<parent>
|
||||
<groupId>io.nosqlbench</groupId>
|
||||
<artifactId>mvn-defaults</artifactId>
|
||||
<version>4.17.31-SNAPSHOT</version>
|
||||
<version>4.17.32-SNAPSHOT</version>
|
||||
<relativePath>../mvn-defaults</relativePath>
|
||||
</parent>
|
||||
|
||||
@ -39,7 +39,7 @@
|
||||
<dependency>
|
||||
<groupId>io.nosqlbench</groupId>
|
||||
<artifactId>adapters-api</artifactId>
|
||||
<version>4.17.31-SNAPSHOT</version>
|
||||
<version>4.17.32-SNAPSHOT</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
|
@ -20,7 +20,7 @@
|
||||
<parent>
|
||||
<artifactId>mvn-defaults</artifactId>
|
||||
<groupId>io.nosqlbench</groupId>
|
||||
<version>4.17.31-SNAPSHOT</version>
|
||||
<version>4.17.32-SNAPSHOT</version>
|
||||
<relativePath>../mvn-defaults</relativePath>
|
||||
</parent>
|
||||
|
||||
@ -38,7 +38,7 @@
|
||||
<dependency>
|
||||
<groupId>io.nosqlbench</groupId>
|
||||
<artifactId>engine-api</artifactId>
|
||||
<version>4.17.31-SNAPSHOT</version>
|
||||
<version>4.17.32-SNAPSHOT</version>
|
||||
<scope>compile</scope>
|
||||
</dependency>
|
||||
|
||||
|
@ -23,7 +23,7 @@
|
||||
<parent>
|
||||
<artifactId>mvn-defaults</artifactId>
|
||||
<groupId>io.nosqlbench</groupId>
|
||||
<version>4.17.31-SNAPSHOT</version>
|
||||
<version>4.17.32-SNAPSHOT</version>
|
||||
<relativePath>../mvn-defaults</relativePath>
|
||||
</parent>
|
||||
|
||||
@ -36,7 +36,7 @@
|
||||
<dependency>
|
||||
<groupId>io.nosqlbench</groupId>
|
||||
<artifactId>engine-api</artifactId>
|
||||
<version>4.17.31-SNAPSHOT</version>
|
||||
<version>4.17.32-SNAPSHOT</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
|
@ -23,7 +23,7 @@
|
||||
<parent>
|
||||
<artifactId>mvn-defaults</artifactId>
|
||||
<groupId>io.nosqlbench</groupId>
|
||||
<version>4.17.31-SNAPSHOT</version>
|
||||
<version>4.17.32-SNAPSHOT</version>
|
||||
<relativePath>../mvn-defaults</relativePath>
|
||||
</parent>
|
||||
|
||||
@ -41,13 +41,13 @@
|
||||
<dependency>
|
||||
<groupId>io.nosqlbench</groupId>
|
||||
<artifactId>engine-api</artifactId>
|
||||
<version>4.17.31-SNAPSHOT</version>
|
||||
<version>4.17.32-SNAPSHOT</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.nosqlbench</groupId>
|
||||
<artifactId>adapters-api</artifactId>
|
||||
<version>4.17.31-SNAPSHOT</version>
|
||||
<version>4.17.32-SNAPSHOT</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
|
@ -23,7 +23,7 @@
|
||||
<parent>
|
||||
<artifactId>mvn-defaults</artifactId>
|
||||
<groupId>io.nosqlbench</groupId>
|
||||
<version>4.17.31-SNAPSHOT</version>
|
||||
<version>4.17.32-SNAPSHOT</version>
|
||||
<relativePath>../mvn-defaults</relativePath>
|
||||
</parent>
|
||||
|
||||
@ -38,14 +38,14 @@
|
||||
<dependency>
|
||||
<groupId>io.nosqlbench</groupId>
|
||||
<artifactId>nb-annotations</artifactId>
|
||||
<version>4.17.31-SNAPSHOT</version>
|
||||
<version>4.17.32-SNAPSHOT</version>
|
||||
<scope>compile</scope>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.nosqlbench</groupId>
|
||||
<artifactId>adapters-api</artifactId>
|
||||
<version>4.17.31-SNAPSHOT</version>
|
||||
<version>4.17.32-SNAPSHOT</version>
|
||||
<scope>compile</scope>
|
||||
</dependency>
|
||||
|
||||
|
@ -23,7 +23,7 @@
|
||||
<parent>
|
||||
<artifactId>mvn-defaults</artifactId>
|
||||
<groupId>io.nosqlbench</groupId>
|
||||
<version>4.17.31-SNAPSHOT</version>
|
||||
<version>4.17.32-SNAPSHOT</version>
|
||||
<relativePath>../mvn-defaults</relativePath>
|
||||
</parent>
|
||||
|
||||
@ -40,7 +40,7 @@
|
||||
<dependency>
|
||||
<groupId>io.nosqlbench</groupId>
|
||||
<artifactId>engine-api</artifactId>
|
||||
<version>4.17.31-SNAPSHOT</version>
|
||||
<version>4.17.32-SNAPSHOT</version>
|
||||
</dependency>
|
||||
|
||||
</dependencies>
|
||||
|
@ -21,7 +21,7 @@
|
||||
<parent>
|
||||
<artifactId>mvn-defaults</artifactId>
|
||||
<groupId>io.nosqlbench</groupId>
|
||||
<version>4.17.31-SNAPSHOT</version>
|
||||
<version>4.17.32-SNAPSHOT</version>
|
||||
<relativePath>../mvn-defaults</relativePath>
|
||||
</parent>
|
||||
|
||||
@ -39,19 +39,19 @@
|
||||
<dependency>
|
||||
<groupId>io.nosqlbench</groupId>
|
||||
<artifactId>nb-spectest</artifactId>
|
||||
<version>4.17.31-SNAPSHOT</version>
|
||||
<version>4.17.32-SNAPSHOT</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.nosqlbench</groupId>
|
||||
<artifactId>nb-api</artifactId>
|
||||
<version>4.17.31-SNAPSHOT</version>
|
||||
<version>4.17.32-SNAPSHOT</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.nosqlbench</groupId>
|
||||
<artifactId>virtdata-userlibs</artifactId>
|
||||
<version>4.17.31-SNAPSHOT</version>
|
||||
<version>4.17.32-SNAPSHOT</version>
|
||||
</dependency>
|
||||
|
||||
|
||||
|
@ -19,16 +19,25 @@ package io.nosqlbench.engine.api.activityimpl.uniform.flowtypes;
|
||||
import java.util.function.Function;
|
||||
|
||||
/**
|
||||
* Run a function on the current cached result and replace it
|
||||
* with the result of the function. Functions are one way of invoking
|
||||
* <H2>ChainingOp<I,O>: f(I) -> O</I,O></H2>
|
||||
* <P>
|
||||
* 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 CycleFunction must always have an input to work on. This input is
|
||||
* provided by a Supplier as optionally implemented by an Op
|
||||
* A ChainingOp must always have an input to work on,
|
||||
* provided by either a {@link CycleOp} OR <em>another</em> call to a {@link ChainingOp}</P>
|
||||
*
|
||||
* @param <I> Some input type.
|
||||
* @param <I> Some input type, as determined by a previous {@link CycleOp} or {@link ChainingOp} on the same thread.
|
||||
* @param <O> Some output type.
|
||||
*/
|
||||
public interface ChainingOp<I,O> extends Op, Function<I,O> {
|
||||
public interface ChainingOp<I, O> extends Op, Function<I, O> {
|
||||
|
||||
/**
|
||||
* 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 i);
|
||||
O apply(I lastResult);
|
||||
}
|
||||
|
@ -19,32 +19,33 @@ package io.nosqlbench.engine.api.activityimpl.uniform.flowtypes;
|
||||
import java.util.function.LongFunction;
|
||||
|
||||
/**
|
||||
* A CycleRunnable is simply a variation of a Runnable type.
|
||||
* The main difference is that it is supplied with the cycle
|
||||
* as input.
|
||||
* <H2>CycleOp: f(cycle) -> T</H2>
|
||||
* <p>A CycleOp of T is an operation which takes a long input value
|
||||
* and produces a value of type T. It is implemented as
|
||||
* {@link LongFunction} of T.</p>
|
||||
*
|
||||
* <P>This variant of {@link Op} has the ability to see the cycle
|
||||
* which was previously used to select the op implementation.</p>
|
||||
*
|
||||
* <p>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.</P>
|
||||
*
|
||||
* <h2>Designer Notes</h2>
|
||||
* <p>
|
||||
* If you are using the value in this call to select a specific type of behavior, it is very
|
||||
* likely a candidate for factoring into separate op implementations.
|
||||
* The {@link io.nosqlbench.engine.api.activityimpl.OpMapper}
|
||||
* and {@link io.nosqlbench.engine.api.activityimpl.OpDispenser} abstractions are meant to move
|
||||
* op type selection and scheduling to earlier in the activity.
|
||||
* </p>
|
||||
*
|
||||
*/
|
||||
public interface CycleOp<T> extends Op, LongFunction<T> {
|
||||
// /**
|
||||
// * <p>Run an action for the given cycle. The cycle is provided for anecdotal
|
||||
// * usage such as logging and debugging. It is valid to use the cycle value in these places,
|
||||
// * but you should not use it to determine the logic of what is run. The mechanism
|
||||
// * for doing this is provided in {@link io.nosqlbench.engine.api.activityimpl.OpMapper}
|
||||
// * and {@link io.nosqlbench.engine.api.activityimpl.OpDispenser} types.</p>
|
||||
// *
|
||||
// *
|
||||
// * @param cycle The cycle value for which an operation is run
|
||||
// */
|
||||
//// * This method should do the same thing that {@link #apply(long)} does, except that
|
||||
//// * there is no need to prepare or return a result. This is the form that will be called
|
||||
//// * if there is no chaining operation to consume the result of this operation.
|
||||
// void accept(long cycle);
|
||||
|
||||
/**
|
||||
* <p>Run an action for the given cycle. The cycle
|
||||
* value is only to be used for anecdotal presentation. This form is called
|
||||
* when there is a chaining operation which will do something with this result.</p>
|
||||
* <p>Run an action for the given cycle.</p>
|
||||
*
|
||||
* @param value The cycle value for which an operation is run
|
||||
* @return A result which is the native result type for the underlying driver.
|
||||
* @return A result object which <em>may</em> be used by a subsequent {@link ChainingOp}
|
||||
*/
|
||||
@Override
|
||||
T apply(long value);
|
||||
|
@ -17,21 +17,20 @@
|
||||
package io.nosqlbench.engine.api.activityimpl.uniform.flowtypes;
|
||||
|
||||
/**
|
||||
* This is the root type of any operation which is used in a NoSQLBench
|
||||
* <p>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.
|
||||
* in the NB runtime. You probably don't want to use it directly.</p>
|
||||
*
|
||||
* Instead, use these:
|
||||
* <p>Instead, use <em>one</em> of these:
|
||||
* <ul>
|
||||
* <li>{@link CycleOp}</li> - 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 ...
|
||||
* hand down the chain is more costly, so implementing this interface allows the runtime
|
||||
* to be more optimized.</li>
|
||||
* <li>{@link ChainingOp}</li>
|
||||
* </ul>
|
||||
*
|
||||
* either {@link CycleOp} or {@link ChainingOp} (but not both!)
|
||||
*
|
||||
* In the standard flow of an activity, either of the above interfaces is called
|
||||
* so long as an Op implements one of them.
|
||||
* </p>
|
||||
*/
|
||||
// TODO: optimize the runtime around the specific op type
|
||||
public interface Op extends OpResultSize {
|
||||
}
|
||||
|
@ -16,5 +16,19 @@
|
||||
|
||||
package io.nosqlbench.engine.api.activityimpl.uniform.flowtypes;
|
||||
|
||||
/**
|
||||
* <H2>RunnableOp</H2>
|
||||
* <P>This is the simplest form of an executable operation in NoSQLBench.
|
||||
* It is simply an operation is run for side-effect only.</P>
|
||||
*/
|
||||
public interface RunnableOp extends Op, 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();
|
||||
}
|
||||
|
743
devdocs/sketches/docs-publishing-flow.svg
Normal file
743
devdocs/sketches/docs-publishing-flow.svg
Normal file
@ -0,0 +1,743 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!--
|
||||
- Copyright (c) 2022 nosqlbench
|
||||
-
|
||||
- Licensed under the Apache License, Version 2.0 (the "License");
|
||||
- you may not use this file except in compliance with the License.
|
||||
- You may obtain a copy of the License at
|
||||
-
|
||||
- http://www.apache.org/licenses/LICENSE-2.0
|
||||
-
|
||||
- Unless required by applicable law or agreed to in writing, software
|
||||
- distributed under the License is distributed on an "AS IS" BASIS,
|
||||
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
- See the License for the specific language governing permissions and
|
||||
- limitations under the License.
|
||||
-->
|
||||
|
||||
<svg
|
||||
width="14in"
|
||||
height="8.5in"
|
||||
viewBox="0 0 355.6 215.9"
|
||||
version="1.1"
|
||||
id="svg8"
|
||||
inkscape:version="1.1.2 (0a00cf5339, 2022-02-04)"
|
||||
sodipodi:docname="docs-publishing-flow.svg"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/">
|
||||
<defs
|
||||
id="defs2">
|
||||
<marker
|
||||
style="overflow:visible;"
|
||||
id="Arrow1Lend"
|
||||
refX="0.0"
|
||||
refY="0.0"
|
||||
orient="auto"
|
||||
inkscape:stockid="Arrow1Lend"
|
||||
inkscape:isstock="true">
|
||||
<path
|
||||
transform="scale(0.8) rotate(180) translate(12.5,0)"
|
||||
style="fill-rule:evenodd;fill:context-stroke;stroke:context-stroke;stroke-width:1.0pt;"
|
||||
d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
|
||||
id="path10457" />
|
||||
</marker>
|
||||
<marker
|
||||
style="overflow:visible"
|
||||
id="Arrow1Lstart"
|
||||
refX="0.0"
|
||||
refY="0.0"
|
||||
orient="auto"
|
||||
inkscape:stockid="Arrow1Lstart"
|
||||
inkscape:isstock="true">
|
||||
<path
|
||||
transform="scale(0.8) translate(12.5,0)"
|
||||
style="fill-rule:evenodd;fill:context-stroke;stroke:context-stroke;stroke-width:1.0pt"
|
||||
d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
|
||||
id="path10454" />
|
||||
</marker>
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
id="linearGradient983">
|
||||
<stop
|
||||
style="stop-color:#000000;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop979" />
|
||||
<stop
|
||||
style="stop-color:#000000;stop-opacity:0;"
|
||||
offset="1"
|
||||
id="stop981" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient983"
|
||||
id="linearGradient985"
|
||||
x1="131.67278"
|
||||
y1="63.5"
|
||||
x2="173.12723"
|
||||
y2="63.5"
|
||||
gradientUnits="userSpaceOnUse" />
|
||||
<linearGradient
|
||||
gradientTransform="matrix(3.7795276,0,0,3.7795276,-496.71822,-166.61139)"
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient983"
|
||||
id="linearGradient985-1"
|
||||
x1="131.67278"
|
||||
y1="63.5"
|
||||
x2="173.12723"
|
||||
y2="63.5"
|
||||
gradientUnits="userSpaceOnUse" />
|
||||
<linearGradient
|
||||
gradientTransform="matrix(3.7795276,0,0,3.7795276,-304.71821,-473.13109)"
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient983"
|
||||
id="linearGradient985-14"
|
||||
x1="131.67278"
|
||||
y1="63.5"
|
||||
x2="173.12723"
|
||||
y2="63.5"
|
||||
gradientUnits="userSpaceOnUse" />
|
||||
<marker
|
||||
style="overflow:visible"
|
||||
id="Arrow1Lend-3"
|
||||
refX="0"
|
||||
refY="0"
|
||||
orient="auto"
|
||||
inkscape:stockid="Arrow1Lend"
|
||||
inkscape:isstock="true">
|
||||
<path
|
||||
transform="matrix(-0.8,0,0,-0.8,-10,0)"
|
||||
style="fill:context-stroke;fill-rule:evenodd;stroke:context-stroke;stroke-width:1pt"
|
||||
d="M 0,0 5,-5 -12.5,0 5,5 Z"
|
||||
id="path10457-6" />
|
||||
</marker>
|
||||
<marker
|
||||
style="overflow:visible"
|
||||
id="Arrow1Lend-6"
|
||||
refX="0"
|
||||
refY="0"
|
||||
orient="auto"
|
||||
inkscape:stockid="Arrow1Lend"
|
||||
inkscape:isstock="true">
|
||||
<path
|
||||
transform="matrix(-0.8,0,0,-0.8,-10,0)"
|
||||
style="fill:context-stroke;fill-rule:evenodd;stroke:context-stroke;stroke-width:1pt"
|
||||
d="M 0,0 5,-5 -12.5,0 5,5 Z"
|
||||
id="path10457-2" />
|
||||
</marker>
|
||||
<marker
|
||||
style="overflow:visible"
|
||||
id="Arrow1Lend-1"
|
||||
refX="0"
|
||||
refY="0"
|
||||
orient="auto"
|
||||
inkscape:stockid="Arrow1Lend"
|
||||
inkscape:isstock="true">
|
||||
<path
|
||||
transform="matrix(-0.8,0,0,-0.8,-10,0)"
|
||||
style="fill:context-stroke;fill-rule:evenodd;stroke:context-stroke;stroke-width:1pt"
|
||||
d="M 0,0 5,-5 -12.5,0 5,5 Z"
|
||||
id="path10457-8" />
|
||||
</marker>
|
||||
<marker
|
||||
style="overflow:visible"
|
||||
id="Arrow1Lend-9"
|
||||
refX="0"
|
||||
refY="0"
|
||||
orient="auto"
|
||||
inkscape:stockid="Arrow1Lend"
|
||||
inkscape:isstock="true">
|
||||
<path
|
||||
transform="matrix(-0.8,0,0,-0.8,-10,0)"
|
||||
style="fill:context-stroke;fill-rule:evenodd;stroke:context-stroke;stroke-width:1pt"
|
||||
d="M 0,0 5,-5 -12.5,0 5,5 Z"
|
||||
id="path10457-20" />
|
||||
</marker>
|
||||
<marker
|
||||
style="overflow:visible"
|
||||
id="Arrow1Lend-37"
|
||||
refX="0"
|
||||
refY="0"
|
||||
orient="auto"
|
||||
inkscape:stockid="Arrow1Lend"
|
||||
inkscape:isstock="true">
|
||||
<path
|
||||
transform="matrix(-0.8,0,0,-0.8,-10,0)"
|
||||
style="fill:context-stroke;fill-rule:evenodd;stroke:context-stroke;stroke-width:1pt"
|
||||
d="M 0,0 5,-5 -12.5,0 5,5 Z"
|
||||
id="path10457-5" />
|
||||
</marker>
|
||||
<marker
|
||||
style="overflow:visible"
|
||||
id="Arrow1Lend-2"
|
||||
refX="0"
|
||||
refY="0"
|
||||
orient="auto"
|
||||
inkscape:stockid="Arrow1Lend"
|
||||
inkscape:isstock="true">
|
||||
<path
|
||||
transform="matrix(-0.8,0,0,-0.8,-10,0)"
|
||||
style="fill:context-stroke;fill-rule:evenodd;stroke:context-stroke;stroke-width:1pt"
|
||||
d="M 0,0 5,-5 -12.5,0 5,5 Z"
|
||||
id="path10457-28" />
|
||||
</marker>
|
||||
<marker
|
||||
style="overflow:visible"
|
||||
id="Arrow1Lend-7"
|
||||
refX="0"
|
||||
refY="0"
|
||||
orient="auto"
|
||||
inkscape:stockid="Arrow1Lend"
|
||||
inkscape:isstock="true">
|
||||
<path
|
||||
transform="matrix(-0.8,0,0,-0.8,-10,0)"
|
||||
style="fill:context-stroke;fill-rule:evenodd;stroke:context-stroke;stroke-width:1pt"
|
||||
d="M 0,0 5,-5 -12.5,0 5,5 Z"
|
||||
id="path10457-53" />
|
||||
</marker>
|
||||
<marker
|
||||
style="overflow:visible"
|
||||
id="Arrow1Lend-62"
|
||||
refX="0"
|
||||
refY="0"
|
||||
orient="auto"
|
||||
inkscape:stockid="Arrow1Lend"
|
||||
inkscape:isstock="true">
|
||||
<path
|
||||
transform="matrix(-0.8,0,0,-0.8,-10,0)"
|
||||
style="fill:context-stroke;fill-rule:evenodd;stroke:context-stroke;stroke-width:1pt"
|
||||
d="M 0,0 5,-5 -12.5,0 5,5 Z"
|
||||
id="path10457-9" />
|
||||
</marker>
|
||||
<marker
|
||||
style="overflow:visible"
|
||||
id="Arrow1Lend-27"
|
||||
refX="0"
|
||||
refY="0"
|
||||
orient="auto"
|
||||
inkscape:stockid="Arrow1Lend"
|
||||
inkscape:isstock="true">
|
||||
<path
|
||||
transform="matrix(-0.8,0,0,-0.8,-10,0)"
|
||||
style="fill:context-stroke;fill-rule:evenodd;stroke:context-stroke;stroke-width:1pt"
|
||||
d="M 0,0 5,-5 -12.5,0 5,5 Z"
|
||||
id="path10457-0" />
|
||||
</marker>
|
||||
<marker
|
||||
style="overflow:visible"
|
||||
id="Arrow1Lend-36"
|
||||
refX="0"
|
||||
refY="0"
|
||||
orient="auto"
|
||||
inkscape:stockid="Arrow1Lend"
|
||||
inkscape:isstock="true">
|
||||
<path
|
||||
transform="matrix(-0.8,0,0,-0.8,-10,0)"
|
||||
style="fill:context-stroke;fill-rule:evenodd;stroke:context-stroke;stroke-width:1pt"
|
||||
d="M 0,0 5,-5 -12.5,0 5,5 Z"
|
||||
id="path10457-06" />
|
||||
</marker>
|
||||
<marker
|
||||
style="overflow:visible"
|
||||
id="Arrow1Lend-61"
|
||||
refX="0"
|
||||
refY="0"
|
||||
orient="auto"
|
||||
inkscape:stockid="Arrow1Lend"
|
||||
inkscape:isstock="true">
|
||||
<path
|
||||
transform="matrix(-0.8,0,0,-0.8,-10,0)"
|
||||
style="fill:context-stroke;fill-rule:evenodd;stroke:context-stroke;stroke-width:1pt"
|
||||
d="M 0,0 5,-5 -12.5,0 5,5 Z"
|
||||
id="path10457-87" />
|
||||
</marker>
|
||||
<marker
|
||||
style="overflow:visible"
|
||||
id="Arrow1Lend-20"
|
||||
refX="0"
|
||||
refY="0"
|
||||
orient="auto"
|
||||
inkscape:stockid="Arrow1Lend"
|
||||
inkscape:isstock="true">
|
||||
<path
|
||||
transform="matrix(-0.8,0,0,-0.8,-10,0)"
|
||||
style="fill:context-stroke;fill-rule:evenodd;stroke:context-stroke;stroke-width:1pt"
|
||||
d="M 0,0 5,-5 -12.5,0 5,5 Z"
|
||||
id="path10457-23" />
|
||||
</marker>
|
||||
</defs>
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="2.060049"
|
||||
inkscape:cx="685.17788"
|
||||
inkscape:cy="241.49911"
|
||||
inkscape:document-units="mm"
|
||||
inkscape:current-layer="layer2"
|
||||
showgrid="true"
|
||||
units="in"
|
||||
inkscape:window-width="3840"
|
||||
inkscape:window-height="2019"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="2160"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:pagecheckerboard="0">
|
||||
<inkscape:grid
|
||||
type="xygrid"
|
||||
id="grid895"
|
||||
units="in"
|
||||
spacingx="3.175"
|
||||
spacingy="3.175"
|
||||
empspacing="8"
|
||||
color="#3f3fff"
|
||||
opacity="0.21568627"
|
||||
empcolor="#3f3fff"
|
||||
empopacity="0.42352941" />
|
||||
<inkscape:grid
|
||||
type="xygrid"
|
||||
id="grid918"
|
||||
units="in"
|
||||
spacingx="1.5875"
|
||||
spacingy="1.5875"
|
||||
empspacing="8"
|
||||
dotted="false"
|
||||
color="#3f3fff"
|
||||
opacity="0.0627451" />
|
||||
</sodipodi:namedview>
|
||||
<metadata
|
||||
id="metadata5">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
inkscape:groupmode="layer"
|
||||
id="layer2"
|
||||
inkscape:label="data"
|
||||
style="display:inline"
|
||||
transform="translate(0,76.2)">
|
||||
<g
|
||||
id="g3395"
|
||||
transform="translate(-101.6,28.574999)">
|
||||
<rect
|
||||
style="fill:none;stroke:#4861d1;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;stop-color:#000000"
|
||||
id="rect853"
|
||||
width="79.375"
|
||||
height="30.1625"
|
||||
x="117.475"
|
||||
y="-47.625" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-weight:normal;font-size:10.5833px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583"
|
||||
x="163.23721"
|
||||
y="-35.909264"
|
||||
id="text1713"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan1711"
|
||||
style="text-align:center;text-anchor:middle;stroke-width:0.264583"
|
||||
x="163.23721"
|
||||
y="-35.909264">NB</tspan><tspan
|
||||
sodipodi:role="line"
|
||||
style="text-align:center;text-anchor:middle;stroke-width:0.264583"
|
||||
x="163.23721"
|
||||
y="-22.68014"
|
||||
id="tspan1580">main branch</tspan></text>
|
||||
</g>
|
||||
<g
|
||||
id="g3230"
|
||||
transform="translate(171.45,17.4625)">
|
||||
<rect
|
||||
style="display:inline;fill:none;stroke:#4861d1;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;stop-color:#000000"
|
||||
id="rect853-3"
|
||||
width="60.324997"
|
||||
height="31.749998"
|
||||
x="96.837502"
|
||||
y="22.225" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-weight:normal;font-size:10.5833px;line-height:1.25;font-family:sans-serif;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583"
|
||||
x="102.53144"
|
||||
y="33.94603"
|
||||
id="text2399"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan2397"
|
||||
style="stroke-width:0.264583"
|
||||
x="102.53144"
|
||||
y="33.94603">RELEASED</tspan><tspan
|
||||
sodipodi:role="line"
|
||||
style="stroke-width:0.264583"
|
||||
x="102.53144"
|
||||
y="47.175156"
|
||||
id="tspan24378">NB-DOCS</tspan></text>
|
||||
</g>
|
||||
<g
|
||||
id="g3230-6"
|
||||
transform="translate(173.0375,-41.275)"
|
||||
style="display:inline">
|
||||
<rect
|
||||
style="display:inline;fill:none;stroke:#4861d1;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;stop-color:#000000"
|
||||
id="rect853-3-7"
|
||||
width="58.737499"
|
||||
height="30.162498"
|
||||
x="96.837502"
|
||||
y="22.225" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-weight:normal;font-size:10.5833px;line-height:1.25;font-family:sans-serif;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583"
|
||||
x="99.298256"
|
||||
y="34.417007"
|
||||
id="text2399-5"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan2397-3"
|
||||
style="stroke-width:0.264583"
|
||||
x="99.298256"
|
||||
y="34.417007">NB-BUILD-</tspan><tspan
|
||||
sodipodi:role="line"
|
||||
style="stroke-width:0.264583"
|
||||
x="99.298256"
|
||||
y="47.646133"
|
||||
id="tspan3616">DOCS</tspan></text>
|
||||
</g>
|
||||
<g
|
||||
id="g8349"
|
||||
transform="translate(36.515457,20.6375)">
|
||||
<ellipse
|
||||
style="fill:none;stroke:#4861d1;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;stop-color:#000000"
|
||||
id="path4433"
|
||||
cx="127.79375"
|
||||
cy="-24.606251"
|
||||
rx="18.25625"
|
||||
ry="15.08125" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-weight:normal;font-size:5.64444px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;display:inline;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583"
|
||||
x="127.69779"
|
||||
y="-30.149092"
|
||||
id="text1713-6"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan1711-2"
|
||||
style="font-size:5.64444px;text-align:center;text-anchor:middle;stroke-width:0.264583"
|
||||
x="127.69779"
|
||||
y="-30.149092">non-</tspan><tspan
|
||||
sodipodi:role="line"
|
||||
style="font-size:5.64444px;text-align:center;text-anchor:middle;stroke-width:0.264583"
|
||||
x="127.69779"
|
||||
y="-23.093542"
|
||||
id="tspan4984">release</tspan><tspan
|
||||
sodipodi:role="line"
|
||||
style="font-size:5.64444px;text-align:center;text-anchor:middle;stroke-width:0.264583"
|
||||
x="127.69779"
|
||||
y="-16.037991"
|
||||
id="tspan4986">build</tspan></text>
|
||||
</g>
|
||||
<g
|
||||
id="g8349-9"
|
||||
style="display:inline"
|
||||
transform="translate(36.152018,80.16875)">
|
||||
<ellipse
|
||||
style="fill:none;stroke:#4861d1;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;stop-color:#000000"
|
||||
id="path4433-1"
|
||||
cx="127.79375"
|
||||
cy="-24.606251"
|
||||
rx="18.25625"
|
||||
ry="15.08125" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-weight:normal;font-size:5.64444px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;display:inline;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583"
|
||||
x="127.69779"
|
||||
y="-26.017361"
|
||||
id="text1713-6-2"><tspan
|
||||
sodipodi:role="line"
|
||||
style="font-size:5.64444px;text-align:center;text-anchor:middle;stroke-width:0.264583"
|
||||
x="127.69779"
|
||||
y="-26.017361"
|
||||
id="tspan4984-0">release</tspan><tspan
|
||||
sodipodi:role="line"
|
||||
style="font-size:5.64444px;text-align:center;text-anchor:middle;stroke-width:0.264583"
|
||||
x="127.69779"
|
||||
y="-18.961811"
|
||||
id="tspan4986-9">build</tspan></text>
|
||||
</g>
|
||||
<path
|
||||
style="font-variation-settings:normal;opacity:1;vector-effect:none;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;marker-end:url(#Arrow1Lend);stop-color:#000000;stop-opacity:1"
|
||||
d="m 95.249998,-3.9687508 50.802952,0"
|
||||
id="path10370"
|
||||
inkscape:connector-type="polyline"
|
||||
inkscape:connector-curvature="0"
|
||||
inkscape:connection-start="#g3395"
|
||||
inkscape:connection-end="#g8349" />
|
||||
<path
|
||||
style="font-variation-settings:normal;opacity:1;vector-effect:none;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;marker-end:url(#Arrow1Lend);stop-color:#000000;stop-opacity:1"
|
||||
d="m 83.019593,11.112499 65.723847,36.09988"
|
||||
id="path10372"
|
||||
inkscape:connector-type="polyline"
|
||||
inkscape:connector-curvature="0"
|
||||
inkscape:connection-start="#g3395"
|
||||
inkscape:connection-end="#g8349-9" />
|
||||
<path
|
||||
style="font-variation-settings:normal;opacity:1;vector-effect:none;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;marker-end:url(#Arrow1Lend);stop-color:#000000;stop-opacity:1"
|
||||
d="m 182.56545,-3.9687507 87.30955,2e-7"
|
||||
id="path10817"
|
||||
inkscape:connector-type="polyline"
|
||||
inkscape:connector-curvature="0"
|
||||
inkscape:connection-start="#g8349"
|
||||
inkscape:connection-end="#g3230-6" />
|
||||
<path
|
||||
style="font-variation-settings:normal;opacity:1;vector-effect:none;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;marker-end:url(#Arrow1Lend);stop-color:#000000;stop-opacity:1"
|
||||
d="m 182.20202,55.562499 86.08548,0"
|
||||
id="path10921"
|
||||
inkscape:connector-type="polyline"
|
||||
inkscape:connector-curvature="0"
|
||||
inkscape:connection-start="#g8349-9"
|
||||
inkscape:connection-end="#g3230" />
|
||||
<g
|
||||
id="g11511"
|
||||
transform="translate(155.575,-112.7125)">
|
||||
<circle
|
||||
style="font-variation-settings:normal;opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;stop-color:#000000;stop-opacity:1"
|
||||
id="path11306"
|
||||
cx="56.960236"
|
||||
cy="65.919228"
|
||||
r="2.7336953" />
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="m 57.15,68.2625 -10e-7,6.35 -3.174999,6.35"
|
||||
id="path11421"
|
||||
sodipodi:nodetypes="ccc" />
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="m 57.149999,74.6125 3.175001,6.35"
|
||||
id="path11423"
|
||||
sodipodi:nodetypes="cc" />
|
||||
<path
|
||||
style="font-variation-settings:normal;opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000;stop-opacity:1"
|
||||
d="m 53.975,71.4375 h 6.35"
|
||||
id="path11425"
|
||||
sodipodi:nodetypes="cc" />
|
||||
</g>
|
||||
<path
|
||||
style="font-variation-settings:normal;display:inline;opacity:1;vector-effect:none;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;marker-end:url(#Arrow1Lend);stop-color:#000000;stop-opacity:1"
|
||||
d="m 212.725,-40.77668 57.15,24.313495"
|
||||
id="path11775"
|
||||
inkscape:connector-type="polyline"
|
||||
inkscape:connector-curvature="0"
|
||||
inkscape:connection-start="#g11511"
|
||||
inkscape:connection-end="#g3230-6" />
|
||||
<path
|
||||
style="font-variation-settings:normal;opacity:1;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker-end:url(#Arrow1Lend);stop-color:#000000;stop-opacity:1"
|
||||
d="M 212.725,-40.77668 95.249998,-13.263682"
|
||||
id="path11944"
|
||||
inkscape:connector-type="polyline"
|
||||
inkscape:connector-curvature="0"
|
||||
inkscape:connection-start="#g11511"
|
||||
inkscape:connection-end="#g3395" />
|
||||
<path
|
||||
style="font-variation-settings:normal;opacity:1;vector-effect:none;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;marker-end:url(#Arrow1Lend);stop-color:#000000;stop-opacity:1"
|
||||
d="m 299.04267,11.112499 -0.381,28.575001"
|
||||
id="path12048"
|
||||
inkscape:connector-type="polyline"
|
||||
inkscape:connector-curvature="0"
|
||||
inkscape:connection-start="#g3230-6"
|
||||
inkscape:connection-end="#g3230" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-weight:normal;font-size:6.35px;line-height:1.25;font-family:sans-serif;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583"
|
||||
x="127.40736"
|
||||
y="-43.492035"
|
||||
id="text13414"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan13412"
|
||||
style="font-size:6.35px;stroke-width:0.264583"
|
||||
x="127.40736"
|
||||
y="-43.492035">edit embeded</tspan><tspan
|
||||
sodipodi:role="line"
|
||||
style="font-size:6.35px;stroke-width:0.264583"
|
||||
x="127.40736"
|
||||
y="-35.554535"
|
||||
id="tspan13944">docs, javadoc,</tspan><tspan
|
||||
sodipodi:role="line"
|
||||
style="font-size:6.35px;stroke-width:0.264583"
|
||||
x="127.40736"
|
||||
y="-27.617033"
|
||||
id="tspan26081">and code</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-weight:normal;font-size:6.35px;line-height:1.25;font-family:sans-serif;display:inline;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583"
|
||||
x="229.11111"
|
||||
y="-41.987053"
|
||||
id="text13414-7"><tspan
|
||||
sodipodi:role="line"
|
||||
style="font-size:6.35px;stroke-width:0.264583"
|
||||
x="229.11111"
|
||||
y="-41.987053"
|
||||
id="tspan13944-6">edit docs</tspan><tspan
|
||||
sodipodi:role="line"
|
||||
style="font-size:6.35px;stroke-width:0.264583"
|
||||
x="229.11111"
|
||||
y="-34.049553"
|
||||
id="tspan18006">content</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-weight:normal;font-size:6.35px;line-height:1.25;font-family:sans-serif;display:inline;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583"
|
||||
x="300.85052"
|
||||
y="18.575722"
|
||||
id="text13414-7-1"><tspan
|
||||
sodipodi:role="line"
|
||||
style="font-size:6.35px;stroke-width:0.264583"
|
||||
x="300.85052"
|
||||
y="18.575722"
|
||||
id="tspan18006-9">publish <tspan
|
||||
style="font-weight:bold"
|
||||
id="tspan19860">all</tspan> docs</tspan><tspan
|
||||
sodipodi:role="line"
|
||||
style="font-size:6.35px;stroke-width:0.264583"
|
||||
x="300.85052"
|
||||
y="26.513222"
|
||||
id="tspan18420">content to <tspan
|
||||
style="font-weight:bold"
|
||||
id="tspan21172">main</tspan></tspan><tspan
|
||||
sodipodi:role="line"
|
||||
style="font-size:6.35px;stroke-width:0.264583"
|
||||
x="300.85052"
|
||||
y="34.450722"
|
||||
id="tspan18422">docs site</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-weight:normal;font-size:6.35px;line-height:1.25;font-family:sans-serif;display:inline;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583"
|
||||
x="185.48294"
|
||||
y="52.958786"
|
||||
id="text13414-7-1-3"><tspan
|
||||
sodipodi:role="line"
|
||||
style="font-size:6.35px;stroke-width:0.264583"
|
||||
x="185.48294"
|
||||
y="52.958786"
|
||||
id="tspan18006-9-1">publish <tspan
|
||||
style="font-weight:bold"
|
||||
id="tspan19284">embedded</tspan></tspan><tspan
|
||||
sodipodi:role="line"
|
||||
style="font-size:6.35px;stroke-width:0.264583"
|
||||
x="185.48294"
|
||||
y="60.896286"
|
||||
id="tspan18941">docs content to <tspan
|
||||
style="font-weight:bold"
|
||||
id="tspan10164">main</tspan></tspan><tspan
|
||||
sodipodi:role="line"
|
||||
style="font-size:6.35px;stroke-width:0.264583"
|
||||
x="185.48294"
|
||||
y="68.833786"
|
||||
id="tspan18422-4">docs site</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-weight:normal;font-size:6.35px;line-height:1.25;font-family:sans-serif;display:inline;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583"
|
||||
x="185.37083"
|
||||
y="-5.9306483"
|
||||
id="text13414-7-1-3-7"><tspan
|
||||
sodipodi:role="line"
|
||||
style="font-size:6.35px;stroke-width:0.264583"
|
||||
x="185.37083"
|
||||
y="-5.9306483"
|
||||
id="tspan18006-9-1-8">publish <tspan
|
||||
style="font-weight:bold"
|
||||
id="tspan18684">embedded</tspan></tspan><tspan
|
||||
sodipodi:role="line"
|
||||
style="font-size:6.35px;stroke-width:0.264583"
|
||||
x="185.37083"
|
||||
y="2.0068517"
|
||||
id="tspan18941-4">docs content to <tspan
|
||||
style="font-weight:bold"
|
||||
id="tspan11314">preview</tspan></tspan><tspan
|
||||
sodipodi:role="line"
|
||||
style="font-size:6.35px;stroke-width:0.264583"
|
||||
x="185.37083"
|
||||
y="9.9443502"
|
||||
id="tspan18422-4-5">docs site</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:3.52777px;line-height:1.25;font-family:sans-serif;fill:#5939cc;fill-opacity:1;stroke:none;stroke-width:0.264583;stroke-opacity:1"
|
||||
x="133.32997"
|
||||
y="27.209949"
|
||||
id="text27722"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan27720"
|
||||
style="font-weight:bold;fill:#5939cc;fill-opacity:1;stroke:none;stroke-width:0.264583;stroke-opacity:1"
|
||||
x="133.32997"
|
||||
y="27.209949">on push to main</tspan><tspan
|
||||
sodipodi:role="line"
|
||||
style="font-weight:bold;fill:#5939cc;fill-opacity:1;stroke:none;stroke-width:0.264583;stroke-opacity:1"
|
||||
x="133.32997"
|
||||
y="31.619661"
|
||||
id="tspan27724">and change to</tspan><tspan
|
||||
sodipodi:role="line"
|
||||
style="font-weight:bold;fill:#5939cc;fill-opacity:1;stroke:none;stroke-width:0.264583;stroke-opacity:1"
|
||||
x="133.32997"
|
||||
y="36.029373"
|
||||
id="tspan27726">RELEASENOTES.md</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:3.52777px;line-height:1.25;font-family:sans-serif;display:inline;fill:#5939cc;fill-opacity:1;stroke:none;stroke-width:0.264583;stroke-opacity:1"
|
||||
x="259.55676"
|
||||
y="18.714157"
|
||||
id="text27722-6"><tspan
|
||||
sodipodi:role="line"
|
||||
style="font-weight:bold;fill:#5939cc;fill-opacity:1;stroke:none;stroke-width:0.264583;stroke-opacity:1"
|
||||
x="259.55676"
|
||||
y="18.714157"
|
||||
id="tspan27726-6">Initially, this doc site</tspan><tspan
|
||||
sodipodi:role="line"
|
||||
style="font-weight:bold;fill:#5939cc;fill-opacity:1;stroke:none;stroke-width:0.264583;stroke-opacity:1"
|
||||
x="259.55676"
|
||||
y="23.123869"
|
||||
id="tspan69260">will be checkpointed </tspan><tspan
|
||||
sodipodi:role="line"
|
||||
style="font-weight:bold;fill:#5939cc;fill-opacity:1;stroke:none;stroke-width:0.264583;stroke-opacity:1"
|
||||
x="259.55676"
|
||||
y="27.533583"
|
||||
id="tspan69262">manually into the </tspan><tspan
|
||||
sodipodi:role="line"
|
||||
style="font-weight:bold;fill:#5939cc;fill-opacity:1;stroke:none;stroke-width:0.264583;stroke-opacity:1"
|
||||
x="259.55676"
|
||||
y="31.943295"
|
||||
id="tspan69264">main docs site</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:3.52777px;line-height:1.25;font-family:sans-serif;display:inline;stroke-width:0.264583"
|
||||
x="106.08576"
|
||||
y="0.33000755"
|
||||
id="text27722-5"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan27720-9"
|
||||
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:3.52777px;line-height:1.25;font-family:sans-serif;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-variant-east-asian:normal;font-feature-settings:normal;font-variation-settings:normal;text-indent:0;text-align:start;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;white-space:normal;opacity:1;vector-effect:none;fill:#5939cc;fill-opacity:1;stroke:none;stroke-width:0.264583;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000;stop-opacity:1"
|
||||
x="106.08576"
|
||||
y="0.33000755">on push to main</tspan><tspan
|
||||
sodipodi:role="line"
|
||||
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:3.52777px;line-height:1.25;font-family:sans-serif;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-variant-east-asian:normal;font-feature-settings:normal;font-variation-settings:normal;text-indent:0;text-align:start;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;white-space:normal;opacity:1;vector-effect:none;fill:#5939cc;fill-opacity:1;stroke:none;stroke-width:0.264583;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000;stop-opacity:1"
|
||||
x="106.08576"
|
||||
y="4.7397203"
|
||||
id="tspan27724-2">and NO change to</tspan><tspan
|
||||
sodipodi:role="line"
|
||||
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:3.52777px;line-height:1.25;font-family:sans-serif;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-variant-east-asian:normal;font-feature-settings:normal;font-variation-settings:normal;text-indent:0;text-align:start;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;white-space:normal;opacity:1;vector-effect:none;fill:#5939cc;fill-opacity:1;stroke:none;stroke-width:0.264583;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000;stop-opacity:1"
|
||||
x="106.08576"
|
||||
y="9.1494331"
|
||||
id="tspan27726-2">RELEASENOTES.md</tspan></text>
|
||||
</g>
|
||||
<g
|
||||
inkscape:label="boxes"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1"
|
||||
transform="translate(0,-4.9)"
|
||||
style="display:inline;opacity:0.438" />
|
||||
</svg>
|
After Width: | Height: | Size: 31 KiB |
@ -28,7 +28,7 @@
|
||||
<parent>
|
||||
<artifactId>mvn-defaults</artifactId>
|
||||
<groupId>io.nosqlbench</groupId>
|
||||
<version>4.17.31-SNAPSHOT</version>
|
||||
<version>4.17.32-SNAPSHOT</version>
|
||||
<relativePath>../mvn-defaults</relativePath>
|
||||
</parent>
|
||||
|
||||
@ -37,7 +37,7 @@
|
||||
<dependency>
|
||||
<groupId>io.nosqlbench</groupId>
|
||||
<artifactId>nb-api</artifactId>
|
||||
<version>4.17.31-SNAPSHOT</version>
|
||||
<version>4.17.32-SNAPSHOT</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
@ -93,13 +93,13 @@
|
||||
<dependency>
|
||||
<groupId>org.apache.commons</groupId>
|
||||
<artifactId>commons-compress</artifactId>
|
||||
<version>1.21</version>
|
||||
<version>1.22</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.glassfish.jersey.media</groupId>
|
||||
<artifactId>jersey-media-json-jackson</artifactId>
|
||||
<version>3.0.8</version>
|
||||
<version>3.1.0</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
@ -133,7 +133,7 @@
|
||||
<dependency>
|
||||
<groupId>io.nosqlbench</groupId>
|
||||
<artifactId>virtdata-api</artifactId>
|
||||
<version>4.17.31-SNAPSHOT</version>
|
||||
<version>4.17.32-SNAPSHOT</version>
|
||||
</dependency>
|
||||
|
||||
</dependencies>
|
||||
|
@ -21,7 +21,7 @@
|
||||
<parent>
|
||||
<artifactId>mvn-defaults</artifactId>
|
||||
<groupId>io.nosqlbench</groupId>
|
||||
<version>4.17.31-SNAPSHOT</version>
|
||||
<version>4.17.32-SNAPSHOT</version>
|
||||
<relativePath>../mvn-defaults</relativePath>
|
||||
</parent>
|
||||
|
||||
@ -39,31 +39,31 @@
|
||||
<dependency>
|
||||
<groupId>io.nosqlbench</groupId>
|
||||
<artifactId>nb-api</artifactId>
|
||||
<version>4.17.31-SNAPSHOT</version>
|
||||
<version>4.17.32-SNAPSHOT</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.nosqlbench</groupId>
|
||||
<artifactId>adapters-api</artifactId>
|
||||
<version>4.17.31-SNAPSHOT</version>
|
||||
<version>4.17.32-SNAPSHOT</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.nosqlbench</groupId>
|
||||
<artifactId>nb-spectest</artifactId>
|
||||
<version>4.17.31-SNAPSHOT</version>
|
||||
<version>4.17.32-SNAPSHOT</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.nosqlbench</groupId>
|
||||
<artifactId>nb-annotations</artifactId>
|
||||
<version>4.17.31-SNAPSHOT</version>
|
||||
<version>4.17.32-SNAPSHOT</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.nosqlbench</groupId>
|
||||
<artifactId>virtdata-userlibs</artifactId>
|
||||
<version>4.17.31-SNAPSHOT</version>
|
||||
<version>4.17.32-SNAPSHOT</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
|
@ -32,11 +32,11 @@ import org.apache.logging.log4j.Logger;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
/**
|
||||
* This is the generified version of an Action. All activity types should endeavor to use
|
||||
* this, as the API surface is being consolidated so that the internal machinery of NB
|
||||
* works in a very consistent and uniform way.
|
||||
* There will be changes to multiple drivers to support this consolidation, but the bulk
|
||||
* of this work will be undertaken by the project maintainers.
|
||||
* This is the generified version of an Action. All driver adapters us this, as opposed
|
||||
* to previous NB versions where it was implemented for each driver.
|
||||
*
|
||||
* This allows the API to be consolidated so that the internal machinery of NB
|
||||
* works in a very consistent and uniform way for all users and drivers.
|
||||
*
|
||||
* @param <A> The type of activity
|
||||
* @param <R> The type of operation
|
||||
|
@ -4,7 +4,7 @@
|
||||
<parent>
|
||||
<artifactId>mvn-defaults</artifactId>
|
||||
<groupId>io.nosqlbench</groupId>
|
||||
<version>4.17.31-SNAPSHOT</version>
|
||||
<version>4.17.32-SNAPSHOT</version>
|
||||
<relativePath>../mvn-defaults</relativePath>
|
||||
</parent>
|
||||
|
||||
@ -23,13 +23,13 @@
|
||||
<dependency>
|
||||
<groupId>io.nosqlbench</groupId>
|
||||
<artifactId>engine-core</artifactId>
|
||||
<version>4.17.31-SNAPSHOT</version>
|
||||
<version>4.17.32-SNAPSHOT</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.nosqlbench</groupId>
|
||||
<artifactId>engine-docker</artifactId>
|
||||
<version>4.17.31-SNAPSHOT</version>
|
||||
<version>4.17.32-SNAPSHOT</version>
|
||||
</dependency>
|
||||
|
||||
</dependencies>
|
||||
|
@ -5,7 +5,7 @@
|
||||
<parent>
|
||||
<artifactId>mvn-defaults</artifactId>
|
||||
<groupId>io.nosqlbench</groupId>
|
||||
<version>4.17.31-SNAPSHOT</version>
|
||||
<version>4.17.32-SNAPSHOT</version>
|
||||
<relativePath>../mvn-defaults</relativePath>
|
||||
</parent>
|
||||
|
||||
@ -21,7 +21,7 @@
|
||||
<dependency>
|
||||
<groupId>io.nosqlbench</groupId>
|
||||
<artifactId>engine-api</artifactId>
|
||||
<version>4.17.31-SNAPSHOT</version>
|
||||
<version>4.17.32-SNAPSHOT</version>
|
||||
</dependency>
|
||||
|
||||
</dependencies>
|
||||
|
@ -21,7 +21,7 @@
|
||||
<parent>
|
||||
<artifactId>mvn-defaults</artifactId>
|
||||
<groupId>io.nosqlbench</groupId>
|
||||
<version>4.17.31-SNAPSHOT</version>
|
||||
<version>4.17.32-SNAPSHOT</version>
|
||||
<relativePath>../mvn-defaults</relativePath>
|
||||
</parent>
|
||||
|
||||
@ -38,7 +38,7 @@
|
||||
<dependency>
|
||||
<groupId>io.nosqlbench</groupId>
|
||||
<artifactId>engine-api</artifactId>
|
||||
<version>4.17.31-SNAPSHOT</version>
|
||||
<version>4.17.32-SNAPSHOT</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
@ -89,7 +89,7 @@
|
||||
<dependency>
|
||||
<groupId>io.nosqlbench</groupId>
|
||||
<artifactId>engine-clients</artifactId>
|
||||
<version>4.17.31-SNAPSHOT</version>
|
||||
<version>4.17.32-SNAPSHOT</version>
|
||||
<scope>compile</scope>
|
||||
</dependency>
|
||||
|
||||
|
@ -4,7 +4,7 @@
|
||||
<parent>
|
||||
<artifactId>mvn-defaults</artifactId>
|
||||
<groupId>io.nosqlbench</groupId>
|
||||
<version>4.17.31-SNAPSHOT</version>
|
||||
<version>4.17.32-SNAPSHOT</version>
|
||||
<relativePath>../mvn-defaults</relativePath>
|
||||
</parent>
|
||||
|
||||
@ -56,7 +56,7 @@
|
||||
<dependency>
|
||||
<groupId>io.nosqlbench</groupId>
|
||||
<artifactId>engine-api</artifactId>
|
||||
<version>4.17.31-SNAPSHOT</version>
|
||||
<version>4.17.32-SNAPSHOT</version>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
|
@ -4,7 +4,7 @@
|
||||
<parent>
|
||||
<artifactId>mvn-defaults</artifactId>
|
||||
<groupId>io.nosqlbench</groupId>
|
||||
<version>4.17.31-SNAPSHOT</version>
|
||||
<version>4.17.32-SNAPSHOT</version>
|
||||
<relativePath>../mvn-defaults</relativePath>
|
||||
</parent>
|
||||
|
||||
@ -28,7 +28,7 @@
|
||||
<dependency>
|
||||
<groupId>io.nosqlbench</groupId>
|
||||
<artifactId>docsys</artifactId>
|
||||
<version>4.17.31-SNAPSHOT</version>
|
||||
<version>4.17.32-SNAPSHOT</version>
|
||||
</dependency>
|
||||
|
||||
</dependencies>
|
||||
|
@ -4,7 +4,7 @@
|
||||
<parent>
|
||||
<artifactId>mvn-defaults</artifactId>
|
||||
<groupId>io.nosqlbench</groupId>
|
||||
<version>4.17.31-SNAPSHOT</version>
|
||||
<version>4.17.32-SNAPSHOT</version>
|
||||
<relativePath>../mvn-defaults</relativePath>
|
||||
</parent>
|
||||
|
||||
@ -22,7 +22,7 @@
|
||||
<dependency>
|
||||
<groupId>io.nosqlbench</groupId>
|
||||
<artifactId>engine-api</artifactId>
|
||||
<version>4.17.31-SNAPSHOT</version>
|
||||
<version>4.17.32-SNAPSHOT</version>
|
||||
</dependency>
|
||||
|
||||
</dependencies>
|
||||
|
@ -4,7 +4,7 @@
|
||||
<parent>
|
||||
<artifactId>mvn-defaults</artifactId>
|
||||
<groupId>io.nosqlbench</groupId>
|
||||
<version>4.17.31-SNAPSHOT</version>
|
||||
<version>4.17.32-SNAPSHOT</version>
|
||||
<relativePath>../mvn-defaults</relativePath>
|
||||
</parent>
|
||||
|
||||
@ -29,13 +29,13 @@
|
||||
<dependency>
|
||||
<groupId>io.swagger.core.v3</groupId>
|
||||
<artifactId>swagger-models</artifactId>
|
||||
<version>2.2.4</version>
|
||||
<version>2.2.6</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.nosqlbench</groupId>
|
||||
<artifactId>engine-cli</artifactId>
|
||||
<version>4.17.31-SNAPSHOT</version>
|
||||
<version>4.17.32-SNAPSHOT</version>
|
||||
</dependency>
|
||||
|
||||
</dependencies>
|
||||
|
@ -19,7 +19,7 @@
|
||||
|
||||
<groupId>io.nosqlbench</groupId>
|
||||
<artifactId>mvn-defaults</artifactId>
|
||||
<version>4.17.31-SNAPSHOT</version>
|
||||
<version>4.17.32-SNAPSHOT</version>
|
||||
<packaging>pom</packaging>
|
||||
|
||||
<properties>
|
||||
@ -189,7 +189,7 @@
|
||||
<dependency>
|
||||
<groupId>io.netty</groupId>
|
||||
<artifactId>netty-handler</artifactId>
|
||||
<version>4.1.84.Final</version>
|
||||
<version>4.1.85.Final</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
|
@ -5,7 +5,7 @@
|
||||
<parent>
|
||||
<artifactId>mvn-defaults</artifactId>
|
||||
<groupId>io.nosqlbench</groupId>
|
||||
<version>4.17.31-SNAPSHOT</version>
|
||||
<version>4.17.32-SNAPSHOT</version>
|
||||
<relativePath>../mvn-defaults</relativePath>
|
||||
</parent>
|
||||
|
||||
|
@ -21,7 +21,7 @@
|
||||
<parent>
|
||||
<artifactId>mvn-defaults</artifactId>
|
||||
<groupId>io.nosqlbench</groupId>
|
||||
<version>4.17.31-SNAPSHOT</version>
|
||||
<version>4.17.32-SNAPSHOT</version>
|
||||
<relativePath>../mvn-defaults</relativePath>
|
||||
</parent>
|
||||
|
||||
@ -58,7 +58,7 @@
|
||||
<dependency>
|
||||
<groupId>io.nosqlbench</groupId>
|
||||
<artifactId>nb-annotations</artifactId>
|
||||
<version>4.17.31-SNAPSHOT</version>
|
||||
<version>4.17.32-SNAPSHOT</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
@ -97,7 +97,7 @@
|
||||
<dependency>
|
||||
<groupId>com.amazonaws</groupId>
|
||||
<artifactId>aws-java-sdk-s3</artifactId>
|
||||
<version>1.12.340</version>
|
||||
<version>1.12.341</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
|
@ -20,7 +20,7 @@
|
||||
<parent>
|
||||
<artifactId>mvn-defaults</artifactId>
|
||||
<groupId>io.nosqlbench</groupId>
|
||||
<version>4.17.31-SNAPSHOT</version>
|
||||
<version>4.17.32-SNAPSHOT</version>
|
||||
<relativePath>../mvn-defaults</relativePath>
|
||||
</parent>
|
||||
|
||||
|
22
nb5/pom.xml
22
nb5/pom.xml
@ -21,7 +21,7 @@
|
||||
<parent>
|
||||
<artifactId>mvn-defaults</artifactId>
|
||||
<groupId>io.nosqlbench</groupId>
|
||||
<version>4.17.31-SNAPSHOT</version>
|
||||
<version>4.17.32-SNAPSHOT</version>
|
||||
<relativePath>../mvn-defaults</relativePath>
|
||||
</parent>
|
||||
|
||||
@ -40,7 +40,7 @@
|
||||
<dependency>
|
||||
<groupId>io.nosqlbench</groupId>
|
||||
<artifactId>nbr</artifactId>
|
||||
<version>4.17.31-SNAPSHOT</version>
|
||||
<version>4.17.32-SNAPSHOT</version>
|
||||
</dependency>
|
||||
|
||||
<!-- Everything below this line is in common between nb and nb5 -->
|
||||
@ -49,49 +49,49 @@
|
||||
<dependency>
|
||||
<groupId>io.nosqlbench</groupId>
|
||||
<artifactId>adapter-tcp</artifactId>
|
||||
<version>4.17.31-SNAPSHOT</version>
|
||||
<version>4.17.32-SNAPSHOT</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.nosqlbench</groupId>
|
||||
<artifactId>adapter-mongodb</artifactId>
|
||||
<version>4.17.31-SNAPSHOT</version>
|
||||
<version>4.17.32-SNAPSHOT</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.nosqlbench</groupId>
|
||||
<artifactId>adapter-stdout</artifactId>
|
||||
<version>4.17.31-SNAPSHOT</version>
|
||||
<version>4.17.32-SNAPSHOT</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.nosqlbench</groupId>
|
||||
<artifactId>adapter-diag</artifactId>
|
||||
<version>4.17.31-SNAPSHOT</version>
|
||||
<version>4.17.32-SNAPSHOT</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.nosqlbench</groupId>
|
||||
<artifactId>adapter-dynamodb</artifactId>
|
||||
<version>4.17.31-SNAPSHOT</version>
|
||||
<version>4.17.32-SNAPSHOT</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.nosqlbench</groupId>
|
||||
<artifactId>adapter-cqld4</artifactId>
|
||||
<version>4.17.31-SNAPSHOT</version>
|
||||
<version>4.17.32-SNAPSHOT</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.nosqlbench</groupId>
|
||||
<artifactId>adapter-http</artifactId>
|
||||
<version>4.17.31-SNAPSHOT</version>
|
||||
<version>4.17.32-SNAPSHOT</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.nosqlbench</groupId>
|
||||
<artifactId>adapter-pulsar</artifactId>
|
||||
<version>4.17.31-SNAPSHOT</version>
|
||||
<version>4.17.32-SNAPSHOT</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
@ -172,7 +172,7 @@
|
||||
<dependency>
|
||||
<groupId>io.nosqlbench</groupId>
|
||||
<artifactId>adapter-mongodb</artifactId>
|
||||
<version>4.17.31-SNAPSHOT</version>
|
||||
<version>4.17.32-SNAPSHOT</version>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
</profile>
|
||||
|
@ -20,7 +20,7 @@
|
||||
<parent>
|
||||
<artifactId>mvn-defaults</artifactId>
|
||||
<groupId>io.nosqlbench</groupId>
|
||||
<version>4.17.31-SNAPSHOT</version>
|
||||
<version>4.17.32-SNAPSHOT</version>
|
||||
<relativePath>../mvn-defaults</relativePath>
|
||||
</parent>
|
||||
|
||||
@ -39,13 +39,13 @@
|
||||
<dependency>
|
||||
<groupId>io.nosqlbench</groupId>
|
||||
<artifactId>nbr</artifactId>
|
||||
<version>4.17.31-SNAPSHOT</version>
|
||||
<version>4.17.32-SNAPSHOT</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.nosqlbench</groupId>
|
||||
<artifactId>adapter-diag</artifactId>
|
||||
<version>4.17.31-SNAPSHOT</version>
|
||||
<version>4.17.32-SNAPSHOT</version>
|
||||
</dependency>
|
||||
|
||||
</dependencies>
|
||||
|
14
nbr/pom.xml
14
nbr/pom.xml
@ -21,7 +21,7 @@
|
||||
<parent>
|
||||
<artifactId>mvn-defaults</artifactId>
|
||||
<groupId>io.nosqlbench</groupId>
|
||||
<version>4.17.31-SNAPSHOT</version>
|
||||
<version>4.17.32-SNAPSHOT</version>
|
||||
<relativePath>../mvn-defaults</relativePath>
|
||||
</parent>
|
||||
|
||||
@ -40,37 +40,37 @@
|
||||
<dependency>
|
||||
<groupId>io.nosqlbench</groupId>
|
||||
<artifactId>engine-rest</artifactId>
|
||||
<version>4.17.31-SNAPSHOT</version>
|
||||
<version>4.17.32-SNAPSHOT</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.nosqlbench</groupId>
|
||||
<artifactId>engine-cli</artifactId>
|
||||
<version>4.17.31-SNAPSHOT</version>
|
||||
<version>4.17.32-SNAPSHOT</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.nosqlbench</groupId>
|
||||
<artifactId>engine-docs</artifactId>
|
||||
<version>4.17.31-SNAPSHOT</version>
|
||||
<version>4.17.32-SNAPSHOT</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.nosqlbench</groupId>
|
||||
<artifactId>engine-core</artifactId>
|
||||
<version>4.17.31-SNAPSHOT</version>
|
||||
<version>4.17.32-SNAPSHOT</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.nosqlbench</groupId>
|
||||
<artifactId>engine-extensions</artifactId>
|
||||
<version>4.17.31-SNAPSHOT</version>
|
||||
<version>4.17.32-SNAPSHOT</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.nosqlbench</groupId>
|
||||
<artifactId>adapter-diag</artifactId>
|
||||
<version>4.17.31-SNAPSHOT</version>
|
||||
<version>4.17.32-SNAPSHOT</version>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
|
2
pom.xml
2
pom.xml
@ -23,7 +23,7 @@
|
||||
<parent>
|
||||
<artifactId>mvn-defaults</artifactId>
|
||||
<groupId>io.nosqlbench</groupId>
|
||||
<version>4.17.31-SNAPSHOT</version>
|
||||
<version>4.17.32-SNAPSHOT</version>
|
||||
<relativePath>mvn-defaults</relativePath>
|
||||
</parent>
|
||||
|
||||
|
@ -7,7 +7,7 @@
|
||||
<parent>
|
||||
<groupId>io.nosqlbench</groupId>
|
||||
<artifactId>mvn-defaults</artifactId>
|
||||
<version>4.17.31-SNAPSHOT</version>
|
||||
<version>4.17.32-SNAPSHOT</version>
|
||||
<relativePath>../mvn-defaults</relativePath>
|
||||
</parent>
|
||||
|
||||
@ -23,14 +23,14 @@
|
||||
|
||||
<dependency>
|
||||
<groupId>io.nosqlbench</groupId>
|
||||
<version>4.17.31-SNAPSHOT</version>
|
||||
<version>4.17.32-SNAPSHOT</version>
|
||||
<artifactId>nb-api</artifactId>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.nosqlbench</groupId>
|
||||
<artifactId>virtdata-lang</artifactId>
|
||||
<version>4.17.31-SNAPSHOT</version>
|
||||
<version>4.17.32-SNAPSHOT</version>
|
||||
</dependency>
|
||||
|
||||
|
||||
|
@ -23,7 +23,7 @@
|
||||
<parent>
|
||||
<artifactId>mvn-defaults</artifactId>
|
||||
<groupId>io.nosqlbench</groupId>
|
||||
<version>4.17.31-SNAPSHOT</version>
|
||||
<version>4.17.32-SNAPSHOT</version>
|
||||
<relativePath>../mvn-defaults</relativePath>
|
||||
</parent>
|
||||
|
||||
|
@ -7,7 +7,7 @@
|
||||
<parent>
|
||||
<artifactId>mvn-defaults</artifactId>
|
||||
<groupId>io.nosqlbench</groupId>
|
||||
<version>4.17.31-SNAPSHOT</version>
|
||||
<version>4.17.32-SNAPSHOT</version>
|
||||
<relativePath>../mvn-defaults</relativePath>
|
||||
</parent>
|
||||
|
||||
@ -20,7 +20,7 @@
|
||||
<dependency>
|
||||
<groupId>io.nosqlbench</groupId>
|
||||
<artifactId>virtdata-api</artifactId>
|
||||
<version>4.17.31-SNAPSHOT</version>
|
||||
<version>4.17.32-SNAPSHOT</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
|
@ -0,0 +1,89 @@
|
||||
/*
|
||||
* Copyright (c) 2022 nosqlbench
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package io.nosqlbench.virtdata.library.basics.shared.from_long.to_long;
|
||||
|
||||
import io.nosqlbench.virtdata.api.annotations.Example;
|
||||
import io.nosqlbench.virtdata.api.annotations.ThreadSafeMapper;
|
||||
|
||||
import java.util.function.LongUnaryOperator;
|
||||
|
||||
/**
|
||||
* <P>Compute a value which increases monotonically with respect to the cycle value.
|
||||
* All values for f(X+(m>=0)) will be equal or greater than f(X). In effect, this
|
||||
* means that with a sequence of monotonic inputs, the results will be monotonic as
|
||||
* well as clustered. The values will approximate input/average, but will vary in frequency
|
||||
* around a simple binomial distribution.</P>
|
||||
*
|
||||
* <p>The practical effect of this is to be able to compute a sequence of values
|
||||
* over inputs which can act as foreign keys, but which are effectively ordered.</p>
|
||||
*
|
||||
* <H3>Call for Ideas</H3>
|
||||
* <p>Due to the complexity of generalizing this as a pure function over other distributions,
|
||||
* this is the only function of this type for now. If you are interested in this problem
|
||||
* domain and have some suggestions for how to extend it to other distributions, please
|
||||
* join the project or let us know.</p>
|
||||
*/
|
||||
@ThreadSafeMapper
|
||||
public class TriangularStepFunction implements LongUnaryOperator {
|
||||
|
||||
private final Hash hasher = new Hash();
|
||||
private final long average;
|
||||
private final LongUnaryOperator sizer;
|
||||
|
||||
private final long variance;
|
||||
|
||||
|
||||
@Example({"TriangularStepFunction(100,20)","Create a sequence of values where the average is 100, but the range of values is between 80 and 120."})
|
||||
@Example({"TriangularStepFunction(80,10)","Create a sequence of values where the average is 80, but the range of values is between 70 and 90."})
|
||||
TriangularStepFunction(long average, long variance) {
|
||||
if (average<=0 || variance < 0 || variance > average) {
|
||||
throw new RuntimeException(
|
||||
"The average must be positive, variance non-negative and the variance must be less than the average. " +
|
||||
"You provided average=" + average + ", variance=" + variance + "."
|
||||
);
|
||||
}
|
||||
this.average = average;
|
||||
this.variance = variance;
|
||||
this.sizer = new HashRange(average-variance,average+variance);
|
||||
}
|
||||
|
||||
TriangularStepFunction(long average) {
|
||||
this(average, average/2);
|
||||
}
|
||||
|
||||
@Override
|
||||
public long applyAsLong(long operand) {
|
||||
// window number
|
||||
long count = operand / average;
|
||||
// offset within window
|
||||
long offset = operand % average;
|
||||
// base of window
|
||||
long base = operand - offset;
|
||||
// variate up to window size
|
||||
long variance = sizer.applyAsLong(base);
|
||||
// variate offset from start of window
|
||||
long slice = base + variance;
|
||||
// select current or next window
|
||||
long result = ((slice)>operand) ? count : count + 1;
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return this.getClass().getSimpleName()+"{average="+ average +",variance="+variance+"}";
|
||||
}
|
||||
}
|
@ -0,0 +1,121 @@
|
||||
/*
|
||||
* Copyright (c) 2022 nosqlbench
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package io.nosqlbench.virtdata.library.basics.shared.from_long.to_long;
|
||||
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import java.security.InvalidParameterException;
|
||||
import java.util.Arrays;
|
||||
import java.util.LongSummaryStatistics;
|
||||
import java.util.stream.IntStream;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
|
||||
public class TriangularStepFunctionTest {
|
||||
|
||||
private static final int LABEL=0;
|
||||
private static final int FREQUENCY=1;
|
||||
|
||||
@Test
|
||||
public void testExample1() {
|
||||
TriangularStepFunction e1 = new TriangularStepFunction(100, 20);
|
||||
int[] runLengths = this.rleStatsFor(e1, 0, 10000);
|
||||
System.out.println(Arrays.toString(runLengths));
|
||||
assertThat(IntStream.of(runLengths).min().orElseThrow()).isEqualTo(80L);
|
||||
assertThat(IntStream.of(runLengths).max().orElseThrow()).isEqualTo(120L);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testExample2() {
|
||||
TriangularStepFunction e1 = new TriangularStepFunction(80, 10);
|
||||
int[] runLengths = this.rleStatsFor(e1, 0, 10000);
|
||||
System.out.println(Arrays.toString(runLengths));
|
||||
assertThat(IntStream.of(runLengths).min().orElseThrow()).isEqualTo(70L);
|
||||
assertThat(IntStream.of(runLengths).max().orElseThrow()).isEqualTo(90L);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testIncrementalVariance() {
|
||||
TriangularStepFunction f = new TriangularStepFunction(100, 0);
|
||||
assertThat(f.applyAsLong(0L)).isEqualTo(0L);
|
||||
assertThat(f.applyAsLong(1L)).isEqualTo(0L);
|
||||
assertThat(f.applyAsLong(99L)).isEqualTo(0L);
|
||||
assertThat(f.applyAsLong(100L)).isEqualTo(1L);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testVariance() {
|
||||
long first=0;
|
||||
TriangularStepFunction f = new TriangularStepFunction(100,1);
|
||||
var rlestats = rleStatsFor(f, 0, 100000);
|
||||
LongSummaryStatistics stats99to101 = statsForRle((int) f.applyAsLong(first),rlestats);
|
||||
assertThat(stats99to101.getMin()).isEqualTo(99L);
|
||||
assertThat(stats99to101.getMax()).isEqualTo(101L);
|
||||
|
||||
int[][] histo = histoFor(rlestats);
|
||||
LongSummaryStatistics histoStats = new LongSummaryStatistics();
|
||||
for (int[] ints : histo) {
|
||||
histoStats.accept(ints[LABEL]);
|
||||
}
|
||||
assertThat(histoStats.getAverage()).isEqualTo(100);
|
||||
}
|
||||
|
||||
private int[] rleStatsFor(TriangularStepFunction f, long firstTrialIncl, long lastTrialExcl) {
|
||||
long firstBucket = f.applyAsLong(firstTrialIncl);
|
||||
long lastBucket = f.applyAsLong(lastTrialExcl);
|
||||
if (firstBucket>Integer.MAX_VALUE||lastBucket>Integer.MAX_VALUE) {
|
||||
throw new InvalidParameterException("can't fit result data into range of ints from long [" + firstBucket + ","+lastBucket+"]");
|
||||
}
|
||||
int base = (int) firstBucket;
|
||||
int[] counts = new int[(((int) lastBucket-(int)firstBucket))+1];
|
||||
for (long trial=firstTrialIncl; trial < lastTrialExcl; trial++) {
|
||||
long result = f.applyAsLong(trial);
|
||||
counts[(int)(result-base)]++;
|
||||
}
|
||||
// remove last partial, as only the front initial partial is compensated
|
||||
counts= Arrays.copyOfRange(counts,0,counts.length-1);
|
||||
return counts;
|
||||
}
|
||||
|
||||
private int[][] histoFor(int[] counts) {
|
||||
var minval = IntStream.of(counts).min().orElseThrow();
|
||||
var maxval = IntStream.of(counts).max().orElseThrow();
|
||||
|
||||
int[][] histo = new int[(maxval-minval)+1][2];
|
||||
for (int i = 0; i <= histo[LABEL].length; i++) {
|
||||
histo[i][LABEL]=i+minval;
|
||||
}
|
||||
|
||||
for (int count : counts) {
|
||||
System.out.println(count);
|
||||
histo[count-minval][FREQUENCY]++;
|
||||
}
|
||||
return histo;
|
||||
}
|
||||
|
||||
private LongSummaryStatistics statsForRle(int base, int[] counts) {
|
||||
LongSummaryStatistics stats = new LongSummaryStatistics();
|
||||
for (int element = 0; element < counts.length; element++) {
|
||||
int count = counts[element];
|
||||
if (count==0) {
|
||||
continue;
|
||||
}
|
||||
stats.accept(count);
|
||||
}
|
||||
return stats;
|
||||
}
|
||||
}
|
@ -4,7 +4,7 @@
|
||||
<parent>
|
||||
<artifactId>mvn-defaults</artifactId>
|
||||
<groupId>io.nosqlbench</groupId>
|
||||
<version>4.17.31-SNAPSHOT</version>
|
||||
<version>4.17.32-SNAPSHOT</version>
|
||||
<relativePath>../mvn-defaults</relativePath>
|
||||
</parent>
|
||||
|
||||
@ -22,13 +22,13 @@
|
||||
<dependency>
|
||||
<groupId>io.nosqlbench</groupId>
|
||||
<artifactId>virtdata-api</artifactId>
|
||||
<version>4.17.31-SNAPSHOT</version>
|
||||
<version>4.17.32-SNAPSHOT</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.nosqlbench</groupId>
|
||||
<artifactId>virtdata-lib-basics</artifactId>
|
||||
<version>4.17.31-SNAPSHOT</version>
|
||||
<version>4.17.32-SNAPSHOT</version>
|
||||
</dependency>
|
||||
|
||||
</dependencies>
|
||||
|
@ -7,7 +7,7 @@
|
||||
<parent>
|
||||
<artifactId>mvn-defaults</artifactId>
|
||||
<groupId>io.nosqlbench</groupId>
|
||||
<version>4.17.31-SNAPSHOT</version>
|
||||
<version>4.17.32-SNAPSHOT</version>
|
||||
<relativePath>../mvn-defaults</relativePath>
|
||||
</parent>
|
||||
|
||||
@ -20,13 +20,13 @@
|
||||
<dependency>
|
||||
<groupId>io.nosqlbench</groupId>
|
||||
<artifactId>virtdata-api</artifactId>
|
||||
<version>4.17.31-SNAPSHOT</version>
|
||||
<version>4.17.32-SNAPSHOT</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.nosqlbench</groupId>
|
||||
<artifactId>virtdata-lib-basics</artifactId>
|
||||
<version>4.17.31-SNAPSHOT</version>
|
||||
<version>4.17.32-SNAPSHOT</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
|
@ -4,7 +4,7 @@
|
||||
<parent>
|
||||
<artifactId>mvn-defaults</artifactId>
|
||||
<groupId>io.nosqlbench</groupId>
|
||||
<version>4.17.31-SNAPSHOT</version>
|
||||
<version>4.17.32-SNAPSHOT</version>
|
||||
<relativePath>../mvn-defaults</relativePath>
|
||||
</parent>
|
||||
|
||||
@ -20,7 +20,7 @@
|
||||
<dependency>
|
||||
<groupId>io.nosqlbench</groupId>
|
||||
<artifactId>virtdata-lib-basics</artifactId>
|
||||
<version>4.17.31-SNAPSHOT</version>
|
||||
<version>4.17.32-SNAPSHOT</version>
|
||||
</dependency>
|
||||
|
||||
</dependencies>
|
||||
|
@ -7,7 +7,7 @@
|
||||
<parent>
|
||||
<artifactId>mvn-defaults</artifactId>
|
||||
<groupId>io.nosqlbench</groupId>
|
||||
<version>4.17.31-SNAPSHOT</version>
|
||||
<version>4.17.32-SNAPSHOT</version>
|
||||
<relativePath>../mvn-defaults</relativePath>
|
||||
</parent>
|
||||
|
||||
@ -18,7 +18,7 @@
|
||||
<dependency>
|
||||
<groupId>io.nosqlbench</groupId>
|
||||
<artifactId>virtdata-api</artifactId>
|
||||
<version>4.17.31-SNAPSHOT</version>
|
||||
<version>4.17.32-SNAPSHOT</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
|
@ -20,7 +20,7 @@
|
||||
<parent>
|
||||
<artifactId>mvn-defaults</artifactId>
|
||||
<groupId>io.nosqlbench</groupId>
|
||||
<version>4.17.31-SNAPSHOT</version>
|
||||
<version>4.17.32-SNAPSHOT</version>
|
||||
<relativePath>../mvn-defaults</relativePath>
|
||||
</parent>
|
||||
|
||||
@ -34,42 +34,42 @@
|
||||
<dependency>
|
||||
<groupId>io.nosqlbench</groupId>
|
||||
<artifactId>virtdata-realdata</artifactId>
|
||||
<version>4.17.31-SNAPSHOT</version>
|
||||
<version>4.17.32-SNAPSHOT</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.nosqlbench</groupId>
|
||||
<artifactId>virtdata-lib-realer</artifactId>
|
||||
<version>4.17.31-SNAPSHOT</version>
|
||||
<version>4.17.32-SNAPSHOT</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.nosqlbench</groupId>
|
||||
<artifactId>virtdata-api</artifactId>
|
||||
<version>4.17.31-SNAPSHOT</version>
|
||||
<version>4.17.32-SNAPSHOT</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.nosqlbench</groupId>
|
||||
<artifactId>virtdata-lib-random</artifactId>
|
||||
<version>4.17.31-SNAPSHOT</version>
|
||||
<version>4.17.32-SNAPSHOT</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.nosqlbench</groupId>
|
||||
<artifactId>virtdata-lib-basics</artifactId>
|
||||
<version>4.17.31-SNAPSHOT</version>
|
||||
<version>4.17.32-SNAPSHOT</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.nosqlbench</groupId>
|
||||
<artifactId>virtdata-lib-curves4</artifactId>
|
||||
<version>4.17.31-SNAPSHOT</version>
|
||||
<version>4.17.32-SNAPSHOT</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>io.nosqlbench</groupId>
|
||||
<artifactId>docsys</artifactId>
|
||||
<version>4.17.31-SNAPSHOT</version>
|
||||
<version>4.17.32-SNAPSHOT</version>
|
||||
<scope>compile</scope>
|
||||
</dependency>
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user