Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -61,8 +61,9 @@ Http::FilterHeadersStatus KillRequestFilter::decodeHeaders(Http::RequestHeaderMa

if (per_route_kill_settings) {
is_correct_direction = per_route_kill_settings->getDirection() == KillRequest::REQUEST;
envoy::type::v3::FractionalPercent probability = per_route_kill_settings->getProbability();
kill_request_.set_allocated_probability(&probability);
// Allocate the probability into kill_request in case the lifetime of
// per_route_kill_settings does not match that of kill_request_
kill_request_.mutable_probability()->CopyFrom(per_route_kill_settings->getProbability());
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -209,6 +209,24 @@ TEST_F(KillRequestFilterTest, KillsBasedOnDirection) {
"KillRequestFilter is crashing Envoy!!!");
}

TEST_F(KillRequestFilterTest, PerRouteKillSettingFound) {
envoy::extensions::filters::http::kill_request::v3::KillRequest kill_request;
setUpTest(kill_request);
request_headers_.addCopy("x-envoy-kill-request", "true");

envoy::extensions::filters::http::kill_request::v3::KillRequest route_level_kill_request;
// Set probability to zero to make isKillRequestEnabled return false
route_level_kill_request.mutable_probability()->set_numerator(0);
route_level_kill_request.set_kill_request_header("x-custom-kill-request");

// Return valid kill setting on the REQUEST direction
const KillSettings kill_settings(route_level_kill_request);
ON_CALL(decoder_filter_callbacks_.route_->route_entry_,
perFilterConfig(Extensions::HttpFilters::HttpFilterNames::get().KillRequest))
.WillByDefault(Return(&kill_settings));
ASSERT_EQ(filter_->decodeHeaders(request_headers_, false), Http::FilterHeadersStatus::Continue);
}

} // namespace
} // namespace KillRequest
} // namespace HttpFilters
Expand Down