nighthawk
nighthawk copied to clipboard
Add more echo responders to test server filter ResponseOptions.
This is a follow-up to comments on #338 which has added echo_request_headers to the test server filter ResponseOptions.
I'd like to add more response options that I think might be useful:
echo_request_metadata- include the dump of request metadata in the response bodyecho_request_body- include the body ofPOSTrequest in the response bodystatus_code- set http status code to arbitrary value, like204or302
@htuch has suggested that we might want to eventually have a more structured body. E.g. make it a proto defined JSON format or something like that.
I think that makes sense, and I'd like to have more input.
-
Should echo response be included into response body or special response headers? I think that including response in headers are nice because they could be stripped automatically AND are easily parsed. E.g.
x-echo-request-headers: { some_headers_dump }. -
What format do we want structured response to use? Arbitrary JSON? Some specifically defined proto? Something else?
Any other ideas / suggestions?
Re: format, in Envoy (and basically NH), we tend to use proto3 to define formats canonically. You can then use Proto3 <-> JSON transform methods in the proto libs.
I'm not sure if it would be the right thing to re-use it, but it might be worth taking a look at RequestSpecifier over at https://github.com/envoyproxy/nighthawk/blob/master/api/request_source/service.proto
Also, to float an idea, maybe another nice feature could be to direct the test server to yield x chunks of transfer-encoded data, with configurable size and inter-chunk timings. (Note -- I do not have a clear idea about what it would take to pull this off)