gateway icon indicating copy to clipboard operation
gateway copied to clipboard

xDS Server automated testing

Open youngnick opened this issue 2 years ago • 4 comments

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.

youngnick avatar Jul 28 '22 00:07 youngnick

xref: https://github.com/miekg/xds as xds client prior art.

danehans avatar Jul 28 '22 18:07 danehans

@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?

danehans avatar Sep 12 '22 17:09 danehans

hey @danehans I plan on working on this

arkodg avatar Sep 12 '22 18:09 arkodg

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.

youngnick avatar Sep 14 '22 05:09 youngnick

busy with other issues, unassigned myself for now, in case someone wants to pick this one up

arkodg avatar Oct 13 '22 16:10 arkodg

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

arkodg avatar Oct 28 '22 19:10 arkodg