diff options
author | Louis Williams <louis.williams@mongodb.com> | 2020-09-09 12:50:59 -0400 |
---|---|---|
committer | Evergreen Agent <no-reply@evergreen.mongodb.com> | 2020-09-09 17:13:17 +0000 |
commit | 067c84541cfced8abe0eca82b003ba02dd331ed6 (patch) | |
tree | b3f3ab8985939429dc5b4a0a947f79ab82750420 /src/mongo/db/stats/resource_consumption_metrics_test.cpp | |
parent | 705f35bfd71671e0168dca78960820cb7b31ec2a (diff) | |
download | mongo-067c84541cfced8abe0eca82b003ba02dd331ed6.tar.gz |
SERVER-50703 Create global resource consumption structure
Diffstat (limited to 'src/mongo/db/stats/resource_consumption_metrics_test.cpp')
-rw-r--r-- | src/mongo/db/stats/resource_consumption_metrics_test.cpp | 76 |
1 files changed, 76 insertions, 0 deletions
diff --git a/src/mongo/db/stats/resource_consumption_metrics_test.cpp b/src/mongo/db/stats/resource_consumption_metrics_test.cpp new file mode 100644 index 00000000000..093170ec199 --- /dev/null +++ b/src/mongo/db/stats/resource_consumption_metrics_test.cpp @@ -0,0 +1,76 @@ +/** + * Copyright (C) 2020-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/db/service_context_test_fixture.h" +#include "mongo/db/stats/resource_consumption_metrics.h" +#include "mongo/unittest/unittest.h" + +namespace mongo { + +class ResourceConsumptionMetricsTest : public ServiceContextTest { +public: + void setUp() { + _opCtx = makeOperationContext(); + } + + typedef std::pair<ServiceContext::UniqueClient, ServiceContext::UniqueOperationContext> + ClientAndCtx; + ClientAndCtx makeClientAndCtx(const std::string& clientName) { + auto client = getServiceContext()->makeClient(clientName); + auto opCtx = client->makeOperationContext(); + return std::make_pair(std::move(client), std::move(opCtx)); + } + +protected: + ServiceContext::UniqueOperationContext _opCtx; +}; + +TEST_F(ResourceConsumptionMetricsTest, Add) { + auto& globalResourceConsumption = ResourceConsumption::get(getServiceContext()); + + auto [client2, opCtx2] = makeClientAndCtx("opCtx2"); + + auto& operationMetrics1 = ResourceConsumption::Metrics::get(_opCtx.get()); + auto& operationMetrics2 = ResourceConsumption::Metrics::get(opCtx2.get()); + + operationMetrics1.setDbName("db1"); + operationMetrics2.setDbName("db2"); + globalResourceConsumption.add(operationMetrics1); + globalResourceConsumption.add(operationMetrics1); + globalResourceConsumption.add(operationMetrics2); + globalResourceConsumption.add(operationMetrics2); + + auto globalMetrics = globalResourceConsumption.getMetrics(); + ASSERT_EQ(globalMetrics.count("db1"), 1); + ASSERT_EQ(globalMetrics.count("db2"), 1); + ASSERT_EQ(globalMetrics.count("db3"), 0); +} +} // namespace mongo |