mirror of
https://tt-rss.org/git/tt-rss.git
synced 2024-07-18 15:17:31 +02:00
69 lines
1.7 KiB
PHP
69 lines
1.7 KiB
PHP
<?php
|
|
|
|
namespace Jaeger\Tests\Sampler;
|
|
|
|
use Jaeger\Sampler\ProbabilisticSampler;
|
|
use OutOfBoundsException;
|
|
use PHPUnit\Framework\TestCase;
|
|
use const Jaeger\SAMPLER_PARAM_TAG_KEY;
|
|
use const Jaeger\SAMPLER_TYPE_PROBABILISTIC;
|
|
use const Jaeger\SAMPLER_TYPE_TAG_KEY;
|
|
|
|
class ProbablisticSamplerTest extends TestCase
|
|
{
|
|
/**
|
|
* @test
|
|
* @dataProvider samplerProvider
|
|
* @param float $rate
|
|
* @param mixed $traceId
|
|
* @param bool $decision
|
|
*/
|
|
public function shouldDetermineWhetherOrTraceShouldBeSampled($rate, $traceId, $decision)
|
|
{
|
|
$sampler = new ProbabilisticSampler($rate);
|
|
|
|
list($sampled, $tags) = $sampler->isSampled($traceId);
|
|
|
|
$this->assertEquals($decision, $sampled);
|
|
$this->assertEquals([
|
|
SAMPLER_TYPE_TAG_KEY => SAMPLER_TYPE_PROBABILISTIC,
|
|
SAMPLER_PARAM_TAG_KEY => $rate,
|
|
], $tags);
|
|
|
|
$sampler->close();
|
|
}
|
|
|
|
public function samplerProvider()
|
|
{
|
|
return [
|
|
[1.0, PHP_INT_MAX-1, true],
|
|
[0, 0, false],
|
|
[0.5, PHP_INT_MIN + 10, true],
|
|
[0.5, PHP_INT_MAX - 10, false],
|
|
];
|
|
}
|
|
|
|
/**
|
|
* @test
|
|
* @dataProvider rateProvider
|
|
* @param mixed $rate
|
|
*/
|
|
public function shouldThrowOutOfBoundsExceptionInCaseOfInvalidRate($rate)
|
|
{
|
|
$this->expectException(OutOfBoundsException::class);
|
|
$this->expectExceptionMessage('Sampling rate must be between 0.0 and 1.0.');
|
|
|
|
new ProbabilisticSampler($rate);
|
|
}
|
|
|
|
public function rateProvider()
|
|
{
|
|
return [
|
|
[1.1],
|
|
[-0.1],
|
|
[PHP_INT_MAX],
|
|
[PHP_INT_MIN],
|
|
];
|
|
}
|
|
}
|