From 8f3646a9c93a06f76f6abb31020fdb74b4b1fc59 Mon Sep 17 00:00:00 2001 From: Andrew Dolgov Date: Sun, 9 Apr 2023 20:50:33 +0300 Subject: exp: jaeger tracing --- .../jaeger-client-php/tests/Jaeger/ConfigTest.php | 257 +++++++++++++++++++++ 1 file changed, 257 insertions(+) create mode 100644 vendor/jonahgeorge/jaeger-client-php/tests/Jaeger/ConfigTest.php (limited to 'vendor/jonahgeorge/jaeger-client-php/tests/Jaeger/ConfigTest.php') diff --git a/vendor/jonahgeorge/jaeger-client-php/tests/Jaeger/ConfigTest.php b/vendor/jonahgeorge/jaeger-client-php/tests/Jaeger/ConfigTest.php new file mode 100644 index 000000000..da1a9781e --- /dev/null +++ b/vendor/jonahgeorge/jaeger-client-php/tests/Jaeger/ConfigTest.php @@ -0,0 +1,257 @@ +config = new Config([], $this->serviceName); + $this->reporter = $this->createMock(ReporterInterface::class); + $this->sampler = $this->createmock(SamplerInterface::class); + } + + function testCreateTracer() + { + $tracer = $this->config->createTracer($this->reporter, $this->sampler); + + $this->assertEquals(Tracer::class, get_class($tracer)); + $this->assertEquals($this->serviceName, $tracer->getServiceName()); + } + + function testThrowExceptionWhenServiceNameIsNotDefined() + { + $this->expectException(Exception::class); + $this->expectExceptionMessage('service_name required in the config or param.'); + + new Config([]); + } + + function testSetServiceNameFromConfig() + { + $config = new Config(['service_name' => 'test-service-name-from-config']); + + $serviceName = $config->getServiceName(); + + $this->assertEquals('test-service-name-from-config', $serviceName); + } + + /** + * @test + */ + public function shouldSetGlobalTracerAfterInitialize() + { + //given + $config = new Config(['service_name' => 'test-service-name']); + + //when + $config->initializeTracer(); + + //then + $tracer = GlobalTracer::get(); + $this->assertInstanceOf(Tracer::class, $tracer); + } + + /** @test */ + public function shouldThrowExceptionWhenCreatingNotSupportedSampler() + { + $config = new Config(['service_name' => 'test-service-name', 'sampler' => ['type' => 'unsupportedSampler']]); + + $this->expectException(Exception::class); + $this->expectExceptionMessage('Unknown sampler type unsupportedSampler'); + + $config->initializeTracer(); + } + + /** @test */ + public function shouldThrowExceptionWhenCreatingRateLimitingSamplerWithoutCacheComponent() + { + $config = new Config([ + 'service_name' => 'test-service-name', + 'sampler' => ['type' => \Jaeger\SAMPLER_TYPE_RATE_LIMITING] + ]); + + $this->expectException(Exception::class); + $this->expectExceptionMessage('You cannot use RateLimitingSampler without cache component'); + + $config->initializeTracer(); + } + + /** @test */ + public function shouldPassDifferentDispatchMode() { + foreach (Config::getAvailableDispatchModes() as $dispatchMode) { + $config = new Config( + [ + 'sampler' => [ + 'type' => SAMPLER_TYPE_CONST, + 'param' => true, + ], + 'logging' => false, + "local_agent" => [ + "reporting_host" => "localhost", + ], + 'dispatch_mode' => $dispatchMode, + ], + 'your-app-name' + ); + $config->initializeTracer(); + $this->expectNotToPerformAssertions(); + } + } + + /** @test */ + public function shouldPassConfiguredTagsToTracer() + { + $tags = [ + 'bar' => 'a-value', + 'other.tag' => 'foo', + ]; + + $config = new Config([ + 'sampler' => [ + 'type' => SAMPLER_TYPE_CONST, + 'param' => true, + ], + 'service_name' => 'test-service-name', + 'tags' => $tags, + ]); + + $tracer = $config->initializeTracer(); + $span = $tracer->startSpan('test-span'); + $spanTags = $span->getTags(); + + foreach ($tags as $name => $value) { + $this->assertArrayHasKey($name, $spanTags, "Tag '$name' should be set on span"); + $this->assertEquals($value, $spanTags[$name]->value, "Tag '$name' should have configured value"); + } + } + + /** + * @test + * @dataProvider shouldSetConfigPropertiesFromEnvVarsProvider + */ + public function shouldSetConfigPropertiesFromEnvVars($varName, $varVal, $initialConfig, $valueGetter, $expectedVal) + { + $_ENV[$varName] = $varVal; + + $config = new Config([]); + $configProperty = (new \ReflectionObject($config))->getProperty('config'); + $configProperty->setAccessible('true'); + $configArray = $configProperty->getValue($config); + + $this->assertSame($expectedVal, $valueGetter($configArray)); + } + + /** + * @test + * @dataProvider shouldSetConfigPropertiesFromEnvVarsProvider + */ + public function shouldNotSetConfigPropertiesFromEnvVars($varName, $varVal, $initialConfig, $valueGetter, $expectedVal) + { + $_ENV[$varName] = $varVal; + + $config = new Config($initialConfig); + $configProperty = (new \ReflectionObject($config))->getProperty('config'); + $configProperty->setAccessible('true'); + $configArray = $configProperty->getValue($config); + + $this->assertNotEquals($expectedVal, $valueGetter($configArray)); + } + + /** + * 0 -> varName + * 1 -> varVal + * 2 -> initialConfig + * 3 -> valueGetter + * 4 -> expectedVal + */ + public function shouldSetConfigPropertiesFromEnvVarsProvider() { + return [ + [ + 'JAEGER_SERVICE_NAME', + 'some-str', + ['service_name' => 'some-other-str'], + function ($a) { return $a['service_name']; }, + 'some-str', + ], + [ + 'JAEGER_TAGS', + 'some-str', + ['tags' => 'some-other-str'], + function ($a) { return $a['tags']; }, + 'some-str', + ], + [ + 'JAEGER_AGENT_HOST', + 'some-str', + ['local_agent' => ['reporting_host' => 'some-other-str']], + function ($a) { return $a['local_agent']['reporting_host'];}, + 'some-str', + ], + [ + 'JAEGER_AGENT_PORT', + '2222', + ['local_agent' => ['reporting_port' => 1111]], + function ($a) { return $a['local_agent']['reporting_port']; }, + 2222, + ], + [ + 'JAEGER_REPORTER_LOG_SPANS', + 'true', + ['logging' => false], + function ($a) { return $a['logging']; }, + true, + ], + [ + 'JAEGER_REPORTER_MAX_QUEUE_SIZE', + '2222', + ['max_buffer_length' => 1111], + function ($a) { return $a['max_buffer_length']; }, + 2222, + ], + [ + 'JAEGER_SAMPLER_TYPE', + 'some-str', + ['sampler' => ['type' => 'some-other-str']], + function ($a) { return $a['sampler']['type']; }, + 'some-str', + ], + [ + 'JAEGER_SAMPLER_PARAM', + 'some-str', + ['sampler' => ['param' => 'some-other-str']], + function ($a) { return $a['sampler']['param']; }, + 'some-str', + ], + ]; + } +} -- cgit v1.2.3