diff options
author | Andrew Dolgov <[email protected]> | 2023-04-09 20:50:33 +0300 |
---|---|---|
committer | Andrew Dolgov <[email protected]> | 2023-04-09 20:50:33 +0300 |
commit | 8f3646a9c93a06f76f6abb31020fdb74b4b1fc59 (patch) | |
tree | 4e6c9f39e0623ef70bedfee014f1bd20603f89ad /vendor/jonahgeorge/jaeger-client-php/tests/Jaeger/Sender | |
parent | a37eab2610a0a2bcb655258781c1c7e925dc94c0 (diff) |
exp: jaeger tracing
Diffstat (limited to 'vendor/jonahgeorge/jaeger-client-php/tests/Jaeger/Sender')
-rw-r--r-- | vendor/jonahgeorge/jaeger-client-php/tests/Jaeger/Sender/JaegerThriftSenderTest.php | 126 | ||||
-rw-r--r-- | vendor/jonahgeorge/jaeger-client-php/tests/Jaeger/Sender/UdpSenderTest.php | 116 |
2 files changed, 242 insertions, 0 deletions
diff --git a/vendor/jonahgeorge/jaeger-client-php/tests/Jaeger/Sender/JaegerThriftSenderTest.php b/vendor/jonahgeorge/jaeger-client-php/tests/Jaeger/Sender/JaegerThriftSenderTest.php new file mode 100644 index 000000000..5bd6d0a7b --- /dev/null +++ b/vendor/jonahgeorge/jaeger-client-php/tests/Jaeger/Sender/JaegerThriftSenderTest.php @@ -0,0 +1,126 @@ +<?php + + +namespace Jaeger\Tests\Sender; + +use Jaeger\Sender\JaegerSender; +use Jaeger\Sender\UdpSender; +use Jaeger\Span; +use Jaeger\SpanContext; +use Jaeger\Thrift\Agent\AgentClient; +use Jaeger\Thrift\Batch; +use Jaeger\Tracer; +use PHPUnit\Framework\TestCase; + +class JaegerThriftSenderTest extends TestCase +{ + /** @var Tracer|\PHPUnit\Framework\MockObject\MockObject */ + private $tracer; + + /** @var SpanContext|\PHPUnit\Framework\MockObject\MockObject */ + private $context; + + public function setUp(): void + { + $tracer = $this->createMock(Tracer::class); + $tracer->method('getIpAddress')->willReturn(''); + $tracer->method('getServiceName')->willReturn(''); + + $this->tracer = $tracer; + + $context = $this->createMock(SpanContext::class); + $this->context = $context; + } + + public function testFlush(): void + { + + $span = $this->createMock(Span::class); + $span->method('getOperationName')->willReturn('dummy-operation'); + $span->method('getTracer')->willReturn($this->tracer); + $span->method('getContext')->willReturn($this->context); + + $client = $this->createMock(AgentClient::class); + $sender = new JaegerSender($client); + $sender->setMaxBufferLength(64000); + + $client + ->expects(self::exactly(1)) + ->method('emitBatch'); + + $sender->append($span); + $sender->append($span); + $sender->append($span); + + self::assertEquals(3, $sender->flush()); + } + + public function testEmitBatch() { + $client = $this->createMock(AgentClient::class); + $sender = new JaegerSender($client); + $sender->setMaxBufferLength(64000); + + $span = $this->createMock(Span::class); + $span->method('getOperationName')->willReturn('dummy-operation'); + $span->method('getTracer')->willReturn($this->tracer); + $span->method('getContext')->willReturn($this->context); + + $client + ->expects($this->once()) + ->method('emitBatch') + ->with($this->callback(function ($batch) { + /** @var Batch $batch */ + $this->assertInstanceOf(Batch::class, $batch); + $this->assertCount(1, $batch->spans); + + /** @var \Jaeger\Thrift\Span $span */ + $span = $batch->spans[0]; + $this->assertInstanceOf(\Jaeger\Thrift\Span::class, $span); + $this->assertSame("dummy-operation", $span->operationName); + + return true; + + })); + + $sender->append($span); + $this->assertEquals(1, $sender->flush()); + } + + public function testMaxBufferLength() { + $tracer = $this->createMock(Tracer::class); + $tracer->method('getIpAddress')->willReturn(''); + $tracer->method('getServiceName')->willReturn(''); + + $context = $this->createMock(SpanContext::class); + + $span = $this->createMock(Span::class); + $span->method('getOperationName')->willReturn('dummy-operation'); + $span->method('getTracer')->willReturn($tracer); + $span->method('getContext')->willReturn($context); + + $client = $this->createMock(AgentClient::class); + + $mockBuilder = $this->getMockBuilder(JaegerSender::class); + $mockMethods = ['emitJaegerBatch']; + if (method_exists($mockBuilder, "onlyMethods")) { + $mockBuilder = $mockBuilder->onlyMethods($mockMethods); + } else { + $mockBuilder = $mockBuilder->setMethods($mockMethods); + } + $sender = $mockBuilder->setConstructorArgs([$client])->getMock(); + $sender->setMaxBufferLength(800); + $sender->expects(self::exactly(2)) + ->method('emitJaegerBatch') + ->withConsecutive( + [self::countOf(2)], + [self::countOf(1)] + ); + + // jaeger batch overhead parameter = 512 + $sender->append($span); // 512 + 143 < 800 - chunk 1 + $sender->append($span); // 512 + 143*2 => 798 < 800 - chunk 1 + $sender->append($span); // 512 + 143*3 > 800 - chunk 2 + + self::assertEquals(3, $sender->flush()); + } +} diff --git a/vendor/jonahgeorge/jaeger-client-php/tests/Jaeger/Sender/UdpSenderTest.php b/vendor/jonahgeorge/jaeger-client-php/tests/Jaeger/Sender/UdpSenderTest.php new file mode 100644 index 000000000..9011d00e3 --- /dev/null +++ b/vendor/jonahgeorge/jaeger-client-php/tests/Jaeger/Sender/UdpSenderTest.php @@ -0,0 +1,116 @@ +<?php + +namespace Jaeger\Tests\Sender; + +use Jaeger\Sender\UdpSender; +use Jaeger\Span; +use Jaeger\SpanContext; +use Jaeger\Thrift\Agent\AgentClient; +use Jaeger\Thrift\Agent\Zipkin\Annotation as ZipkinAnnotation; +use Jaeger\Thrift\Agent\Zipkin\Span as ZipkinSpan; +use Jaeger\Tracer; +use PHPUnit\Framework\TestCase; + +class UdpSenderTest extends TestCase +{ + /** + * @var UdpSender + */ + private $sender; + + /** + * @var AgentClient + */ + private $client; + + public function setUp(): void + { + $this->client = $this->createMock(AgentClient::class); + $this->sender = new UdpSender($this->client, 64000); + } + + public function testMaxBufferLength(): void + { + $tracer = $this->createMock(Tracer::class); + $tracer->method('getIpAddress')->willReturn(''); + $tracer->method('getServiceName')->willReturn(''); + + $context = $this->createMock(SpanContext::class); + + $span = $this->createMock(Span::class); + $span->method('getOperationName')->willReturn('dummy-operation'); + $span->method('getTracer')->willReturn($tracer); + $span->method('getContext')->willReturn($context); + + $sender = new UdpSender($this->client, 100); + + $this->client + ->expects(self::exactly(2)) + ->method('emitZipkinBatch') + ->withConsecutive( + [self::countOf(2)], + [self::countOf(1)] + ); + + // one span has a length of ~25 + $sender->append($span); // 30 + 25 < 100 - chunk 1 + $sender->append($span); // 30 + 25 * 2 < 100 - chunk 1 + $sender->append($span); // 30 + 25 * 3 > 100 - chunk 2 + + self::assertEquals(3, $sender->flush()); + } + + public function testFlush(): void + { + $this->assertEquals(0, $this->sender->flush()); + + $logTimeStamp = (int) (microtime(true) * 1000000); + + $tracer = $this->createMock(Tracer::class); + $tracer->method('getIpAddress')->willReturn(''); + $tracer->method('getServiceName')->willReturn(''); + $context = $this->createMock(SpanContext::class); + $span = $this->createMock(Span::class); + $span->method('getTracer')->willReturn($tracer); + $span->method('getContext')->willReturn($context); + $span + ->expects($this->atLeastOnce()) + ->method('getLogs') + ->willReturn([ + [ + 'timestamp' => $logTimeStamp, + 'fields' => [ + 'foo' => 'bar', + ], + ], + ]); + + $this->client + ->expects($this->once()) + ->method('emitZipkinBatch') + ->with($this->callback(function ($spans) use ($logTimeStamp) { + $this->assertCount(1, $spans); + + /* @var $annotation ZipkinSpan */ + $span = $spans[0]; + $this->assertInstanceOf(ZipkinSpan::class, $span); + $this->assertCount(1, $span->annotations); + + /* @var $annotation ZipkinAnnotation */ + $annotation = $span->annotations[0]; + $this->assertInstanceOf(ZipkinAnnotation::class, $annotation); + $this->assertSame($logTimeStamp, $annotation->timestamp); + $this->assertSame( + json_encode([ + 'foo' => 'bar', + ]), + $annotation->value + ); + + return true; + })); + + $this->sender->append($span); + $this->assertEquals(1, $this->sender->flush()); + } +} |