mirror of https://github.com/mongodb/mongo
SERVER-114946: Add the MetricUnit enum. (#45140)
Co-authored-by: Cedric Sirianni <cedric.sirianni@mongodb.com> GitOrigin-RevId: b45c6e1684f743daa882567841d3de01a29ca52d
This commit is contained in:
parent
66b44393e7
commit
033efe970c
|
|
@ -110,3 +110,16 @@ mongo_cc_unit_test(
|
||||||
"//src/third_party/opentelemetry-cpp/api",
|
"//src/third_party/opentelemetry-cpp/api",
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
|
|
||||||
|
mongo_cc_library(
|
||||||
|
name = "metric_units",
|
||||||
|
srcs = ["metric_units.cpp"],
|
||||||
|
deps = ["//src/mongo:base"],
|
||||||
|
)
|
||||||
|
|
||||||
|
mongo_cc_unit_test(
|
||||||
|
name = "metric_units_test",
|
||||||
|
srcs = ["metric_units_test.cpp"],
|
||||||
|
tags = ["mongo_unittest_second_group"],
|
||||||
|
deps = [":metric_units"],
|
||||||
|
)
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,64 @@
|
||||||
|
/**
|
||||||
|
* Copyright (C) 2025-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/otel/metrics/metric_units.h"
|
||||||
|
|
||||||
|
#include "mongo/logv2/log.h"
|
||||||
|
|
||||||
|
namespace mongo::otel::metrics {
|
||||||
|
|
||||||
|
#define MONGO_LOGV2_DEFAULT_COMPONENT ::mongo::logv2::LogComponent::kDefault
|
||||||
|
|
||||||
|
StringData toString(MetricUnit unit) {
|
||||||
|
switch (unit) {
|
||||||
|
// Time
|
||||||
|
case MetricUnit::kMicroseconds:
|
||||||
|
return "microseconds";
|
||||||
|
case MetricUnit::kMilliseconds:
|
||||||
|
return "milliseconds";
|
||||||
|
case MetricUnit::kSeconds:
|
||||||
|
return "seconds";
|
||||||
|
|
||||||
|
// Space
|
||||||
|
case MetricUnit::kBytes:
|
||||||
|
return "bytes";
|
||||||
|
|
||||||
|
// Database
|
||||||
|
case MetricUnit::kOperations:
|
||||||
|
return "operations";
|
||||||
|
case MetricUnit::kQueries:
|
||||||
|
return "queries";
|
||||||
|
|
||||||
|
// Networking
|
||||||
|
case MetricUnit::kConnections:
|
||||||
|
return "connections";
|
||||||
|
}
|
||||||
|
LOGV2_FATAL(11494600, "Unknown MetricUnit value", "value"_attr = unit);
|
||||||
|
}
|
||||||
|
} // namespace mongo::otel::metrics
|
||||||
|
|
@ -0,0 +1,57 @@
|
||||||
|
/**
|
||||||
|
* Copyright (C) 2025-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/base/string_data.h"
|
||||||
|
#include "mongo/util/modules.h"
|
||||||
|
|
||||||
|
MONGO_MOD_PUBLIC;
|
||||||
|
|
||||||
|
namespace mongo::otel::metrics {
|
||||||
|
|
||||||
|
// Used to denote the unit of measurement in a metric.
|
||||||
|
enum class MetricUnit {
|
||||||
|
// Time
|
||||||
|
kMicroseconds,
|
||||||
|
kMilliseconds,
|
||||||
|
kSeconds,
|
||||||
|
|
||||||
|
// Space
|
||||||
|
kBytes,
|
||||||
|
|
||||||
|
// Database
|
||||||
|
kOperations,
|
||||||
|
kQueries,
|
||||||
|
|
||||||
|
// Networking
|
||||||
|
kConnections,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Converts any of the above units to a string.
|
||||||
|
StringData toString(MetricUnit unit);
|
||||||
|
|
||||||
|
} // namespace mongo::otel::metrics
|
||||||
|
|
@ -0,0 +1,42 @@
|
||||||
|
/**
|
||||||
|
* Copyright (C) 2025-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/otel/metrics/metric_units.h"
|
||||||
|
|
||||||
|
#include "mongo/unittest/death_test.h"
|
||||||
|
#include "mongo/unittest/unittest.h"
|
||||||
|
|
||||||
|
namespace mongo::otel::metrics {
|
||||||
|
TEST(ToStringTest, Works) {
|
||||||
|
ASSERT_EQ(toString(MetricUnit::kSeconds), "seconds");
|
||||||
|
}
|
||||||
|
|
||||||
|
DEATH_TEST(ToStringDeathTest, DiesOnBadUnit, "11494600") {
|
||||||
|
toString(static_cast<MetricUnit>(-1));
|
||||||
|
}
|
||||||
|
} // namespace mongo::otel::metrics
|
||||||
Loading…
Reference in New Issue