diff options
Diffstat (limited to 'vendor/jonahgeorge/jaeger-client-php/tests/Jaeger/Mapper/SpanToJaegerMapperTest.php')
-rw-r--r-- | vendor/jonahgeorge/jaeger-client-php/tests/Jaeger/Mapper/SpanToJaegerMapperTest.php | 169 |
1 files changed, 169 insertions, 0 deletions
diff --git a/vendor/jonahgeorge/jaeger-client-php/tests/Jaeger/Mapper/SpanToJaegerMapperTest.php b/vendor/jonahgeorge/jaeger-client-php/tests/Jaeger/Mapper/SpanToJaegerMapperTest.php new file mode 100644 index 000000000..d536cb63a --- /dev/null +++ b/vendor/jonahgeorge/jaeger-client-php/tests/Jaeger/Mapper/SpanToJaegerMapperTest.php @@ -0,0 +1,169 @@ +<?php + +use Jaeger\Mapper\SpanToJaegerMapper; +use Jaeger\Reporter\NullReporter; +use Jaeger\Sampler\ConstSampler; +use Jaeger\Span; +use Jaeger\SpanContext; +use Jaeger\Thrift\TagType; +use Jaeger\Tracer; +use const Jaeger\SAMPLED_FLAG; +use const OpenTracing\Tags\COMPONENT; +use const OpenTracing\Tags\PEER_HOST_IPV4; +use const OpenTracing\Tags\PEER_PORT; +use const OpenTracing\Tags\PEER_SERVICE; +use const OpenTracing\Tags\SPAN_KIND; +use const OpenTracing\Tags\SPAN_KIND_RPC_CLIENT; + +class SpanToJaegerMapperTest extends \PHPUnit\Framework\TestCase +{ + private $serviceName = "test-service"; + /** + * @var Tracer + */ + private $tracer; + + /** + * @var SpanContext + */ + private $context; + + /** + * {@inheritdoc} + */ + public function setUp(): void + { + $this->tracer = new Tracer($this->serviceName, new NullReporter, new ConstSampler); + $this->context = new SpanContext(0, 0, 0, SAMPLED_FLAG); + } + + /** + * {@inheritdoc} + */ + protected function tearDown(): void + { + $this->tracer = null; + $this->context = null; + } + + /** @test */ + public function shouldProperlyInitializeAtConstructTime(): void + { + $span = new Span($this->context, $this->tracer, 'test-operation'); + $span->setTags([ + "tag-bool1" => true, + "tag-bool2" => false, + "tag-int" => 1234567, + "tag-float" => 1.23456, + "tag-string" => "hello-world" + ]); + + $mapper = new SpanToJaegerMapper(); + $thriftSpan = $mapper->mapSpanToJaeger($span); + + $index = 0; + $this->assertEquals($thriftSpan->tags[$index]->key, "component"); + $this->assertEquals($thriftSpan->tags[$index]->vType, TagType::STRING); + $this->assertEquals($thriftSpan->tags[$index]->vStr, $this->serviceName); + $index++; + + $this->assertEquals($thriftSpan->tags[$index]->key, "tag-bool1"); + $this->assertEquals($thriftSpan->tags[$index]->vType, TagType::BOOL); + $this->assertEquals($thriftSpan->tags[$index]->vBool, true); + $index++; + + $this->assertEquals($thriftSpan->tags[$index]->key, "tag-bool2"); + $this->assertEquals($thriftSpan->tags[$index]->vType, TagType::BOOL); + $this->assertEquals($thriftSpan->tags[$index]->vBool, false); + $index++; + + $this->assertEquals($thriftSpan->tags[$index]->key, "tag-int"); + $this->assertEquals($thriftSpan->tags[$index]->vType, TagType::LONG); + $this->assertEquals($thriftSpan->tags[$index]->vLong, 1234567); + $index++; + + $this->assertEquals($thriftSpan->tags[$index]->key, "tag-float"); + $this->assertEquals($thriftSpan->tags[$index]->vType, TagType::DOUBLE); + $this->assertEquals($thriftSpan->tags[$index]->vDouble, 1.23456); + $index++; + + $this->assertEquals($thriftSpan->tags[$index]->key, "tag-string"); + $this->assertEquals($thriftSpan->tags[$index]->vType, TagType::STRING); + $this->assertEquals($thriftSpan->tags[$index]->vStr, "hello-world"); + $index++; + } + + /** + * @dataProvider specialTagProvider + * @param array<string, mixed> $tags + * @return void + */ + public function testSpecialTagsAreAdded(array $tags): void + { + $span = new Span($this->context, $this->tracer, 'test-operation'); + $span->setTags($tags); + + // The component tag is always added, even if it's not specified in tags + $expectedTagValues = array_merge([COMPONENT => $this->serviceName], $tags); + + $mapper = new SpanToJaegerMapper(); + $thriftSpan = $mapper->mapSpanToJaeger($span); + + $foundTags = []; + + foreach ($thriftSpan->tags as $tag) { + $foundTags[] = $tag->key; + + switch ($tag->key) { + case PEER_SERVICE: + case PEER_HOST_IPV4: + case SPAN_KIND: + case COMPONENT: + $this->assertEquals(TagType::STRING, $tag->vType, 'Incorrect tag value type'); + $this->assertEquals($expectedTagValues[$tag->key], $tag->vStr, 'Incorrect tag value'); + break; + case PEER_PORT: + $this->assertEquals(TagType::LONG, $tag->vType, 'Incorrect tag value type'); + $this->assertEquals($expectedTagValues[$tag->key], $tag->vLong, 'Incorrect tag value'); + break; + } + } + + $this->assertEqualsCanonicalizing(array_keys($expectedTagValues), $foundTags, 'Some of the tags are missing'); + } + + public function specialTagProvider(): array + { + return [ + [ + [ + 'bool_tag' => true, + PEER_SERVICE => 'my_service', + PEER_HOST_IPV4 => '127.0.0.1', + PEER_PORT => 443, + SPAN_KIND => SPAN_KIND_RPC_CLIENT, + COMPONENT => 'grpc', + ], + ], + [ + [ + 'int_tag' => 5, + PEER_HOST_IPV4 => '192.168.0.1', + PEER_PORT => 80, + ], + ], + [ + [ + 'string_tag' => 'testing-tag', + PEER_PORT => 80, + COMPONENT => 'grpc', + ], + ], + [ + [ + 'string_tag' => 'testing-tag', + ], + ], + ]; + } +} |