summaryrefslogtreecommitdiff
path: root/src/mongo/tools
diff options
context:
space:
mode:
authorAndrew Morrow <andrew.morrow@10gen.com>2019-12-09 19:22:42 +0000
committerevergreen <evergreen@mongodb.com>2019-12-09 19:22:42 +0000
commitbe05c9ea62d6f01895545628992f1899426b88c4 (patch)
tree232741ad863ff71b4b09b70a4b692c6010c5ff26 /src/mongo/tools
parent4f00d6e3d7e54a2d131b8216d4b4ef9bfd7a7c6b (diff)
downloadmongo-be05c9ea62d6f01895545628992f1899426b88c4.tar.gz
SERVER-44546 Remove mobile variants and embedded benchmarks
Diffstat (limited to 'src/mongo/tools')
-rw-r--r--src/mongo/tools/SConscript29
-rw-r--r--src/mongo/tools/mongoebench_main.cpp172
-rw-r--r--src/mongo/tools/mongoebench_options.cpp134
-rw-r--r--src/mongo/tools/mongoebench_options.h76
-rw-r--r--src/mongo/tools/mongoebench_options.idl66
-rw-r--r--src/mongo/tools/mongoebench_options_init.cpp56
6 files changed, 0 insertions, 533 deletions
diff --git a/src/mongo/tools/SConscript b/src/mongo/tools/SConscript
index 10acd257809..6e3e8719c85 100644
--- a/src/mongo/tools/SConscript
+++ b/src/mongo/tools/SConscript
@@ -32,34 +32,5 @@ mongobridge = env.Program(
AIB_COMPONENT='tools',
)
-mongoebench = yamlEnv.Program(
- target='mongoebench',
- source=[
- 'mongoebench_main.cpp',
- 'mongoebench_options.cpp',
- 'mongoebench_options_init.cpp',
- env.Idlc('mongoebench_options.idl')[0],
- ],
- LIBDEPS=[
- '$BUILD_DIR/mongo/db/dbdirectclient',
- '$BUILD_DIR/mongo/db/storage/storage_options',
- '$BUILD_DIR/mongo/db/storage/wiredtiger/storage_wiredtiger' if get_option('wiredtiger') == 'on' else [],
- '$BUILD_DIR/mongo/embedded/embedded',
- '$BUILD_DIR/mongo/embedded/embedded_integration_helpers',
- '$BUILD_DIR/mongo/shell/benchrun',
- '$BUILD_DIR/mongo/util/signal_handlers',
- ],
- AIB_COMPONENT="embedded-test",
- AIB_COMPONENTS_EXTRA=[
- "tests",
- "benchmarks",
- ],
-)
-
-# TODO: remove this when hygienic is driving all tarball creation
-install_mongoebench = env.Install("#/", mongoebench)
-env.Alias("install-embedded-test", [install_mongoebench[0]])
install_mongobridge = env.Install("#/", mongobridge)
env.Alias("install-tools", [install_mongobridge[0]])
-
-env.Alias('all', mongoebench) # This ensures it compiles and links, but doesn't copy it anywhere.
diff --git a/src/mongo/tools/mongoebench_main.cpp b/src/mongo/tools/mongoebench_main.cpp
deleted file mode 100644
index 74f81264289..00000000000
--- a/src/mongo/tools/mongoebench_main.cpp
+++ /dev/null
@@ -1,172 +0,0 @@
-/**
- * Copyright (C) 2018-present MongoDB, Inc.
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the Server Side Public License, version 1,
- * as published by MongoDB, Inc.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * Server Side Public License for more details.
- *
- * You should have received a copy of the Server Side Public License
- * along with this program. If not, see
- * <http://www.mongodb.com/licensing/server-side-public-license>.
- *
- * As a special exception, the copyright holders give permission to link the
- * code of portions of this program with the OpenSSL library under certain
- * conditions as described in each individual source file and distribute
- * linked combinations including the program with the OpenSSL library. You
- * must comply with the Server Side Public License in all respects for
- * all of the code used other than as permitted herein. If you modify file(s)
- * with this exception, you may extend this exception to your version of the
- * file(s), but you are not obligated to do so. If you do not wish to do so,
- * delete this exception statement from your version. If you delete this
- * exception statement from all source files in the program, then also delete
- * it in the license file.
- */
-
-#define MONGO_LOG_DEFAULT_COMPONENT ::mongo::logger::LogComponent::kDefault
-
-#include "mongo/platform/basic.h"
-
-#include <boost/filesystem.hpp>
-
-#include "mongo/base/init.h"
-#include "mongo/base/shim.h"
-#include "mongo/db/dbdirectclient.h"
-#include "mongo/db/service_context.h"
-#include "mongo/embedded/embedded.h"
-#include "mongo/embedded/embedded_options.h"
-#include "mongo/embedded/embedded_options_helpers.h"
-#include "mongo/scripting/bson_template_evaluator.h"
-#include "mongo/shell/bench.h"
-#include "mongo/tools/mongoebench_options.h"
-#include "mongo/tools/mongoebench_options_gen.h"
-#include "mongo/util/exit.h"
-#include "mongo/util/log.h"
-#include "mongo/util/options_parser/option_section.h"
-#include "mongo/util/signal_handlers.h"
-#include "mongo/util/text.h"
-
-namespace mongo {
-namespace {
-
-/**
- * DBDirectClientWithOwnOpCtx is a version of DBDirectClient that owns its own OperationContext.
- *
- * Since benchRun originally existed only in the mongo shell and was used with only
- * DBClientConnections, there isn't a part of the BenchRunConfig or BenchRunWorker interfaces that
- * is aware of having an OperationContext. In particular, the mongo shell lacks a ServiceContext and
- * therefore also lacks the rest of the Client and OperationContext hierarchy. We shove an
- * OperationContext onto the DBDirectClient to work around this limitation for mongoebench to work.
- */
-class DBDirectClientWithOwnOpCtx : public DBDirectClient {
-public:
- DBDirectClientWithOwnOpCtx()
- : DBDirectClient(nullptr), _threadClient(getGlobalServiceContext()) {
- _opCtx = cc().makeOperationContext();
- setOpCtx(_opCtx.get());
- }
-
-private:
- ThreadClient _threadClient;
- ServiceContext::UniqueOperationContext _opCtx;
-};
-
-MONGO_INITIALIZER_WITH_PREREQUISITES(SignalProcessingStartup, ("ThreadNameInitializer"))
-(InitializerContext*) {
- // Make sure we call this as soon as possible but before any other threads are started. Before
- // embedded::initialize is too early and after is too late. So instead we hook in during the
- // global initialization at the right place.
- startSignalProcessingThread();
- return Status::OK();
-}
-
-int mongoeBenchMain(int argc, char* argv[], char** envp) {
- ServiceContext* serviceContext = nullptr;
-
- registerShutdownTask([&]() {
- if (serviceContext) {
- embedded::shutdown(serviceContext);
- }
- });
-
- setupSignalHandlers();
-
- log() << "MongoDB embedded benchRun application, for testing purposes only";
-
- try {
- optionenvironment::OptionSection startupOptions("Options");
- uassertStatusOK(embedded::addOptions(&startupOptions));
- uassertStatusOK(addMongoeBenchOptions(&startupOptions));
- uassertStatusOK(
- embedded_integration_helpers::parseCommandLineOptions(argc, argv, startupOptions));
- serviceContext = embedded::initialize(nullptr);
- } catch (const std::exception& ex) {
- error() << ex.what();
- return EXIT_BADOPTIONS;
- }
-
- // If a "pre" section was present in the benchRun config file, then we run its operations once
- // before running the operations from the "ops" section.
- if (mongoeBenchGlobalParams.preConfig) {
- auto conn = mongoeBenchGlobalParams.preConfig->createConnection();
- boost::optional<LogicalSessionIdToClient> lsid;
-
- PseudoRandom rng(mongoeBenchGlobalParams.preConfig->randomSeed);
- BsonTemplateEvaluator bsonTemplateEvaluator(mongoeBenchGlobalParams.preConfig->randomSeed);
- BenchRunStats stats;
- BenchRunOp::State state(&rng, &bsonTemplateEvaluator, &stats);
-
- for (auto&& op : mongoeBenchGlobalParams.preConfig->ops) {
- op.executeOnce(conn.get(), lsid, *mongoeBenchGlobalParams.preConfig, &state);
- }
- }
-
- // If an "ops" section was present in the benchRun config file, then we repeatedly run its
- // operations across the configured number of threads for the configured number of seconds.
- if (mongoeBenchGlobalParams.opsConfig) {
- const double seconds = mongoeBenchGlobalParams.opsConfig->seconds;
- auto runner = std::make_unique<BenchRunner>(mongoeBenchGlobalParams.opsConfig.release());
- runner->start();
-
- sleepmillis(static_cast<long long>(seconds * 1000));
-
- BSONObj stats = BenchRunner::finish(runner.release());
- log() << "writing stats to " << mongoeBenchGlobalParams.outputFile.string() << ": "
- << stats;
-
- boost::filesystem::ofstream outfile(mongoeBenchGlobalParams.outputFile);
- outfile << stats.jsonString() << '\n';
- }
-
- shutdown(EXIT_CLEAN);
-}
-
-std::unique_ptr<DBClientBase> benchRunConfigCreateConnectionImplProvider(const BenchRunConfig&) {
- return std::unique_ptr<DBClientBase>(new DBDirectClientWithOwnOpCtx());
-}
-
-auto benchRunConfigCreateConnectionImplRegistration = MONGO_WEAK_FUNCTION_REGISTRATION(
- BenchRunConfig::createConnectionImpl, benchRunConfigCreateConnectionImplProvider);
-} // namespace
-
-} // namespace mongo
-
-#if defined(_WIN32)
-// In Windows, wmain() is an alternate entry point for main(), and receives the same parameters as
-// main() but encoded in Windows Unicode (UTF-16); "wide" 16-bit wchar_t characters. The
-// WindowsCommandLine object converts these wide character strings to a UTF-8 coded equivalent and
-// makes them available through the argv() and envp() members. This enables mongoeBenchMain() to
-// process UTF-8 encoded arguments and environment variables without regard to platform.
-int wmain(int argc, wchar_t* argvW[], wchar_t* envpW[]) {
- mongo::WindowsCommandLine wcl(argc, argvW, envpW);
- return mongo::mongoeBenchMain(argc, wcl.argv(), wcl.envp());
-}
-#else
-int main(int argc, char* argv[], char** envp) {
- return mongo::mongoeBenchMain(argc, argv, envp);
-}
-#endif
diff --git a/src/mongo/tools/mongoebench_options.cpp b/src/mongo/tools/mongoebench_options.cpp
deleted file mode 100644
index f2982ee028a..00000000000
--- a/src/mongo/tools/mongoebench_options.cpp
+++ /dev/null
@@ -1,134 +0,0 @@
-/**
- * Copyright (C) 2018-present MongoDB, Inc.
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the Server Side Public License, version 1,
- * as published by MongoDB, Inc.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * Server Side Public License for more details.
- *
- * You should have received a copy of the Server Side Public License
- * along with this program. If not, see
- * <http://www.mongodb.com/licensing/server-side-public-license>.
- *
- * As a special exception, the copyright holders give permission to link the
- * code of portions of this program with the OpenSSL library under certain
- * conditions as described in each individual source file and distribute
- * linked combinations including the program with the OpenSSL library. You
- * must comply with the Server Side Public License in all respects for
- * all of the code used other than as permitted herein. If you modify file(s)
- * with this exception, you may extend this exception to your version of the
- * file(s), but you are not obligated to do so. If you do not wish to do so,
- * delete this exception statement from your version. If you delete this
- * exception statement from all source files in the program, then also delete
- * it in the license file.
- */
-
-#include "mongo/platform/basic.h"
-
-#include "mongo/tools/mongoebench_options.h"
-
-#include <algorithm>
-#include <fstream>
-#include <iostream>
-#include <iterator>
-
-#include "mongo/base/status.h"
-#include "mongo/db/storage/storage_options.h"
-#include "mongo/platform/random.h"
-#include "mongo/shell/bench.h"
-#include "mongo/util/options_parser/startup_options.h"
-#include "mongo/util/str.h"
-
-namespace mongo {
-
-MongoeBenchGlobalParams mongoeBenchGlobalParams;
-
-void printMongoeBenchHelp(std::ostream* out) {
- *out << "Usage: mongoebench <config file> [options]" << std::endl;
- *out << moe::startupOptions.helpString();
- *out << std::flush;
-}
-
-bool handlePreValidationMongoeBenchOptions(const moe::Environment& params) {
- if (params.count("help")) {
- printMongoeBenchHelp(&std::cout);
- return false;
- }
- return true;
-}
-
-namespace {
-
-BSONObj getBsonFromJsonFile(const std::string& filename) {
- std::ifstream infile(filename.c_str());
- std::string data((std::istreambuf_iterator<char>(infile)), std::istreambuf_iterator<char>());
- return fromjson(data);
-}
-
-boost::filesystem::path kDefaultOutputFile("perf.json");
-
-} // namespace
-
-Status storeMongoeBenchOptions(const moe::Environment& params,
- const std::vector<std::string>& args) {
- if (!params.count("benchRunConfigFile")) {
- return {ErrorCodes::BadValue, "No benchRun config file was specified"};
- }
-
- BSONObj config = getBsonFromJsonFile(params["benchRunConfigFile"].as<std::string>());
- for (auto&& elem : config) {
- const auto fieldName = elem.fieldNameStringData();
- if (fieldName == "pre") {
- mongoeBenchGlobalParams.preConfig.reset(
- BenchRunConfig::createFromBson(elem.wrap("ops")));
- } else if (fieldName == "ops") {
- mongoeBenchGlobalParams.opsConfig.reset(BenchRunConfig::createFromBson(elem.wrap()));
- } else {
- return {ErrorCodes::BadValue,
- str::stream() << "Unrecognized key in benchRun config file: " << fieldName};
- }
- }
-
- int64_t seed = params.count("seed") ? static_cast<int64_t>(params["seed"].as<long>())
- : SecureRandom().nextInt64();
-
- if (mongoeBenchGlobalParams.preConfig) {
- mongoeBenchGlobalParams.preConfig->randomSeed = seed;
- }
-
- if (mongoeBenchGlobalParams.opsConfig) {
- mongoeBenchGlobalParams.opsConfig->randomSeed = seed;
-
- if (params.count("threads")) {
- mongoeBenchGlobalParams.opsConfig->parallel = params["threads"].as<unsigned>();
- }
-
- if (params.count("time")) {
- mongoeBenchGlobalParams.opsConfig->seconds = params["time"].as<double>();
- }
- }
-
- if (params.count("output")) {
- mongoeBenchGlobalParams.outputFile =
- boost::filesystem::path(params["output"].as<std::string>());
- } else {
- boost::filesystem::path dbpath(storageGlobalParams.dbpath);
- mongoeBenchGlobalParams.outputFile = dbpath / kDefaultOutputFile;
- }
-
- mongoeBenchGlobalParams.outputFile = mongoeBenchGlobalParams.outputFile.lexically_normal();
- auto parentPath = mongoeBenchGlobalParams.outputFile.parent_path();
- if (!parentPath.empty() && !boost::filesystem::exists(parentPath)) {
- return {ErrorCodes::NonExistentPath,
- str::stream() << "Directory containing output file must already exist, but "
- << parentPath.string() << " wasn't found"};
- }
-
- return Status::OK();
-}
-
-} // namespace mongo
diff --git a/src/mongo/tools/mongoebench_options.h b/src/mongo/tools/mongoebench_options.h
deleted file mode 100644
index fabd676d8b2..00000000000
--- a/src/mongo/tools/mongoebench_options.h
+++ /dev/null
@@ -1,76 +0,0 @@
-/**
- * Copyright (C) 2018-present MongoDB, Inc.
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the Server Side Public License, version 1,
- * as published by MongoDB, Inc.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * Server Side Public License for more details.
- *
- * You should have received a copy of the Server Side Public License
- * along with this program. If not, see
- * <http://www.mongodb.com/licensing/server-side-public-license>.
- *
- * As a special exception, the copyright holders give permission to link the
- * code of portions of this program with the OpenSSL library under certain
- * conditions as described in each individual source file and distribute
- * linked combinations including the program with the OpenSSL library. You
- * must comply with the Server Side Public License in all respects for
- * all of the code used other than as permitted herein. If you modify file(s)
- * with this exception, you may extend this exception to your version of the
- * file(s), but you are not obligated to do so. If you do not wish to do so,
- * delete this exception statement from your version. If you delete this
- * exception statement from all source files in the program, then also delete
- * it in the license file.
- */
-
-#pragma once
-
-#include <boost/filesystem.hpp>
-#include <cstdint>
-#include <iosfwd>
-#include <memory>
-#include <string>
-#include <vector>
-
-#include "mongo/base/status.h"
-
-namespace mongo {
-
-class BenchRunConfig;
-
-namespace optionenvironment {
-
-class OptionSection;
-class Environment;
-
-} // namespace optionenvironment
-
-namespace moe = mongo::optionenvironment;
-
-struct MongoeBenchGlobalParams {
- std::unique_ptr<BenchRunConfig> preConfig;
- std::unique_ptr<BenchRunConfig> opsConfig;
- boost::filesystem::path outputFile;
-};
-
-extern MongoeBenchGlobalParams mongoeBenchGlobalParams;
-
-Status addMongoeBenchOptions(moe::OptionSection* options);
-
-void printMongoeBenchHelp(std::ostream* out);
-
-/**
- * Handle options that should come before validation, such as "help".
- *
- * Returns false if an option was found that implies we should prematurely exit with success.
- */
-bool handlePreValidationMongoeBenchOptions(const moe::Environment& params);
-
-Status storeMongoeBenchOptions(const moe::Environment& params,
- const std::vector<std::string>& args);
-
-} // namespace mongo
diff --git a/src/mongo/tools/mongoebench_options.idl b/src/mongo/tools/mongoebench_options.idl
deleted file mode 100644
index b86795f8790..00000000000
--- a/src/mongo/tools/mongoebench_options.idl
+++ /dev/null
@@ -1,66 +0,0 @@
-# Copyright (C) 2019-present MongoDB, Inc.
-#
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the Server Side Public License, version 1,
-# as published by MongoDB, Inc.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# Server Side Public License for more details.
-#
-# You should have received a copy of the Server Side Public License
-# along with this program. If not, see
-# <http://www.mongodb.com/licensing/server-side-public-license>.
-#
-# As a special exception, the copyright holders give permission to link the
-# code of portions of this program with the OpenSSL library under certain
-# conditions as described in each individual source file and distribute
-# linked combinations including the program with the OpenSSL library. You
-# must comply with the Server Side Public License in all respects for
-# all of the code used other than as permitted herein. If you modify file(s)
-# with this exception, you may extend this exception to your version of the
-# file(s), but you are not obligated to do so. If you do not wish to do so,
-# delete this exception statement from your version. If you delete this
-# exception statement from all source files in the program, then also delete
-# it in the license file.
-#
-
-global:
- cpp_namespace: "mongo"
- configs:
- source: [ cli, ini ]
- initializer:
- register: addMongoeBenchOptions
-
-configs:
- help:
- description: 'Show this usage information'
- arg_vartype: Switch
-
- benchRunConfigFile:
- description: 'Config file for benchRun'
- arg_vartype: String
- hidden: true
- positional: 1
-
- seed:
- description: 'Random seed to use'
- arg_vartype: Long
-
- threads:
- description: 'Number of benchRun worker threads'
- single_name: t
- arg_vartype: Unsigned
- default: { expr: '1U' }
-
- time:
- description: 'Seconds to run benchRun for'
- single_name: s
- arg_vartype: Double
- default: 1.0
-
- output:
- description: 'Output file for benchRun stats (defaults to <dbPath>/perf.json)'
- single_name: o
- arg_vartype: String
diff --git a/src/mongo/tools/mongoebench_options_init.cpp b/src/mongo/tools/mongoebench_options_init.cpp
deleted file mode 100644
index 4ed8f4d75c5..00000000000
--- a/src/mongo/tools/mongoebench_options_init.cpp
+++ /dev/null
@@ -1,56 +0,0 @@
-/**
- * Copyright (C) 2018-present MongoDB, Inc.
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the Server Side Public License, version 1,
- * as published by MongoDB, Inc.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * Server Side Public License for more details.
- *
- * You should have received a copy of the Server Side Public License
- * along with this program. If not, see
- * <http://www.mongodb.com/licensing/server-side-public-license>.
- *
- * As a special exception, the copyright holders give permission to link the
- * code of portions of this program with the OpenSSL library under certain
- * conditions as described in each individual source file and distribute
- * linked combinations including the program with the OpenSSL library. You
- * must comply with the Server Side Public License in all respects for
- * all of the code used other than as permitted herein. If you modify file(s)
- * with this exception, you may extend this exception to your version of the
- * file(s), but you are not obligated to do so. If you do not wish to do so,
- * delete this exception statement from your version. If you delete this
- * exception statement from all source files in the program, then also delete
- * it in the license file.
- */
-
-#include "mongo/tools/mongoebench_options.h"
-
-#include "mongo/util/options_parser/startup_option_init.h"
-#include "mongo/util/options_parser/startup_options.h"
-#include "mongo/util/quick_exit.h"
-
-namespace mongo {
-namespace {
-
-MONGO_GENERAL_STARTUP_OPTIONS_REGISTER(MongoeBenchOptions)(InitializerContext* context) {
- return addMongoeBenchOptions(&moe::startupOptions);
-}
-
-GlobalInitializerRegisterer mongoeBenchOptionsStore(
- "MongoeBenchOptions_Store",
- [](InitializerContext* context) {
- if (!handlePreValidationMongoeBenchOptions(moe::startupOptionsParsed)) {
- quickExit(EXIT_SUCCESS);
- }
- return storeMongoeBenchOptions(moe::startupOptionsParsed, context->args());
- },
- DeinitializerFunction(nullptr),
- {"BeginStartupOptionStorage", "EmbeddedOptions_Store"},
- {"EndStartupOptionStorage"});
-
-} // namespace
-} // namespace mongo