adding batch span processor builder (#1046)
This commit is contained in:
parent
1caf77b436
commit
8fe898bdb4
|
@ -18,7 +18,7 @@ use OpenTelemetry\SDK\Sdk;
|
||||||
use OpenTelemetry\SDK\Trace\Sampler\AlwaysOnSampler;
|
use OpenTelemetry\SDK\Trace\Sampler\AlwaysOnSampler;
|
||||||
use OpenTelemetry\SDK\Trace\Sampler\ParentBased;
|
use OpenTelemetry\SDK\Trace\Sampler\ParentBased;
|
||||||
use OpenTelemetry\SDK\Trace\SpanExporter\InMemoryExporter;
|
use OpenTelemetry\SDK\Trace\SpanExporter\InMemoryExporter;
|
||||||
use OpenTelemetry\SDK\Trace\SpanProcessor\BatchSpanProcessorBuilder;
|
use OpenTelemetry\SDK\Trace\SpanProcessor\BatchSpanProcessor;
|
||||||
use OpenTelemetry\SDK\Trace\TracerProvider;
|
use OpenTelemetry\SDK\Trace\TracerProvider;
|
||||||
|
|
||||||
require __DIR__ . '/../vendor/autoload.php';
|
require __DIR__ . '/../vendor/autoload.php';
|
||||||
|
@ -50,7 +50,7 @@ $loggerProvider = LoggerProvider::builder()
|
||||||
|
|
||||||
$tracerProvider = TracerProvider::builder()
|
$tracerProvider = TracerProvider::builder()
|
||||||
->addSpanProcessor(
|
->addSpanProcessor(
|
||||||
(new BatchSpanProcessorBuilder($spanExporter))
|
BatchSpanProcessor::builder($spanExporter)
|
||||||
->setMeterProvider($meterProvider)
|
->setMeterProvider($meterProvider)
|
||||||
->build()
|
->build()
|
||||||
)
|
)
|
||||||
|
|
|
@ -18,7 +18,6 @@ class ExporterFactory
|
||||||
public function create(): ?SpanExporterInterface
|
public function create(): ?SpanExporterInterface
|
||||||
{
|
{
|
||||||
$exporters = Configuration::getList(Variables::OTEL_TRACES_EXPORTER);
|
$exporters = Configuration::getList(Variables::OTEL_TRACES_EXPORTER);
|
||||||
//TODO "The SDK MAY accept a comma-separated list to enable setting multiple exporters"
|
|
||||||
if (1 !== count($exporters)) {
|
if (1 !== count($exporters)) {
|
||||||
throw new InvalidArgumentException(sprintf('Configuration %s requires exactly 1 exporter', Variables::OTEL_TRACES_EXPORTER));
|
throw new InvalidArgumentException(sprintf('Configuration %s requires exactly 1 exporter', Variables::OTEL_TRACES_EXPORTER));
|
||||||
}
|
}
|
||||||
|
|
|
@ -198,6 +198,11 @@ class BatchSpanProcessor implements SpanProcessorInterface
|
||||||
return $this->flush(__FUNCTION__, $cancellation);
|
return $this->flush(__FUNCTION__, $cancellation);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static function builder(SpanExporterInterface $exporter): BatchSpanProcessorBuilder
|
||||||
|
{
|
||||||
|
return new BatchSpanProcessorBuilder($exporter);
|
||||||
|
}
|
||||||
|
|
||||||
private function flush(?string $flushMethod = null, ?CancellationInterface $cancellation = null): bool
|
private function flush(?string $flushMethod = null, ?CancellationInterface $cancellation = null): bool
|
||||||
{
|
{
|
||||||
if ($flushMethod !== null) {
|
if ($flushMethod !== null) {
|
||||||
|
|
|
@ -0,0 +1,33 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
declare(strict_types=1);
|
||||||
|
|
||||||
|
namespace OpenTelemetry\Tests\Unit\SDK\Trace\SpanProcessor;
|
||||||
|
|
||||||
|
use OpenTelemetry\API\Metrics\MeterInterface;
|
||||||
|
use OpenTelemetry\SDK\Metrics\MeterProviderInterface;
|
||||||
|
use OpenTelemetry\SDK\Trace\SpanExporterInterface;
|
||||||
|
use OpenTelemetry\SDK\Trace\SpanProcessor\BatchSpanProcessor;
|
||||||
|
use PHPUnit\Framework\TestCase;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @covers \OpenTelemetry\SDK\Trace\SpanProcessor\BatchSpanProcessorBuilder
|
||||||
|
*/
|
||||||
|
class BatchSpanProcessorBuilderTest extends TestCase
|
||||||
|
{
|
||||||
|
public function test_build(): void
|
||||||
|
{
|
||||||
|
$exporter = $this->createMock(SpanExporterInterface::class);
|
||||||
|
$meterProvider = $this->createMock(MeterProviderInterface::class);
|
||||||
|
$meter = $this->createMock(MeterInterface::class);
|
||||||
|
$meterProvider->expects($this->once())->method('getMeter')->willReturn($meter);
|
||||||
|
$processor = BatchSpanProcessor::builder($exporter)
|
||||||
|
->setMeterProvider($meterProvider)
|
||||||
|
->build();
|
||||||
|
$reflection = new \ReflectionClass($processor);
|
||||||
|
$property = $reflection->getProperty('exporter');
|
||||||
|
$property->setAccessible(true);
|
||||||
|
|
||||||
|
$this->assertSame($exporter, $property->getValue($processor));
|
||||||
|
}
|
||||||
|
}
|
|
@ -27,6 +27,7 @@ use OpenTelemetry\SDK\Trace\ReadWriteSpanInterface;
|
||||||
use OpenTelemetry\SDK\Trace\SpanDataInterface;
|
use OpenTelemetry\SDK\Trace\SpanDataInterface;
|
||||||
use OpenTelemetry\SDK\Trace\SpanExporterInterface;
|
use OpenTelemetry\SDK\Trace\SpanExporterInterface;
|
||||||
use OpenTelemetry\SDK\Trace\SpanProcessor\BatchSpanProcessor;
|
use OpenTelemetry\SDK\Trace\SpanProcessor\BatchSpanProcessor;
|
||||||
|
use OpenTelemetry\SDK\Trace\SpanProcessor\BatchSpanProcessorBuilder;
|
||||||
use OpenTelemetry\SDK\Trace\SpanProcessorInterface;
|
use OpenTelemetry\SDK\Trace\SpanProcessorInterface;
|
||||||
use OpenTelemetry\Tests\Unit\SDK\Util\TestClock;
|
use OpenTelemetry\Tests\Unit\SDK\Util\TestClock;
|
||||||
use Psr\Log\LoggerInterface;
|
use Psr\Log\LoggerInterface;
|
||||||
|
@ -542,6 +543,12 @@ class BatchSpanProcessorTest extends MockeryTestCase
|
||||||
new BatchSpanProcessor($exporter, $this->testClock, 2, 5000, 30000, 3);
|
new BatchSpanProcessor($exporter, $this->testClock, 2, 5000, 30000, 3);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function test_get_builder(): void
|
||||||
|
{
|
||||||
|
$exporter = $this->createMock(SpanExporterInterface::class);
|
||||||
|
$this->assertInstanceOf(BatchSpanProcessorBuilder::class, BatchSpanProcessor::builder($exporter));
|
||||||
|
}
|
||||||
|
|
||||||
private function createSampledSpanMock()
|
private function createSampledSpanMock()
|
||||||
{
|
{
|
||||||
$spanContext = $this->createConfiguredMock(API\SpanContextInterface::class, ['isSampled' => true]);
|
$spanContext = $this->createConfiguredMock(API\SpanContextInterface::class, ['isSampled' => true]);
|
||||||
|
|
Loading…
Reference in New Issue