diff --git a/proposals/images/locust-fault-scenario.png b/proposals/images/locust-fault-scenario.png new file mode 100644 index 00000000000..0fba4287016 Binary files /dev/null and b/proposals/images/locust-fault-scenario.png differ diff --git a/proposals/locust-load-test.md b/proposals/locust-load-test.md new file mode 100644 index 00000000000..70890248491 --- /dev/null +++ b/proposals/locust-load-test.md @@ -0,0 +1,65 @@ +| title | authors | creation-date | last-updated | +|-------|------------------------------------------|---------------|--------------| +| Adding a New Chaos Fault - Load Testing with locust | [@kwx4957](https://github.com/kwx4957) | 2024-11-21 | 2024-11-21 | + +# Adding a New Chaos Fault - Load Testing with locust + +- [Summary](#summary) +- [Motivation](#motivation) + - [Goals](#goals) + - [Non-Goals](#non-goals) +- [Proposal](#proposal) + - [Use Cases](#use-cases) + - [Implementation Details](#implementation-details) +- [Risks and Mitigations](#risks-and-mitigations) +- [Upgrade / Downgrade Strategy](#upgrade--downgrade-strategy) +- [Drawbacks](#drawbacks) +- [Alternatives](#alternatives) +- [References](#references) + +## Summary +[locust](https://locust.io/) is an open-source load testing. LitmuChaos already supports k6 load testing, but only for the JavaScript language. On the other hand, locust supports writing scripts for Python code, giving users a wider choice. + +## Motivation +Locust is a load testing tool that supports Python code. It supports various [protocols (HTTP, GRPC)](https://docs.locust.io/en/stable/testing-other-systems.html +) and [plugins](https://github.com/SvenskaSpel/locust-plugins?tab=readme-ov-file#users +). Having a wide range of choices when it comes to choosing a load test will help users a lot. + + +### Goals + +- Adding a 'locust' Chaos Fault to [Litmus ChaosHub](https://hub.litmuschaos.io/) +- Fixing [litmus-go](https://github.com/litmuschaos/litmus-go) and [chaos-charts](https://github.com/litmuschaos/chaos-charts) codes + +### Non-Goals + +## Proposal + +### Use Cases + +Detail the things that people will be able to do if this is `implemented`. + +#### Use case 1 + +### Implementation Details + +This is a Locust Chaos Fault Scenario. + +![locust-fault-scenario](./images/locust-fault-scenario.png) + +1. Add scenario to the litmus-go repository +2. Add a new Chaos Fault to the Litmus ChaosHub + +## Risks and Mitigations + +We need to grant proper RBAC permissions to the runner container. Granting override permissions may affect other systems. + +## Upgrade / Downgrade Strategy + +## Drawbacks + +## Alternatives + +## References + +- [locust](https://locust.io/) \ No newline at end of file