summaryrefslogtreecommitdiff
path: root/src/mongo/db/ftdc/compressor_test.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mongo/db/ftdc/compressor_test.cpp')
-rw-r--r--src/mongo/db/ftdc/compressor_test.cpp41
1 files changed, 41 insertions, 0 deletions
diff --git a/src/mongo/db/ftdc/compressor_test.cpp b/src/mongo/db/ftdc/compressor_test.cpp
index 509504037b7..f8dee52f889 100644
--- a/src/mongo/db/ftdc/compressor_test.cpp
+++ b/src/mongo/db/ftdc/compressor_test.cpp
@@ -170,6 +170,11 @@ public:
ValidateDocumentList(list, _docs, _mode);
}
+ void setExpectedDocuments(const std::vector<BSONObj>& docs) {
+ _docs.clear();
+ std::copy(docs.begin(), docs.end(), std::back_inserter(_docs));
+ }
+
private:
std::vector<BSONObj> _docs;
FTDCConfig _config;
@@ -537,4 +542,40 @@ TEST_F(FTDCCompressorTest, TestManyMetrics) {
}
}
+// Test various non-finite double values
+TEST_F(FTDCCompressorTest, TestDoubleValues) {
+ TestTie c;
+
+ auto st = c.addSample(BSON("d" << 0.0));
+ ASSERT_HAS_SPACE(st);
+ st = c.addSample(BSON("d" << -42.0));
+ ASSERT_HAS_SPACE(st);
+ st = c.addSample(BSON("d" << 42.0));
+ ASSERT_HAS_SPACE(st);
+ st = c.addSample(BSON("d" << std::numeric_limits<double>::max()));
+ ASSERT_HAS_SPACE(st);
+ st = c.addSample(BSON("d" << std::numeric_limits<double>::min()));
+ ASSERT_HAS_SPACE(st);
+ st = c.addSample(BSON("d" << std::numeric_limits<double>::lowest()));
+ ASSERT_HAS_SPACE(st);
+ st = c.addSample(BSON("d" << std::numeric_limits<double>::infinity()));
+ ASSERT_HAS_SPACE(st);
+ st = c.addSample(BSON("d" << -std::numeric_limits<double>::infinity()));
+ ASSERT_HAS_SPACE(st);
+ st = c.addSample(BSON("d" << std::numeric_limits<double>::quiet_NaN()));
+ ASSERT_HAS_SPACE(st);
+
+ c.setExpectedDocuments({
+ BSON("d" << 0.0),
+ BSON("d" << -42.0),
+ BSON("d" << 42.0),
+ BSON("d" << std::numeric_limits<long long>::max()),
+ BSON("d" << 0),
+ BSON("d" << std::numeric_limits<long long>::min()),
+ BSON("d" << std::numeric_limits<long long>::max()),
+ BSON("d" << std::numeric_limits<long long>::min()),
+ BSON("d" << 0),
+ });
+}
+
} // namespace mongo