[NoCheck] Pass CivilTimeConverterInterface by reference
- Removes 2 CHECK calls
- Stores CivilTimeConverterInterface in a util::PinnedUniquePtr
- Removes CobaltService::civil_time_converter() that was only used in tests.
Change-Id: Id46533c09e54efcabec5530e687b20b880bd622f
Reviewed-on: https://fuchsia-review.googlesource.com/c/cobalt/+/662582
Fuchsia-Auto-Submit: Zach Bush <zmbush@google.com>
Reviewed-by: Cameron Dale <camrdale@google.com>
Commit-Queue: Auto-Submit <auto-submit@fuchsia-infra.iam.gserviceaccount.com>
diff --git a/src/local_aggregation_1_1/local_aggregation.cc b/src/local_aggregation_1_1/local_aggregation.cc
index 8b4af42..9a1df7e 100644
--- a/src/local_aggregation_1_1/local_aggregation.cc
+++ b/src/local_aggregation_1_1/local_aggregation.cc
@@ -28,7 +28,7 @@
const CobaltConfig &cfg, const logger::ProjectContextFactory *global_project_context_factory,
system_data::SystemDataInterface &system_data, MetadataBuilder &metadata_builder,
util::FileSystem &fs, const logger::ObservationWriter &observation_writer,
- util::CivilTimeConverterInterface *civil_time_converter,
+ util::CivilTimeConverterInterface &civil_time_converter,
logger::InternalMetrics *internal_metrics)
: global_project_context_factory_(global_project_context_factory),
aggregate_storage_(LocalAggregateStorage::New(
diff --git a/src/local_aggregation_1_1/local_aggregation.h b/src/local_aggregation_1_1/local_aggregation.h
index 189ead2..2bbedf8 100644
--- a/src/local_aggregation_1_1/local_aggregation.h
+++ b/src/local_aggregation_1_1/local_aggregation.h
@@ -41,7 +41,7 @@
const logger::ProjectContextFactory *global_project_context_factory,
system_data::SystemDataInterface &system_data, MetadataBuilder &metadata_builder,
util::FileSystem &fs, const logger::ObservationWriter &observation_writer,
- util::CivilTimeConverterInterface *civil_time_converter,
+ util::CivilTimeConverterInterface &civil_time_converter,
logger::InternalMetrics *internal_metrics = nullptr);
// Start should be called when the system is ready to start the background process for generating
diff --git a/src/local_aggregation_1_1/local_aggregation_test.cc b/src/local_aggregation_1_1/local_aggregation_test.cc
index 5f3c99b..cc650c0 100644
--- a/src/local_aggregation_1_1/local_aggregation_test.cc
+++ b/src/local_aggregation_1_1/local_aggregation_test.cc
@@ -97,7 +97,7 @@
return std::make_unique<LocalAggregation>(cfg, global_project_context_factory_.get(),
system_data_, *metadata_builder_, fs(),
- *observation_writer_, civil_time_converter_.get());
+ *observation_writer_, *civil_time_converter_);
}
void OverrideRegistry(const std::string& registryBase64) {
diff --git a/src/local_aggregation_1_1/observation_generator.cc b/src/local_aggregation_1_1/observation_generator.cc
index 180fd17..1b427c3 100644
--- a/src/local_aggregation_1_1/observation_generator.cc
+++ b/src/local_aggregation_1_1/observation_generator.cc
@@ -34,7 +34,7 @@
system_data::SystemDataInterface& system_data,
const logger::ObservationWriter& observation_writer,
std::unique_ptr<logger::PrivacyEncoder> privacy_encoder,
- util::CivilTimeConverterInterface* civil_time_converter,
+ util::CivilTimeConverterInterface& civil_time_converter,
bool generate_observations_with_current_system_profile, uint32_t backfill_manager_days)
: aggregate_storage_(aggregate_storage),
global_project_context_factory_(global_project_context_factory),
@@ -183,7 +183,7 @@
CB_ASSIGN_OR_RETURN(
std::vector<util::TimeInfo> to_generate,
backfill_manager_.CalculateBackfill(procedure.GetLastTimeInfo(report_aggregate), end_time,
- *civil_time_converter_, metric, procedure.IsDaily()));
+ civil_time_converter_, metric, procedure.IsDaily()));
// In general, don't generate observations for the hour ID (if hourly) or the day index (if daily)
// corresponding to the current time. However, if `report` is a daily expedited report, then do
@@ -192,7 +192,7 @@
// TODO(fxbug.dev/92131): Move this conditional into BackfillManager.
if (procedure.IsDaily() && procedure.IsExpedited()) {
CB_ASSIGN_OR_RETURN(util::TimeInfo end_time_info,
- util::TimeInfo::FromTimePoint(end_time, *civil_time_converter_, metric));
+ util::TimeInfo::FromTimePoint(end_time, civil_time_converter_, metric));
to_generate.push_back(end_time_info);
}
diff --git a/src/local_aggregation_1_1/observation_generator.h b/src/local_aggregation_1_1/observation_generator.h
index 0bf05a9..67ac7d4 100644
--- a/src/local_aggregation_1_1/observation_generator.h
+++ b/src/local_aggregation_1_1/observation_generator.h
@@ -50,7 +50,7 @@
system_data::SystemDataInterface& system_data,
const logger::ObservationWriter& observation_writer,
std::unique_ptr<logger::PrivacyEncoder> privacy_encoder,
- util::CivilTimeConverterInterface* civil_time_converter,
+ util::CivilTimeConverterInterface& civil_time_converter,
bool generate_observations_with_current_system_profile,
uint32_t backfill_manager_days = kDefaultBackfillManagerDays);
@@ -114,7 +114,7 @@
std::chrono::seconds generate_obs_interval_;
BackfillManager backfill_manager_;
std::unique_ptr<logger::PrivacyEncoder> privacy_encoder_;
- util::CivilTimeConverterInterface* civil_time_converter_;
+ util::CivilTimeConverterInterface& civil_time_converter_;
bool generate_observations_with_current_system_profile_;
std::thread worker_thread_;
diff --git a/src/local_aggregation_1_1/observation_generator_test.cc b/src/local_aggregation_1_1/observation_generator_test.cc
index 2abbae3..5bf928f 100644
--- a/src/local_aggregation_1_1/observation_generator_test.cc
+++ b/src/local_aggregation_1_1/observation_generator_test.cc
@@ -143,7 +143,7 @@
void ConstructObservationGenerator(
const logger::ObservationWriter& observation_writer,
std::unique_ptr<FakePrivacyEncoder> privacy_encoder,
- util::CivilTimeConverterInterface* civil_time_converter,
+ util::CivilTimeConverterInterface& civil_time_converter,
bool generate_observations_with_current_system_profile = false) {
observation_generator_ = std::make_unique<ObservationGenerator>(
*aggregate_storage_, project_context_factory_.get(), system_data_, observation_writer,
@@ -265,7 +265,7 @@
logger::ObservationWriter observation_writer(test_writer, nullptr);
ConstructObservationGenerator(observation_writer, std::make_unique<FakePrivacyEncoder>(false),
- converter.get());
+ *converter);
for (uint32_t i = 0; i <= kMaxHourIdOffset; i += 2 * kHourIdsPerHour) {
// Generate observations for the hour ending at `end_time`.
@@ -345,7 +345,7 @@
logger::ObservationWriter observation_writer(test_writer, nullptr);
ConstructObservationGenerator(observation_writer, std::make_unique<FakePrivacyEncoder>(false),
- converter.get());
+ *converter);
SystemProfile system_profile;
system_profile.set_os(SystemProfile::FUCHSIA);
@@ -457,7 +457,7 @@
logger::ObservationWriter observation_writer(test_writer, nullptr);
ConstructObservationGenerator(observation_writer, std::make_unique<FakePrivacyEncoder>(false),
- converter.get());
+ *converter);
SystemProfile system_profile;
system_profile.set_os(SystemProfile::FUCHSIA);
@@ -586,7 +586,7 @@
logger::ObservationWriter observation_writer(test_writer, nullptr);
ConstructObservationGenerator(observation_writer, std::make_unique<FakePrivacyEncoder>(false),
- converter.get());
+ *converter);
for (uint32_t i = 0; i <= kMaxDayIndexOffset; i += 1) {
// Generate observations for the day ending at `end_time`.
@@ -667,7 +667,7 @@
logger::ObservationWriter observation_writer(test_writer, nullptr);
ConstructObservationGenerator(observation_writer, std::make_unique<FakePrivacyEncoder>(false),
- converter.get());
+ *converter);
for (uint32_t i = 0; i <= kNumDays; ++i) {
GenerateObservationsOnce(starting_time_ + std::chrono::hours(util::kNumHoursPerDay * kNumDays));
@@ -732,7 +732,7 @@
logger::ObservationWriter observation_writer(test_writer, nullptr);
ConstructObservationGenerator(observation_writer, std::make_unique<FakePrivacyEncoder>(false),
- converter.get());
+ *converter);
// This generation should fail because the aggregation procedure
// couldn't be created.
@@ -744,7 +744,7 @@
// Reset to default registry.
SetRegistry();
ConstructObservationGenerator(observation_writer, std::make_unique<FakePrivacyEncoder>(false),
- converter.get());
+ *converter);
// Data should still be collected as expected.
for (uint32_t i = start_day_index; i < start_day_index + kNumDays; i += 1) {
@@ -821,7 +821,7 @@
logger::ObservationWriter observation_writer(test_writer, nullptr);
ConstructObservationGenerator(observation_writer, std::make_unique<FakePrivacyEncoder>(false),
- converter.get());
+ *converter);
for (uint32_t i = start_day_index; i < start_day_index + kNumDays; i += 1) {
GenerateObservationsOnce(util::FromUnixSeconds(util::DayIndexToUnixSeconds(i + 1)));
@@ -890,9 +890,8 @@
});
logger::ObservationWriter observation_writer(test_writer, nullptr);
- ConstructObservationGenerator(observation_writer,
- std::make_unique<FakePrivacyEncoder>(true, kNumPrivateObs),
- converter.get());
+ ConstructObservationGenerator(
+ observation_writer, std::make_unique<FakePrivacyEncoder>(true, kNumPrivateObs), *converter);
GenerateObservationsOnce(starting_time_ + util::kOneHour);
EXPECT_EQ(observations.size(), kNumPrivateObs);
@@ -947,9 +946,8 @@
});
logger::ObservationWriter observation_writer(test_writer, nullptr);
- ConstructObservationGenerator(observation_writer,
- std::make_unique<FakePrivacyEncoder>(true, kNumPrivateObs),
- converter.get());
+ ConstructObservationGenerator(
+ observation_writer, std::make_unique<FakePrivacyEncoder>(true, kNumPrivateObs), *converter);
GenerateObservationsOnce(starting_time_ + util::kOneHour);
EXPECT_EQ(observations.size(), kNumPrivateObs);
@@ -1013,7 +1011,7 @@
logger::ObservationWriter observation_writer(test_writer, nullptr);
ConstructObservationGenerator(observation_writer, std::make_unique<FakePrivacyEncoder>(false),
- converter.get());
+ *converter);
GenerateObservationsOnce(starting_time_ + util::kOneDay);
@@ -1081,7 +1079,7 @@
logger::ObservationWriter observation_writer(test_writer, nullptr);
ConstructObservationGenerator(observation_writer, std::make_unique<FakePrivacyEncoder>(false),
- converter.get(),
+ *converter,
/*generate_observations_with_current_system_profile=*/true);
// Generate observations for the day with day index `start_day_index`.
GenerateObservationsOnce(starting_time_ + std::chrono::hours(util::kNumHoursPerDay));
@@ -1159,7 +1157,7 @@
logger::ObservationWriter observation_writer(test_writer, nullptr);
ConstructObservationGenerator(observation_writer, std::make_unique<FakePrivacyEncoder>(false),
- converter.get(),
+ *converter,
/*generate_observations_with_current_system_profile=*/true);
// Generate observations for the day with day index `start_day_index`.
GenerateObservationsOnce(starting_time_ + std::chrono::hours(util::kNumHoursPerDay));
@@ -1264,7 +1262,7 @@
logger::ObservationWriter observation_writer(obs_store, nullptr);
ConstructObservationGenerator(observation_writer, std::make_unique<FakePrivacyEncoder>(false),
- converter.get());
+ *converter);
for (uint32_t i = starting_time_info.hour_id; i < starting_time_info.hour_id + kMaxHourOffset;
i += 4) {
diff --git a/src/logger/event_loggers.cc b/src/logger/event_loggers.cc
index abf71e0..9bc66e0 100644
--- a/src/logger/event_loggers.cc
+++ b/src/logger/event_loggers.cc
@@ -36,7 +36,7 @@
EventAggregator& event_aggregator, local_aggregation::LocalAggregation& local_aggregation,
const ObservationWriter& observation_writer,
const system_data::SystemDataInterface& system_data,
- util::CivilTimeConverterInterface* civil_time_converter) {
+ util::CivilTimeConverterInterface& civil_time_converter) {
switch (metric_type) {
case MetricDefinition::EVENT_OCCURRED: {
return std::make_unique<internal::EventOccurredEventLogger>(
@@ -345,7 +345,7 @@
const std::chrono::system_clock::time_point& event_timestamp) {
// Compute the day_index and hour ID in the appropriate time zone for the metric's TimeZonePolicy.
CB_ASSIGN_OR_RETURN(util::TimeInfo event_time,
- util::TimeInfo::FromTimePoint(event_timestamp, *civil_time_converter_,
+ util::TimeInfo::FromTimePoint(event_timestamp, civil_time_converter_,
*event_record->metric()));
event_record->event()->set_day_index(event_time.day_index);
event_record->event()->set_hour_id(event_time.hour_id);
diff --git a/src/logger/event_loggers.h b/src/logger/event_loggers.h
index add8deb..2e042bf 100644
--- a/src/logger/event_loggers.h
+++ b/src/logger/event_loggers.h
@@ -37,7 +37,7 @@
local_aggregation::LocalAggregation& local_aggregation,
const ObservationWriter& observation_writer,
const system_data::SystemDataInterface& system_data,
- util::CivilTimeConverterInterface* civil_time_converter)
+ util::CivilTimeConverterInterface& civil_time_converter)
: encoder_(encoder),
event_aggregator_(event_aggregator),
local_aggregation_(local_aggregation),
@@ -58,7 +58,7 @@
local_aggregation::LocalAggregation& local_aggregation,
const ObservationWriter& observation_writer,
const system_data::SystemDataInterface& system_data,
- util::CivilTimeConverterInterface* civil_time_converter);
+ util::CivilTimeConverterInterface& civil_time_converter);
// Finds the Metric with the given ID. Expects that this has type
// |expected_metric_type|. If not logs an error and returns.
@@ -156,7 +156,7 @@
local_aggregation::LocalAggregation& local_aggregation_;
const ObservationWriter& observation_writer_;
const system_data::SystemDataInterface& system_data_;
- util::CivilTimeConverterInterface* civil_time_converter_;
+ util::CivilTimeConverterInterface& civil_time_converter_;
};
// Implementation of EventLogger for metrics of type EVENT_OCCURRED.
diff --git a/src/logger/event_loggers_test.cc b/src/logger/event_loggers_test.cc
index df0e2c7..2f3f359 100644
--- a/src/logger/event_loggers_test.cc
+++ b/src/logger/event_loggers_test.cc
@@ -121,12 +121,12 @@
cfg, fs(), *encoder_, *observation_writer_, *metadata_builder_);
local_aggregation_ = std::make_unique<LocalAggregation>(
cfg, project_context_factory_.get(), system_data_, *metadata_builder_, fs(),
- *observation_writer_, civil_time_converter_.get());
+ *observation_writer_, *civil_time_converter_);
project_context_ = GetTestProject(registry_base64);
event_aggregator_mgr_->GetEventAggregator().UpdateAggregationConfigs(*project_context_);
logger_ = std::make_unique<EventLoggerClass>(
*encoder_, event_aggregator_mgr_->GetEventAggregator(), *local_aggregation_,
- *observation_writer_, system_data_, civil_time_converter_.get());
+ *observation_writer_, system_data_, *civil_time_converter_);
}
void TearDown() override {
@@ -1511,14 +1511,14 @@
event_aggregator_mgr_->GetEventAggregator().UpdateAggregationConfigs(*project_context_);
local_aggregation_ = std::make_unique<LocalAggregation>(
cfg, project_context_factory_.get(), system_data_, *metadata_builder_, fs(),
- *observation_writer_, civil_time_converter_.get());
+ *observation_writer_, *civil_time_converter_);
}
std::unique_ptr<EventLogger> GetEventLoggerForMetricType(
MetricDefinition::MetricType metric_type) {
auto logger = EventLogger::Create(
metric_type, *encoder_, event_aggregator_mgr_->GetEventAggregator(), *local_aggregation_,
- *observation_writer_, system_data_, civil_time_converter_.get());
+ *observation_writer_, system_data_, *civil_time_converter_);
return logger;
}
@@ -1755,7 +1755,7 @@
event_aggregator_mgr_->GetEventAggregator().UpdateAggregationConfigs(*project_context_);
local_aggregation_ = std::make_unique<LocalAggregation>(
cfg, project_context_factory_.get(), system_data_, *metadata_builder_, fs(),
- *observation_writer_, civil_time_converter_.get());
+ *observation_writer_, *civil_time_converter_);
}
local_aggregation::ImmediateLocalAggregateStorage GetLocalAggregateStorage() {
@@ -1778,7 +1778,7 @@
MetricDefinition::MetricType metric_type) {
auto logger = EventLogger::Create(
metric_type, *encoder_, event_aggregator_mgr_->GetEventAggregator(), *local_aggregation_,
- *observation_writer_, system_data_, civil_time_converter_.get());
+ *observation_writer_, system_data_, *civil_time_converter_);
return logger;
}
diff --git a/src/logger/logger.cc b/src/logger/logger.cc
index 1b0b87c..f18c162 100644
--- a/src/logger/logger.cc
+++ b/src/logger/logger.cc
@@ -44,7 +44,7 @@
EventAggregator& event_aggregator,
local_aggregation::LocalAggregation& local_aggregation,
ObservationWriter& observation_writer, system_data::SystemDataInterface& system_data,
- util::CivilTimeConverterInterface* civil_time_converter,
+ util::CivilTimeConverterInterface& civil_time_converter,
std::vector<uint32_t> experiment_ids, bool enable_replacement_metrics,
InternalMetrics* internal_metrics)
: Logger(std::move(project_context), encoder, event_aggregator, local_aggregation,
@@ -57,7 +57,7 @@
local_aggregation::LocalAggregation& local_aggregation,
ObservationWriter& observation_writer, system_data::SystemDataInterface& system_data,
util::ValidatedClockInterface* validated_clock,
- util::CivilTimeConverterInterface* civil_time_converter,
+ util::CivilTimeConverterInterface& civil_time_converter,
std::weak_ptr<UndatedEventManager> undated_event_manager,
std::vector<uint32_t> experiment_ids, bool enable_replacement_metrics,
InternalMetrics* internal_metrics)
@@ -74,7 +74,6 @@
enable_replacement_metrics_(enable_replacement_metrics),
internal_metrics_(internal_metrics) {
CHECK(project_context_);
- CHECK(civil_time_converter_);
if (!validated_clock_) {
local_validated_clock_ =
std::make_unique<util::AlwaysAccurateClock>(std::make_unique<util::SystemClock>());
diff --git a/src/logger/logger.h b/src/logger/logger.h
index 07991cd..d7209a4 100644
--- a/src/logger/logger.h
+++ b/src/logger/logger.h
@@ -79,7 +79,7 @@
local_aggregation::EventAggregator& event_aggregator,
local_aggregation::LocalAggregation& local_aggregation,
ObservationWriter& observation_writer, system_data::SystemDataInterface& system_data,
- util::CivilTimeConverterInterface* civil_time_converter,
+ util::CivilTimeConverterInterface& civil_time_converter,
std::vector<uint32_t> experiment_ids, bool enable_replacement_metrics = false,
InternalMetrics* internal_metrics = nullptr);
@@ -129,7 +129,7 @@
local_aggregation::LocalAggregation& local_aggregation,
ObservationWriter& observation_writer, system_data::SystemDataInterface& system_data,
util::ValidatedClockInterface* validated_clock,
- util::CivilTimeConverterInterface* civil_time_converter,
+ util::CivilTimeConverterInterface& civil_time_converter,
std::weak_ptr<UndatedEventManager> undated_event_manager,
std::vector<uint32_t> experiment_ids, bool enable_replacement_metrics = false,
InternalMetrics* internal_metrics = nullptr);
@@ -208,7 +208,7 @@
const system_data::SystemDataInterface& system_data_;
util::ValidatedClockInterface* validated_clock_;
std::unique_ptr<util::ValidatedClockInterface> local_validated_clock_;
- util::CivilTimeConverterInterface* civil_time_converter_;
+ util::CivilTimeConverterInterface& civil_time_converter_;
std::weak_ptr<UndatedEventManager> undated_event_manager_;
std::vector<uint32_t> experiment_ids_;
diff --git a/src/logger/logger_test.cc b/src/logger/logger_test.cc
index db2294f..efcc6e6 100644
--- a/src/logger/logger_test.cc
+++ b/src/logger/logger_test.cc
@@ -118,19 +118,19 @@
cfg, fs(), *encoder_, *observation_writer_, *metadata_builder_);
local_aggregation_ = std::make_unique<LocalAggregation>(
cfg, project_context_factory_.get(), system_data_, *metadata_builder_, fs(),
- *observation_writer_, civil_time_converter_.get());
+ *observation_writer_, *civil_time_converter_);
internal_logger_ = std::make_unique<testing::FakeLogger>();
internal_metrics_ = InternalMetrics::NewWithLogger(internal_logger_.get(), nullptr);
undated_event_manager_ = std::make_shared<UndatedEventManager>(
*encoder_, event_aggregator_mgr_->GetEventAggregator(), *local_aggregation_,
- *observation_writer_, system_data_, civil_time_converter_.get());
+ *observation_writer_, system_data_, *civil_time_converter_);
std::vector<uint32_t> fake_experiment_ids = {123456789, 987654321};
logger_ = std::make_unique<Logger>(
GetTestProject(registry_base64), *encoder_, event_aggregator_mgr_->GetEventAggregator(),
*local_aggregation_, *observation_writer_, system_data_, validated_clock_.get(),
- civil_time_converter_.get(), undated_event_manager_, fake_experiment_ids, true,
+ *civil_time_converter_, undated_event_manager_, fake_experiment_ids, true,
internal_metrics_.get());
}
@@ -1167,7 +1167,7 @@
cfg, fs(), *encoder_, *observation_writer_, *metadata_builder_);
local_aggregation_ = std::make_unique<LocalAggregation>(
cfg, project_context_factory_.get(), system_data_, *metadata_builder_, fs(),
- *observation_writer_, civil_time_converter_.get());
+ *observation_writer_, *civil_time_converter_);
internal_logger_ = std::make_unique<testing::FakeLogger>();
@@ -1175,7 +1175,7 @@
logger_ = std::make_unique<Logger>(
GetTestProject(testing::all_report_types::kCobaltRegistryBase64), *encoder_,
event_aggregator_mgr_->GetEventAggregator(), *local_aggregation_, *observation_writer_,
- system_data_, civil_time_converter_.get(), empty_experiment_ids, internal_logger_.get());
+ system_data_, *civil_time_converter_, empty_experiment_ids, internal_logger_.get());
}
void TearDown() override {
diff --git a/src/logger/undated_event_manager.cc b/src/logger/undated_event_manager.cc
index 1edeb46..8e9500b 100644
--- a/src/logger/undated_event_manager.cc
+++ b/src/logger/undated_event_manager.cc
@@ -23,7 +23,7 @@
local_aggregation::LocalAggregation& local_aggregation,
ObservationWriter& observation_writer,
system_data::SystemDataInterface& system_data,
- util::CivilTimeConverterInterface* civil_time_converter,
+ util::CivilTimeConverterInterface& civil_time_converter,
int32_t max_saved_events)
: encoder_(encoder),
event_aggregator_(event_aggregator),
@@ -32,7 +32,6 @@
system_data_(system_data),
civil_time_converter_(civil_time_converter),
max_saved_events_(max_saved_events) {
- CHECK(civil_time_converter_);
steady_clock_ = std::make_unique<util::SteadyClock>();
}
diff --git a/src/logger/undated_event_manager.h b/src/logger/undated_event_manager.h
index f365c3d..20b4b41 100644
--- a/src/logger/undated_event_manager.h
+++ b/src/logger/undated_event_manager.h
@@ -55,7 +55,7 @@
local_aggregation::LocalAggregation& local_aggregation,
ObservationWriter& observation_writer,
system_data::SystemDataInterface& system_data,
- util::CivilTimeConverterInterface* civil_time_converter,
+ util::CivilTimeConverterInterface& civil_time_converter,
int32_t max_saved_events = kDefaultMaxSavedEvents);
// Saves the fact that an event has occurred.
@@ -89,7 +89,7 @@
local_aggregation::LocalAggregation& local_aggregation_;
const ObservationWriter& observation_writer_;
const system_data::SystemDataInterface& system_data_;
- util::CivilTimeConverterInterface* civil_time_converter_;
+ util::CivilTimeConverterInterface& civil_time_converter_;
size_t max_saved_events_;
diff --git a/src/logger/undated_event_manager_test.cc b/src/logger/undated_event_manager_test.cc
index fbd6994..5c0550e 100644
--- a/src/logger/undated_event_manager_test.cc
+++ b/src/logger/undated_event_manager_test.cc
@@ -97,14 +97,14 @@
cfg, fs(), *encoder_, *observation_writer_, *metadata_builder_);
local_aggregation_ = std::make_unique<LocalAggregation>(
cfg, project_context_factory_.get(), system_data_, *metadata_builder_, fs(),
- *observation_writer_, civil_time_converter_.get());
+ *observation_writer_, *civil_time_converter_);
internal_logger_ = std::make_unique<testing::FakeLogger>();
internal_metrics_ = logger::InternalMetrics::NewWithLogger(internal_logger_.get(), nullptr);
undated_event_manager_ = std::make_unique<UndatedEventManager>(
*encoder_, event_aggregator_mgr_->GetEventAggregator(), *local_aggregation_,
- *observation_writer_, system_data_, civil_time_converter_.get(), kMaxSavedEvents);
+ *observation_writer_, system_data_, *civil_time_converter_, kMaxSavedEvents);
undated_event_manager_->SetSteadyClock(mock_steady_clock_);
}
diff --git a/src/public/BUILD.gn b/src/public/BUILD.gn
index 5ca2337..1bb2501 100644
--- a/src/public/BUILD.gn
+++ b/src/public/BUILD.gn
@@ -80,7 +80,10 @@
"$cobalt_root/src/system_data:configuration_data",
]
- public_deps = [ "$cobalt_root/src/uploader:shipping_manager" ]
+ public_deps = [
+ "$cobalt_root/src/lib/util:not_null",
+ "$cobalt_root/src/uploader:shipping_manager",
+ ]
}
source_set("cobalt_config_test") {
diff --git a/src/public/cobalt_service.cc b/src/public/cobalt_service.cc
index f3b5cfb..5bfa998 100644
--- a/src/public/cobalt_service.cc
+++ b/src/public/cobalt_service.cc
@@ -9,6 +9,7 @@
#include "src/lib/util/clock.h"
#include "src/lib/util/datetime_util.h"
#include "src/lib/util/encrypted_message_util.h"
+#include "src/lib/util/not_null.h"
#include "src/local_aggregation_1_1/aggregation_procedures/aggregation_procedure.h"
#include "src/logger/internal_metrics_config.cb.h"
#include "src/logger/project_context.h"
@@ -110,14 +111,14 @@
metadata_builder_(system_data_, cfg.validated_clock, cfg.system_data_cache_path, *fs_),
logger_encoder_(cfg.client_secret, metadata_builder_),
observation_writer_(*observation_store_, shipping_manager_.get(), encrypt_to_analyzer_.get()),
- civil_time_converter_(cfg.civil_time_converter ? std::move(cfg.civil_time_converter)
- : std::make_unique<util::UtcTimeConverter>()),
+ civil_time_converter_(util::WrapNotNullUniquePtrOrDefault<util::UtcTimeConverter>(
+ std::move(cfg.civil_time_converter))),
event_aggregator_manager_(cfg, *fs_, logger_encoder_, observation_writer_, metadata_builder_),
local_aggregation_(cfg, global_project_context_factory_.get(), system_data_,
- metadata_builder_, *fs_, observation_writer_, civil_time_converter()),
+ metadata_builder_, *fs_, observation_writer_, *civil_time_converter_),
undated_event_manager_(new logger::UndatedEventManager(
logger_encoder_, event_aggregator_manager_.GetEventAggregator(), local_aggregation_,
- observation_writer_, system_data_, civil_time_converter())),
+ observation_writer_, system_data_, *civil_time_converter_)),
validated_clock_(cfg.validated_clock),
internal_logger_(
(global_project_context_factory_)
@@ -180,12 +181,12 @@
return std::make_unique<logger::Logger>(
std::move(project_context), logger_encoder_, event_aggregator_manager_.GetEventAggregator(),
local_aggregation_, observation_writer_, system_data_, validated_clock_,
- civil_time_converter(), undated_event_manager_, std::move(experiment_ids),
+ *civil_time_converter_, undated_event_manager_, std::move(experiment_ids),
enable_replacement_metrics_, metrics);
}
return std::make_unique<logger::Logger>(
std::move(project_context), logger_encoder_, event_aggregator_manager_.GetEventAggregator(),
- local_aggregation_, observation_writer_, system_data_, civil_time_converter(),
+ local_aggregation_, observation_writer_, system_data_, *civil_time_converter_,
std::move(experiment_ids), enable_replacement_metrics_, metrics);
}
diff --git a/src/public/cobalt_service.h b/src/public/cobalt_service.h
index 30e2063..77b446a 100644
--- a/src/public/cobalt_service.h
+++ b/src/public/cobalt_service.h
@@ -13,6 +13,7 @@
#include "src/lib/util/clock.h"
#include "src/lib/util/consistent_proto_store.h"
#include "src/lib/util/encrypted_message_util.h"
+#include "src/lib/util/not_null.h"
#include "src/local_aggregation/event_aggregator_mgr.h"
#include "src/local_aggregation_1_1/local_aggregation.h"
#include "src/logger/internal_metrics.h"
@@ -138,20 +139,18 @@
bool has_internal_logger() const { return internal_logger_ != nullptr; }
private:
- friend class internal::RealLoggerFactory;
friend class CobaltControllerImpl;
- friend class CobaltServiceTest;
+ friend class CobaltServicePeer;
+ // These three methods are used by TestApp (internal::RealLoggerFactory) and shouldn't be used
+ // elsewhere.
+ friend class internal::RealLoggerFactory;
observation_store::ObservationStore &observation_store() { return *observation_store_; }
-
local_aggregation::EventAggregatorManager *event_aggregator_manager() {
return &event_aggregator_manager_;
}
-
uploader::ShippingManager *shipping_manager() { return shipping_manager_.get(); }
- util::CivilTimeConverterInterface *civil_time_converter() { return civil_time_converter_.get(); }
-
const bool enable_replacement_metrics_;
std::unique_ptr<util::FileSystem> fs_;
@@ -165,7 +164,7 @@
MetadataBuilder metadata_builder_;
logger::Encoder logger_encoder_;
logger::ObservationWriter observation_writer_;
- std::unique_ptr<util::CivilTimeConverterInterface> civil_time_converter_;
+ util::PinnedUniquePtr<util::CivilTimeConverterInterface> civil_time_converter_;
local_aggregation::EventAggregatorManager event_aggregator_manager_;
local_aggregation::LocalAggregation local_aggregation_;
std::shared_ptr<logger::UndatedEventManager> undated_event_manager_;
diff --git a/src/public/cobalt_service_test.cc b/src/public/cobalt_service_test.cc
index 4d51005..59ae9d2 100644
--- a/src/public/cobalt_service_test.cc
+++ b/src/public/cobalt_service_test.cc
@@ -7,11 +7,12 @@
#include <gtest/gtest.h>
#include "src/lib/util/posix_file_system.h"
+#include "src/public/lib/clock_interfaces.h"
+#include "src/uploader/shipping_manager.h"
#include "third_party/abseil-cpp/absl/strings/escaping.h"
namespace cobalt {
-using observation_store::ObservationStore;
using uploader::ClearcutV1ShippingManager;
using uploader::ShippingManager;
@@ -40,45 +41,48 @@
} // namespace
-class CobaltServiceTest : public ::testing::Test {
- protected:
- // Gives access to the private getter method shipping_manager() for the
- // given |cobalt_service|.
- static ShippingManager* GetShippingManager(CobaltService* cobalt_service) {
- return cobalt_service->shipping_manager();
+class CobaltServicePeer {
+ public:
+ static bool HasShippingManager(const CobaltService& service, ShippingManager::Impl impl) {
+ return service.shipping_manager_->impl() == impl;
}
- // Gives access to the private getter method observation_store() for the
- // given |cobalt_service|.
- static ObservationStore& GetObservationStore(CobaltService* cobalt_service) {
- return cobalt_service->observation_store();
+ static bool HasRealInternalMetrics(const CobaltService& service) {
+ if (service.shipping_manager_->impl() == ShippingManager::Impl::CLEARCUTV1) {
+ const auto* clearcut_shipping =
+ static_cast<const ClearcutV1ShippingManager*>(service.shipping_manager_.get());
+ if (!clearcut_shipping->internal_metrics()->IsRealImpl()) {
+ return false;
+ }
+ if (!clearcut_shipping->clearcut_uploader()->internal_metrics()->IsRealImpl()) {
+ return false;
+ }
+ }
+
+ return service.observation_store_->internal_metrics()->IsRealImpl();
}
- // Gives access to the private getter method civil_time_converter() for the
- // given |cobalt_service|.
- static util::CivilTimeConverterInterface* GetCivilTimeConverter(CobaltService* cobalt_service) {
- return cobalt_service->civil_time_converter();
+ static bool HasCivilTimeConverterInterface(const CobaltService& service) {
+ return service.civil_time_converter_.get() != nullptr;
}
};
-TEST_F(CobaltServiceTest, CrashesWhenConstructingWithNoGlobalRegistry) {
+TEST(CobaltService, CrashesWhenConstructingWithNoGlobalRegistry) {
auto cfg = MinConfigForTesting();
cfg.global_registry = nullptr;
ASSERT_DEATH(CobaltService service(std::move(cfg)), "Cannot initialize store");
}
-TEST_F(CobaltServiceTest, DoesNotCreateInternalLoggerWithEmptyGlobalRegistry) {
+TEST(CobaltService, DoesNotCreateInternalLoggerWithEmptyGlobalRegistry) {
auto cfg = MinConfigForTesting();
cfg.global_registry = std::make_unique<CobaltRegistry>();
CobaltService service(std::move(cfg));
EXPECT_FALSE(service.has_internal_logger());
- ShippingManager* shipping_manager = GetShippingManager(&service);
- EXPECT_TRUE(shipping_manager->impl() == ShippingManager::Impl::OTHER);
- ObservationStore& observation_store = GetObservationStore(&service);
- EXPECT_FALSE(observation_store.internal_metrics()->IsRealImpl());
+ EXPECT_TRUE(CobaltServicePeer::HasShippingManager(service, ShippingManager::Impl::OTHER));
+ EXPECT_FALSE(CobaltServicePeer::HasRealInternalMetrics(service));
}
-TEST_F(CobaltServiceTest, CreatesInternalLoggerWithValidRegistry) {
+TEST(CobaltService, CreatesInternalLoggerWithValidRegistry) {
auto cfg = MinConfigForTesting();
cfg.global_registry = std::make_unique<CobaltRegistry>();
std::string registry_bytes;
@@ -86,15 +90,13 @@
ASSERT_TRUE(cfg.global_registry->ParseFromString(registry_bytes));
CobaltService service(std::move(cfg));
EXPECT_TRUE(service.has_internal_logger());
- ShippingManager* shipping_manager = GetShippingManager(&service);
- EXPECT_TRUE(shipping_manager->impl() == ShippingManager::Impl::OTHER);
- ObservationStore& observation_store = GetObservationStore(&service);
- EXPECT_TRUE(observation_store.internal_metrics()->IsRealImpl());
+ EXPECT_TRUE(CobaltServicePeer::HasShippingManager(service, ShippingManager::Impl::OTHER));
+ EXPECT_TRUE(CobaltServicePeer::HasRealInternalMetrics(service));
}
// Tests that when a real ClearcutV1ShippingManager is used that it
// gets a real internal logger to use.
-TEST_F(CobaltServiceTest, CreatesClearcutV1ShippingManager) {
+TEST(CobaltService, CreatesClearcutV1ShippingManager) {
auto cfg = MinConfigForTesting();
cfg.global_registry = std::make_unique<CobaltRegistry>();
cfg.target_pipeline = MinClearcutTargetPipeline();
@@ -103,21 +105,16 @@
ASSERT_TRUE(cfg.global_registry->ParseFromString(registry_bytes));
CobaltService service(std::move(cfg));
EXPECT_TRUE(service.has_internal_logger());
- ShippingManager* shipping_manager = GetShippingManager(&service);
- ASSERT_TRUE(shipping_manager->impl() == ShippingManager::Impl::CLEARCUTV1);
- const auto* clearcut_shipping = static_cast<const ClearcutV1ShippingManager*>(shipping_manager);
- EXPECT_TRUE(clearcut_shipping->internal_metrics()->IsRealImpl());
- EXPECT_TRUE(clearcut_shipping->clearcut_uploader()->internal_metrics()->IsRealImpl());
- ObservationStore& observation_store = GetObservationStore(&service);
- EXPECT_TRUE(observation_store.internal_metrics()->IsRealImpl());
+ ASSERT_TRUE(CobaltServicePeer::HasShippingManager(service, ShippingManager::Impl::CLEARCUTV1));
+ EXPECT_TRUE(CobaltServicePeer::HasRealInternalMetrics(service));
}
-TEST_F(CobaltServiceTest, CreatesDefaultCivilTimeConverter) {
+TEST(CobaltServiceTest, CreatesDefaultCivilTimeConverter) {
auto cfg = MinConfigForTesting();
- ASSERT_FALSE(cfg.civil_time_converter);
+ EXPECT_EQ(cfg.civil_time_converter, nullptr);
cfg.global_registry = std::make_unique<CobaltRegistry>();
CobaltService service(std::move(cfg));
- EXPECT_TRUE(GetCivilTimeConverter(&service));
+ EXPECT_TRUE(CobaltServicePeer::HasCivilTimeConverterInterface(service));
}
} // namespace cobalt