|
|
|
@ -341,6 +341,80 @@ TEST_F(OTelPluginEnd2EndTest, TargetSelectorReturnsFalse) { |
|
|
|
|
ASSERT_TRUE(data.empty()); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// Test that a target attribute filter returning true records metrics with the
|
|
|
|
|
// target as is on the channel.
|
|
|
|
|
TEST_F(OTelPluginEnd2EndTest, TargetAttributeFilterReturnsTrue) { |
|
|
|
|
Init({grpc::internal::OTelClientAttemptStartedInstrumentName()}, /*resource=*/ |
|
|
|
|
opentelemetry::sdk::resource::Resource::Create({}), |
|
|
|
|
/*labels_injector=*/nullptr, |
|
|
|
|
/*test_no_meter_provider=*/false, |
|
|
|
|
/*target_selector=*/absl::AnyInvocable<bool(absl::string_view) const>(), |
|
|
|
|
/*target_attribute_filter=*/[](absl::string_view /*target*/) { |
|
|
|
|
return true; |
|
|
|
|
}); |
|
|
|
|
SendRPC(); |
|
|
|
|
const char* kMetricName = "grpc.client.attempt.started"; |
|
|
|
|
auto data = ReadCurrentMetricsData( |
|
|
|
|
[&](const absl::flat_hash_map< |
|
|
|
|
std::string, |
|
|
|
|
std::vector<opentelemetry::sdk::metrics::PointDataAttributes>>& |
|
|
|
|
data) { return !data.contains(kMetricName); }); |
|
|
|
|
ASSERT_EQ(data[kMetricName].size(), 1); |
|
|
|
|
auto point_data = absl::get_if<opentelemetry::sdk::metrics::SumPointData>( |
|
|
|
|
&data[kMetricName][0].point_data); |
|
|
|
|
ASSERT_NE(point_data, nullptr); |
|
|
|
|
auto client_started_value = absl::get_if<int64_t>(&point_data->value_); |
|
|
|
|
ASSERT_NE(client_started_value, nullptr); |
|
|
|
|
EXPECT_EQ(*client_started_value, 1); |
|
|
|
|
const auto& attributes = data[kMetricName][0].attributes.GetAttributes(); |
|
|
|
|
EXPECT_EQ(attributes.size(), 2); |
|
|
|
|
const auto* method_value = |
|
|
|
|
absl::get_if<std::string>(&attributes.at("grpc.method")); |
|
|
|
|
ASSERT_NE(method_value, nullptr); |
|
|
|
|
EXPECT_EQ(*method_value, kMethodName); |
|
|
|
|
const auto* target_value = |
|
|
|
|
absl::get_if<std::string>(&attributes.at("grpc.target")); |
|
|
|
|
ASSERT_NE(target_value, nullptr); |
|
|
|
|
EXPECT_EQ(*target_value, canonical_server_address_); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// Test that a target attribute filter returning false records metrics with the
|
|
|
|
|
// target as "other".
|
|
|
|
|
TEST_F(OTelPluginEnd2EndTest, TargetAttributeFilterReturnsFalse) { |
|
|
|
|
Init({grpc::internal::OTelClientAttemptStartedInstrumentName()}, /*resource=*/ |
|
|
|
|
opentelemetry::sdk::resource::Resource::Create({}), |
|
|
|
|
/*labels_injector=*/nullptr, |
|
|
|
|
/*test_no_meter_provider=*/false, |
|
|
|
|
/*target_selector=*/absl::AnyInvocable<bool(absl::string_view) const>(), |
|
|
|
|
/*target_attribute_filter=*/ |
|
|
|
|
[server_address = canonical_server_address_]( |
|
|
|
|
absl::string_view /*target*/) { return false; }); |
|
|
|
|
SendRPC(); |
|
|
|
|
const char* kMetricName = "grpc.client.attempt.started"; |
|
|
|
|
auto data = ReadCurrentMetricsData( |
|
|
|
|
[&](const absl::flat_hash_map< |
|
|
|
|
std::string, |
|
|
|
|
std::vector<opentelemetry::sdk::metrics::PointDataAttributes>>& |
|
|
|
|
/*data*/) { return false; }); |
|
|
|
|
ASSERT_EQ(data[kMetricName].size(), 1); |
|
|
|
|
auto point_data = absl::get_if<opentelemetry::sdk::metrics::SumPointData>( |
|
|
|
|
&data[kMetricName][0].point_data); |
|
|
|
|
ASSERT_NE(point_data, nullptr); |
|
|
|
|
auto client_started_value = absl::get_if<int64_t>(&point_data->value_); |
|
|
|
|
ASSERT_NE(client_started_value, nullptr); |
|
|
|
|
EXPECT_EQ(*client_started_value, 1); |
|
|
|
|
const auto& attributes = data[kMetricName][0].attributes.GetAttributes(); |
|
|
|
|
EXPECT_EQ(attributes.size(), 2); |
|
|
|
|
const auto* method_value = |
|
|
|
|
absl::get_if<std::string>(&attributes.at("grpc.method")); |
|
|
|
|
ASSERT_NE(method_value, nullptr); |
|
|
|
|
EXPECT_EQ(*method_value, kMethodName); |
|
|
|
|
const auto* target_value = |
|
|
|
|
absl::get_if<std::string>(&attributes.at("grpc.target")); |
|
|
|
|
ASSERT_NE(target_value, nullptr); |
|
|
|
|
EXPECT_EQ(*target_value, "other"); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
} // namespace
|
|
|
|
|
} // namespace testing
|
|
|
|
|
} // namespace grpc
|
|
|
|
|