gateway
gateway copied to clipboard
xDS Server automated testing
Description:
#176 introduces an xdstest
command, which instantiates an xDS server to perform manual testing against. This issue covers work to turn this into an automated test that can be run by CI or locally.
The largest part of this work is that it will require an xDS client test library that supports:
- connecting to an xDS server
- accepting updates
- Comparing the updates to an expected outcome
Because this process is asynchronous and requires multiple goroutines working together to work, there's a bit of design work to ensure that the testing framework isn't its own source of bugs.
xref: https://github.com/miekg/xds as xds client prior art.
@youngnick pinging you on this since RC2 is 16 days away. It would be a big help to the project if you can still take this issue on. If not, can you document how you would resolve this issue, and maybe someone else can take on the issue?
hey @danehans I plan on working on this
Yeah, sorry, I thought I would have more bandwidth to work on this. But I doubt I will before RC2, so it's better that Arko does it.
@arkodg, my plan was to have a test xDS client that mimics being an Envoy, starts the xDS conversation, and then can pass what it gets to the testing framework for comparison. Contour has a command contour cli
that does this in a reasonably general case, but aside from that I couldn't find anything in go-control-plane that did the same function.
busy with other issues, unassigned myself for now, in case someone wants to pick this one up
linking https://github.com/tetratelabs/func-e/issues/433 here which should allow downstream projects like this one to programmatically run envoy which can be used for xds server end to end testing