diff --git a/.travis.yml b/.travis.yml index f3562fe..3d70588 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,8 +1,6 @@ language: php php: - - '5.6' - - '7.0' - '7.1' - '7.2' - '7.3' diff --git a/README.md b/README.md index 03b4421..7b3dcbf 100644 --- a/README.md +++ b/README.md @@ -10,7 +10,6 @@ Install via composer. ``` -composer config minimum-stability dev composer require jukylin/jaeger-php ``` diff --git a/composer.json b/composer.json index 0216a99..91eb902 100644 --- a/composer.json +++ b/composer.json @@ -5,9 +5,9 @@ "license": "Apache-2.0", "minimum-stability": "stable", "require": { - "php": ">=5.6.0", + "php": "^7.1 || ^8.0", "packaged/thrift" : "0.10.0", - "opentracing/opentracing" : "1.0.0-beta5" + "opentracing/opentracing" : "^1.0" }, "authors": [ { diff --git a/src/Jaeger/Config.php b/src/Jaeger/Config.php index cba4c79..7b46389 100644 --- a/src/Jaeger/Config.php +++ b/src/Jaeger/Config.php @@ -77,7 +77,7 @@ public static function getInstance() public function initTracer($serverName, $agentHostPort = ''){ if(self::$disabled){ - return NoopTracer::create(); + return new NoopTracer(); } if($serverName == ''){ diff --git a/src/Jaeger/Jaeger.php b/src/Jaeger/Jaeger.php index f317246..458c3bb 100644 --- a/src/Jaeger/Jaeger.php +++ b/src/Jaeger/Jaeger.php @@ -16,7 +16,7 @@ namespace Jaeger; use Jaeger\Sampler\Sampler; -use OpenTracing\Exceptions\UnsupportedFormat; +use OpenTracing\UnsupportedFormatException; use OpenTracing\SpanContext; use OpenTracing\Formats; use OpenTracing\Tracer; @@ -84,7 +84,7 @@ public function setTags(array $tags = []){ * @param array $options * @return Span */ - public function startSpan($operationName, $options = []){ + public function startSpan(string $operationName, $options = []): \OpenTracing\Span{ if (!($options instanceof StartSpanOptions)) { $options = StartSpanOptions::create($options); @@ -135,11 +135,11 @@ public function setPropagator(Propagator $propagator){ * @param string $format * @param $carrier */ - public function inject(SpanContext $spanContext, $format, &$carrier){ + public function inject(SpanContext $spanContext, string $format, &$carrier): void{ if($format == Formats\TEXT_MAP){ $this->propagator->inject($spanContext, $format, $carrier); }else{ - throw UnsupportedFormat::forFormat($format); + throw UnsupportedFormatException::forFormat($format); } } @@ -149,11 +149,11 @@ public function inject(SpanContext $spanContext, $format, &$carrier){ * @param string $format * @param $carrier */ - public function extract($format, $carrier){ + public function extract(string $format, $carrier): ?\OpenTracing\SpanContext{ if($format == Formats\TEXT_MAP){ return $this->propagator->extract($format, $carrier); }else{ - throw UnsupportedFormat::forFormat($format); + throw UnsupportedFormatException::forFormat($format); } } @@ -171,12 +171,12 @@ public function reportSpan(){ } - public function getScopeManager(){ + public function getScopeManager(): \OpenTracing\ScopeManager{ return $this->scopeManager; } - public function getActiveSpan(){ + public function getActiveSpan(): ?\OpenTracing\Span { $activeScope = $this->getScopeManager()->getActive(); if ($activeScope === null) { return null; @@ -186,7 +186,7 @@ public function getActiveSpan(){ } - public function startActiveSpan($operationName, $options = []){ + public function startActiveSpan(string $operationName, $options = []): \OpenTracing\Scope{ if (!$options instanceof StartSpanOptions) { $options = StartSpanOptions::create($options); } @@ -209,7 +209,7 @@ private function getParentSpanContext(StartSpanOptions $options) $parentSpan = null; foreach ($references as $ref) { - $parentSpan = $ref->getContext(); + $parentSpan = $ref->getSpanContext(); if ($ref->isType(Reference::CHILD_OF)) { return $parentSpan; } @@ -250,7 +250,7 @@ public function gen128bit(){ /** * 结束,发送信息到jaeger */ - public function flush(){ + public function flush(): void{ $this->reportSpan(); $this->reporter->close(); } diff --git a/src/Jaeger/Scope.php b/src/Jaeger/Scope.php index e885d2d..654c812 100644 --- a/src/Jaeger/Scope.php +++ b/src/Jaeger/Scope.php @@ -35,7 +35,7 @@ public function __construct(ScopeManager $scopeManager, \OpenTracing\Span $span, } - public function close(){ + public function close(): void{ if ($this->finishSpanOnClose) { $this->span->finish(); } @@ -44,7 +44,7 @@ public function close(){ } - public function getSpan(){ + public function getSpan(): \OpenTracing\Span { return $this->span; } } diff --git a/src/Jaeger/ScopeManager.php b/src/Jaeger/ScopeManager.php index 3d11a06..edebaab 100644 --- a/src/Jaeger/ScopeManager.php +++ b/src/Jaeger/ScopeManager.php @@ -2,6 +2,7 @@ namespace Jaeger; +use OpenTracing; class ScopeManager implements \OpenTracing\ScopeManager{ @@ -14,7 +15,7 @@ class ScopeManager implements \OpenTracing\ScopeManager{ * @param bool $finishSpanOnClose * @return Scope */ - public function activate(\OpenTracing\Span $span, $finishSpanOnClose){ + public function activate(\OpenTracing\Span $span, bool $finishSpanOnClose = self::DEFAULT_FINISH_SPAN_ON_CLOSE): OpenTracing\Scope{ $scope = new Scope($this, $span, $finishSpanOnClose); $this->scopes[] = $scope; return $scope; @@ -25,7 +26,7 @@ public function activate(\OpenTracing\Span $span, $finishSpanOnClose){ * get last scope * @return mixed|null */ - public function getActive(){ + public function getActive(): ?OpenTracing\Scope{ if (empty($this->scopes)) { return null; } diff --git a/src/Jaeger/Span.php b/src/Jaeger/Span.php index 8fee8fd..e2a0e6a 100644 --- a/src/Jaeger/Span.php +++ b/src/Jaeger/Span.php @@ -46,24 +46,23 @@ public function __construct($operationName, \OpenTracing\SpanContext $spanContex /** * @return string */ - public function getOperationName(){ + public function getOperationName(): string{ return $this->operationName; } /** * @return SpanContext */ - public function getContext(){ + public function getContext(): \OpenTracing\SpanContext{ return $this->spanContext; } /** * @param float|int|\DateTimeInterface|null $finishTime if passing float or int * it should represent the timestamp (including as many decimal places as you need) - * @param array $logRecords * @return mixed */ - public function finish($finishTime = null, array $logRecords = []){ + public function finish($finishTime = null): void{ $this->finishTime = $finishTime == null ? $this->microtimeToInt() : $finishTime; $this->duration = $this->finishTime - $this->startTime; } @@ -71,12 +70,12 @@ public function finish($finishTime = null, array $logRecords = []){ /** * @param string $newOperationName */ - public function overwriteOperationName($newOperationName){ + public function overwriteOperationName(string $newOperationName): void{ $this->operationName = $newOperationName; } - public function setTag($key, $value){ + public function setTag(string $key, $value): void{ $this->tags[$key] = $value; } @@ -88,7 +87,7 @@ public function setTag($key, $value){ * @param int|float|\DateTimeInterface $timestamp * @throws SpanAlreadyFinished if the span is already finished */ - public function log(array $fields = [], $timestamp = null){ + public function log(array $fields = [], $timestamp = null): void{ $log['timestamp'] = $timestamp ? $timestamp : $this->microtimeToInt(); $log['fields'] = $fields; $this->logs[] = $log; @@ -102,20 +101,20 @@ public function log(array $fields = [], $timestamp = null){ * @param string $value * @throws SpanAlreadyFinished if the span is already finished */ - public function addBaggageItem($key, $value){ + public function addBaggageItem(string $key, string $value): void{ $this->log([ 'event' => 'baggage', 'key' => $key, 'value' => $value, ]); - return $this->spanContext->withBaggageItem($key, $value); + $this->spanContext->withBaggageItem($key, $value); } /** * @param string $key * @return string|null */ - public function getBaggageItem($key){ + public function getBaggageItem(string $key): ?string{ return $this->spanContext->getBaggageItem($key); } diff --git a/src/Jaeger/SpanContext.php b/src/Jaeger/SpanContext.php index 955d023..79a7ff3 100644 --- a/src/Jaeger/SpanContext.php +++ b/src/Jaeger/SpanContext.php @@ -53,14 +53,14 @@ public function __construct($spanId, $parentId, $flags, $baggage = null, $debugI } - public function getBaggageItem($key){ + public function getBaggageItem(string $key): ?string{ return isset($this->baggage[$key]) ? $this->baggage[$key] : null; } - public function withBaggageItem($key, $value){ + public function withBaggageItem(string $key, string $value): \OpenTracing\SpanContext{ $this->baggage[$key] = $value; - return true; + return $this; } public function getIterator() diff --git a/src/Jaeger/Thrift/JaegerThriftSpan.php b/src/Jaeger/Thrift/JaegerThriftSpan.php index 446fdd4..8cda65a 100644 --- a/src/Jaeger/Thrift/JaegerThriftSpan.php +++ b/src/Jaeger/Thrift/JaegerThriftSpan.php @@ -99,7 +99,7 @@ private function buildReferences($references){ }else if($ref->isType(Reference::FOLLOWS_FROM)){ $type = SpanRefType::FOLLOWS_FROM; } - $ctx = $ref->getContext(); + $ctx = $ref->getSpanContext(); $spanRef[] = [ 'refType' => $type, 'traceIdLow' => $ctx->traceIdLow, diff --git a/tests/JaegerTest.php b/tests/JaegerTest.php index 7f2eaa0..bca0615 100644 --- a/tests/JaegerTest.php +++ b/tests/JaegerTest.php @@ -82,7 +82,7 @@ public function testInjectUnSupportFormat(){ $Jaeger->setPropagator(new JaegerPropagator()); $context = new SpanContext(1, 1, 1, null, 1); - $this->expectExceptionMessage('The format \'http_headers\' is not supported.'); + $this->expectExceptionMessage('The format "http_headers" is not supported.'); $Jaeger->inject($context, Formats\HTTP_HEADERS, $_SERVER); } @@ -106,7 +106,7 @@ public function testExtractUnSupportFormat(){ $Jaeger->setPropagator(new JaegerPropagator()); $_SERVER[strtoupper(Constants\Tracer_State_Header_Name)] = '1:1:1:1'; - $this->expectExceptionMessage('The format \'http_headers\' is not supported.'); + $this->expectExceptionMessage('The format "http_headers" is not supported.'); $Jaeger->extract(Formats\HTTP_HEADERS, $_SERVER); } @@ -125,17 +125,17 @@ public function testStartSpanWithFollowsFromTypeRef() $jaeger = $this->getJaeger(); $rootSpan = $jaeger->startSpan('root-a'); $childSpan = $jaeger->startSpan('span-a', [ - 'references' => Reference::create(Reference::FOLLOWS_FROM, $rootSpan), + 'references' => Reference::createForSpan(Reference::FOLLOWS_FROM, $rootSpan), ]); $this->assertSame($childSpan->spanContext->traceIdLow, $rootSpan->spanContext->traceIdLow); - $this->assertSame(current($childSpan->references)->getContext(), $rootSpan->spanContext); + $this->assertSame(current($childSpan->references)->getSpanContext(), $rootSpan->spanContext); $otherRootSpan = $jaeger->startSpan('root-a'); $childSpan = $jaeger->startSpan('span-b', [ 'references' => [ - Reference::create(Reference::FOLLOWS_FROM, $rootSpan), - Reference::create(Reference::FOLLOWS_FROM, $otherRootSpan), + Reference::createForSpan(Reference::FOLLOWS_FROM, $rootSpan), + Reference::createForSpan(Reference::FOLLOWS_FROM, $otherRootSpan), ], ]); @@ -150,8 +150,8 @@ public function testStartSpanWithChildOfTypeRef() $otherRootSpan = $jaeger->startSpan('root-b'); $childSpan = $jaeger->startSpan('span-a', [ 'references' => [ - Reference::create(Reference::CHILD_OF, $rootSpan), - Reference::create(Reference::CHILD_OF, $otherRootSpan), + Reference::createForSpan(Reference::CHILD_OF, $rootSpan), + Reference::createForSpan(Reference::CHILD_OF, $otherRootSpan), ], ]); @@ -175,8 +175,8 @@ public function testStartSpanWithAllRefType() $otherRootSpan = $jaeger->startSpan('root-b'); $childSpan = $jaeger->startSpan('span-a', [ 'references' => [ - Reference::create(Reference::FOLLOWS_FROM, $rootSpan), - Reference::create(Reference::CHILD_OF, $otherRootSpan), + Reference::createForSpan(Reference::FOLLOWS_FROM, $rootSpan), + Reference::createForSpan(Reference::CHILD_OF, $otherRootSpan), ], ]); diff --git a/tests/SpanContextTest.php b/tests/SpanContextTest.php index 8f7dae2..0d9a341 100644 --- a/tests/SpanContextTest.php +++ b/tests/SpanContextTest.php @@ -36,7 +36,7 @@ public function testNew(){ public function testWithBaggageItem(){ $spanContext = $this->getSpanContext(); $res = $spanContext->withBaggageItem('version', '2.0.0'); - $this->assertTrue($res); + $this->assertInstanceOf(SpanContext::class, $res); } @@ -45,7 +45,7 @@ public function testGetBaggageItem(){ $res = $spanContext->withBaggageItem('version', '2.0.0'); $version = $spanContext->getBaggageItem('version'); - $this->assertTrue($res == $version); + $this->assertTrue($version == '2.0.0'); $service = $spanContext->getBaggageItem('service'); $this->assertNull($service);