From 263601895c2e645ef753446de5863ba2a53efbdb Mon Sep 17 00:00:00 2001 From: Jakub Holubansky Date: Mon, 4 May 2020 11:57:30 +0200 Subject: [PATCH] Support custom startTime in spans --- src/Jaeger/Jaeger.php | 3 ++- src/Jaeger/Span.php | 4 ++-- tests/JaegerTest.php | 12 +++++++++++- 3 files changed, 15 insertions(+), 4 deletions(-) diff --git a/src/Jaeger/Jaeger.php b/src/Jaeger/Jaeger.php index 9ba943c..f317246 100644 --- a/src/Jaeger/Jaeger.php +++ b/src/Jaeger/Jaeger.php @@ -109,7 +109,8 @@ public function startSpan($operationName, $options = []){ } } - $span = new Span($operationName, $spanContext, $options->getReferences()); + $startTime = $options->getStartTime() ? intval($options->getStartTime() * 1000000) : null; + $span = new Span($operationName, $spanContext, $options->getReferences(), $startTime); if(!empty($options->getTags())) { foreach ($options->getTags() as $k => $tag) { $span->setTag($k, $tag); diff --git a/src/Jaeger/Span.php b/src/Jaeger/Span.php index 401a137..8fee8fd 100644 --- a/src/Jaeger/Span.php +++ b/src/Jaeger/Span.php @@ -36,9 +36,9 @@ class Span implements \OpenTracing\Span{ public $references = []; - public function __construct($operationName, \OpenTracing\SpanContext $spanContext, $references){ + public function __construct($operationName, \OpenTracing\SpanContext $spanContext, $references, $startTime = null){ $this->operationName = $operationName; - $this->startTime = $this->microtimeToInt(); + $this->startTime = $startTime == null ? $this->microtimeToInt() : $startTime; $this->spanContext = $spanContext; $this->references = $references; } diff --git a/tests/JaegerTest.php b/tests/JaegerTest.php index df7578e..7f2eaa0 100644 --- a/tests/JaegerTest.php +++ b/tests/JaegerTest.php @@ -114,7 +114,8 @@ public function testExtractUnSupportFormat(){ public function testStartSpan(){ $Jaeger = $this->getJaeger(); - $Jaeger->startSpan('test'); + $span = $Jaeger->startSpan('test'); + $this->assertNotEmpty($span->startTime); $this->assertNotEmpty($Jaeger->getSpans()); } @@ -158,6 +159,15 @@ public function testStartSpanWithChildOfTypeRef() } + public function testStartSpanWithCustomStartTime() + { + $jaeger = $this->getJaeger(); + $span = $jaeger->startSpan('test', ['start_time' => 1499355363.123456]); + + $this->assertSame(1499355363123456, $span->startTime); + } + + public function testStartSpanWithAllRefType() { $jaeger = $this->getJaeger();