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\ParentBased;
|
||||
use OpenTelemetry\SDK\Trace\SpanExporter\InMemoryExporter;
|
||||
use OpenTelemetry\SDK\Trace\SpanProcessor\BatchSpanProcessorBuilder;
|
||||
use OpenTelemetry\SDK\Trace\SpanProcessor\BatchSpanProcessor;
|
||||
use OpenTelemetry\SDK\Trace\TracerProvider;
|
||||
|
||||
require __DIR__ . '/../vendor/autoload.php';
|
||||
|
@ -50,7 +50,7 @@ $loggerProvider = LoggerProvider::builder()
|
|||
|
||||
$tracerProvider = TracerProvider::builder()
|
||||
->addSpanProcessor(
|
||||
(new BatchSpanProcessorBuilder($spanExporter))
|
||||
BatchSpanProcessor::builder($spanExporter)
|
||||
->setMeterProvider($meterProvider)
|
||||
->build()
|
||||
)
|
||||
|
|
|
@ -18,7 +18,6 @@ class ExporterFactory
|
|||
public function create(): ?SpanExporterInterface
|
||||
{
|
||||
$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)) {
|
||||
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);
|
||||
}
|
||||
|
||||
public static function builder(SpanExporterInterface $exporter): BatchSpanProcessorBuilder
|
||||
{
|
||||
return new BatchSpanProcessorBuilder($exporter);
|
||||
}
|
||||
|
||||
private function flush(?string $flushMethod = null, ?CancellationInterface $cancellation = null): bool
|
||||
{
|
||||
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\SpanExporterInterface;
|
||||
use OpenTelemetry\SDK\Trace\SpanProcessor\BatchSpanProcessor;
|
||||
use OpenTelemetry\SDK\Trace\SpanProcessor\BatchSpanProcessorBuilder;
|
||||
use OpenTelemetry\SDK\Trace\SpanProcessorInterface;
|
||||
use OpenTelemetry\Tests\Unit\SDK\Util\TestClock;
|
||||
use Psr\Log\LoggerInterface;
|
||||
|
@ -542,6 +543,12 @@ class BatchSpanProcessorTest extends MockeryTestCase
|
|||
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()
|
||||
{
|
||||
$spanContext = $this->createConfiguredMock(API\SpanContextInterface::class, ['isSampled' => true]);
|
||||
|
|
Loading…
Reference in New Issue