summaryrefslogtreecommitdiff
path: root/tests/Unit/Controllers/Metrics/MetricsEngineTest.php
diff options
context:
space:
mode:
authorIgor Scheller <igor.scheller@igorshp.de>2018-12-18 02:23:44 +0100
committermsquare <msquare@notrademark.de>2018-12-19 22:36:42 +0100
commitc5621b82cfeddee23b81871a53035fde747f73a9 (patch)
tree36e91622ac463011bd2b45f552d837a1abfb56ba /tests/Unit/Controllers/Metrics/MetricsEngineTest.php
parent3c8d0eeb440b8c263686ba81df7be87290ad9695 (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.php69
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'));
+ }
+}