[Cobalt 1.1 privacy] Finish implementing MakePrivateObservations for FleetwideMeans
Also adds a test to check that this method is implemented
for all of the expected report types.
Change-Id: I0c973ac7a6b4ae708863bb516362ae1e6386d3cb
Reviewed-on: https://fuchsia-review.googlesource.com/c/cobalt/+/442902
Reviewed-by: Alexandre Zani <azani@google.com>
Commit-Queue: Laura Peskin <pesk@google.com>
diff --git a/src/logger/privacy_encoder.cc b/src/logger/privacy_encoder.cc
index 603e901..3374e7f 100644
--- a/src/logger/privacy_encoder.cc
+++ b/src/logger/privacy_encoder.cc
@@ -93,6 +93,11 @@
observation, metric_def, report_def));
break;
}
+ case ReportDefinition::FLEETWIDE_MEANS: {
+ CB_ASSIGN_OR_RETURN(
+ indices, PrepareIndexVectorForFleetwideMeansReport(observation, metric_def, report_def));
+ break;
+ }
default:
return util::Status(util::UNIMPLEMENTED, "this is not yet implemented");
diff --git a/src/logger/privacy_encoder_test.cc b/src/logger/privacy_encoder_test.cc
index 1279111..129fdf8 100644
--- a/src/logger/privacy_encoder_test.cc
+++ b/src/logger/privacy_encoder_test.cc
@@ -96,15 +96,44 @@
EXPECT_EQ(status_or.status().error_code(), util::INVALID_ARGUMENT);
}
-TEST_F(PrivacyEncoderTest, MakePrivateObservationsUnimplementedReportType) {
+TEST_F(PrivacyEncoderTest, MakePrivateObservationsImplemented) {
+ std::vector<ReportDefinition::ReportType> implemented_report_types = {
+ ReportDefinition::UNIQUE_DEVICE_COUNTS,
+ ReportDefinition::FLEETWIDE_OCCURRENCE_COUNTS,
+ ReportDefinition::HOURLY_VALUE_NUMERIC_STATS,
+ ReportDefinition::UNIQUE_DEVICE_NUMERIC_STATS,
+ ReportDefinition::FLEETWIDE_MEANS,
+ ReportDefinition::HOURLY_VALUE_HISTOGRAMS,
+ ReportDefinition::UNIQUE_DEVICE_HISTOGRAMS};
+
MetricDefinition metric_def;
ReportDefinition report_def;
report_def.set_privacy_level(ReportDefinition::LOW_PRIVACY);
- report_def.set_report_type(ReportDefinition::CUSTOM_RAW_DUMP);
Observation observation;
- auto status_or = MakePrivateObservations(&observation, metric_def, report_def);
- ASSERT_FALSE(status_or.ok());
- EXPECT_EQ(status_or.status().error_code(), util::UNIMPLEMENTED);
+
+ for (const ReportDefinition::ReportType report_type : implemented_report_types) {
+ report_def.set_report_type(report_type);
+ EXPECT_NE(MakePrivateObservations(&observation, metric_def, report_def).status().error_code(),
+ util::UNIMPLEMENTED);
+ }
+}
+
+// MakePrivateObservations() is not implemented yet for these report types. Move report types to the
+// MakePrivateObservationsImplemented test as they are implemented.
+TEST_F(PrivacyEncoderTest, MakePrivateObservationsUnimplemented) {
+ std::vector<ReportDefinition::ReportType> unimplemented_report_types = {
+ ReportDefinition::FLEETWIDE_HISTOGRAMS, ReportDefinition::STRING_COUNTS};
+
+ MetricDefinition metric_def;
+ ReportDefinition report_def;
+ report_def.set_privacy_level(ReportDefinition::LOW_PRIVACY);
+
+ Observation observation;
+ for (const ReportDefinition::ReportType report_type : unimplemented_report_types) {
+ report_def.set_report_type(report_type);
+ EXPECT_EQ(MakePrivateObservations(&observation, metric_def, report_def).status().error_code(),
+ util::UNIMPLEMENTED);
+ }
}
TEST_F(PrivacyEncoderTest, MakePrivateObservationsNullObservation) {