fahrenholz/mayhem

库,允许你在应用程序中引入一些故障

1.0.1 2019-02-06 17:20 UTC

This package is auto-updated.

Last update: 2024-09-07 05:38:59 UTC


README

pipeline status coverage report License PHPStan

解决的问题

此库的目的是以框架无关的方式允许你在PHP应用程序中引入一些随机故障。无论是为了娱乐还是为了增强系统的弹性,此库都允许你掷骰子,随机选择一组标准动作,或者创建你自己的动作来混淆你的客户端。

入门

通过composer安装

$ composer require fahrenholz/mayhem:^1.0

示例测试

$ cd examples && docker-compose up -d

这将启动一个带有官方php+apache镜像的docker容器,并设置一个小型测试网站连接到它,通过https://:8080 浏览

使用

开箱即用

实例化

use Mayhem\Entity\Probability;
use Mayhem\Mayhem;
use Mayhem\Failure\LatencyFailure;
use Mayhem\Failure\RedirectFailure;

$probabilities = [
    new Probability('prob1', 0.03, LatencyFailure::class),
    new Probability('prob2', 0.01, RedirectFailure::class),
];

$service = new Mayhem($probabilities);

使用

$event = $service->rollADice(); //randomly picks an event or nothing
if ($event !== null) {
    //something will happen
    $failure = $event->getFailureAction(); //instantiate failure
    $failure($event->getParameters()); //invoke failure
}
注意事项

随库提供的CrashFailure会释放forkbomb。请谨慎使用,以免完全崩溃你的开发环境。

扩展

库中只提供了一组有限的故障,并且它们都没有经过测试,原因在于它们的目的是为你提供一个实现自己的故障场景的蓝图。

实现这一点的唯一规则是:每个故障场景都必须实现FailureInterface。

贡献

请随时贡献并与我联系。