diff options
author | Igor Scheller <igor.scheller@igorshp.de> | 2018-12-18 02:23:44 +0100 |
---|---|---|
committer | msquare <msquare@notrademark.de> | 2018-12-19 22:36:42 +0100 |
commit | c5621b82cfeddee23b81871a53035fde747f73a9 (patch) | |
tree | 36e91622ac463011bd2b45f552d837a1abfb56ba /tests/Unit/Controllers/Metrics/MetricsEngineTest.php | |
parent | 3c8d0eeb440b8c263686ba81df7be87290ad9695 (diff) |
Implemented /metrics endpoint and reimplemented /stats
closes #418 (/metrics endpoint)
Usage:
```yaml
scrape_configs:
- job_name: 'engelsystem'
static_configs:
- targets: ['engelsystem.example.com:80']
```
Diffstat (limited to 'tests/Unit/Controllers/Metrics/MetricsEngineTest.php')
-rw-r--r-- | tests/Unit/Controllers/Metrics/MetricsEngineTest.php | 69 |
1 files changed, 69 insertions, 0 deletions
diff --git a/tests/Unit/Controllers/Metrics/MetricsEngineTest.php b/tests/Unit/Controllers/Metrics/MetricsEngineTest.php new file mode 100644 index 00000000..b810b10a --- /dev/null +++ b/tests/Unit/Controllers/Metrics/MetricsEngineTest.php @@ -0,0 +1,69 @@ +<?php + +namespace Engelsystem\Test\Unit\Controllers\Metrics; + +use Engelsystem\Controllers\Metrics\MetricsEngine; +use Engelsystem\Test\Unit\TestCase; + +class MetricsEngineTest extends TestCase +{ + /** + * @covers \Engelsystem\Controllers\Metrics\MetricsEngine::get + * @covers \Engelsystem\Controllers\Metrics\MetricsEngine::formatData + * @covers \Engelsystem\Controllers\Metrics\MetricsEngine::renderLabels + * @covers \Engelsystem\Controllers\Metrics\MetricsEngine::renderValue + * @covers \Engelsystem\Controllers\Metrics\MetricsEngine::formatValue + * @covers \Engelsystem\Controllers\Metrics\MetricsEngine::escape + */ + public function testGet() + { + $engine = new MetricsEngine(); + + $this->assertEquals('', $engine->get('/metrics')); + + $this->assertEquals('engelsystem_users 13', $engine->get('/metrics', ['users' => 13])); + + $this->assertEquals('engelsystem_bool_val 0', $engine->get('/metrics', ['bool_val' => false])); + + $this->assertEquals('# Lorem \n Ipsum', $engine->get('/metrics', ["Lorem \n Ipsum"])); + + $this->assertEquals( + 'engelsystem_foo{lorem="ip\\\\sum"} \\"lorem\\n\\\\ipsum\\"', + $engine->get('/metrics', [ + 'foo' => ['labels' => ['lorem' => 'ip\\sum'], 'value' => "\"lorem\n\\ipsum\""] + ]) + ); + + $this->assertEquals( + 'engelsystem_foo_count{bar="14"} 42', + $engine->get('/metrics', ['foo_count' => ['labels' => ['bar' => 14], 'value' => 42],]) + ); + + $this->assertEquals( + 'engelsystem_lorem{test="123"} NaN' . "\n" . 'engelsystem_lorem{test="456"} 999.99', + $engine->get('/metrics', [ + 'lorem' => [ + ['labels' => ['test' => 123], 'value' => 'NaN'], + ['labels' => ['test' => 456], 'value' => 999.99], + ], + ]) + ); + + $this->assertEquals( + "# HELP engelsystem_test Some help\\n text\n# TYPE engelsystem_test counter\nengelsystem_test 99", + $engine->get('/metrics', ['test' => ['help' => "Some help\n text", 'type' => 'counter', 'value' => 99]]) + ); + } + + /** + * @covers \Engelsystem\Controllers\Metrics\MetricsEngine::canRender + */ + public function testCanRender() + { + $engine = new MetricsEngine(); + + $this->assertFalse($engine->canRender('/')); + $this->assertFalse($engine->canRender('/metrics.foo')); + $this->assertTrue($engine->canRender('/metrics')); + } +} |