@@ -24,6 +24,7 @@ static xds::data::orca::v3::OrcaLoadReport exampleOrcaLoadReport() {
2424 orca_load_report.set_rps_fractional (1000 );
2525 orca_load_report.mutable_named_metrics ()->insert ({" foo" , 123 });
2626 orca_load_report.mutable_named_metrics ()->insert ({" bar" , 0.2 });
27+ orca_load_report.mutable_utilization ()->insert ({" total" , 0.5 });
2728 return orca_load_report;
2829}
2930
@@ -74,7 +75,7 @@ TEST(OrcaParserUtilTest, NativeHttpEncodedHeader) {
7475 absl::StrCat (kHeaderFormatPrefixText ,
7576 " cpu_utilization:0.7,application_utilization:0.8,mem_utilization:0.9,"
7677 " rps_fractional:1000,eps:2,"
77- " named_metrics.foo:123,named_metrics.bar:0.2" )}};
78+ " named_metrics.foo:123,named_metrics.bar:0.2,utilization.total:0.5 " )}};
7879 EXPECT_THAT (parseOrcaLoadReportHeaders (headers),
7980 StatusHelpers::IsOkAndHolds (ProtoEq (exampleOrcaLoadReport ())));
8081}
@@ -108,6 +109,15 @@ TEST(OrcaParserUtilTest, NativeHttpEncodedHeaderInfinityMetricValue) {
108109 " infinity." )));
109110}
110111
112+ TEST (OrcaParserUtilTest, NativeHttpEncodedHeaderNegativeMetricValue) {
113+ Http::TestRequestHeaderMapImpl headers{
114+ {std::string (kEndpointLoadMetricsHeader ),
115+ absl::StrCat (kHeaderFormatPrefixText , " cpu_utilization:-1" )}};
116+ EXPECT_THAT (parseOrcaLoadReportHeaders (headers),
117+ StatusHelpers::HasStatus (absl::InvalidArgumentError (
118+ " custom backend load metric value(cpu_utilization) cannot be negative." )));
119+ }
120+
111121TEST (OrcaParserUtilTest, NativeHttpEncodedHeaderContainsDuplicateMetric) {
112122 Http::TestRequestHeaderMapImpl headers{
113123 {std::string (kEndpointLoadMetricsHeader ),
@@ -126,6 +136,15 @@ TEST(OrcaParserUtilTest, NativeHttpEncodedHeaderUnsupportedMetric) {
126136 absl::InvalidArgumentError (" unsupported metric name: unsupported_metric" )));
127137}
128138
139+ TEST (OrcaParserUtilTest, NativeHttpEncodedHeaderContainsEmptyUtilizationMetricKey) {
140+ Http::TestRequestHeaderMapImpl headers{
141+ {std::string (kEndpointLoadMetricsHeader ),
142+ absl::StrCat (kHeaderFormatPrefixText , " utilization.:0.9" )}};
143+ EXPECT_THAT (
144+ parseOrcaLoadReportHeaders (headers),
145+ StatusHelpers::HasStatus (absl::InvalidArgumentError (" utilization metric key is empty." )));
146+ }
147+
129148TEST (OrcaParserUtilTest, NativeHttpEncodedHeaderContainsDuplicateNamedMetric) {
130149 Http::TestRequestHeaderMapImpl headers{
131150 {std::string (kEndpointLoadMetricsHeader ),
@@ -161,7 +180,8 @@ TEST(OrcaParserUtilTest, JsonHeader) {
161180 absl::StrCat (kHeaderFormatPrefixJson ,
162181 " {\" cpu_utilization\" : 0.7, \" application_utilization\" : 0.8, "
163182 " \" mem_utilization\" : 0.9, \" rps_fractional\" : 1000, \" eps\" : 2, "
164- " \" named_metrics\" : {\" foo\" : 123,\" bar\" : 0.2}}" )}};
183+ " \" named_metrics\" : {\" foo\" : 123,\" bar\" : 0.2}, "
184+ " \" utilization\" : {\" total\" : 0.5}}" )}};
165185 EXPECT_THAT (parseOrcaLoadReportHeaders (headers),
166186 StatusHelpers::IsOkAndHolds (ProtoEq (exampleOrcaLoadReport ())));
167187}
0 commit comments