Files
scylladb/test/boost/summary_test.cc
Kefu Chai 97587a2ea4 test/boost: do not include unused headers
these unused includes were identified by clangd. see
https://clangd.llvm.org/guides/include-cleaner#unused-include-warning
for more details on the "Unused include" warning.

Signed-off-by: Kefu Chai <kefu.chai@scylladb.com>

Closes scylladb/scylladb#17139
2024-02-06 13:22:16 +02:00

62 lines
2.2 KiB
C++

/*
* Copyright (C) 2022-present ScyllaDB
*/
/*
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
#define BOOST_TEST_MODULE core
#include <boost/test/unit_test.hpp>
#include "utils/histogram.hh"
#include <algorithm>
#include <sstream>
using duration = utils::time_estimated_histogram::duration;
std::string vector_to_string(const std::vector<double>& v) {
std::stringstream ss;
ss << "{";
std::copy(v.begin(), v.end(),
std::ostream_iterator<uint64_t>(ss, ","));
ss << "}";
return ss.str();
}
void fill_range(utils::summary_calculator& summary, size_t count, const duration& from, const duration& to) {
auto delta = (to-from)/count;
for (size_t i = 0; i < count; i++) {
summary.mark(from + i*delta);
}
}
BOOST_AUTO_TEST_CASE(test_summary_api) {
utils::summary_calculator summary;
BOOST_CHECK_EQUAL(vector_to_string(summary.summary()), vector_to_string({0,0,0}));
BOOST_CHECK_EQUAL(vector_to_string(summary.quantiles()), vector_to_string({0.5,0.95,0.99}));
summary.set_quantiles({0.7, 0.8});
BOOST_CHECK_EQUAL(vector_to_string(summary.summary()), vector_to_string({0,0}));
BOOST_CHECK_EQUAL(vector_to_string(summary.quantiles()), vector_to_string({0.7, 0.8}));
summary.mark(std::chrono::microseconds(520));
summary.mark(std::chrono::microseconds(770));
BOOST_CHECK_EQUAL(summary.histogram().count(), 2);
BOOST_CHECK_EQUAL(summary.histogram().get(0), 1);
BOOST_CHECK_EQUAL(summary.histogram().get(2), 1);
}
BOOST_AUTO_TEST_CASE(test_summary_calculation) {
utils::summary_calculator summary;
fill_range(summary, 1000, std::chrono::microseconds(520), std::chrono::seconds(1));
fill_range(summary, 900, std::chrono::seconds(1), std::chrono::seconds(2));
fill_range(summary, 50, std::chrono::seconds(2), std::chrono::seconds(3));
fill_range(summary, 40, std::chrono::seconds(3), std::chrono::seconds(4));
fill_range(summary, 10, std::chrono::seconds(4), std::chrono::seconds(8));
BOOST_CHECK_EQUAL(summary.histogram().count(), 2000);
summary.update();
BOOST_CHECK_EQUAL(vector_to_string(summary.summary()), vector_to_string({1048576, 2097152, 4194304}));
summary.update();
BOOST_CHECK_EQUAL(vector_to_string(summary.summary()), vector_to_string({0,0,0}));
}