49 lines
1.2 KiB
PHP
49 lines
1.2 KiB
PHP
<?php
|
|
|
|
namespace Jaeger\Tests\Sampler;
|
|
|
|
use Cache\Adapter\PHPArray\ArrayCachePool;
|
|
use Jaeger\Sampler\RateLimitingSampler;
|
|
use Jaeger\Util\RateLimiter;
|
|
use PHPUnit\Framework\TestCase;
|
|
use const Jaeger\SAMPLER_PARAM_TAG_KEY;
|
|
use const Jaeger\SAMPLER_TYPE_RATE_LIMITING;
|
|
use const Jaeger\SAMPLER_TYPE_TAG_KEY;
|
|
|
|
class RateLimitSamplerTest extends TestCase
|
|
{
|
|
/**
|
|
* @test
|
|
* @dataProvider maxRateProvider
|
|
* @param integer $maxTracesPerSecond
|
|
* @param bool $decision
|
|
* @throws
|
|
*/
|
|
public function shouldDetermineWhetherOrTraceShouldBeSampled($maxTracesPerSecond, $decision)
|
|
{
|
|
$sampler = new RateLimitingSampler(
|
|
$maxTracesPerSecond,
|
|
new RateLimiter(new ArrayCachePool(), 'balance', 'lastTick')
|
|
);
|
|
|
|
$sampler->isSampled();
|
|
list($sampled, $tags) = $sampler->isSampled();
|
|
$this->assertEquals($decision, $sampled);
|
|
$this->assertEquals([
|
|
SAMPLER_TYPE_TAG_KEY => SAMPLER_TYPE_RATE_LIMITING,
|
|
SAMPLER_PARAM_TAG_KEY => $maxTracesPerSecond,
|
|
], $tags);
|
|
|
|
$sampler->close();
|
|
}
|
|
|
|
public function maxRateProvider()
|
|
{
|
|
return [
|
|
[1000000, true],
|
|
[1, false],
|
|
[0, false],
|
|
];
|
|
}
|
|
}
|