[DVQA] Add ability to export metrics with MetricsLoggerAndExporter
Bug: b/246095034 Change-Id: Ibbadd11ff27f65cc128efd891eace89df3c59316 Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/276101 Commit-Queue: Artem Titov <titovartem@webrtc.org> Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org> Cr-Commit-Position: refs/heads/main@{#38145}
This commit is contained in:
committed by
WebRTC LUCI CQ
parent
2d1907bfd2
commit
e11d5e378c
@ -24,6 +24,19 @@
|
||||
|
||||
namespace webrtc {
|
||||
namespace test {
|
||||
namespace {
|
||||
|
||||
Metric::Stats ToStats(const SamplesStatsCounter& values) {
|
||||
if (values.IsEmpty()) {
|
||||
return Metric::Stats();
|
||||
}
|
||||
return Metric::Stats{.mean = values.GetAverage(),
|
||||
.stddev = values.GetStandardDeviation(),
|
||||
.min = values.GetMin(),
|
||||
.max = values.GetMax()};
|
||||
}
|
||||
|
||||
} // namespace
|
||||
|
||||
MetricsLoggerAndExporter::~MetricsLoggerAndExporter() {
|
||||
bool export_result = Export();
|
||||
@ -72,17 +85,13 @@ void MetricsLoggerAndExporter::LogMetric(
|
||||
.sample_metadata = sample.metadata});
|
||||
}
|
||||
|
||||
metrics_.push_back(
|
||||
Metric{.name = std::string(name),
|
||||
.unit = unit,
|
||||
.improvement_direction = improvement_direction,
|
||||
.test_case = std::string(test_case_name),
|
||||
.metric_metadata = std::move(metadata),
|
||||
.time_series = std::move(time_series),
|
||||
.stats = Metric::Stats{.mean = values.GetAverage(),
|
||||
.stddev = values.GetStandardDeviation(),
|
||||
.min = values.GetMin(),
|
||||
.max = values.GetMax()}});
|
||||
metrics_.push_back(Metric{.name = std::string(name),
|
||||
.unit = unit,
|
||||
.improvement_direction = improvement_direction,
|
||||
.test_case = std::string(test_case_name),
|
||||
.metric_metadata = std::move(metadata),
|
||||
.time_series = std::move(time_series),
|
||||
.stats = ToStats(values)});
|
||||
}
|
||||
|
||||
void MetricsLoggerAndExporter::LogMetric(
|
||||
|
||||
@ -145,6 +145,30 @@ TEST(MetricsLoggerAndExporterTest,
|
||||
ASSERT_THAT(metric.stats.max, absl::optional<double>(20.0));
|
||||
}
|
||||
|
||||
TEST(MetricsLoggerAndExporterTest,
|
||||
LogMetricWithEmptySamplesStatsCounterRecordsEmptyMetric) {
|
||||
TestMetricsExporterFactory exporter_factory;
|
||||
{
|
||||
std::vector<std::unique_ptr<MetricsExporter>> exporters;
|
||||
exporters.push_back(exporter_factory.CreateExporter());
|
||||
MetricsLoggerAndExporter logger(Clock::GetRealTimeClock(),
|
||||
std::move(exporters));
|
||||
SamplesStatsCounter values;
|
||||
logger.LogMetric("metric_name", "test_case_name", values, Unit::kUnitless,
|
||||
ImprovementDirection::kBiggerIsBetter, DefaultMetadata());
|
||||
}
|
||||
|
||||
std::vector<Metric> metrics = exporter_factory.exported_metrics;
|
||||
ASSERT_THAT(metrics.size(), Eq(1lu));
|
||||
EXPECT_THAT(metrics[0].name, Eq("metric_name"));
|
||||
EXPECT_THAT(metrics[0].test_case, Eq("test_case_name"));
|
||||
EXPECT_THAT(metrics[0].time_series.samples, IsEmpty());
|
||||
ASSERT_THAT(metrics[0].stats.mean, Eq(absl::nullopt));
|
||||
ASSERT_THAT(metrics[0].stats.stddev, Eq(absl::nullopt));
|
||||
ASSERT_THAT(metrics[0].stats.min, Eq(absl::nullopt));
|
||||
ASSERT_THAT(metrics[0].stats.max, Eq(absl::nullopt));
|
||||
}
|
||||
|
||||
TEST(MetricsLoggerAndExporterTest, LogMetricWithStatsRecordsMetric) {
|
||||
TestMetricsExporterFactory exporter_factory;
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user