Skip to content

Commit

Permalink
Adds additional stats per gRPC status. (#1129)
Browse files Browse the repository at this point in the history
  • Loading branch information
fengli79 authored and mattklein123 committed Jun 16, 2017
1 parent f478eac commit f4d4f95
Show file tree
Hide file tree
Showing 2 changed files with 21 additions and 0 deletions.
4 changes: 4 additions & 0 deletions source/common/grpc/common.cc
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,10 @@ void Common::chargeStat(const Upstream::ClusterInfo& cluster, const std::string&
if (!grpc_status) {
return;
}
cluster.statsScope()
.counter(fmt::format("{}.{}.{}.{}", protocol, grpc_service, grpc_method,
grpc_status->value().c_str()))
.inc();
uint64_t grpc_status_code;
const bool success =
StringUtil::atoul(grpc_status->value().c_str(), grpc_status_code) && grpc_status_code == 0;
Expand Down
17 changes: 17 additions & 0 deletions test/common/grpc/common_test.cc
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,23 @@ TEST(GrpcCommonTest, chargeStats) {
EXPECT_EQ(1U, cluster.stats_store_.counter("grpc.service.method.success").value());
EXPECT_EQ(1U, cluster.stats_store_.counter("grpc.service.method.failure").value());
EXPECT_EQ(2U, cluster.stats_store_.counter("grpc.service.method.total").value());

Http::TestHeaderMapImpl trailers;
Http::HeaderEntry& status = trailers.insertGrpcStatus();
status.value("0", 1);
Common::chargeStat(cluster, "grpc", "service", "method", &status);
EXPECT_EQ(1U, cluster.stats_store_.counter("grpc.service.method.0").value());
EXPECT_EQ(2U, cluster.stats_store_.counter("grpc.service.method.success").value());
EXPECT_EQ(1U, cluster.stats_store_.counter("grpc.service.method.failure").value());
EXPECT_EQ(3U, cluster.stats_store_.counter("grpc.service.method.total").value());

status.value("1", 1);
Common::chargeStat(cluster, "grpc", "service", "method", &status);
EXPECT_EQ(1U, cluster.stats_store_.counter("grpc.service.method.0").value());
EXPECT_EQ(1U, cluster.stats_store_.counter("grpc.service.method.1").value());
EXPECT_EQ(2U, cluster.stats_store_.counter("grpc.service.method.success").value());
EXPECT_EQ(2U, cluster.stats_store_.counter("grpc.service.method.failure").value());
EXPECT_EQ(4U, cluster.stats_store_.counter("grpc.service.method.total").value());
}

TEST(GrpcCommonTest, prepareHeaders) {
Expand Down

0 comments on commit f4d4f95

Please sign in to comment.