actions-for-docs (#919)

* updated docs action with version state

* script updates

* misc doc system updates

* Update build.yml

remove versions logic, since zip contains version info now.

* Update build.yml

corrected git add command

* update version format

* updated docs site url
This commit is contained in:
Jonathan Shook 2023-01-13 11:57:08 -06:00 committed by GitHub
parent 97e992bce8
commit ff188d4860
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
33 changed files with 327 additions and 120 deletions

View File

@ -64,6 +64,7 @@ jobs:
needs: build
runs-on: ubuntu-20.04
steps:
- name: set git username
run: git config --global user.email "${{ secrets.NBDROID_EMAIL }}"
@ -95,12 +96,12 @@ jobs:
- name: set CNAME
run: |
echo "previewdocs.nosqlbench.io" > nosqlbench-build-docs/site/static/CNAME
echo "builddocs.nosqlbench.io" > nosqlbench-build-docs/site/static/CNAME
- name: commit changes
run: |
cd nosqlbench-build-docs
git add -A
git add exported_docs.zip
- name: push changes
env:

1
.gitignore vendored
View File

@ -1,3 +1,4 @@
exported_docs.zip
.nosqlbench/**
.run/**
workspaces/**

View File

@ -16,7 +16,7 @@
package io.nosqlbench.analysis;
import io.nosqlbench.api.spi.BundledApp;
import io.nosqlbench.api.apps.BundledApp;
import io.nosqlbench.nb.annotations.Service;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;

View File

@ -20,7 +20,7 @@ import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import io.nosqlbench.api.content.Content;
import io.nosqlbench.api.content.NBIO;
import io.nosqlbench.api.spi.BundledApp;
import io.nosqlbench.api.apps.BundledApp;
import io.nosqlbench.cqlgen.binders.Binding;
import io.nosqlbench.cqlgen.binders.BindingsAccumulator;
import io.nosqlbench.cqlgen.api.BindingsLibrary;

View File

@ -1,6 +1,6 @@
# cqld4 driver
# cqld4
This is the newly revamped (beta) driver for CQL which uses the DataStax OSS Driver version 4. As
This is the newly revamped driver for CQL which uses the DataStax OSS Driver version 4. As
there was a significant restructuring of the APIs between CQL driver 4.x and previous versions, this
driver is a clean and separate implementation which aims to use the features of version 4.x of the
native driver directly as well as new internal NoSQLBench APIs.
@ -38,20 +38,20 @@ mixing in JSON or remote URLs.
Configure directly from a config file, or classpath resource:
```shell
# If this isn't found in the file system, the classpath will also be checked.
driverconfig=myconfig.json
nb5 ... driverconfig=myconfig.json
```
Configure directly from JSON:
driverconfig='{basic.request.timeout:"2 seconds"}'
```shell
nb5 ... driverconfig='{basic.request.timeout:"2 seconds"}'
```
Configure directly form a remote URL:
driverconfig='http://gist.github.com...'
Configure from multiple sources:
driverconfig=myconfig.json
```shell
nb5 ... driverconfig='http://gist.github.com...'
```
### Basic Cqld4 driver options
@ -109,6 +109,7 @@ classic form have not changed.
## CQLd4 Op Template Examples
```yaml
ops:
# prepared statement
@ -151,6 +152,7 @@ classic form have not changed.
example-raw-gremlin-stmt:
gremlin: >-
g.V().hasLabel("device").has("deviceid", UUID.fromString('{deviceid})')
```
## CQL Op Template - Optional Fields

View File

@ -1,4 +1,6 @@
# cqlgen - A default CQL workload generator
# cqlgen
cqlgen is a default CQL workload generator
With NB5, the cqld4 driver comes with a workload generator that can be used to generate a
workload yaml from a CQL schema file.

View File

@ -1,4 +1,4 @@
# dynamodb driver
# dynamodb
The DynamoDB driver supports a basic set of commands as specified at
[Amazon DynamoDB Docs](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_Operations_Amazon_DynamoDB.html).

View File

@ -1,4 +1,4 @@
# HTTP driver
# http
This driver allows you to make http requests using the native HTTP client
that is bundled with the JVM. It supports free-form construction of

View File

@ -1,4 +1,4 @@
# MongoDB Driver
# MongoDB
This is a driver for MongoDB. It supports the `db.runCommand` API described in [here](https://docs.mongodb.com/manual/reference/command/).
@ -10,7 +10,9 @@ for details on command structure.
Run a mongodb activity with definitions from activities/mongodb-basic.yaml
... driver=mongodb yaml=activities/mongo-basic.yaml
```shell
nb5 driver=mongodb yaml=activities/mongo-basic.yaml
```
### MongoDB ActivityType Parameters

View File

@ -1,15 +1,4 @@
# Table of contents
- [1. Overview](#1-overview)
- [1.1. Issues Tracker](#1-1-issues-tracker)
- [2. Execute the NB Pulsar Driver Workload](#2-execute-the-nb-pulsar-driver-workload)
- [2.1. NB Pulsar Driver Yaml File High Level Structure](#2-1-nb-pulsar-driver-yaml-file-high-level-structure)
- [2.2. NB Pulsar Driver Configuration Parameters](#2-2-nb-pulsar-driver-configuration-parameters)
- [2.2.1. Global Level Parameters](#2-2-1-global-level-parameters)
- [2.2.2. Document Level Parameters](#2-2-2-document-level-parameters)
- [3. NB Pulsar Driver OpTemplates](#3-nb-pulsar-driver-optemplates)
- [4. Message Generation and Schema Support](#4-message-generation-and-schema-support)
- [4.1. Message Generation](#4-1-message-generation)
- [4.2. Schema Support](#4-2-schema-support)
# pulsar
# 1. Overview

View File

@ -1,18 +1,7 @@
---
weight: 0
title: S4J Adapter
title: S4J
---
# S4J Adapter
- [1. Overview](#1-overview)
- [2. Execute NB S4J Workload](#2-execute-nb-s4j-workload)
- [3. NB S4J Driver Configuration Parameter File](#3-nb-s4j-driver-configuration-parameter-file)
- [4. NB S4J Scenario Definition File](#4-nb-s4j-scenario-definition-file)
- [4.1. Document Level Parameters](#4-1-document-level-parameters)
- [4.2. NB S4J Workload Types](#4-2-nb-s4j-workload-types)
- [4.2.1. Publish Messages to a JMS Destination, Queue or Topic](#4-2-1-publish-messages-to-a-jms-destination-queue-or-topic)
- [4.2.2. Receiving Messages from a JMS Destination, Queue or Topic](#4-2-2-receiving-messages-from-a-jms-destination-queue-or-topic)
# 1. Overview
This driver is similar to [NB Pulsar driver](../../../../driver-pulsar/src/main/resources/pulsar.md) that allows NB based workload generation and performance testing against a Pulsar cluster. It also follows a similar pattern to configure and connect to the Pulsar cluster for workload execution.
@ -23,7 +12,7 @@ However, the major difference is instead of simulating native Pulsar client work
The following is an example of executing a NB S4J workload (defined as *pulsar_s4j.yaml*)
```
```shell
$ <nb_cmd> run driver=s4j cycles=10000 threads=4 num_conn=2 num_session=2 session_mode="client_ack" strict_msg_error_handling="false" web_url=http://localhost:8080 service_url=pulsar://localhost:6650 config=/path/to/nb_s4j_config.properties yaml=/path/to/pulsar_s4j.yaml -vv --logs-dir=s4j_log
```
@ -153,7 +142,7 @@ The NB S4J statement block for publishing messages to a JMS destination (either
* The default message type (**msg_type**) is "byte". But optionally, you can specify other message types such as "text", "map", etc.
* The message payload (**msg_body**) is the only mandatory field.
```
```yaml
blocks:
msg-produce-block:
ops:
@ -196,7 +185,8 @@ The generic NB S4J statement block for receiving messages to a JMS destination (
* negative ack/ack timeout/deadletter topic related settings
* The settings here (as the scenario specific settings) will be merged with the
* global settings in *s4j_config.properties* file
```
```yaml
blocks:
msg-produce-block:
ops:

View File

@ -1,4 +1,4 @@
# stdout activity type
# stdout
This is an activity type which allows for the generation of data
into to stdout or a file. It reads the standard nosqlbench YAML
@ -9,15 +9,21 @@ that uses the curly brace token form in statements.
Run a stdout activity named 'stdout-test', with definitions from activities/stdout-test.yaml
... driver=stdout workload=stdout-test
```shell
nb5 driver=stdout workload=stdout-test
```
Only run statement groups which match a tag regex
... driver=stdout workload=stdout-test tags=group:'ddl.*'
```shell
nb5 driver=stdout workload=stdout-test tags=group:'ddl.*'
```
Run the matching 'dml' statements, with 100 cycles, from [1000..1100)
... driver=stdout workload=stdout-test tags=group:'dml.*' cycles=1000..11000 filename=test.csv
```shell
nb5 driver=stdout workload=stdout-test tags=group:'dml.*' cycles=1000..11000 filename=test.csv
```
This last example shows that the cycle range is [inclusive..exclusive),
to allow for stacking test intervals. This is standard across all
@ -60,15 +66,21 @@ For more details on this format, please refer to the
The statement format for this activity type is a simple string. Tokens between
curly braces are used to refer to binding names, as in the following example:
statements:
- "It is {minutes} past {hour}."
```yaml
ops:
op1: "It is {minutes} past {hour}."
```
If you want to suppress the trailing newline that is automatically added, then
you must either pass `newline=false` as an activity param, or specify it
in the statement params in your config as in:
params:
```yaml
ops:
op1:
stmt: "It is {minutes} past {hour}."
newline: false
```
### Auto-generated statements
@ -76,13 +88,17 @@ If no statement is provided, then the defined binding names are used as-is
to create a CSV-style line format. The values are concatenated with
comma delimiters, so a set of bindings like this:
```yaml
bindings:
one: Identity()
two: NumberNameToString()
```
would create an automatic string template like this:
statements:
- "{one},{two}\n"
```yaml
ops:
op1: "{one},{two}\n"
```
The auto-generation behavior is forced when the format parameter is supplied.

View File

@ -1,4 +1,4 @@
# Driver: tcpclient
# tcpclient
**tcpclient acts like a _client push_ version of stdout over TCP**

View File

@ -1,4 +1,4 @@
# Driver: tcpserver
# tcpserver
**tcpserver acts like a _server push_ version of stdout over TCP**

View File

@ -1,5 +1,5 @@
/*
* Copyright (c) 2022 nosqlbench
* Copyright (c) 2022-2023 nosqlbench
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@ -14,20 +14,17 @@
* limitations under the License.
*/
package io.nosqlbench.engine.api.activityimpl.uniform;
package io.nosqlbench.engine.api.activityimpl.docs;
import io.nosqlbench.api.docsapi.BundledMarkdownManifest;
import io.nosqlbench.api.docsapi.Docs;
import io.nosqlbench.api.docsapi.DocsBinder;
import io.nosqlbench.api.docsapi.DocsNameSpace;
import io.nosqlbench.api.spi.SimpleServiceLoader;
import io.nosqlbench.engine.api.activityimpl.uniform.DriverAdapter;
import io.nosqlbench.nb.annotations.Maturity;
import io.nosqlbench.nb.annotations.Service;
import io.nosqlbench.api.spi.SimpleServiceLoader;
import java.nio.file.Path;
import java.util.List;
import java.util.Map;
import java.util.Set;
@Service(value = BundledMarkdownManifest.class, selector = "drivers")
public class BundledDriverAdapterDocs implements BundledMarkdownManifest {

View File

@ -0,0 +1,39 @@
/*
* Copyright (c) 2023 nosqlbench
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package io.nosqlbench.engine.api.specifications;
import io.nosqlbench.api.content.Content;
import io.nosqlbench.api.content.NBIO;
import io.nosqlbench.api.docsapi.BundledMarkdownManifest;
import io.nosqlbench.api.docsapi.Docs;
import io.nosqlbench.api.docsapi.DocsBinder;
import io.nosqlbench.nb.annotations.Service;
import java.util.List;
@Service(value = BundledMarkdownManifest.class, selector = "specifications")
public class SpecDocsManifest implements BundledMarkdownManifest {
@Override
public DocsBinder getDocs() {
Docs docs = new Docs().namespace("workload_definition");
List<Content<?>> specfiles = NBIO.classpath().prefix("workload_definition/").extension(".md").list();
for (Content<?> specfile : specfiles) {
docs.addPath(specfile.asPath());
}
return docs;
}
}

View File

@ -1,5 +1,5 @@
/*
* Copyright (c) 2022 nosqlbench
* Copyright (c) 2023 nosqlbench
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@ -14,10 +14,17 @@
* limitations under the License.
*/
package io.nosqlbench.api.spi;
package io.nosqlbench.engine.api.activityconfig.specifications;
import java.util.function.ToIntFunction;
import io.nosqlbench.api.docsapi.BundledMarkdownManifest;
import io.nosqlbench.api.docsapi.Docs;
import io.nosqlbench.api.docsapi.DocsBinder;
public interface BundledApp extends ToIntFunction<String[]> {
public class SpecificationDocsManifest implements BundledMarkdownManifest {
@Override
public DocsBinder getDocs() {
Docs docs = new Docs();
return docs;
}
}

View File

@ -1,5 +1,5 @@
/*
* Copyright (c) 2022 nosqlbench
* Copyright (c) 2022-2023 nosqlbench
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@ -14,7 +14,7 @@
* limitations under the License.
*/
package io.nosqlbench.engine.api.activityconfig.rawyaml;
package io.nosqlbench.engine.api.activityconfig.specifications;
import com.vladsch.flexmark.ast.FencedCodeBlock;
import io.nosqlbench.nb.spectest.core.SpecTest;

View File

@ -1,5 +1,5 @@
/*
* Copyright (c) 2022 nosqlbench
* Copyright (c) 2022-2023 nosqlbench
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@ -14,11 +14,12 @@
* limitations under the License.
*/
package io.nosqlbench.engine.api.activityconfig.rawyaml;
package io.nosqlbench.engine.api.activityconfig.specifications;
import com.google.gson.*;
import com.google.gson.reflect.TypeToken;
import io.nosqlbench.engine.api.activityconfig.StatementsLoader;
import io.nosqlbench.engine.api.activityconfig.rawyaml.RawYamlLoader;
import io.nosqlbench.engine.api.activityconfig.yaml.OpTemplate;
import io.nosqlbench.engine.api.activityconfig.yaml.StmtsDocList;
import io.nosqlbench.nb.spectest.api.STAssemblyValidator;

View File

@ -16,7 +16,7 @@
package io.nosqlbench.docsys.core;
import io.nosqlbench.api.spi.BundledApp;
import io.nosqlbench.api.apps.BundledApp;
import io.nosqlbench.nb.annotations.Service;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;

View File

@ -25,7 +25,7 @@ import io.nosqlbench.api.errors.BasicError;
import io.nosqlbench.api.logging.NBLogLevel;
import io.nosqlbench.api.metadata.SessionNamer;
import io.nosqlbench.api.metadata.SystemId;
import io.nosqlbench.api.spi.BundledApp;
import io.nosqlbench.api.apps.BundledApp;
import io.nosqlbench.engine.api.activityapi.cyclelog.outputs.cyclelog.CycleLogDumperUtility;
import io.nosqlbench.engine.api.activityapi.cyclelog.outputs.cyclelog.CycleLogImporterUtility;
import io.nosqlbench.engine.api.activityapi.input.InputType;

View File

@ -445,6 +445,16 @@
<testResources>
<testResource>
<directory>src/test/resources</directory>
<excludes>
<exclude>log4j2-test.xml</exclude>
</excludes>
<filtering>true</filtering>
</testResource>
<testResource>
<directory>src/test/resources</directory>
<includes>
<include>log4j2-test.xml</include>
</includes>
<filtering>true</filtering>
</testResource>
</testResources>

View File

@ -0,0 +1,51 @@
/*
* Copyright (c) 2022-2023 nosqlbench
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package io.nosqlbench.api.apps;
import io.nosqlbench.api.content.Content;
import io.nosqlbench.api.content.NBIO;
import io.nosqlbench.api.docsapi.Docs;
import io.nosqlbench.api.docsapi.DocsBinder;
import io.nosqlbench.nb.annotations.Service;
import java.util.Optional;
import java.util.function.ToIntFunction;
public interface BundledApp extends ToIntFunction<String[]> {
int applyAsInt(String[] value);
default String getBundledAppName() {
return this.getClass().getAnnotation(Service.class).selector();
}
default DocsBinder getBundledDocs() {
Docs docs = new Docs().namespace("apps");
String dev_docspath = "app-" + this.getBundledAppName() + "/src/main/resources/docs/" + this.getBundledAppName();
String cp_docspath = "docs/" + this.getBundledAppName();
Optional<Content<?>> bundled_docs = NBIO.local().name(dev_docspath, cp_docspath).first();
bundled_docs.map(Content::asPath).ifPresent(docs::addContentsOf);
Optional<Content<?>> maindoc = NBIO.local().name("/src/main/resources/" + this.getBundledAppName() + ".md", this.getBundledAppName() + ".md").first();
maindoc.map(Content::asPath).ifPresent(docs::addPath);
return docs.asDocsBinder();
}
}

View File

@ -0,0 +1,42 @@
/*
* Copyright (c) 2023 nosqlbench
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package io.nosqlbench.api.apps;
import io.nosqlbench.api.docsapi.BundledMarkdownManifest;
import io.nosqlbench.api.docsapi.Docs;
import io.nosqlbench.api.docsapi.DocsBinder;
import io.nosqlbench.api.spi.SimpleServiceLoader;
import io.nosqlbench.nb.annotations.Maturity;
import io.nosqlbench.nb.annotations.Service;
import java.util.List;
@Service(value = BundledMarkdownManifest.class, selector = "apps")
public class BundledAppDocs implements BundledMarkdownManifest {
@Override
public DocsBinder getDocs() {
DocsBinder docs = new Docs();
SimpleServiceLoader<BundledApp> loader = new SimpleServiceLoader<>(BundledApp.class, Maturity.Any);
List<SimpleServiceLoader.Component<? extends BundledApp>> namedProviders = loader.getNamedProviders();
for (SimpleServiceLoader.Component<? extends BundledApp> namedProvider : namedProviders) {
BundledApp app = namedProvider.provider.get();
DocsBinder bundledDocs = app.getBundledDocs();
docs = docs.merge(bundledDocs);
}
return docs;
}
}

View File

@ -18,6 +18,7 @@ package io.nosqlbench.api.docsapi;
import java.util.ServiceLoader;
public class BundledMarkdownLoader {
public static DocsBinder loadBundledMarkdown() {

View File

@ -19,7 +19,7 @@ package io.nosqlbench.api.markdown.exporter;
import io.nosqlbench.api.markdown.aggregator.MarkdownDocs;
import io.nosqlbench.api.markdown.types.DocScope;
import io.nosqlbench.api.markdown.types.MarkdownInfo;
import io.nosqlbench.api.spi.BundledApp;
import io.nosqlbench.api.apps.BundledApp;
import io.nosqlbench.nb.annotations.Service;
import joptsimple.*;

View File

@ -24,6 +24,7 @@ import io.nosqlbench.nb.spectest.api.STBuilderFacets;
import io.nosqlbench.nb.spectest.api.STPathLoader;
import java.nio.file.Path;
import java.util.ArrayList;
import java.util.LinkedHashSet;
import java.util.List;
import java.util.Set;
@ -86,6 +87,15 @@ public class SpecTest implements Runnable {
}
}
public List<Path> matchingSpecFiles() {
List<Path> paths = new ArrayList<>();
for (Path path : paths) {
List<Path> matchingPaths = STFileScanner.findMatching(".*\\.md", paths.toArray(new Path[0]));
paths.addAll(matchingPaths);
}
return paths;
}
@Override
public void run() {
Set<STNodeAssembly> testables = new LinkedHashSet<>();

View File

@ -73,6 +73,10 @@
<resources>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>version.properties</include>
<include>nb_version_info.md</include>
</includes>
<filtering>true</filtering>
</resource>
</resources>

View File

@ -16,7 +16,7 @@
package io.nosqlbench.api.docsapi.docexporter;
import io.nosqlbench.api.spi.BundledApp;
import io.nosqlbench.api.apps.BundledApp;
import io.nosqlbench.nb.annotations.Service;
import joptsimple.OptionParser;
import joptsimple.OptionSet;

View File

@ -0,0 +1,34 @@
/*
* Copyright (c) 2023 nosqlbench
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package io.nosqlbench.api.docsapi.docexporter;
import io.nosqlbench.api.content.NBIO;
import io.nosqlbench.api.docsapi.BundledMarkdownManifest;
import io.nosqlbench.api.docsapi.Docs;
import io.nosqlbench.api.docsapi.DocsBinder;
import io.nosqlbench.nb.annotations.Service;
@Service(value=BundledMarkdownManifest.class,selector = "versions")
public class BundledVersionManifest implements BundledMarkdownManifest {
@Override
public DocsBinder getDocs() {
return new Docs()
.namespace("versions")
.addPath(NBIO.classpath().name("nb_version_info.md").one().asPath())
.asDocsBinder();
}
}

View File

@ -0,0 +1,9 @@
# Version Info
The version of NB5 which provided some of the docs content is:
```
version=${project.version}
groupId=${project.groupId}
artifactId=${project.artifactId}
```

View File

@ -16,10 +16,9 @@
package io.nosqlbench.virtdata.userlibs.apps;
import io.nosqlbench.api.spi.BundledApp;
import io.nosqlbench.api.apps.BundledApp;
import io.nosqlbench.nb.annotations.Service;
import io.nosqlbench.virtdata.userlibs.apps.diagnoseapp.VirtDataDiagnoseApp;
import io.nosqlbench.virtdata.userlibs.apps.docsapp.VirtDataGenDocsApp;
import io.nosqlbench.virtdata.userlibs.apps.valuechecker.VirtDataCheckPerfApp;
import java.util.Arrays;

View File

@ -16,7 +16,7 @@
package io.nosqlbench.virtdata.userlibs.apps.summarizer;
import io.nosqlbench.api.spi.BundledApp;
import io.nosqlbench.api.apps.BundledApp;
import io.nosqlbench.nb.annotations.Service;
import io.nosqlbench.virtdata.core.bindings.DataMapper;
import io.nosqlbench.virtdata.core.bindings.VirtData;