|
|
|
@ -98,7 +98,8 @@ class MyTestServiceImpl : public TestServiceImpl { |
|
|
|
|
auto* recorder = context->ExperimentalGetCallMetricRecorder(); |
|
|
|
|
EXPECT_NE(recorder, nullptr); |
|
|
|
|
recorder->RecordCpuUtilizationMetric(load_report_.cpu_utilization()) |
|
|
|
|
.RecordMemoryUtilizationMetric(load_report_.mem_utilization()); |
|
|
|
|
.RecordMemoryUtilizationMetric(load_report_.mem_utilization()) |
|
|
|
|
.RecordQpsMetric(load_report_.rps_fractional()); |
|
|
|
|
for (const auto& p : load_report_.request_cost()) { |
|
|
|
|
recorder->RecordRequestCostMetric(p.first, p.second); |
|
|
|
|
} |
|
|
|
@ -2271,6 +2272,7 @@ xds::data::orca::v3::OrcaLoadReport BackendMetricDataToOrcaLoadReport( |
|
|
|
|
xds::data::orca::v3::OrcaLoadReport load_report; |
|
|
|
|
load_report.set_cpu_utilization(backend_metric_data.cpu_utilization); |
|
|
|
|
load_report.set_mem_utilization(backend_metric_data.mem_utilization); |
|
|
|
|
load_report.set_rps_fractional(backend_metric_data.qps); |
|
|
|
|
for (const auto& p : backend_metric_data.request_cost) { |
|
|
|
|
std::string name(p.first); |
|
|
|
|
(*load_report.mutable_request_cost())[name] = p.second; |
|
|
|
@ -2501,6 +2503,7 @@ TEST_F(ClientLbInterceptTrailingMetadataTest, BackendMetricData) { |
|
|
|
|
xds::data::orca::v3::OrcaLoadReport load_report; |
|
|
|
|
load_report.set_cpu_utilization(0.5); |
|
|
|
|
load_report.set_mem_utilization(0.75); |
|
|
|
|
load_report.set_rps_fractional(0.25); |
|
|
|
|
auto* request_cost = load_report.mutable_request_cost(); |
|
|
|
|
(*request_cost)["foo"] = 0.8; |
|
|
|
|
(*request_cost)["bar"] = 1.4; |
|
|
|
@ -2520,6 +2523,7 @@ TEST_F(ClientLbInterceptTrailingMetadataTest, BackendMetricData) { |
|
|
|
|
// available in OSS.
|
|
|
|
|
EXPECT_EQ(actual->cpu_utilization(), load_report.cpu_utilization()); |
|
|
|
|
EXPECT_EQ(actual->mem_utilization(), load_report.mem_utilization()); |
|
|
|
|
EXPECT_EQ(actual->rps_fractional(), load_report.rps_fractional()); |
|
|
|
|
EXPECT_EQ(actual->request_cost().size(), load_report.request_cost().size()); |
|
|
|
|
for (const auto& p : actual->request_cost()) { |
|
|
|
|
auto it = load_report.request_cost().find(p.first); |
|
|
|
@ -2690,7 +2694,8 @@ TEST_F(OobBackendMetricTest, Basic) { |
|
|
|
|
constexpr char kMetricName[] = "foo"; |
|
|
|
|
servers_[0]->orca_service_.SetCpuUtilization(0.1); |
|
|
|
|
servers_[0]->orca_service_.SetMemoryUtilization(0.2); |
|
|
|
|
servers_[0]->orca_service_.SetNamedUtilization(kMetricName, 0.3); |
|
|
|
|
servers_[0]->orca_service_.SetQps(0.3); |
|
|
|
|
servers_[0]->orca_service_.SetNamedUtilization(kMetricName, 0.4); |
|
|
|
|
// Start client.
|
|
|
|
|
auto response_generator = BuildResolverResponseGenerator(); |
|
|
|
|
auto channel = BuildChannel("oob_backend_metric_test_lb", response_generator); |
|
|
|
@ -2708,9 +2713,10 @@ TEST_F(OobBackendMetricTest, Basic) { |
|
|
|
|
EXPECT_EQ(report->first, servers_[0]->port_); |
|
|
|
|
EXPECT_EQ(report->second.cpu_utilization(), 0.1); |
|
|
|
|
EXPECT_EQ(report->second.mem_utilization(), 0.2); |
|
|
|
|
EXPECT_EQ(report->second.rps_fractional(), 0.3); |
|
|
|
|
EXPECT_THAT( |
|
|
|
|
report->second.utilization(), |
|
|
|
|
::testing::UnorderedElementsAre(::testing::Pair(kMetricName, 0.3))); |
|
|
|
|
::testing::UnorderedElementsAre(::testing::Pair(kMetricName, 0.4))); |
|
|
|
|
break; |
|
|
|
|
} |
|
|
|
|
gpr_sleep_until(grpc_timeout_seconds_to_deadline(1)); |
|
|
|
@ -2719,7 +2725,8 @@ TEST_F(OobBackendMetricTest, Basic) { |
|
|
|
|
// Note that the server may send a new report while we're updating these,
|
|
|
|
|
// so we set them in reverse order, so that we know we'll get all new
|
|
|
|
|
// data once we see a report with the new CPU utilization value.
|
|
|
|
|
servers_[0]->orca_service_.SetNamedUtilization(kMetricName, 0.6); |
|
|
|
|
servers_[0]->orca_service_.SetNamedUtilization(kMetricName, 0.7); |
|
|
|
|
servers_[0]->orca_service_.SetQps(0.6); |
|
|
|
|
servers_[0]->orca_service_.SetMemoryUtilization(0.5); |
|
|
|
|
servers_[0]->orca_service_.SetCpuUtilization(0.4); |
|
|
|
|
// Wait for client to see new report.
|
|
|
|
@ -2730,9 +2737,10 @@ TEST_F(OobBackendMetricTest, Basic) { |
|
|
|
|
if (report->second.cpu_utilization() != 0.1) { |
|
|
|
|
EXPECT_EQ(report->second.cpu_utilization(), 0.4); |
|
|
|
|
EXPECT_EQ(report->second.mem_utilization(), 0.5); |
|
|
|
|
EXPECT_EQ(report->second.rps_fractional(), 0.6); |
|
|
|
|
EXPECT_THAT( |
|
|
|
|
report->second.utilization(), |
|
|
|
|
::testing::UnorderedElementsAre(::testing::Pair(kMetricName, 0.6))); |
|
|
|
|
::testing::UnorderedElementsAre(::testing::Pair(kMetricName, 0.7))); |
|
|
|
|
break; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|