1. Go to this page and download the library: Download open-telemetry/test-utils library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
open-telemetry / test-utils example snippets
use OpenTelemetry\TestUtils\TraceStructureAssertionTrait;
use PHPUnit\Framework\TestCase;
class MyTest extends TestCase
{
use TraceStructureAssertionTrait;
// Your test methods...
}
public function testTraceStructure(): void
{
// Create spans using the OpenTelemetry SDK
// ...
// Assert the trace structure using the fluent interface
$this->assertTrace($spans)
->hasRootSpan('root-span')
->withKind(SpanKind::KIND_SERVER)
->hasChild('child-span')
->withKind(SpanKind::KIND_INTERNAL)
->withAttribute('attribute.one', 'value1')
->withAttribute('attribute.two', 42)
->hasEvent('event.processed')
->withAttribute('processed.id', 'abc123')
->end()
->end()
->hasChild('another-child-span')
->withKind(SpanKind::KIND_CLIENT)
->withStatus(StatusCode::STATUS_ERROR, 'Something went wrong')
->end()
->end();
}
use PHPUnit\Framework\Constraint\Callback;
use PHPUnit\Framework\Constraint\IsIdentical;
use PHPUnit\Framework\Constraint\IsType;
use PHPUnit\Framework\Constraint\RegularExpression;
use PHPUnit\Framework\Constraint\StringContains;
// Define the expected structure with matchers
$expectedStructure = [
[
'name' => 'root-span',
'kind' => new IsIdentical(SpanKind::KIND_SERVER),
'attributes' => [
'string.attribute' => new StringContains('World'),
'numeric.attribute' => new Callback(function ($value) {
return $value > 40 || $value === 42;
}),
'boolean.attribute' => new IsType('boolean'),
'array.attribute' => new Callback(function ($value) {
return is_array($value) && count($value) === 3 && in_array('b', $value);
}),
],
'children' => [
[
'name' => new RegularExpression('/child-span-\d+/'),
'kind' => SpanKind::KIND_INTERNAL,
'attributes' => [
'timestamp' => new IsType('integer'),
],
'events' => [
[
'name' => 'process.start',
'attributes' => [
'process.id' => new IsType('integer'),
'process.name' => new StringContains('process'),
],
],
],
],
],
],
];
// Assert the trace structure with matchers
$this->assertTraceStructure($spans, $expectedStructure);
use PHPUnit\Framework\Constraint\Callback;
use PHPUnit\Framework\Constraint\IsIdentical;
use PHPUnit\Framework\Constraint\IsType;
use PHPUnit\Framework\Constraint\RegularExpression;
use PHPUnit\Framework\Constraint\StringContains;
// Assert the trace structure using the fluent interface with matchers
$this->assertTrace($spans)
->hasRootSpan('root-span')
->withKind(new IsIdentical(SpanKind::KIND_SERVER))
->withAttribute('string.attribute', new StringContains('World'))
->withAttribute('numeric.attribute', new Callback(function ($value) {
return $value > 40 || $value === 42;
}))
->withAttribute('boolean.attribute', new IsType('boolean'))
->withAttribute('array.attribute', new Callback(function ($value) {
return is_array($value) && count($value) === 3 && in_array('b', $value);
}))
->hasChild(new RegularExpression('/child-span-\d+/'))
->withKind(SpanKind::KIND_INTERNAL)
->withAttribute('timestamp', new IsType('integer'))
->hasEvent('process.start')
->withAttribute('process.id', new IsType('integer'))
->withAttribute('process.name', new StringContains('process'))
->end()
->end()
->end();
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.