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

Multi-controller Support for Running Sieve #43

Open
kosyd opened this issue Oct 21, 2021 · 1 comment
Open

Multi-controller Support for Running Sieve #43

kosyd opened this issue Oct 21, 2021 · 1 comment
Assignees

Comments

@kosyd
Copy link

kosyd commented Oct 21, 2021

⭐ Following up from NA KubeCon 2021 ⭐
Per my discussion with Lalith Suresh and Xudong Sun

Is there a way to test race conditions between multiple controllers running in the same Kubernetes cluster simultaneously with Sieve? Testing each controller independently may work as an alternative approach but it can become impractical given the number of controllers that may be running in a given Kubernetes cluster and the desired number of test workloads to be tested.

For example, testing the HPA controller, VPA controller, and Cluster Autoscaling controller along with a custom controller/operator requires testing each component separately for each test workload you'd like to check.

@marshtompsxd
Copy link
Member

@kosyd Thank you so much for writing the issue! And sorry for the late reply.

Although so far we have been testing each custom controller separately, there is actually nothing preventing us from testing multiple controllers at the same time. One can set up a test environment with multiple different controllers running and Sieve will focus on injecting faults into one controller.

The real difficulty is the combinatorial explosion issue if we want to inject fault to multiple controllers. Let's say the number of fault injections Sieve wants to conduct for one controller is X1 (which is usually around 50 ~ 200). If we want to try all the possible combinations of fault injections for n controllers, the total number of fault injections we need to conduct will be X1*X2*...*Xn, which can be a huge number. We are trying to figure out how to make it more practical.

The data race issue between multiple controllers you mentioned is a great example that we can start from. If we focus on manipulating the order between read/write (on the same resource) issued by multiple controllers, testing multiple controllers should become much more practical. We will put this testing-data-race-cross-controllers task into our TO-DO list and will let you know if we have any progress on this.

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

2 participants