Skip to content

Commit

Permalink
Make opencensus Stackdriver exporter respects initial_metadata option (
Browse files Browse the repository at this point in the history
…envoyproxy#11831)

Currently Opencensus tracer uses grpcService proto to configure its tracing client stub. It uses GoogleGrpcUtil to construct a channel and create client stub with that. However, the channel created there does not take care of initial_metadata from grpcService configure. This change fills in OCprepare_client_context option in export to make it respect initial metadata.

Risk level: Low

Signed-off-by: Pengyuan Bian <[email protected]>
Signed-off-by: Kevin Baichoo <[email protected]>
  • Loading branch information
bianpengyuan authored and KBaichoo committed Jul 30, 2020
1 parent 4f65520 commit d9a913e
Show file tree
Hide file tree
Showing 4 changed files with 19 additions and 6 deletions.
8 changes: 4 additions & 4 deletions bazel/repository_locations.bzl
Original file line number Diff line number Diff line change
Expand Up @@ -385,10 +385,10 @@ DEPENDENCY_REPOSITORIES = dict(
use_category = ["other"],
),
io_opencensus_cpp = dict(
sha256 = "193ffb4e13bd7886757fd22b61b7f7a400634412ad8e7e1071e73f57bedd7fc6",
strip_prefix = "opencensus-cpp-04ed0211931f12b03c1a76b3907248ca4db7bc90",
# 2020-03-24
urls = ["https://github.com/census-instrumentation/opencensus-cpp/archive/04ed0211931f12b03c1a76b3907248ca4db7bc90.tar.gz"],
sha256 = "12ff300fa804f97bd07e2ff071d969e09d5f3d7bbffeac438c725fa52a51a212",
strip_prefix = "opencensus-cpp-7877337633466358ed680f9b26967da5b310d7aa",
# 2020-06-01
urls = ["https://github.com/census-instrumentation/opencensus-cpp/archive/7877337633466358ed680f9b26967da5b310d7aa.tar.gz"],
use_category = ["observability"],
cpe = "N/A",
),
Expand Down
10 changes: 10 additions & 0 deletions source/extensions/tracers/opencensus/opencensus_tracer_impl.cc
Original file line number Diff line number Diff line change
Expand Up @@ -281,7 +281,17 @@ Driver::Driver(const envoy::config::trace::v3::OpenCensusConfig& oc_config,
stackdriver_service.mutable_google_grpc()->set_target_uri(GoogleStackdriverTraceAddress);
}
auto channel = Envoy::Grpc::GoogleGrpcUtils::createChannel(stackdriver_service, api);
// TODO(bianpengyuan): add tests for trace_service_stub and initial_metadata options with mock
// stubs.
opts.trace_service_stub = ::google::devtools::cloudtrace::v2::TraceService::NewStub(channel);
const auto& initial_metadata = stackdriver_service.initial_metadata();
if (!initial_metadata.empty()) {
opts.prepare_client_context = [initial_metadata](grpc::ClientContext* ctx) {
for (const auto& metadata : initial_metadata) {
ctx->AddMetadata(metadata.key(), metadata.value());
}
};
}
#else
throw EnvoyException("Opencensus tracer: cannot handle stackdriver google grpc service, "
"google grpc is not built in.");
Expand Down
3 changes: 3 additions & 0 deletions test/extensions/tracers/opencensus/config_test.cc
Original file line number Diff line number Diff line change
Expand Up @@ -323,6 +323,9 @@ TEST(OpenCensusTracerConfigTest, OpenCensusHttpTracerStackdriverGrpc) {
google_grpc:
target_uri: 127.0.0.1:55678
stat_prefix: test
initial_metadata:
- key: foo
value: bar
)EOF";

envoy::config::trace::v3::Tracing configuration;
Expand Down
4 changes: 2 additions & 2 deletions test/per_file_coverage.sh
Original file line number Diff line number Diff line change
Expand Up @@ -43,8 +43,8 @@ declare -a KNOWN_LOW_COVERAGE=(
"source/extensions/retry:95.5"
"source/extensions/retry/host:85.7"
"source/extensions/stat_sinks/statsd:85.2"
"source/extensions/tracers:96.5"
"source/extensions/tracers/opencensus:92.4"
"source/extensions/tracers:96.3"
"source/extensions/tracers/opencensus:91.2"
"source/extensions/tracers/xray:95.3"
"source/extensions/transport_sockets:94.9"
"source/extensions/transport_sockets/tap:95.6"
Expand Down

0 comments on commit d9a913e

Please sign in to comment.