Skip to content

Commit

Permalink
pass header map *
Browse files Browse the repository at this point in the history
  • Loading branch information
RomanDzhabarov committed Jun 9, 2017
1 parent 27b0875 commit 5b91a78
Show file tree
Hide file tree
Showing 4 changed files with 45 additions and 24 deletions.
2 changes: 1 addition & 1 deletion source/common/http/conn_manager_impl.cc
Original file line number Diff line number Diff line change
Expand Up @@ -339,7 +339,7 @@ ConnectionManagerImpl::ActiveStream::~ActiveStream() {
if (request_info_.healthCheck()) {
connection_manager_.config_.tracingStats().health_check_.inc();
} else {
Tracing::HttpConnManFinalizerImpl finalizer{*request_headers_, request_info_, *this};
Tracing::HttpConnManFinalizerImpl finalizer(request_headers_.get(), request_info_, *this);
active_span_->finishSpan(finalizer);
}

Expand Down
38 changes: 20 additions & 18 deletions source/common/tracing/http_tracer_impl.cc
Original file line number Diff line number Diff line change
Expand Up @@ -116,34 +116,36 @@ Decision HttpTracerUtility::isTracing(const Http::AccessLog::RequestInfo& reques
NOT_REACHED;
}

HttpConnManFinalizerImpl::HttpConnManFinalizerImpl(Http::HeaderMap& request_headers,
HttpConnManFinalizerImpl::HttpConnManFinalizerImpl(Http::HeaderMap* request_headers,
Http::AccessLog::RequestInfo& request_info,
Config& tracing_config)
: request_headers_(request_headers), request_info_(request_info),
tracing_config_(tracing_config) {}

void HttpConnManFinalizerImpl::finalize(Span& span) {
// Pre response data.
span.setTag("guid:x-request-id", std::string(request_headers_.RequestId()->value().c_str()));
span.setTag("request_line", buildRequestLine(request_headers_, request_info_));
span.setTag("request_size", std::to_string(request_info_.bytesReceived()));
span.setTag("host_header", valueOrDefault(request_headers_.Host(), "-"));
span.setTag("downstream_cluster",
valueOrDefault(request_headers_.EnvoyDownstreamServiceCluster(), "-"));
span.setTag("user_agent", valueOrDefault(request_headers_.UserAgent(), "-"));

if (request_headers_.ClientTraceId()) {
span.setTag("guid:x-client-trace-id",
std::string(request_headers_.ClientTraceId()->value().c_str()));
}
if (request_headers_) {
span.setTag("guid:x-request-id", std::string(request_headers_->RequestId()->value().c_str()));
span.setTag("request_line", buildRequestLine(*request_headers_, request_info_));
span.setTag("host_header", valueOrDefault(request_headers_->Host(), "-"));
span.setTag("downstream_cluster",
valueOrDefault(request_headers_->EnvoyDownstreamServiceCluster(), "-"));
span.setTag("user_agent", valueOrDefault(request_headers_->UserAgent(), "-"));

if (request_headers_->ClientTraceId()) {
span.setTag("guid:x-client-trace-id",
std::string(request_headers_->ClientTraceId()->value().c_str()));
}

// Build tags based on the custom headers.
for (const Http::LowerCaseString& header : tracing_config_.requestHeadersForTags()) {
const Http::HeaderEntry* entry = request_headers_.get(header);
if (entry) {
span.setTag(header.get(), entry->value().c_str());
// Build tags based on the custom headers.
for (const Http::LowerCaseString& header : tracing_config_.requestHeadersForTags()) {
const Http::HeaderEntry* entry = request_headers_->get(header);
if (entry) {
span.setTag(header.get(), entry->value().c_str());
}
}
}
span.setTag("request_size", std::to_string(request_info_.bytesReceived()));

// Post response data.
span.setTag("response_code", buildResponseCode(request_info_));
Expand Down
4 changes: 2 additions & 2 deletions source/common/tracing/http_tracer_impl.h
Original file line number Diff line number Diff line change
Expand Up @@ -82,13 +82,13 @@ class NullFinalizer : public SpanFinalizer {
*/
class HttpConnManFinalizerImpl : public SpanFinalizer {
public:
HttpConnManFinalizerImpl(Http::HeaderMap& request_headers,
HttpConnManFinalizerImpl(Http::HeaderMap* request_headers,
Http::AccessLog::RequestInfo& request_info, Config& tracing_config);

void finalize(Span& span) override;

private:
Http::HeaderMap& request_headers_;
Http::HeaderMap* request_headers_;
Http::AccessLog::RequestInfo& request_info_;
Config& tracing_config_;
};
Expand Down
25 changes: 22 additions & 3 deletions test/common/tracing/http_tracer_impl_test.cc
Original file line number Diff line number Diff line change
Expand Up @@ -254,7 +254,26 @@ TEST(HttpConnManFinalizerImpl, OriginalAndLongPath) {
EXPECT_CALL(*span, setTag("request_line", "GET " + expected_path + " HTTP/2"));
NiceMock<MockConfig> config;

HttpConnManFinalizerImpl finalizer{request_headers, request_info, config};
HttpConnManFinalizerImpl finalizer(&request_headers, request_info, config);
finalizer.finalize(*span);
}

TEST(HttpConnManFinalizerImpl, NullRequestHeaders) {
std::unique_ptr<NiceMock<MockSpan>> span(new NiceMock<MockSpan>());
NiceMock<Http::AccessLog::MockRequestInfo> request_info;

EXPECT_CALL(request_info, bytesReceived()).WillOnce(Return(10));
EXPECT_CALL(request_info, bytesSent()).WillOnce(Return(11));
Optional<uint32_t> response_code;
EXPECT_CALL(request_info, responseCode()).WillRepeatedly(ReturnRef(response_code));

EXPECT_CALL(*span, setTag("response_code", "0"));
EXPECT_CALL(*span, setTag("response_size", "11"));
EXPECT_CALL(*span, setTag("response_flags", "-"));
EXPECT_CALL(*span, setTag("request_size", "10"));
NiceMock<MockConfig> config;

HttpConnManFinalizerImpl finalizer(nullptr, request_info, config);
finalizer.finalize(*span);
}

Expand Down Expand Up @@ -288,7 +307,7 @@ TEST(HttpConnManFinalizerImpl, SpanOptionalHeaders) {

NiceMock<MockConfig> config;

HttpConnManFinalizerImpl finalizer{request_headers, request_info, config};
HttpConnManFinalizerImpl finalizer(&request_headers, request_info, config);
finalizer.finalize(*span);
}

Expand Down Expand Up @@ -340,7 +359,7 @@ TEST(HttpConnManFinalizerImpl, SpanPopulatedFailureResponse) {
EXPECT_CALL(*span, setTag("response_size", "100"));
EXPECT_CALL(*span, setTag("response_flags", "UT"));

HttpConnManFinalizerImpl finalizer{request_headers, request_info, config};
HttpConnManFinalizerImpl finalizer(&request_headers, request_info, config);
finalizer.finalize(*span);
}

Expand Down

0 comments on commit 5b91a78

Please sign in to comment.