diff --git a/.evergreen/.evg.yml b/.evergreen/.evg.yml index 673b26b6068..00ab7b83e93 100644 --- a/.evergreen/.evg.yml +++ b/.evergreen/.evg.yml @@ -780,6 +780,8 @@ functions: type: test params: working_dir: "src" + env: + PROVIDER: ${PROVIDER} script: | ${PREPARE_SHELL} PROJECT_DIRECTORY=${PROJECT_DIRECTORY} .evergreen/run-perf-tests.sh @@ -1560,6 +1562,20 @@ tasks: - func: "run perf tests" - func: "send dashboard data" + - name: "perf-netty" + tags: [ "perf" ] + commands: + - func: "bootstrap mongo-orchestration" + vars: + VERSION: "v8.0-perf" + TOPOLOGY: "server" + SSL: "nossl" + AUTH: "noauth" + - func: "run perf tests" + vars: + PROVIDER: "Netty" + - func: "send dashboard data" + - name: "aws-lambda-deployed-task" commands: - command: ec2.assume_role @@ -2312,6 +2328,7 @@ buildvariants: run_on: rhel90-dbx-perf-large tasks: - name: "perf" + - name: "perf-netty" - name: plain-auth-test display_name: "PLAIN (LDAP) Auth test" diff --git a/.evergreen/run-perf-tests.sh b/.evergreen/run-perf-tests.sh index d251c194860..76627a967cf 100755 --- a/.evergreen/run-perf-tests.sh +++ b/.evergreen/run-perf-tests.sh @@ -17,8 +17,14 @@ RELATIVE_DIR_PATH="$(dirname "${BASH_SOURCE:-$0}")" export TEST_PATH="${PROJECT_DIRECTORY}/driver-performance-test-data/" export OUTPUT_FILE="${PROJECT_DIRECTORY}/results.json" +if [ "${PROVIDER}" = "Netty" ]; then + TASK="driver-benchmarks:runNetty" +else + TASK="driver-benchmarks:run" +fi + start_time=$(date +%s) -./gradlew -Dorg.mongodb.benchmarks.data=${TEST_PATH} -Dorg.mongodb.benchmarks.output=${OUTPUT_FILE} driver-benchmarks:run +./gradlew -Dorg.mongodb.benchmarks.data=${TEST_PATH} -Dorg.mongodb.benchmarks.output=${OUTPUT_FILE} ${TASK} end_time=$(date +%s) elapsed_secs=$((end_time-start_time)) diff --git a/driver-benchmarks/build.gradle.kts b/driver-benchmarks/build.gradle.kts index eac033920e3..6387de8d058 100644 --- a/driver-benchmarks/build.gradle.kts +++ b/driver-benchmarks/build.gradle.kts @@ -37,9 +37,14 @@ sourceSets { dependencies { api(project(":driver-sync")) api(project(":mongodb-crypt")) + + implementation(platform(libs.netty.bom)) + implementation(libs.bundles.netty) + implementation(libs.logback.classic) implementation(libs.jmh.core) annotationProcessor(libs.jmh.generator.annprocess) + } tasks.register("jmh") { @@ -49,6 +54,14 @@ tasks.register("jmh") { classpath = sourceSets.main.get().runtimeClasspath } +tasks.register("runNetty") { + group = "application" + description = "Run the Netty main class." + mainClass.set("com.mongodb.benchmark.benchmarks.netty.BenchmarkNettyProviderSuite") + classpath = sourceSets["main"].runtimeClasspath + jvmArgs = application.applicationDefaultJvmArgs.toList() +} + tasks.withType().configureEach { enabled = false } diff --git a/driver-benchmarks/src/main/com/mongodb/benchmark/benchmarks/AbstractBsonDocumentBenchmark.java b/driver-benchmarks/src/main/com/mongodb/benchmark/benchmarks/AbstractBsonDocumentBenchmark.java index dfb7c135dac..89f932f03cd 100644 --- a/driver-benchmarks/src/main/com/mongodb/benchmark/benchmarks/AbstractBsonDocumentBenchmark.java +++ b/driver-benchmarks/src/main/com/mongodb/benchmark/benchmarks/AbstractBsonDocumentBenchmark.java @@ -34,8 +34,6 @@ public abstract class AbstractBsonDocumentBenchmark extends Benchmark { protected final PowerOfTwoBufferPool bufferPool = PowerOfTwoBufferPool.DEFAULT; protected final Codec codec; - - private final String name; private final String resourcePath; protected T document; @@ -43,7 +41,7 @@ public abstract class AbstractBsonDocumentBenchmark extends Benchmark { private int fileLength; public AbstractBsonDocumentBenchmark(final String name, final String resourcePath, final Codec codec) { - this.name = name; + super(name); this.resourcePath = resourcePath; this.codec = codec; } @@ -58,11 +56,6 @@ public void setUp() throws IOException { documentBytes = getDocumentAsBuffer(document); } - @Override - public String getName() { - return name; - } - @Override public int getBytesPerRun() { return fileLength * NUM_INTERNAL_ITERATIONS; diff --git a/driver-benchmarks/src/main/com/mongodb/benchmark/benchmarks/AbstractCollectionWriteBenchmark.java b/driver-benchmarks/src/main/com/mongodb/benchmark/benchmarks/AbstractCollectionWriteBenchmark.java index 38a4b1104b5..a77d4f671f3 100644 --- a/driver-benchmarks/src/main/com/mongodb/benchmark/benchmarks/AbstractCollectionWriteBenchmark.java +++ b/driver-benchmarks/src/main/com/mongodb/benchmark/benchmarks/AbstractCollectionWriteBenchmark.java @@ -24,8 +24,6 @@ public abstract class AbstractCollectionWriteBenchmark extends AbstractWriteB protected MongoCollection collection; protected MongoDatabase database; - - private final String name; private final Class clazz; protected AbstractCollectionWriteBenchmark(final String name, @@ -34,7 +32,6 @@ protected AbstractCollectionWriteBenchmark(final String name, int numDocuments, final Class clazz) { super(name, resourcePath, numIterations, numDocuments, clazz); - this.name = name; this.clazz = clazz; } @@ -51,9 +48,4 @@ public void before() throws Exception { super.before(); collection.drop(); } - - @Override - public String getName() { - return name; - } } diff --git a/driver-benchmarks/src/main/com/mongodb/benchmark/benchmarks/AbstractFindBenchmark.java b/driver-benchmarks/src/main/com/mongodb/benchmark/benchmarks/AbstractFindBenchmark.java index 82e1025558d..df3eda6d14d 100644 --- a/driver-benchmarks/src/main/com/mongodb/benchmark/benchmarks/AbstractFindBenchmark.java +++ b/driver-benchmarks/src/main/com/mongodb/benchmark/benchmarks/AbstractFindBenchmark.java @@ -32,23 +32,17 @@ public abstract class AbstractFindBenchmark extends AbstractMongoBenchmark { protected MongoCollection collection; - private final String name; private final String resourcePath; private final Class clazz; private int fileLength; public AbstractFindBenchmark(final String name, final String resourcePath, final Class clazz) { - this.name = name; + super(name); this.resourcePath = resourcePath; this.clazz = clazz; } - @Override - public String getName() { - return name; - } - public void setUp() throws Exception { super.setUp(); collection = client.getDatabase(DATABASE_NAME).getCollection(COLLECTION_NAME, clazz); diff --git a/driver-benchmarks/src/main/com/mongodb/benchmark/benchmarks/AbstractGridFSBenchmark.java b/driver-benchmarks/src/main/com/mongodb/benchmark/benchmarks/AbstractGridFSBenchmark.java index 28db0c7b9c1..aeaf908e0a3 100644 --- a/driver-benchmarks/src/main/com/mongodb/benchmark/benchmarks/AbstractGridFSBenchmark.java +++ b/driver-benchmarks/src/main/com/mongodb/benchmark/benchmarks/AbstractGridFSBenchmark.java @@ -27,7 +27,8 @@ public abstract class AbstractGridFSBenchmark extends AbstractMongoBenchmark { protected GridFSBucket bucket; protected byte[] fileBytes; - public AbstractGridFSBenchmark(final String resourcePath) { + public AbstractGridFSBenchmark(final String name, final String resourcePath) { + super(name); this.resourcePath = resourcePath; } diff --git a/driver-benchmarks/src/main/com/mongodb/benchmark/benchmarks/AbstractMongoBenchmark.java b/driver-benchmarks/src/main/com/mongodb/benchmark/benchmarks/AbstractMongoBenchmark.java index 5e6fba464f8..f6a07691596 100644 --- a/driver-benchmarks/src/main/com/mongodb/benchmark/benchmarks/AbstractMongoBenchmark.java +++ b/driver-benchmarks/src/main/com/mongodb/benchmark/benchmarks/AbstractMongoBenchmark.java @@ -17,6 +17,7 @@ package com.mongodb.benchmark.benchmarks; +import com.mongodb.MongoClientSettings; import com.mongodb.MongoNamespace; import com.mongodb.benchmark.framework.Benchmark; import com.mongodb.client.MongoClient; @@ -36,12 +37,20 @@ public abstract class AbstractMongoBenchmark extends Benchmark { protected static final String COLLECTION_NAME = "corpus"; protected static final MongoNamespace NAMESPACE = new MongoNamespace( AbstractMongoBenchmark.DATABASE_NAME, AbstractMongoBenchmark.COLLECTION_NAME); + protected MongoClientSettings mongoClientSettings; + public AbstractMongoBenchmark(final String name) { + super(name); + } protected MongoClient client; public void setUp() throws Exception { - client = MongoClients.create(); + if (mongoClientSettings != null) { + client = MongoClients.create(mongoClientSettings); + } else { + client = MongoClients.create(); + } } @Override @@ -49,4 +58,8 @@ public void tearDown() throws Exception { client.close(); } + public AbstractMongoBenchmark applyMongoClientSettings(final MongoClientSettings mongoClientSettings) { + this.mongoClientSettings = mongoClientSettings; + return this; + } } diff --git a/driver-benchmarks/src/main/com/mongodb/benchmark/benchmarks/AbstractWriteBenchmark.java b/driver-benchmarks/src/main/com/mongodb/benchmark/benchmarks/AbstractWriteBenchmark.java index c4c0e4a5bac..d9c1a2968f9 100644 --- a/driver-benchmarks/src/main/com/mongodb/benchmark/benchmarks/AbstractWriteBenchmark.java +++ b/driver-benchmarks/src/main/com/mongodb/benchmark/benchmarks/AbstractWriteBenchmark.java @@ -27,7 +27,6 @@ public abstract class AbstractWriteBenchmark extends AbstractMongoBenchmark { protected static final Bson EMPTY_FILTER = Filters.empty(); - private final String name; private final String resourcePath; private final Class clazz; private byte[] bytes; @@ -41,7 +40,7 @@ protected AbstractWriteBenchmark(final String name, int numInternalIterations, int numDocuments, final Class clazz) { - this.name = name; + super(name); this.resourcePath = resourcePath; this.clazz = clazz; this.numInternalIterations = numInternalIterations; @@ -57,11 +56,6 @@ public void setUp() throws Exception { document = codec.decode(new JsonReader(new String(bytes, StandardCharsets.UTF_8)), DecoderContext.builder().build()); } - @Override - public String getName() { - return name; - } - protected T createDocument() { Codec codec = client.getCodecRegistry().get(clazz); return codec.decode(new JsonReader(new String(bytes, StandardCharsets.UTF_8)), DecoderContext.builder().build()); diff --git a/driver-benchmarks/src/main/com/mongodb/benchmark/benchmarks/BenchmarkSuite.java b/driver-benchmarks/src/main/com/mongodb/benchmark/benchmarks/BenchmarkSuite.java index b3d4dc31fb7..2595568f148 100644 --- a/driver-benchmarks/src/main/com/mongodb/benchmark/benchmarks/BenchmarkSuite.java +++ b/driver-benchmarks/src/main/com/mongodb/benchmark/benchmarks/BenchmarkSuite.java @@ -39,16 +39,16 @@ @SuppressWarnings({"rawtypes", "unchecked"}) public class BenchmarkSuite { - private static final int NUM_WARMUP_ITERATIONS = 1; - private static final int NUM_ITERATIONS = 100; - private static final int MIN_TIME_SECONDS = 60; - private static final int MAX_TIME_SECONDS = 300; + protected static final int NUM_WARMUP_ITERATIONS = 1; + protected static final int NUM_ITERATIONS = 100; + protected static final int MIN_TIME_SECONDS = 60; + protected static final int MAX_TIME_SECONDS = 300; - private static final Class DOCUMENT_CLASS = Document.class; - private static final IdRemover ID_REMOVER = document -> document.remove("_id"); - private static final Codec DOCUMENT_CODEC = getDefaultCodecRegistry().get(DOCUMENT_CLASS); + protected static final Class DOCUMENT_CLASS = Document.class; + protected static final IdRemover ID_REMOVER = document -> document.remove("_id"); + protected static final Codec DOCUMENT_CODEC = getDefaultCodecRegistry().get(DOCUMENT_CLASS); - private static final List WRITERS = Arrays.asList( + protected static final List WRITERS = Arrays.asList( new EvergreenBenchmarkResultWriter()); public static void main(String[] args) throws Exception { @@ -120,7 +120,7 @@ private static void runMongoCryptBenchMarks() throws InterruptedException { } } - private static void runBenchmark(final Benchmark benchmark) throws Exception { + protected static void runBenchmark(final Benchmark benchmark) throws Exception { long startTime = System.currentTimeMillis(); BenchmarkResult benchmarkResult = new BenchmarkRunner(benchmark, NUM_WARMUP_ITERATIONS, NUM_ITERATIONS, MIN_TIME_SECONDS, MAX_TIME_SECONDS).run(); diff --git a/driver-benchmarks/src/main/com/mongodb/benchmark/benchmarks/GridFSDownloadBenchmark.java b/driver-benchmarks/src/main/com/mongodb/benchmark/benchmarks/GridFSDownloadBenchmark.java index 5a619c38cbe..71a71900771 100644 --- a/driver-benchmarks/src/main/com/mongodb/benchmark/benchmarks/GridFSDownloadBenchmark.java +++ b/driver-benchmarks/src/main/com/mongodb/benchmark/benchmarks/GridFSDownloadBenchmark.java @@ -27,12 +27,7 @@ public class GridFSDownloadBenchmark extends AbstractGridFSBenchmark { private ObjectId fileId; public GridFSDownloadBenchmark(final String resourcePath) { - super(resourcePath); - } - - @Override - public String getName() { - return "GridFS download"; + super("GridFS download", resourcePath); } @Override diff --git a/driver-benchmarks/src/main/com/mongodb/benchmark/benchmarks/GridFSMultiFileDownloadBenchmark.java b/driver-benchmarks/src/main/com/mongodb/benchmark/benchmarks/GridFSMultiFileDownloadBenchmark.java index 3a3a3a256ee..e39c0fb46ba 100644 --- a/driver-benchmarks/src/main/com/mongodb/benchmark/benchmarks/GridFSMultiFileDownloadBenchmark.java +++ b/driver-benchmarks/src/main/com/mongodb/benchmark/benchmarks/GridFSMultiFileDownloadBenchmark.java @@ -34,6 +34,7 @@ import java.util.concurrent.Executors; import java.util.concurrent.TimeUnit; + public class GridFSMultiFileDownloadBenchmark extends AbstractMongoBenchmark { private GridFSBucket bucket; @@ -43,9 +44,8 @@ public class GridFSMultiFileDownloadBenchmark extends AbstractMongoBenchmark { private File tempDirectory; - @Override - public String getName() { - return "GridFS multi-file download"; + public GridFSMultiFileDownloadBenchmark() { + super("GridFS multi-file download"); } @Override diff --git a/driver-benchmarks/src/main/com/mongodb/benchmark/benchmarks/GridFSMultiFileUploadBenchmark.java b/driver-benchmarks/src/main/com/mongodb/benchmark/benchmarks/GridFSMultiFileUploadBenchmark.java index 991c77a694f..cefdc7eaf1c 100644 --- a/driver-benchmarks/src/main/com/mongodb/benchmark/benchmarks/GridFSMultiFileUploadBenchmark.java +++ b/driver-benchmarks/src/main/com/mongodb/benchmark/benchmarks/GridFSMultiFileUploadBenchmark.java @@ -32,6 +32,7 @@ import java.util.concurrent.Executors; import java.util.concurrent.TimeUnit; + public class GridFSMultiFileUploadBenchmark extends AbstractMongoBenchmark { private MongoDatabase database; @@ -39,9 +40,8 @@ public class GridFSMultiFileUploadBenchmark extends AbstractMongoBenchmark { private ExecutorService fileService; - @Override - public String getName() { - return "GridFS multi-file upload"; + public GridFSMultiFileUploadBenchmark() { + super("GridFS multi-file upload"); } @Override diff --git a/driver-benchmarks/src/main/com/mongodb/benchmark/benchmarks/GridFSUploadBenchmark.java b/driver-benchmarks/src/main/com/mongodb/benchmark/benchmarks/GridFSUploadBenchmark.java index c0aed18680a..2181f89be5a 100644 --- a/driver-benchmarks/src/main/com/mongodb/benchmark/benchmarks/GridFSUploadBenchmark.java +++ b/driver-benchmarks/src/main/com/mongodb/benchmark/benchmarks/GridFSUploadBenchmark.java @@ -22,12 +22,7 @@ public class GridFSUploadBenchmark extends AbstractGridFSBenchmark { public GridFSUploadBenchmark(final String resourcePath) { - super(resourcePath); - } - - @Override - public String getName() { - return "GridFS upload"; + super("GridFS upload", resourcePath); } @Override diff --git a/driver-benchmarks/src/main/com/mongodb/benchmark/benchmarks/MultiFileExportBenchmark.java b/driver-benchmarks/src/main/com/mongodb/benchmark/benchmarks/MultiFileExportBenchmark.java index 74f498f0a4d..30c74084419 100644 --- a/driver-benchmarks/src/main/com/mongodb/benchmark/benchmarks/MultiFileExportBenchmark.java +++ b/driver-benchmarks/src/main/com/mongodb/benchmark/benchmarks/MultiFileExportBenchmark.java @@ -58,9 +58,8 @@ public class MultiFileExportBenchmark extends AbstractMongoBenchmark { private ExecutorService documentReadingService; private File tempDirectory; - @Override - public String getName() { - return "LDJSON multi-file export"; + public MultiFileExportBenchmark() { + super("LDJSON multi-file export"); } @Override diff --git a/driver-benchmarks/src/main/com/mongodb/benchmark/benchmarks/MultiFileImportBenchmark.java b/driver-benchmarks/src/main/com/mongodb/benchmark/benchmarks/MultiFileImportBenchmark.java index 3bc76b69146..03d1a721bee 100644 --- a/driver-benchmarks/src/main/com/mongodb/benchmark/benchmarks/MultiFileImportBenchmark.java +++ b/driver-benchmarks/src/main/com/mongodb/benchmark/benchmarks/MultiFileImportBenchmark.java @@ -45,6 +45,10 @@ public class MultiFileImportBenchmark extends AbstractMongoBenchmark { private ExecutorService fileReadingService; private ExecutorService documentWritingService; + public MultiFileImportBenchmark() { + super("LDJSON multi-file import"); + } + @Override public void setUp() throws Exception { super.setUp(); @@ -77,12 +81,6 @@ public void tearDown() throws Exception { super.tearDown(); } - @Override - public String getName() { - return "LDJSON multi-file import"; - } - - @Override public void run() throws InterruptedException { CountDownLatch latch = new CountDownLatch(500); diff --git a/driver-benchmarks/src/main/com/mongodb/benchmark/benchmarks/RunCommandBenchmark.java b/driver-benchmarks/src/main/com/mongodb/benchmark/benchmarks/RunCommandBenchmark.java index 6632b07b6af..ba90066a349 100644 --- a/driver-benchmarks/src/main/com/mongodb/benchmark/benchmarks/RunCommandBenchmark.java +++ b/driver-benchmarks/src/main/com/mongodb/benchmark/benchmarks/RunCommandBenchmark.java @@ -33,6 +33,7 @@ public class RunCommandBenchmark extends AbstractMongoBenchmark private final T command; public RunCommandBenchmark(final Codec codec) { + super("Run command"); this.codec = codec; this.command = createCommand(); } @@ -43,11 +44,6 @@ public void setUp() throws Exception { database = client.getDatabase("admin"); } - @Override - public String getName() { - return "Run command"; - } - @Override public void run() { for (int i = 0; i < NUM_INTERNAL_ITERATIONS; i++) { diff --git a/driver-benchmarks/src/main/com/mongodb/benchmark/benchmarks/netty/BenchmarkNettyProviderSuite.java b/driver-benchmarks/src/main/com/mongodb/benchmark/benchmarks/netty/BenchmarkNettyProviderSuite.java new file mode 100644 index 00000000000..5e142376940 --- /dev/null +++ b/driver-benchmarks/src/main/com/mongodb/benchmark/benchmarks/netty/BenchmarkNettyProviderSuite.java @@ -0,0 +1,107 @@ +/* + * Copyright 2016-present MongoDB, Inc. + * + * 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 com.mongodb.benchmark.benchmarks.netty; + +import com.mongodb.MongoClientSettings; +import com.mongodb.benchmark.benchmarks.BenchmarkSuite; +import com.mongodb.benchmark.benchmarks.FindManyBenchmark; +import com.mongodb.benchmark.benchmarks.FindOneBenchmark; +import com.mongodb.benchmark.benchmarks.GridFSDownloadBenchmark; +import com.mongodb.benchmark.benchmarks.GridFSMultiFileDownloadBenchmark; +import com.mongodb.benchmark.benchmarks.GridFSMultiFileUploadBenchmark; +import com.mongodb.benchmark.benchmarks.GridFSUploadBenchmark; +import com.mongodb.benchmark.benchmarks.InsertManyBenchmark; +import com.mongodb.benchmark.benchmarks.InsertOneBenchmark; +import com.mongodb.benchmark.benchmarks.MultiFileExportBenchmark; +import com.mongodb.benchmark.benchmarks.MultiFileImportBenchmark; +import com.mongodb.benchmark.benchmarks.RunCommandBenchmark; +import com.mongodb.benchmark.benchmarks.bulk.ClientBulkWriteBenchmark; +import com.mongodb.benchmark.benchmarks.bulk.CollectionBulkWriteBenchmark; +import com.mongodb.benchmark.benchmarks.bulk.MixedClientBulkWriteBenchmark; +import com.mongodb.benchmark.benchmarks.bulk.MixedCollectionBulkWriteBenchmark; +import com.mongodb.benchmark.framework.BenchmarkResultWriter; +import com.mongodb.connection.NettyTransportSettings; +import io.netty.buffer.PooledByteBufAllocator; +import org.bson.Document; + +@SuppressWarnings({"rawtypes", "unchecked"}) +public class BenchmarkNettyProviderSuite extends BenchmarkSuite { + + public static final MongoClientSettings MONGO_CLIENT_SETTINGS = MongoClientSettings.builder() + .transportSettings(NettyTransportSettings.nettyBuilder() + .allocator(PooledByteBufAllocator.DEFAULT) + .build()) + .build(); + + public static void main(String[] args) throws Exception { + runBenchmarks(); + + for (BenchmarkResultWriter writer : WRITERS) { + writer.close(); + } + } + + private static void runBenchmarks() + throws Exception { + runBenchmark(new RunCommandBenchmark<>(DOCUMENT_CODEC) + .applyMongoClientSettings(MONGO_CLIENT_SETTINGS)); + runBenchmark(new FindOneBenchmark("./single_and_multi_document/tweet.json", + DOCUMENT_CLASS).applyMongoClientSettings(MONGO_CLIENT_SETTINGS)); + + runBenchmark(new InsertOneBenchmark("Small", "./single_and_multi_document/small_doc.json", 10000, + DOCUMENT_CLASS, ID_REMOVER).applyMongoClientSettings(MONGO_CLIENT_SETTINGS)); + runBenchmark(new InsertOneBenchmark("Large", "./single_and_multi_document/large_doc.json", 10, + DOCUMENT_CLASS, ID_REMOVER).applyMongoClientSettings(MONGO_CLIENT_SETTINGS)); + + runBenchmark(new FindManyBenchmark("./single_and_multi_document/tweet.json", + DOCUMENT_CLASS).applyMongoClientSettings(MONGO_CLIENT_SETTINGS)); + runBenchmark(new InsertManyBenchmark("Small", "./single_and_multi_document/small_doc.json", 10000, + DOCUMENT_CLASS).applyMongoClientSettings(MONGO_CLIENT_SETTINGS)); + runBenchmark(new InsertManyBenchmark("Large", "./single_and_multi_document/large_doc.json", 10, + DOCUMENT_CLASS).applyMongoClientSettings(MONGO_CLIENT_SETTINGS)); + + runBenchmark(new GridFSUploadBenchmark("./single_and_multi_document/gridfs_large.bin") + .applyMongoClientSettings(MONGO_CLIENT_SETTINGS)); + runBenchmark(new GridFSDownloadBenchmark("./single_and_multi_document/gridfs_large.bin") + .applyMongoClientSettings(MONGO_CLIENT_SETTINGS)); + + runBenchmark(new CollectionBulkWriteBenchmark<>("Small", "./single_and_multi_document/small_doc.json", 10_000, + DOCUMENT_CLASS).applyMongoClientSettings(MONGO_CLIENT_SETTINGS)); + runBenchmark(new CollectionBulkWriteBenchmark<>("Large", "./single_and_multi_document/large_doc.json", 10, + DOCUMENT_CLASS)); + + runBenchmark(new ClientBulkWriteBenchmark<>("Small", "./single_and_multi_document/small_doc.json", 10_000, + DOCUMENT_CLASS).applyMongoClientSettings(MONGO_CLIENT_SETTINGS)); + runBenchmark(new ClientBulkWriteBenchmark<>("Large", "./single_and_multi_document/large_doc.json", 10, + DOCUMENT_CLASS).applyMongoClientSettings(MONGO_CLIENT_SETTINGS)); + + runBenchmark(new MixedCollectionBulkWriteBenchmark<>("./single_and_multi_document/small_doc.json", 10_000, + DOCUMENT_CLASS).applyMongoClientSettings(MONGO_CLIENT_SETTINGS)); + runBenchmark(new MixedClientBulkWriteBenchmark<>("./single_and_multi_document/small_doc.json", 10_000, + DOCUMENT_CLASS).applyMongoClientSettings(MONGO_CLIENT_SETTINGS)); + + runBenchmark(new MultiFileImportBenchmark() + .applyMongoClientSettings(MONGO_CLIENT_SETTINGS)); + runBenchmark(new MultiFileExportBenchmark() + .applyMongoClientSettings(MONGO_CLIENT_SETTINGS)); + runBenchmark(new GridFSMultiFileUploadBenchmark() + .applyMongoClientSettings(MONGO_CLIENT_SETTINGS)); + runBenchmark(new GridFSMultiFileDownloadBenchmark() + .applyMongoClientSettings(MONGO_CLIENT_SETTINGS)); + } +} diff --git a/driver-benchmarks/src/main/com/mongodb/benchmark/framework/Benchmark.java b/driver-benchmarks/src/main/com/mongodb/benchmark/framework/Benchmark.java index 9d1bac9c60d..3715887d900 100644 --- a/driver-benchmarks/src/main/com/mongodb/benchmark/framework/Benchmark.java +++ b/driver-benchmarks/src/main/com/mongodb/benchmark/framework/Benchmark.java @@ -29,6 +29,11 @@ public abstract class Benchmark { protected static final int NUM_INTERNAL_ITERATIONS = 10000; static final String TEST_DATA_SYSTEM_PROPERTY_NAME = "org.mongodb.benchmarks.data"; + private String name; + + protected Benchmark(final String name) { + this.name = name; + } public void setUp() throws Exception { } @@ -42,7 +47,9 @@ public void before() throws Exception { public void after() throws Exception { } - public abstract String getName(); + public String getName() { + return name; + } public abstract void run() throws Exception;