mirror of
https://github.com/nosqlbench/nosqlbench.git
synced 2025-02-25 18:55:28 -06:00
adding op functionality
This commit is contained in:
parent
f5b9660b31
commit
a76f69d227
@ -29,13 +29,13 @@ import io.nosqlbench.nb.api.labels.NBLabels;
|
||||
import java.util.function.Function;
|
||||
|
||||
@Service(value = DriverAdapter.class, selector = "dataapi")
|
||||
public class DataApiDriverAdapter extends BaseDriverAdapter<DataApiBaseOp<?>, DataApiSpace> {
|
||||
public class DataApiDriverAdapter extends BaseDriverAdapter<DataApiBaseOp, DataApiSpace> {
|
||||
public DataApiDriverAdapter(NBComponent parent, NBLabels childLabels) {
|
||||
super(parent, childLabels);
|
||||
}
|
||||
|
||||
@Override
|
||||
public OpMapper<DataApiBaseOp<?>> getOpMapper() {
|
||||
public OpMapper getOpMapper() {
|
||||
return new DataApiOpMapper(this);
|
||||
}
|
||||
|
||||
|
@ -26,7 +26,7 @@ import io.nosqlbench.engine.api.templating.TypeAndTarget;
|
||||
import org.apache.logging.log4j.LogManager;
|
||||
import org.apache.logging.log4j.Logger;
|
||||
|
||||
public class DataApiOpMapper implements OpMapper<DataApiBaseOp<?>> {
|
||||
public class DataApiOpMapper implements OpMapper<DataApiBaseOp> {
|
||||
private static final Logger logger = LogManager.getLogger(DataApiOpMapper.class);
|
||||
private final DataApiDriverAdapter adapter;
|
||||
|
||||
@ -35,7 +35,7 @@ public class DataApiOpMapper implements OpMapper<DataApiBaseOp<?>> {
|
||||
}
|
||||
|
||||
@Override
|
||||
public OpDispenser<? extends DataApiBaseOp<?>> apply(ParsedOp op) {
|
||||
public OpDispenser<? extends DataApiBaseOp> apply(ParsedOp op) {
|
||||
TypeAndTarget<DataApiOpType, String> typeAndTarget = op.getTypeAndTarget(
|
||||
DataApiOpType.class,
|
||||
String.class,
|
||||
@ -55,7 +55,7 @@ public class DataApiOpMapper implements OpMapper<DataApiBaseOp<?>> {
|
||||
case update_many -> new DataApiUpdateManyOpDispenser(adapter, op, typeAndTarget.targetFunction);
|
||||
case delete_one -> new DataApiDeleteOneOpDispenser(adapter, op, typeAndTarget.targetFunction);
|
||||
case delete_many -> new DataApiDeleteManyOpDispenser(adapter, op, typeAndTarget.targetFunction);
|
||||
case delete_collection -> new DataApiDeleteCollectionOpDispenser(adapter, op, typeAndTarget.targetFunction);
|
||||
case delete_collection -> new DataApiDropCollectionOpDispenser(adapter, op, typeAndTarget.targetFunction);
|
||||
};
|
||||
}
|
||||
}
|
||||
|
@ -16,6 +16,7 @@
|
||||
|
||||
package io.nosqlbench.adapter.dataapi;
|
||||
|
||||
import com.datastax.astra.client.Collection;
|
||||
import com.datastax.astra.client.DataAPIClient;
|
||||
import com.datastax.astra.client.Database;
|
||||
import io.nosqlbench.nb.api.config.standard.ConfigModel;
|
||||
@ -58,6 +59,10 @@ public class DataApiSpace {
|
||||
private void createClient() {
|
||||
this.dataAPIClient = new DataAPIClient(astraToken);
|
||||
this.database = dataAPIClient.getDatabase(astraApiEndpoint);
|
||||
// database.getCollection("test");
|
||||
// database.listCollections().forEach(System.out::println);
|
||||
// Collection collection = database.getCollection("test");
|
||||
// collection.deleteMany()
|
||||
}
|
||||
|
||||
private void setApiEndpoint() {
|
||||
|
@ -16,46 +16,58 @@
|
||||
|
||||
package io.nosqlbench.adapter.dataapi.opdispensers;
|
||||
|
||||
import com.datastax.astra.client.model.CollectionOptions;
|
||||
import com.datastax.astra.client.model.SimilarityMetric;
|
||||
import io.nosqlbench.adapter.dataapi.DataApiDriverAdapter;
|
||||
import io.nosqlbench.adapter.dataapi.ops.DataApiBaseOp;
|
||||
import io.nosqlbench.adapters.api.evalctx.CycleFunction;
|
||||
import io.nosqlbench.adapter.dataapi.ops.DataApiCreateCollectionOp;
|
||||
import io.nosqlbench.adapters.api.templating.ParsedOp;
|
||||
import org.apache.logging.log4j.LogManager;
|
||||
import org.apache.logging.log4j.Logger;
|
||||
|
||||
import java.util.Optional;
|
||||
import java.util.function.LongFunction;
|
||||
|
||||
public class DataApiCreateCollectionOpDispenser extends DataApiBaseOpDispenser {
|
||||
public class DataApiCreateCollectionOpDispenser extends DataApiOpDispenser {
|
||||
private static final Logger logger = LogManager.getLogger(DataApiCreateCollectionOpDispenser.class);
|
||||
private final LongFunction<DataApiCreateCollectionOp> opFunction;
|
||||
|
||||
public DataApiCreateCollectionOpDispenser(DataApiDriverAdapter adapter, ParsedOp op, LongFunction<String> targetFunction) {
|
||||
super(adapter, op);
|
||||
super(adapter, op, targetFunction);
|
||||
this.opFunction = createOpFunction(op);
|
||||
}
|
||||
|
||||
private LongFunction<DataApiCreateCollectionOp> createOpFunction(ParsedOp op) {
|
||||
return (l) -> {
|
||||
CollectionOptions.CollectionOptionsBuilder optionsBldr = CollectionOptions.builder();
|
||||
Optional<LongFunction<Integer>> dimFunc = op.getAsOptionalFunction("dimensions", Integer.class);
|
||||
if (dimFunc.isPresent()) {
|
||||
LongFunction<Integer> af = dimFunc.get();
|
||||
optionsBldr.vectorDimension(af.apply(l));
|
||||
}
|
||||
// COSINE("cosine"),
|
||||
// EUCLIDEAN("euclidean"),
|
||||
// DOT_PRODUCT("dot_product");
|
||||
Optional<LongFunction<String>> simFunc = op.getAsOptionalFunction("similarity", String.class);
|
||||
if (simFunc.isPresent()) {
|
||||
LongFunction<String> sf = simFunc.get();
|
||||
optionsBldr.vectorSimilarity(SimilarityMetric.valueOf(sf.apply(l)));
|
||||
}
|
||||
|
||||
DataApiCreateCollectionOp dataApiCreateCollectionOp =
|
||||
new DataApiCreateCollectionOp(
|
||||
spaceFunction.apply(l).getDatabase(),
|
||||
targetFunction.apply(l),
|
||||
optionsBldr.build());
|
||||
|
||||
return dataApiCreateCollectionOp;
|
||||
};
|
||||
}
|
||||
|
||||
@Override
|
||||
public DataApiBaseOp<?> getOp(long value) {
|
||||
return null;
|
||||
public DataApiBaseOp getOp(long value) {
|
||||
return opFunction.apply(value);
|
||||
}
|
||||
|
||||
@Override
|
||||
public CycleFunction<Boolean> getVerifier() {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getOpName() {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onStart(long cycleValue) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onSuccess(long cycleValue, long nanoTime) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onError(long cycleValue, long resultNanos, Throwable t) {
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -22,13 +22,13 @@ import io.nosqlbench.adapters.api.templating.ParsedOp;
|
||||
|
||||
import java.util.function.LongFunction;
|
||||
|
||||
public class DataApiDeleteManyOpDispenser extends DataApiBaseOpDispenser {
|
||||
public class DataApiDeleteManyOpDispenser extends DataApiOpDispenser {
|
||||
public DataApiDeleteManyOpDispenser(DataApiDriverAdapter adapter, ParsedOp op, LongFunction<String> targetFunction) {
|
||||
super(adapter, op);
|
||||
super(adapter, op, targetFunction);
|
||||
}
|
||||
|
||||
@Override
|
||||
public DataApiBaseOp<DataApiBaseOp<?>> getOp(long value) {
|
||||
public DataApiBaseOp getOp(long value) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
@ -22,13 +22,13 @@ import io.nosqlbench.adapters.api.templating.ParsedOp;
|
||||
|
||||
import java.util.function.LongFunction;
|
||||
|
||||
public class DataApiDeleteOneOpDispenser extends DataApiBaseOpDispenser {
|
||||
public class DataApiDeleteOneOpDispenser extends DataApiOpDispenser {
|
||||
public DataApiDeleteOneOpDispenser(DataApiDriverAdapter adapter, ParsedOp op, LongFunction<String> targetFunction) {
|
||||
super(adapter, op);
|
||||
super(adapter, op, targetFunction);
|
||||
}
|
||||
|
||||
@Override
|
||||
public DataApiBaseOp<DataApiBaseOp<?>> getOp(long value) {
|
||||
public DataApiBaseOp getOp(long value) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
@ -0,0 +1,47 @@
|
||||
/*
|
||||
* Copyright (c) 2024 nosqlbench
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package io.nosqlbench.adapter.dataapi.opdispensers;
|
||||
|
||||
import io.nosqlbench.adapter.dataapi.DataApiDriverAdapter;
|
||||
import io.nosqlbench.adapter.dataapi.ops.DataApiBaseOp;
|
||||
import io.nosqlbench.adapter.dataapi.ops.DataApiDropCollectionOp;
|
||||
import io.nosqlbench.adapters.api.templating.ParsedOp;
|
||||
import org.apache.logging.log4j.LogManager;
|
||||
import org.apache.logging.log4j.Logger;
|
||||
|
||||
import java.util.function.LongFunction;
|
||||
|
||||
public class DataApiDropCollectionOpDispenser extends DataApiOpDispenser {
|
||||
private static final Logger logger = LogManager.getLogger(DataApiDropCollectionOpDispenser.class);
|
||||
private final LongFunction<DataApiDropCollectionOp> opFunction;
|
||||
public DataApiDropCollectionOpDispenser(DataApiDriverAdapter adapter, ParsedOp op, LongFunction<String> targetFunction) {
|
||||
super(adapter, op, targetFunction);
|
||||
this.opFunction = createOpFunction(op);
|
||||
}
|
||||
|
||||
private LongFunction<DataApiDropCollectionOp> createOpFunction(ParsedOp op) {
|
||||
return (l) -> new DataApiDropCollectionOp(
|
||||
spaceFunction.apply(l).getDatabase(),
|
||||
targetFunction.apply(l)
|
||||
);
|
||||
}
|
||||
|
||||
@Override
|
||||
public DataApiBaseOp getOp(long value) {
|
||||
return opFunction.apply(value);
|
||||
}
|
||||
}
|
@ -22,13 +22,13 @@ import io.nosqlbench.adapters.api.templating.ParsedOp;
|
||||
|
||||
import java.util.function.LongFunction;
|
||||
|
||||
public class DataApiFindOneAndDeleteOpDispenser extends DataApiBaseOpDispenser {
|
||||
public class DataApiFindOneAndDeleteOpDispenser extends DataApiOpDispenser {
|
||||
public DataApiFindOneAndDeleteOpDispenser(DataApiDriverAdapter adapter, ParsedOp op, LongFunction<String> targetFunction) {
|
||||
super(adapter, op);
|
||||
super(adapter, op, targetFunction);
|
||||
}
|
||||
|
||||
@Override
|
||||
public DataApiBaseOp<DataApiBaseOp<?>> getOp(long value) {
|
||||
public DataApiBaseOp getOp(long value) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
@ -22,13 +22,13 @@ import io.nosqlbench.adapters.api.templating.ParsedOp;
|
||||
|
||||
import java.util.function.LongFunction;
|
||||
|
||||
public class DataApiFindOneAndUpdateOpDispenser extends DataApiBaseOpDispenser {
|
||||
public class DataApiFindOneAndUpdateOpDispenser extends DataApiOpDispenser {
|
||||
public DataApiFindOneAndUpdateOpDispenser(DataApiDriverAdapter adapter, ParsedOp op, LongFunction<String> targetFunction) {
|
||||
super(adapter, op);
|
||||
super(adapter, op, targetFunction);
|
||||
}
|
||||
|
||||
@Override
|
||||
public DataApiBaseOp<DataApiBaseOp<?>> getOp(long value) {
|
||||
public DataApiBaseOp getOp(long value) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
@ -22,13 +22,13 @@ import io.nosqlbench.adapters.api.templating.ParsedOp;
|
||||
|
||||
import java.util.function.LongFunction;
|
||||
|
||||
public class DataApiFindOneOpDispenser extends DataApiBaseOpDispenser {
|
||||
public class DataApiFindOneOpDispenser extends DataApiOpDispenser {
|
||||
public DataApiFindOneOpDispenser(DataApiDriverAdapter adapter, ParsedOp op, LongFunction<String> targetFunction) {
|
||||
super(adapter, op);
|
||||
super(adapter, op, targetFunction);
|
||||
}
|
||||
|
||||
@Override
|
||||
public DataApiBaseOp<DataApiBaseOp<?>> getOp(long value) {
|
||||
public DataApiBaseOp getOp(long value) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
@ -22,13 +22,13 @@ import io.nosqlbench.adapters.api.templating.ParsedOp;
|
||||
|
||||
import java.util.function.LongFunction;
|
||||
|
||||
public class DataApiFindOpDispenser extends DataApiBaseOpDispenser {
|
||||
public class DataApiFindOpDispenser extends DataApiOpDispenser {
|
||||
public DataApiFindOpDispenser(DataApiDriverAdapter adapter, ParsedOp op, LongFunction<String> targetFunction) {
|
||||
super(adapter, op);
|
||||
super(adapter, op, targetFunction);
|
||||
}
|
||||
|
||||
@Override
|
||||
public DataApiBaseOp<DataApiBaseOp<?>> getOp(long value) {
|
||||
public DataApiBaseOp getOp(long value) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
@ -22,13 +22,13 @@ import io.nosqlbench.adapters.api.templating.ParsedOp;
|
||||
|
||||
import java.util.function.LongFunction;
|
||||
|
||||
public class DataApiInsertManyOpDispenser extends DataApiBaseOpDispenser {
|
||||
public class DataApiInsertManyOpDispenser extends DataApiOpDispenser {
|
||||
public DataApiInsertManyOpDispenser(DataApiDriverAdapter adapter, ParsedOp op, LongFunction<String> targetFunction) {
|
||||
super(adapter, op);
|
||||
super(adapter, op, targetFunction);
|
||||
}
|
||||
|
||||
@Override
|
||||
public DataApiBaseOp<DataApiBaseOp<?>> getOp(long value) {
|
||||
public DataApiBaseOp getOp(long value) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
@ -22,13 +22,13 @@ import io.nosqlbench.adapters.api.templating.ParsedOp;
|
||||
|
||||
import java.util.function.LongFunction;
|
||||
|
||||
public class DataApiInsertOneOpDispenser extends DataApiBaseOpDispenser {
|
||||
public class DataApiInsertOneOpDispenser extends DataApiOpDispenser {
|
||||
public DataApiInsertOneOpDispenser(DataApiDriverAdapter adapter, ParsedOp op, LongFunction<String> targetFunction) {
|
||||
super(adapter, op);
|
||||
super(adapter, op, targetFunction);
|
||||
}
|
||||
|
||||
@Override
|
||||
public DataApiBaseOp<DataApiBaseOp<?>> getOp(long value) {
|
||||
public DataApiBaseOp getOp(long value) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
@ -22,10 +22,17 @@ import io.nosqlbench.adapters.api.activityimpl.BaseOpDispenser;
|
||||
import io.nosqlbench.adapters.api.activityimpl.uniform.DriverAdapter;
|
||||
import io.nosqlbench.adapters.api.templating.ParsedOp;
|
||||
|
||||
public abstract class DataApiBaseOpDispenser extends BaseOpDispenser<DataApiBaseOp<?>, DataApiSpace> {
|
||||
import java.util.function.LongFunction;
|
||||
|
||||
protected DataApiBaseOpDispenser(DriverAdapter<? extends DataApiBaseOp<?>,? extends DataApiSpace> adapter, ParsedOp op) {
|
||||
public abstract class DataApiOpDispenser extends BaseOpDispenser<DataApiBaseOp, DataApiSpace> {
|
||||
protected final LongFunction<String> targetFunction;
|
||||
protected final LongFunction<DataApiSpace> spaceFunction;
|
||||
|
||||
protected DataApiOpDispenser(DriverAdapter<? extends DataApiBaseOp, DataApiSpace> adapter, ParsedOp op,
|
||||
LongFunction<String> targetFunction) {
|
||||
super(adapter, op);
|
||||
this.targetFunction = targetFunction;
|
||||
this.spaceFunction = adapter.getSpaceFunc(op);
|
||||
}
|
||||
|
||||
}
|
@ -22,13 +22,13 @@ import io.nosqlbench.adapters.api.templating.ParsedOp;
|
||||
|
||||
import java.util.function.LongFunction;
|
||||
|
||||
public class DataApiUpdateManyOpDispenser extends DataApiBaseOpDispenser {
|
||||
public class DataApiUpdateManyOpDispenser extends DataApiOpDispenser {
|
||||
public DataApiUpdateManyOpDispenser(DataApiDriverAdapter adapter, ParsedOp op, LongFunction<String> targetFunction) {
|
||||
super(adapter, op);
|
||||
super(adapter, op, targetFunction);
|
||||
}
|
||||
|
||||
@Override
|
||||
public DataApiBaseOp<DataApiBaseOp<?>> getOp(long value) {
|
||||
public DataApiBaseOp getOp(long value) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
@ -22,13 +22,13 @@ import io.nosqlbench.adapters.api.templating.ParsedOp;
|
||||
|
||||
import java.util.function.LongFunction;
|
||||
|
||||
public class DataApiUpdateOneOpDispenser extends DataApiBaseOpDispenser {
|
||||
public class DataApiUpdateOneOpDispenser extends DataApiOpDispenser {
|
||||
public DataApiUpdateOneOpDispenser(DataApiDriverAdapter adapter, ParsedOp op, LongFunction<String> targetFunction) {
|
||||
super(adapter, op);
|
||||
super(adapter, op, targetFunction);
|
||||
}
|
||||
|
||||
@Override
|
||||
public DataApiBaseOp<DataApiBaseOp<?>> getOp(long value) {
|
||||
public DataApiBaseOp getOp(long value) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
@ -16,7 +16,13 @@
|
||||
|
||||
package io.nosqlbench.adapter.dataapi.ops;
|
||||
|
||||
import io.nosqlbench.adapters.api.activityimpl.uniform.flowtypes.Op;
|
||||
import com.datastax.astra.client.Database;
|
||||
import io.nosqlbench.adapters.api.activityimpl.uniform.flowtypes.CycleOp;
|
||||
|
||||
public class DataApiBaseOp<T> implements Op {
|
||||
public abstract class DataApiBaseOp implements CycleOp {
|
||||
protected final Database db;
|
||||
|
||||
public DataApiBaseOp(Database db) {
|
||||
this.db = db;
|
||||
}
|
||||
}
|
||||
|
@ -14,21 +14,23 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package io.nosqlbench.adapter.dataapi.opdispensers;
|
||||
package io.nosqlbench.adapter.dataapi.ops;
|
||||
|
||||
import io.nosqlbench.adapter.dataapi.DataApiDriverAdapter;
|
||||
import io.nosqlbench.adapter.dataapi.ops.DataApiBaseOp;
|
||||
import io.nosqlbench.adapters.api.templating.ParsedOp;
|
||||
import com.datastax.astra.client.Database;
|
||||
import com.datastax.astra.client.model.CollectionOptions;
|
||||
|
||||
import java.util.function.LongFunction;
|
||||
public class DataApiCreateCollectionOp extends DataApiBaseOp {
|
||||
private final String collectionName;
|
||||
private final CollectionOptions options;
|
||||
|
||||
public class DataApiDeleteCollectionOpDispenser extends DataApiBaseOpDispenser {
|
||||
public DataApiDeleteCollectionOpDispenser(DataApiDriverAdapter adapter, ParsedOp op, LongFunction<String> targetFunction) {
|
||||
super(adapter, op);
|
||||
public DataApiCreateCollectionOp(Database db, String collectionName, CollectionOptions options) {
|
||||
super(db);
|
||||
this.collectionName = collectionName;
|
||||
this.options = options;
|
||||
}
|
||||
|
||||
@Override
|
||||
public DataApiBaseOp<DataApiBaseOp<?>> getOp(long value) {
|
||||
return null;
|
||||
public Object apply(long value) {
|
||||
return db.createCollection(collectionName, options);
|
||||
}
|
||||
}
|
@ -0,0 +1,20 @@
|
||||
package io.nosqlbench.adapter.dataapi.ops;
|
||||
|
||||
import com.datastax.astra.client.Database;
|
||||
|
||||
public class DataApiDropCollectionOp extends DataApiBaseOp {
|
||||
private final String collectionName;
|
||||
public DataApiDropCollectionOp(Database db, String dbName) {
|
||||
super(db);
|
||||
this.collectionName = dbName;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object apply(long value) {
|
||||
Boolean exists = db.collectionExists(collectionName);
|
||||
if (exists) {
|
||||
db.dropCollection(collectionName);
|
||||
}
|
||||
return exists;
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user