chaos-php / chaos-monkey-symfony-bundle
Chaos Monkey for Symfony applications
1.0.0
2024-06-02 08:14 UTC
Requires
- php: ^8.1
- chaos-php/chaos-monkey: ^1.1.1
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.58
- phpstan/phpstan: ^1.11
- phpstan/phpstan-symfony: ^1.4
- phpunit/phpunit: ^10.5
- symfony/browser-kit: ^6.4 || ^7.0
- symfony/framework-bundle: ^6.4 || ^7.0
- symfony/http-kernel: ^6.4 || ^7.0
- symfony/runtime: ^6.4 || ^7.0
- symfony/stopwatch: ^6.4 || ^7.0
README
Chaos Monkey for Symfony applications. Try to attack your running Symfony App.
Assaults
- Latency Assault - adds a delay randomly from the range (min and max)
- Exception Assault - throws given exception class
- Memory Assault - fill memory until target fraction (95% for example)
- Kill Assault - no mercy, plain
exit()
Watchers
- Request - attack http request
- Repository (not implemented)
- Service (not implemented)
Activators
- "Query param" - attack only if given query param is present (default
chaos
)
Symfony
How to use
- Install with composer:
composer require chaos-php/chaos-monkey-symfony-bundle
- Add Symfony bundle (e.g.
config/bundles.php
):return [ //... other bundles Chaos\Monkey\Symfony\ChaosMonkeyBundle::class => ['all' => true], ];
- Add
chaos_monkey.yaml
configuration (copy from below) and enable assaults - Watch your app plunge into chaos 🙈🙊🙉 😈
Configuration reference
chaos_monkey: enabled: false probability: 20 # percentage probability of attack (100 - everyone, 0 - none) assaults: latency: active: false minimum: 1000 # in miliseconds maximum: 3000 # in miliseconds memory: active: false fill_fraction: 0.95 # percentage of memory filling exception: active: false class: 'RuntimeException' kill_app: active: false watchers: # currently watchers can be enabled/disabled only in container compile time request: enabled: true priority: 0 activators: query_param: false # if true then chaos monkey will be called only if given query param exist (with any value) query_param_name: 'chaos'
Roadmap
- Flex recipe
- Metrics (for example
chaos_monkey_request_count_assaulted
) - Assault profiles - each profile can contain different assaults
- CustomWatcher (based on container tag)
- CustomAssault (not implemented)
License
ChaosMonkeySymfonyBundle is released under the MIT Licence. See the bundled LICENSE file for details.
Author
Arkadiusz Kondas (@ArkadiuszKondas)