/
CollectorRegistryTest.php
79 lines (64 loc) · 2.98 KB
/
CollectorRegistryTest.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
<?php
declare(strict_types=1);
namespace Enalean\PrometheusTest\Storage\Redis;
use Enalean\Prometheus\Registry\CollectorRegistry;
use Enalean\Prometheus\Renderer\RenderTextFormat;
use Enalean\Prometheus\Storage\RedisStore;
use Enalean\Prometheus\Value\HistogramLabelNames;
use Enalean\Prometheus\Value\MetricLabelNames;
use Enalean\Prometheus\Value\MetricName;
use Enalean\PrometheusTest\Storage\CollectorRegistryBaseTest;
/**
* @requires extension redis
* @covers \Enalean\Prometheus\Registry\CollectorRegistry
* @covers \Enalean\Prometheus\Storage\RedisStore
*/
final class CollectorRegistryTest extends CollectorRegistryBaseTest
{
use ConfigureRedisStorage;
/**
* @before
* @after
*/
public function flushRedis() : void
{
$this->getRedisClient()->flushDb();
}
/**
* @test
*/
public function itShouldOnlyFlushMetricData() : void
{
$redis = $this->getRedisClient();
$redis->set('foo', 'bar');
$storage = $this->getStorage();
$registry = new CollectorRegistry($storage);
$counter = $registry->registerCounter(MetricName::fromNamespacedName('test', 'some_counter'), 'it increases', MetricLabelNames::fromNames('type'));
$counter->incBy(6, 'blue');
$counterRedisKey = 'PROMETHEUS_counter' . RedisStore::PROMETHEUS_METRIC_KEYS_SUFFIX;
$this->assertEquals(['PROMETHEUS_:counter:test_some_counter'], $redis->sMembers($counterRedisKey));
$gauge = $registry->registerGauge(MetricName::fromNamespacedName('test', 'some_gauge'), 'this is for testing', MetricLabelNames::fromNames('foo'));
$gauge->set(35, 'bar');
$gaugeRedisKey = 'PROMETHEUS_gauge' . RedisStore::PROMETHEUS_METRIC_KEYS_SUFFIX;
$this->assertEquals(['PROMETHEUS_:gauge:test_some_gauge'], $redis->sMembers($gaugeRedisKey));
$histogram = $registry->registerHistogram(
MetricName::fromNamespacedName('test', 'some_histogram'),
'this is for testing',
HistogramLabelNames::fromNames('foo', 'bar'),
[0.1, 1, 5, 10]
);
$histogram->observe(2, 'cat', 'meow');
$histogramRedisKey = 'PROMETHEUS_histogram' . RedisStore::PROMETHEUS_METRIC_KEYS_SUFFIX;
$this->assertEquals(['PROMETHEUS_:histogram:test_some_histogram'], $redis->sMembers($histogramRedisKey));
$storage->flush();
$this->assertEquals('bar', $redis->get('foo'));
$this->assertEquals([], $redis->sMembers($counterRedisKey));
$this->assertFalse($redis->get('PROMETHEUS_:counter:test_some_counter'));
$this->assertEquals([], $redis->sMembers($gaugeRedisKey));
$this->assertFalse($redis->get('PROMETHEUS_:gauge:test_some_gauge'));
$this->assertEquals([], $redis->sMembers($histogramRedisKey));
$this->assertFalse($redis->get('PROMETHEUS_:histogram:test_some_histogram'));
$this->assertEquals("\n", (new RenderTextFormat())->render($registry->getMetricFamilySamples()));
$redis->del('foo');
}
}