Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Random full coverage integration tests #6

Open
jpittis opened this issue Dec 2, 2022 · 0 comments
Open

Random full coverage integration tests #6

jpittis opened this issue Dec 2, 2022 · 0 comments
Milestone

Comments

@jpittis
Copy link
Owner

jpittis commented Dec 2, 2022

Build a “property testing” style integration test runner that generates a random set of events to apply to an in memory model and the snapshot cache, and then compare Envoy to the in memory model.

We need to support four cases:

  • SoT with single streams
  • SoT with aggregated streams
  • Delta with single streams
  • Delta with aggregated streams

The tool will let you run of the above cases for either N random events or until the harness is manually stopped (which is useful for perf testing). The harness will generate and display a seed so that it’s reproducible if a run fails.

Preferably we’d like to support all resource types, but just clusters and endpoints would be a good start.

The main test loop will look something like:

  • Generate N random events
  • Apply them to the model
  • Apply then to the cache
  • Compare Envoy to the model

As far as event types:

  • We must support add, remove, and update of resources.
  • It would be cool to support forcibly terminating the connection and/or restarting Envoy.

I’d also like to support testing ADS invariants and sending invalid config, but I’m not exactly sure how best to model that.

Otherwise, it would be cool to get the harness to spawn 1-N Envoy clients so we can use the same code for perf testing.

@jpittis jpittis added this to the Correctness milestone Dec 2, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant