1. Go to this page and download the library: Download hammerstone/flaky library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
hammerstone / flaky example snippets
if (Lottery::odds(1 / 5)->choose()) {
throw new Exception("Oops");
}
Flaky::make('my-flaky-code')
->allowFailuresForAnHour()
->run(function() {
if (Lottery::odds(1 / 5)->choose()) {
throw new Exception("Oops");
}
})
Flaky::make('my-flaky-code')
// It can fail ten times in a row.
->allowConsecutiveFailures(10)
->run(function() {
//
})
Flaky::make('my-flaky-code')
// It can fail ten times total.
->allowTotalFailures(10)
->run(function() {
//
})
Flaky::make('my-flaky-code')
// Alert after an hour.
->allowFailuresForAnHour()
// Alert after the third consecutive failure.
->allowConsecutiveFailures(3)
// Alert after the tenth failure.
->allowTotalFailures(10)
->run(function() {
//
})
Flaky::make('my-flaky-code')
->allowFailuresForAnHour()
// Don't throw, but use `report()` instead.
->reportFailures()
->run(function() {
//
})
Flaky::make('my-flaky-code')
->allowFailuresForAnHour()
// Only retry TimeoutExceptions and FooBarExceptions
->retry(3, 500, [TimeoutException::class, FooBarException::class])
->run(function() {
//
})
Flaky::make('my-flaky-code')
->allowFailuresForAnHour()
// Pass through your own $when callback
->retry(3, 500, function($exception) {
//
})
->run(function() {
//
})
$result = Flaky::make('my-flaky-code')
->allowFailuresForAnHour()
->run(function() {
return 1;
});
$result->value; // 1
$result->failed; // false
$result->succeeded; // true
$result->exception; // null. Would be populated if an exception was thrown.
$result->throw(); // Throws an exception if present. Is a noop if not.
class FlakyTestCommand extends Command
{
protected $signature = 'flaky {--arg=} {--flag}';
public function handle()
{
FlakyCommand::make($this)
->allowFailuresForAnHour()
->run([$this, 'process']);
}
public function process()
{
throw new Exception('oops');
}
}
class FlakyTestCommand extends Command
{
protected $signature = 'flaky {--arg=} {--flag}';
public function handle()
{
FlakyCommand::make($this)
->allowFailuresForAnHour()
// Consider the `arg` and `flag` input when creating the unique ID.
->varyOnInput()
->run([$this, 'process']);
}
}
class FlakyTestCommand extends Command
{
protected $signature = 'flaky {--arg=} {--flag}';
public function handle()
{
FlakyCommand::make($this)
->allowFailuresForAnHour()
// Consider only the `arg` input when creating the unique ID.
->varyOnInput(['arg'])
->run([$this, 'process']);
}
}
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.