Commit c1278536 authored by Sebastien Marchand's avatar Sebastien Marchand Committed by Commit Bot

Remove banned designated initializer list usage from SystemMonitor.

Bug: 956581
Change-Id: I16332fa1dd9c9f9282fb894308c199652fcfb540
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1584887Reviewed-by: default avatarFrançois Doray <fdoray@chromium.org>
Reviewed-by: default avataroysteine <oysteine@chromium.org>
Commit-Queue: Sébastien Marchand <sebmarchand@chromium.org>
Cr-Commit-Position: refs/heads/master@{#654537}
parent 94f6dbc4
......@@ -74,6 +74,31 @@ SystemMonitor* SystemMonitor::Get() {
return g_system_metrics_monitor;
}
MetricRefreshFrequencies::Builder&
MetricRefreshFrequencies::Builder::SetFreePhysMemoryMbFrequency(
SamplingFrequency freq) {
metrics_and_frequencies_.free_phys_memory_mb_frequency = freq;
return *this;
}
MetricRefreshFrequencies::Builder&
MetricRefreshFrequencies::Builder::SetDiskIdleTimePercentFrequency(
SamplingFrequency freq) {
metrics_and_frequencies_.disk_idle_time_percent_frequency = freq;
return *this;
}
MetricRefreshFrequencies::Builder&
MetricRefreshFrequencies::Builder::SetSystemMetricsSamplingFrequency(
SamplingFrequency freq) {
metrics_and_frequencies_.system_metrics_sampling_frequency = freq;
return *this;
}
MetricRefreshFrequencies MetricRefreshFrequencies::Builder::Build() {
return metrics_and_frequencies_;
}
SystemMonitor::SystemObserver::~SystemObserver() {
if (g_system_metrics_monitor) {
// This is a no-op if the observer has already been removed.
......
......@@ -76,6 +76,9 @@ class SystemMonitor {
SamplingFrequency system_metrics_sampling_frequency =
SamplingFrequency::kNoSampling;
// A builder used to create instances of this object.
class Builder;
};
~SystemObserver() override;
......@@ -297,6 +300,25 @@ class SystemMonitor {
DISALLOW_COPY_AND_ASSIGN(SystemMonitor);
};
// A builder class used to easily create a MetricRefreshFrequencies object.
class SystemMonitor::SystemObserver::MetricRefreshFrequencies::Builder {
public:
Builder() = default;
~Builder() = default;
Builder& SetFreePhysMemoryMbFrequency(SamplingFrequency freq);
Builder& SetDiskIdleTimePercentFrequency(SamplingFrequency freq);
Builder& SetSystemMetricsSamplingFrequency(SamplingFrequency freq);
// Returns the initialized MetricRefreshFrequencies instance.
MetricRefreshFrequencies Build();
private:
MetricRefreshFrequencies metrics_and_frequencies_ = {};
DISALLOW_COPY_AND_ASSIGN(Builder);
};
// An helper class used by the MetricEvaluator object to retrieve the info
// they need.
class MetricEvaluatorsHelper {
......
......@@ -10,17 +10,21 @@
namespace performance_monitor {
using SamplingFrequency = SystemMonitor::SamplingFrequency;
using MetricsRefreshFrequencies =
SystemMonitor::SystemObserver::MetricRefreshFrequencies;
SystemMonitorMetricsLogger::SystemMonitorMetricsLogger() {
// These metrics are only available on Windows for now.
#if defined(OS_WIN)
if (auto* system_monitor = SystemMonitor::Get()) {
system_monitor->AddOrUpdateObserver(
this, {
.free_phys_memory_mb_frequency =
SystemMonitor::SamplingFrequency::kDefaultFrequency,
.disk_idle_time_percent_frequency =
SystemMonitor::SamplingFrequency::kDefaultFrequency,
});
this,
MetricsRefreshFrequencies::Builder()
.SetFreePhysMemoryMbFrequency(SamplingFrequency::kDefaultFrequency)
.SetDiskIdleTimePercentFrequency(
SamplingFrequency::kDefaultFrequency)
.Build());
}
#endif
}
......
......@@ -115,17 +115,22 @@ TEST_F(SystemMonitorTest, AddAndUpdateObservers) {
// Add a second observer that observes the amount of free memory at the
// default frequency.
MetricsRefreshFrequencies obs2_metrics_frequencies = {
.free_phys_memory_mb_frequency = SamplingFrequency::kDefaultFrequency};
MetricsRefreshFrequencies obs2_metrics_frequencies =
MetricsRefreshFrequencies::Builder()
.SetFreePhysMemoryMbFrequency(SamplingFrequency::kDefaultFrequency)
.Build();
system_monitor_->AddOrUpdateObserver(&obs2, obs2_metrics_frequencies);
EnsureMetricsAreObservedAtExpectedFrequency(
SamplingFrequency::kDefaultFrequency);
// Add a third observer that observes the amount of free memory and the disk
// idle time at the default frequency.
MetricsRefreshFrequencies obs3_metrics_frequencies = {
.free_phys_memory_mb_frequency = SamplingFrequency::kDefaultFrequency,
.disk_idle_time_percent_frequency = SamplingFrequency::kDefaultFrequency};
MetricsRefreshFrequencies obs3_metrics_frequencies =
MetricsRefreshFrequencies::Builder()
.SetFreePhysMemoryMbFrequency(SamplingFrequency::kDefaultFrequency)
.SetDiskIdleTimePercentFrequency(SamplingFrequency::kDefaultFrequency)
.Build();
system_monitor_->AddOrUpdateObserver(&obs3, obs3_metrics_frequencies);
EnsureMetricsAreObservedAtExpectedFrequency(
SamplingFrequency::kDefaultFrequency,
......@@ -150,16 +155,18 @@ TEST_F(SystemMonitorTest, ObserverGetsCalled) {
::testing::StrictMock<MockMetricsMonitorObserver> mock_observer_1;
system_monitor_->AddOrUpdateObserver(
&mock_observer_1,
{.free_phys_memory_mb_frequency = SamplingFrequency::kDefaultFrequency});
MetricsRefreshFrequencies::Builder()
.SetFreePhysMemoryMbFrequency(SamplingFrequency::kDefaultFrequency)
.Build());
::testing::StrictMock<MockMetricsMonitorObserver> mock_observer_2;
system_monitor_->AddOrUpdateObserver(
&mock_observer_2, {
.disk_idle_time_percent_frequency =
SamplingFrequency::kDefaultFrequency,
.system_metrics_sampling_frequency =
SamplingFrequency::kDefaultFrequency,
});
&mock_observer_2,
MetricsRefreshFrequencies::Builder()
.SetDiskIdleTimePercentFrequency(SamplingFrequency::kDefaultFrequency)
.SetSystemMetricsSamplingFrequency(
SamplingFrequency::kDefaultFrequency)
.Build());
EnsureMetricsAreObservedAtExpectedFrequency(
SamplingFrequency::kDefaultFrequency,
......
......@@ -17,6 +17,8 @@ namespace tracing {
namespace {
using SamplingFrequency = performance_monitor::SystemMonitor::SamplingFrequency;
using MetricsRefreshFrequencies = performance_monitor::SystemMonitor::
SystemObserver::MetricRefreshFrequencies;
/////////////////////////////////////////////////////////////////////////////
// Holds profiled system stats until the tracing system needs to serialize it.
......@@ -84,8 +86,10 @@ void TraceEventSystemStatsMonitor::StartProfiling() {
is_profiling_ = true;
DCHECK(performance_monitor::SystemMonitor::Get());
performance_monitor::SystemMonitor::Get()->AddOrUpdateObserver(
this, {.system_metrics_sampling_frequency =
SamplingFrequency::kDefaultFrequency});
this, MetricsRefreshFrequencies::Builder()
.SetSystemMetricsSamplingFrequency(
SamplingFrequency::kDefaultFrequency)
.Build());
}
void TraceEventSystemStatsMonitor::OnSystemMetricsStruct(
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment