[Config Parser] Move Definition of string_buffer_max

Move the definition of string_buffer_max from metric definitions to
report definitions.
These changes are for the Config Parser to recognize the
string_buffer_max is defined under the report definition.

Bug: 79464
Change-Id: I27c82b430502b7410e6a6be6f0e38ac1fc98bf09
Reviewed-on: https://fuchsia-review.googlesource.com/c/cobalt/+/669684
Reviewed-by: Laura Peskin <pesk@google.com>
Commit-Queue: Andrew Hwang <anhwang@google.com>
diff --git a/src/bin/config_parser/src/config_parser/populate_privacy_params_test.go b/src/bin/config_parser/src/config_parser/populate_privacy_params_test.go
index 822de78..af5aaa9 100644
--- a/src/bin/config_parser/src/config_parser/populate_privacy_params_test.go
+++ b/src/bin/config_parser/src/config_parser/populate_privacy_params_test.go
@@ -43,9 +43,8 @@
 		MetricType: config.MetricDefinition_OCCURRENCE,
 	}
 	stringMetric := config.MetricDefinition{
-		MetricName:      "StringMetric",
-		MetricType:      config.MetricDefinition_STRING,
-		StringBufferMax: stringBufferMax,
+		MetricName: "StringMetric",
+		MetricType: config.MetricDefinition_STRING,
 	}
 	highPrivacyFleetwideOccurrenceCountsReport := config.ReportDefinition{
 		ReportName:           "HighPrivacyFleetwideOccurrenceCounts",
@@ -82,11 +81,13 @@
 		PrivacyLevel:         config.ReportDefinition_HIGH_PRIVACY,
 		MaxCount:             maxCount,
 		EventVectorBufferMax: smallEventVectorBufferMax,
+		StringBufferMax:      stringBufferMax,
 	}
 	noAddedPrivacyStringCountsReport := config.ReportDefinition{
-		ReportName:   "NoAddedPrivacyStringCounts",
-		ReportType:   config.ReportDefinition_STRING_COUNTS,
-		PrivacyLevel: config.ReportDefinition_NO_ADDED_PRIVACY,
+		ReportName:      "NoAddedPrivacyStringCounts",
+		ReportType:      config.ReportDefinition_STRING_COUNTS,
+		PrivacyLevel:    config.ReportDefinition_NO_ADDED_PRIVACY,
+		StringBufferMax: stringBufferMax,
 	}
 	unsetPrivacyLevelReport := config.ReportDefinition{
 		ReportName: "UnsetPrivacyFleetwideOccurrenceCounts",
@@ -173,9 +174,8 @@
 		MetricType: config.MetricDefinition_INTEGER,
 	}
 	stringMetric := config.MetricDefinition{
-		MetricName:      "StringMetric",
-		MetricType:      config.MetricDefinition_STRING,
-		StringBufferMax: stringBufferMax,
+		MetricName: "StringMetric",
+		MetricType: config.MetricDefinition_STRING,
 	}
 
 	highPrivacyFleetwideOccurrenceCountsReport := config.ReportDefinition{
@@ -199,6 +199,7 @@
 		ReportType:           config.ReportDefinition_UNIQUE_DEVICE_STRING_COUNTS,
 		PrivacyLevel:         config.ReportDefinition_HIGH_PRIVACY,
 		EventVectorBufferMax: smallEventVectorBufferMax,
+		StringBufferMax:      stringBufferMax,
 	}
 
 	calc, err := privacy.NewPrivacyEncodingParamsCalculatorForTesting(testParamRecords)
@@ -259,9 +260,8 @@
 	var maxCount uint64 = 100
 
 	stringMetric := config.MetricDefinition{
-		MetricName:      "StringMetric",
-		MetricType:      config.MetricDefinition_STRING,
-		StringBufferMax: stringBufferMax,
+		MetricName: "StringMetric",
+		MetricType: config.MetricDefinition_STRING,
 	}
 	highPrivacyStringCountsReport := config.ReportDefinition{
 		ReportName:           "HighPrivacyStringCounts",
@@ -269,22 +269,26 @@
 		PrivacyLevel:         config.ReportDefinition_HIGH_PRIVACY,
 		MaxCount:             maxCount,
 		EventVectorBufferMax: smallEventVectorBufferMax,
+		StringBufferMax:      stringBufferMax,
 	}
 	noAddedPrivacyStringCountsReport := config.ReportDefinition{
-		ReportName:   "NoAddedPrivacyStringCounts",
-		ReportType:   config.ReportDefinition_STRING_COUNTS,
-		PrivacyLevel: config.ReportDefinition_NO_ADDED_PRIVACY,
+		ReportName:      "NoAddedPrivacyStringCounts",
+		ReportType:      config.ReportDefinition_STRING_COUNTS,
+		PrivacyLevel:    config.ReportDefinition_NO_ADDED_PRIVACY,
+		StringBufferMax: stringBufferMax,
 	}
 	highPrivacyUniqueDeviceStringCountsReport := config.ReportDefinition{
 		ReportName:           "HighPrivacyUniqueDeviceStringCounts",
 		ReportType:           config.ReportDefinition_UNIQUE_DEVICE_STRING_COUNTS,
 		PrivacyLevel:         config.ReportDefinition_HIGH_PRIVACY,
 		EventVectorBufferMax: smallEventVectorBufferMax,
+		StringBufferMax:      stringBufferMax,
 	}
 	noAddedPrivacyUniqueDeviceStringCountsReport := config.ReportDefinition{
-		ReportName:   "NoAddedPrivacyUniqueDeviceStringCounts",
-		ReportType:   config.ReportDefinition_UNIQUE_DEVICE_STRING_COUNTS,
-		PrivacyLevel: config.ReportDefinition_NO_ADDED_PRIVACY,
+		ReportName:      "NoAddedPrivacyUniqueDeviceStringCounts",
+		ReportType:      config.ReportDefinition_UNIQUE_DEVICE_STRING_COUNTS,
+		PrivacyLevel:    config.ReportDefinition_NO_ADDED_PRIVACY,
+		StringBufferMax: stringBufferMax,
 	}
 
 	calc, err := privacy.NewPrivacyEncodingParamsCalculatorForTesting(testParamRecords)
diff --git a/src/bin/config_parser/src/privacy/privacy_encoding_params.go b/src/bin/config_parser/src/privacy/privacy_encoding_params.go
index 9a34e0f..3d5211a 100644
--- a/src/bin/config_parser/src/privacy/privacy_encoding_params.go
+++ b/src/bin/config_parser/src/privacy/privacy_encoding_params.go
@@ -417,8 +417,8 @@
 		if err != nil {
 			return numBuckets, err
 		}
-		if metric.StringBufferMax != 0 && int32(metric.StringBufferMax) < numCellsPerHash {
-			numBuckets, err = uint64(metric.StringBufferMax)*uint64(numHashes), nil
+		if report.StringBufferMax != 0 && int32(report.StringBufferMax) < numCellsPerHash {
+			numBuckets, err = uint64(report.StringBufferMax)*uint64(numHashes), nil
 		} else {
 			numBuckets, err = uint64(numCellsPerHash*numHashes), nil
 		}
diff --git a/src/bin/config_parser/src/privacy/privacy_encoding_params_test.go b/src/bin/config_parser/src/privacy/privacy_encoding_params_test.go
index d439bba..9cf300f 100644
--- a/src/bin/config_parser/src/privacy/privacy_encoding_params_test.go
+++ b/src/bin/config_parser/src/privacy/privacy_encoding_params_test.go
@@ -267,15 +267,10 @@
 		MetricType: config.MetricDefinition_INTEGER_HISTOGRAM,
 		IntBuckets: &buckets,
 	}
-	stringMetricNoStringBufferMax := config.MetricDefinition{
-		MetricName: "StringMetricNoStringBufferMax",
+	stringMetric := config.MetricDefinition{
+		MetricName: "StringMetric",
 		MetricType: config.MetricDefinition_STRING,
 	}
-	stringMetricWithStringBufferMax := config.MetricDefinition{
-		MetricName:      "StringMetricWithStringBufferMax",
-		MetricType:      config.MetricDefinition_STRING,
-		StringBufferMax: stringBufferMax,
-	}
 
 	// Reports
 	fleetwideOccurrenceCountsReport := config.ReportDefinition{
@@ -350,11 +345,23 @@
 		ReportName:           "StringCounts",
 		ReportType:           config.ReportDefinition_STRING_COUNTS,
 		EventVectorBufferMax: eventVectorBufferMax,
+		StringBufferMax:      stringBufferMax,
+	}
+	stringCountsReportWithNoStringBufferMax := config.ReportDefinition{
+		ReportName:           "StringCountsWithNoStringBufferMax",
+		ReportType:           config.ReportDefinition_STRING_COUNTS,
+		EventVectorBufferMax: eventVectorBufferMax,
 	}
 	uniqueDeviceStringCountsReport := config.ReportDefinition{
 		ReportName:           "UniqueDeviceStringCounts",
 		ReportType:           config.ReportDefinition_UNIQUE_DEVICE_STRING_COUNTS,
 		EventVectorBufferMax: eventVectorBufferMax,
+		StringBufferMax:      stringBufferMax,
+	}
+	uniqueDeviceStringCountsReportWithNoStringBufferMax := config.ReportDefinition{
+		ReportName:           "UniqueDeviceStringCountsWithNoStringBufferMax",
+		ReportType:           config.ReportDefinition_UNIQUE_DEVICE_STRING_COUNTS,
+		EventVectorBufferMax: eventVectorBufferMax,
 	}
 	unsetReportTypeReport := config.ReportDefinition{
 		ReportName: "UnsetReportType",
@@ -392,10 +399,10 @@
 		{args{&integerHistogramMetric, &fleetwideHistogramsForIntHistogramReport}, true,
 			eventVectorBufferMax * uint64(numLinearBuckets)},
 
-		{args{&stringMetricNoStringBufferMax, &stringCountsReport}, true, eventVectorBufferMax * numCellsPerHash * numHashes},
-		{args{&stringMetricWithStringBufferMax, &stringCountsReport}, true, eventVectorBufferMax * uint64(stringBufferMax) * numHashes},
-		{args{&stringMetricNoStringBufferMax, &uniqueDeviceStringCountsReport}, true, eventVectorBufferMax * numCellsPerHash * numHashes},
-		{args{&stringMetricWithStringBufferMax, &uniqueDeviceStringCountsReport}, true, eventVectorBufferMax * uint64(stringBufferMax) * numHashes},
+		{args{&stringMetric, &stringCountsReportWithNoStringBufferMax}, true, eventVectorBufferMax * numCellsPerHash * numHashes},
+		{args{&stringMetric, &stringCountsReport}, true, eventVectorBufferMax * uint64(stringBufferMax) * numHashes},
+		{args{&stringMetric, &uniqueDeviceStringCountsReportWithNoStringBufferMax}, true, eventVectorBufferMax * numCellsPerHash * numHashes},
+		{args{&stringMetric, &uniqueDeviceStringCountsReport}, true, eventVectorBufferMax * uint64(stringBufferMax) * numHashes},
 
 		// Invalid input:
 		// This report does not have a report type set.