diff --git a/.codecov.yaml b/.codecov.yaml
index c00256c151..66760d35dc 100644
--- a/.codecov.yaml
+++ b/.codecov.yaml
@@ -151,3 +151,7 @@ component_management:
name: adapter-postgresql
paths:
- src/adapter/etl-adapter-postgresql/**
+ - component_id: bridge-phpunit-telemetry
+ name: bridge-phpunit-telemetry
+ paths:
+ - src/bridge/phpunit/telemetry/**
diff --git a/.github/workflows/monorepo-split.yml b/.github/workflows/monorepo-split.yml
index 4fdf0ded17..f3b37103ab 100644
--- a/.github/workflows/monorepo-split.yml
+++ b/.github/workflows/monorepo-split.yml
@@ -98,6 +98,8 @@ jobs:
split_repository: 'symfony-telemetry-bundle'
- local_path: 'src/bridge/telemetry/otlp'
split_repository: 'telemetry-otlp-bridge'
+ - local_path: 'src/bridge/phpunit/telemetry'
+ split_repository: 'phpunit-telemetry-bridge'
- local_path: 'src/extension/pg-query-ext'
split_repository: 'pg-query-ext'
diff --git a/.php-cs-fixer.php b/.php-cs-fixer.php
index c4392cf33b..1055a70691 100644
--- a/.php-cs-fixer.php
+++ b/.php-cs-fixer.php
@@ -30,8 +30,6 @@
__DIR__ . '/web/landing/tests',
__DIR__ . '/web/landing/bin',
__DIR__ . '/tools/rector/src',
- __DIR__ . '/tools/phpunit/extension/telemetry/src',
- __DIR__ . '/tools/phpunit/extension/telemetry/tests',
])
->exclude([
'Flow/Parquet/ThriftModel',
diff --git a/composer.json b/composer.json
index 0126aebdaa..346355d16c 100644
--- a/composer.json
+++ b/composer.json
@@ -113,7 +113,8 @@
"flow-php/telemetry": "self.version",
"flow-php/telemetry-otlp-bridge": "self.version",
"flow-php/types": "self.version",
- "flow-php/phpunit-telemetry": "self.version"
+ "flow-php/phpunit-telemetry": "self.version",
+ "flow-php/phpunit-telemetry-bridge": "self.version"
},
"minimum-stability": "dev",
"prefer-stable": true,
@@ -145,6 +146,7 @@
"src/bridge/symfony/http-foundation/src/Flow",
"src/bridge/symfony/telemetry-bundle/src/Flow",
"src/bridge/telemetry/otlp/src/Flow",
+ "src/bridge/phpunit/telemetry/src/Flow",
"src/cli/src/Flow",
"src/core/etl/src/Flow",
"src/lib/array-dot/src/Flow",
@@ -165,9 +167,6 @@
],
"Flow\\ETL\\Adapter\\Doctrine\\": [
"src/adapter/etl-adapter-doctrine/src/Flow/ETL/Adapter/Doctrine"
- ],
- "Flow\\Tool\\PHPUnit\\Telemetry\\": [
- "tools/phpunit/extension/telemetry/src/Flow/Tool/PHPUnit/Telemetry"
]
},
"files": [
@@ -238,6 +237,7 @@
"src/bridge/symfony/http-foundation/tests/Flow",
"src/bridge/symfony/telemetry-bundle/tests/Flow",
"src/bridge/telemetry/otlp/tests/Flow",
+ "src/bridge/phpunit/telemetry/tests/Flow",
"src/cli/tests/Flow",
"src/core/etl/tests/Flow",
"src/lib/array-dot/tests/Flow",
@@ -258,9 +258,6 @@
],
"Flow\\ETL\\Adapter\\Doctrine\\Tests\\": [
"src/adapter/etl-adapter-doctrine/tests/Flow/ETL/Adapter/Doctrine/Tests"
- ],
- "Flow\\Tool\\PHPUnit\\Telemetry\\Tests\\": [
- "tools/phpunit/extension/telemetry/tests/Flow/Tool/PHPUnit/Telemetry/Tests"
]
}
},
@@ -307,6 +304,7 @@
"@test:bridge:monolog-http",
"@test:bridge:monolog-telemetry",
"@test:bridge:openapi-specification",
+ "@test:bridge:phpunit-telemetry",
"@test:bridge:psr7-telemetry",
"@test:bridge:psr18-telemetry",
"@test:bridge:symfony-http-foundation",
@@ -462,8 +460,8 @@
"tools/phpunit/vendor/bin/phpunit --testsuite=adapter-postgresql-unit --log-junit ./var/phpunit/logs/adapter-postgresql-unit.junit.xml --coverage-clover=./var/phpunit/coverage/clover/adapter-postgresql-unit.coverage.xml",
"tools/phpunit/vendor/bin/phpunit --testsuite=adapter-postgresql-integration --log-junit ./var/phpunit/logs/adapter-postgresql-integration.junit.xml --coverage-clover=./var/phpunit/coverage/clover/adapter-postgresql-integration.coverage.xml"
],
- "test:tool:phpunit-telemetry": [
- "tools/phpunit/vendor/bin/phpunit --testsuite=tool-phpunit-telemetry-unit --log-junit ./var/phpunit/logs/tool-phpunit-telemetry-unit.junit.xml --coverage-clover=./var/phpunit/coverage/clover/tool-phpunit-telemetry-unit.coverage.xml"
+ "test:bridge:phpunit-telemetry": [
+ "tools/phpunit/vendor/bin/phpunit --testsuite=bridge-phpunit-telemetry-unit --log-junit ./var/phpunit/logs/bridge-phpunit-telemetry-unit.junit.xml --coverage-clover=./var/phpunit/coverage/clover/bridge-phpunit-telemetry-unit.coverage.xml"
],
"test:docs": [
"docker run -t --rm -v $PWD:/app norberttech/md-link-linter --exclude=vendor --exclude=.scratchpad --exclude=documentation ."
diff --git a/documentation/components/bridges/phpunit-telemetry-bridge.md b/documentation/components/bridges/phpunit-telemetry-bridge.md
new file mode 100644
index 0000000000..633bd824fe
--- /dev/null
+++ b/documentation/components/bridges/phpunit-telemetry-bridge.md
@@ -0,0 +1,98 @@
+# PHPUnit Telemetry Bridge
+
+PHPUnit extension allowing to collect test suite telemetry and export to OTEL collector.
+
+- [Back](/documentation/introduction.md)
+- [Packagist](https://packagist.org/packages/flow-php/phpunit-telemetry-bridge)
+- [GitHub](https://github.com/flow-php/phpunit-telemetry-bridge)
+- [API Reference](/documentation/api/bridge/phpunit/telemetry)
+
+[TOC]
+
+## Installation
+
+```bash
+composer require flow-php/phpunit-telemetry-bridge:~--FLOW_PHP_VERSION--
+```
+
+## Configuration
+
+Add the extension to your `phpunit.xml.dist`:
+
+```xml
+
+
+
+
+
+
+
+
+
+
+```
+
+## Configuration Parameters
+
+| Parameter | Default | Description |
+|-----------|---------|-------------|
+| `service_name` | `phpunit` | Service name used in telemetry data |
+| `otel_collector_url` | `http://localhost:4318` | OTLP HTTP endpoint URL |
+| `emit_traces` | `true` | Enable/disable trace emission |
+| `emit_metrics` | `true` | Enable/disable metric emission |
+| `emit_test_spans` | `true` | Create individual spans for each test |
+| `emit_test_case_spans` | `true` | Create spans for test case classes |
+
+## Features
+
+### Traces
+
+When enabled, the extension creates spans for:
+- Test suite runs (root span)
+- Individual test suites
+- Test case classes (optional)
+- Individual tests (optional)
+
+Each span includes attributes like:
+- `test.suite` - Test suite name
+- `test.id` - Test identifier
+- `test.name` - Test name
+- `test.class` - Test class name
+- `test.method` - Test method name
+- `test.status` - Test result status (passed, failed, errored, skipped, incomplete)
+
+### Metrics
+
+When enabled, the extension records:
+- `phpunit.suite.duration` - Histogram of suite execution time
+- `phpunit.suite.test_count` - Counter of tests per suite
+- `phpunit.test.duration` - Histogram of individual test execution time
+- `phpunit.test.count` - Counter of tests by status
+
+## Running with Docker Compose
+
+To visualize test telemetry, run an OTEL collector with a backend like Jaeger:
+
+```yaml
+services:
+ otel-collector:
+ image: otel/opentelemetry-collector:latest
+ ports:
+ - "4317:4317" # OTLP gRPC
+ - "4318:4318" # OTLP HTTP
+ volumes:
+ - ./otel-collector-config.yaml:/etc/otelcol/config.yaml
+
+ jaeger:
+ image: jaegertracing/all-in-one:latest
+ ports:
+ - "16686:16686" # UI
+```
+
+Then run your tests:
+
+```bash
+./vendor/bin/phpunit
+```
+
+View the traces in Jaeger at `http://localhost:16686`.
diff --git a/manifest.json b/manifest.json
index 5943749762..f29a89d462 100644
--- a/manifest.json
+++ b/manifest.json
@@ -150,6 +150,11 @@
"name" : "flow-php/postgresql",
"path": "src/lib/postgresql",
"type": "lib"
+ },
+ {
+ "name": "flow-php/phpunit-telemetry-bridge",
+ "path": "src/bridge/phpunit/telemetry",
+ "type": "bridge"
}
]
}
diff --git a/phpdoc/bridge.phpunit.telemetry.xml b/phpdoc/bridge.phpunit.telemetry.xml
new file mode 100644
index 0000000000..551833f71b
--- /dev/null
+++ b/phpdoc/bridge.phpunit.telemetry.xml
@@ -0,0 +1,24 @@
+
+
+ Flow PHP
+
+
+ ./../var/phpdocumentor/cache/bridge/phpunit/telemetry
+
+
+
+
+ src/bridge/phpunit/telemetry/src
+
+
+ PHPUnit Telemetry
+ public
+ false
+
+
+
+
diff --git a/phpstan.neon b/phpstan.neon
index 1b457f2fc3..e839fb8f50 100644
--- a/phpstan.neon
+++ b/phpstan.neon
@@ -45,8 +45,8 @@ parameters:
- src/lib/types/src
- src/lib/postgresql/src
- src/tools/documentation/src
- - tools/phpunit/extension/telemetry/src
- - tools/phpunit/extension/telemetry/tests
+ - src/bridge/phpunit/telemetry/src
+ - src/bridge/phpunit/telemetry/tests
- src/core/etl/tests
- src/cli/tests
- src/adapter/etl-adapter-avro/tests
diff --git a/phpunit.xml.dist b/phpunit.xml.dist
index 176d796f73..7d5e2869f6 100644
--- a/phpunit.xml.dist
+++ b/phpunit.xml.dist
@@ -223,8 +223,8 @@
src/adapter/etl-adapter-xml/tests/Flow/ETL/Adapter/XML/Tests/Integration
-
- tools/phpunit/extension/telemetry/tests/Flow/Tool/PHPUnit/Telemetry/Tests/Unit
+
+ src/bridge/phpunit/telemetry/tests/Flow/Bridge/PHPUnit/Telemetry/Tests/Unit
@@ -271,7 +271,7 @@
-
+
diff --git a/rector.src.php b/rector.src.php
index 64476e6128..cb26857e2a 100644
--- a/rector.src.php
+++ b/rector.src.php
@@ -18,7 +18,6 @@
__DIR__ . '/src/adapter/*/src',
__DIR__ . '/src/bridge/*/*/src',
__DIR__ . '/src/tools/*/src',
- __DIR__ . '/tools/phpunit/extension/telemetry/src',
__DIR__ . '/web/landing/src',
])
->withSkip([
diff --git a/rector.tests.php b/rector.tests.php
index e890fae64b..4c48840270 100644
--- a/rector.tests.php
+++ b/rector.tests.php
@@ -93,7 +93,6 @@
__DIR__ . '/src/adapter/*/*/tests',
__DIR__ . '/src/bridge/*/*/tests',
__DIR__ . '/src/tools/*/*/tests',
- __DIR__ . '/tools/phpunit/extension/telemetry/tests',
__DIR__ . '/web/landing/tests',
])
->withSets([
diff --git a/src/bridge/phpunit/telemetry/.gitattributes b/src/bridge/phpunit/telemetry/.gitattributes
new file mode 100644
index 0000000000..e020972059
--- /dev/null
+++ b/src/bridge/phpunit/telemetry/.gitattributes
@@ -0,0 +1,9 @@
+*.php text eol=lf
+
+/.github export-ignore
+/tests export-ignore
+
+/README.md export-ignore
+
+/.gitattributes export-ignore
+/.gitignore export-ignore
diff --git a/src/bridge/phpunit/telemetry/.github/workflows/readonly.yaml b/src/bridge/phpunit/telemetry/.github/workflows/readonly.yaml
new file mode 100644
index 0000000000..24255888e1
--- /dev/null
+++ b/src/bridge/phpunit/telemetry/.github/workflows/readonly.yaml
@@ -0,0 +1,17 @@
+name: Readonly
+
+on:
+ pull_request_target:
+ types: [opened]
+
+jobs:
+ run:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: superbrothers/close-pull-request@v3
+ with:
+ comment: |
+ Hi, thank you for your contribution.
+ Unfortunately, this repository is read-only. It's a split from our main monorepo repository.
+ In order to proceed with this PR please open it against https://github.com/flow-php/flow repository.
+ Thank you.
diff --git a/src/bridge/phpunit/telemetry/CONTRIBUTING.md b/src/bridge/phpunit/telemetry/CONTRIBUTING.md
new file mode 100644
index 0000000000..f035b534af
--- /dev/null
+++ b/src/bridge/phpunit/telemetry/CONTRIBUTING.md
@@ -0,0 +1,6 @@
+## Contributing
+
+This repo is **READ ONLY**, in order to contribute to Flow PHP project, please
+open PR against [flow](https://github.com/flow-php/flow) monorepo.
+
+Changes merged to monorepo are automatically propagated into sub repositories.
diff --git a/src/bridge/phpunit/telemetry/LICENSE b/src/bridge/phpunit/telemetry/LICENSE
new file mode 100644
index 0000000000..bc3cc4d085
--- /dev/null
+++ b/src/bridge/phpunit/telemetry/LICENSE
@@ -0,0 +1,19 @@
+Copyright (c) 2020-present Flow PHP
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/src/bridge/phpunit/telemetry/README.md b/src/bridge/phpunit/telemetry/README.md
new file mode 100644
index 0000000000..1cc64e6d02
--- /dev/null
+++ b/src/bridge/phpunit/telemetry/README.md
@@ -0,0 +1,20 @@
+# Flow PHP - PHPUnit Telemetry Bridge
+
+PHPUnit extension allowing to collect test suite telemetry and export to OTEL collector.
+
+> [!IMPORTANT]
+> This repository is a subtree split from our monorepo. If you'd like to contribute,
+> please visit our main monorepo [flow-php/flow](https://github.com/flow-php/flow).
+
+## Installation
+
+```bash
+composer require flow-php/phpunit-telemetry-bridge
+```
+
+## Resources
+
+- [Documentation](https://flow-php.com/documentation/components/bridges/phpunit-telemetry-bridge/)
+- [Installation](https://flow-php.com/documentation/installation/)
+- [Contributing](https://flow-php.com/documentation/contributing/)
+- [Upgrading](https://flow-php.com/documentation/upgrading/)
diff --git a/tools/phpunit/extension/telemetry/composer.json b/src/bridge/phpunit/telemetry/composer.json
similarity index 51%
rename from tools/phpunit/extension/telemetry/composer.json
rename to src/bridge/phpunit/telemetry/composer.json
index e859737f2f..946cb6c395 100644
--- a/tools/phpunit/extension/telemetry/composer.json
+++ b/src/bridge/phpunit/telemetry/composer.json
@@ -1,29 +1,40 @@
{
- "name": "flow-php/phpunit-telemetry",
+ "name": "flow-php/phpunit-telemetry-bridge",
"type": "library",
- "description": "PHPUnit telemetry extension for Flow PHP - exports test telemetry to OTEL collector",
- "keywords": ["phpunit", "telemetry", "opentelemetry", "otel", "testing"],
+ "description": "Flow PHP - PHPUnit Telemetry Bridge",
+ "keywords": [
+ "flow-php",
+ "phpunit",
+ "telemetry",
+ "opentelemetry",
+ "otel",
+ "testing",
+ "bridge"
+ ],
+ "homepage": "https://github.com/flow-php/flow",
+ "license": "MIT",
"require": {
"php": "~8.3.0 || ~8.4.0 || ~8.5.0",
"flow-php/telemetry": "self.version",
"flow-php/telemetry-otlp-bridge": "self.version",
"phpunit/phpunit": "^11"
},
- "config": {
- "optimize-autoloader": true,
- "sort-packages": true
- },
- "license": "MIT",
"autoload": {
"psr-4": {
- "Flow\\Tool\\PHPUnit\\Telemetry\\": "src/Flow/Tool/PHPUnit/Telemetry"
+ "Flow\\": [
+ "src/Flow"
+ ]
}
},
"autoload-dev": {
"psr-4": {
- "Flow\\Tool\\PHPUnit\\Telemetry\\Tests\\": "tests/Flow/Tool/PHPUnit/Telemetry/Tests"
+ "Flow\\": "tests/Flow"
}
},
"minimum-stability": "dev",
- "prefer-stable": true
+ "prefer-stable": true,
+ "config": {
+ "optimize-autoloader": true,
+ "sort-packages": true
+ }
}
diff --git a/tools/phpunit/extension/telemetry/src/Flow/Tool/PHPUnit/Telemetry/Configuration.php b/src/bridge/phpunit/telemetry/src/Flow/Bridge/PHPUnit/Telemetry/Configuration.php
similarity index 97%
rename from tools/phpunit/extension/telemetry/src/Flow/Tool/PHPUnit/Telemetry/Configuration.php
rename to src/bridge/phpunit/telemetry/src/Flow/Bridge/PHPUnit/Telemetry/Configuration.php
index c5f8535a5f..e0b549a4d0 100644
--- a/tools/phpunit/extension/telemetry/src/Flow/Tool/PHPUnit/Telemetry/Configuration.php
+++ b/src/bridge/phpunit/telemetry/src/Flow/Bridge/PHPUnit/Telemetry/Configuration.php
@@ -2,7 +2,7 @@
declare(strict_types=1);
-namespace Flow\Tool\PHPUnit\Telemetry;
+namespace Flow\Bridge\PHPUnit\Telemetry;
use PHPUnit\Runner\Extension\ParameterCollection;
diff --git a/tools/phpunit/extension/telemetry/src/Flow/Tool/PHPUnit/Telemetry/SpanStack.php b/src/bridge/phpunit/telemetry/src/Flow/Bridge/PHPUnit/Telemetry/SpanStack.php
similarity index 97%
rename from tools/phpunit/extension/telemetry/src/Flow/Tool/PHPUnit/Telemetry/SpanStack.php
rename to src/bridge/phpunit/telemetry/src/Flow/Bridge/PHPUnit/Telemetry/SpanStack.php
index 39d1f74e29..0e4a0d4a03 100644
--- a/tools/phpunit/extension/telemetry/src/Flow/Tool/PHPUnit/Telemetry/SpanStack.php
+++ b/src/bridge/phpunit/telemetry/src/Flow/Bridge/PHPUnit/Telemetry/SpanStack.php
@@ -2,7 +2,7 @@
declare(strict_types=1);
-namespace Flow\Tool\PHPUnit\Telemetry;
+namespace Flow\Bridge\PHPUnit\Telemetry;
use Flow\Telemetry\Tracer\Span;
diff --git a/tools/phpunit/extension/telemetry/src/Flow/Tool/PHPUnit/Telemetry/Subscriber/TestErroredSubscriber.php b/src/bridge/phpunit/telemetry/src/Flow/Bridge/PHPUnit/Telemetry/Subscriber/TestErroredSubscriber.php
similarity index 80%
rename from tools/phpunit/extension/telemetry/src/Flow/Tool/PHPUnit/Telemetry/Subscriber/TestErroredSubscriber.php
rename to src/bridge/phpunit/telemetry/src/Flow/Bridge/PHPUnit/Telemetry/Subscriber/TestErroredSubscriber.php
index aa6594111e..d1b59f978b 100644
--- a/tools/phpunit/extension/telemetry/src/Flow/Tool/PHPUnit/Telemetry/Subscriber/TestErroredSubscriber.php
+++ b/src/bridge/phpunit/telemetry/src/Flow/Bridge/PHPUnit/Telemetry/Subscriber/TestErroredSubscriber.php
@@ -2,9 +2,9 @@
declare(strict_types=1);
-namespace Flow\Tool\PHPUnit\Telemetry\Subscriber;
+namespace Flow\Bridge\PHPUnit\Telemetry\Subscriber;
-use Flow\Tool\PHPUnit\Telemetry\TestStatusRegistry;
+use Flow\Bridge\PHPUnit\Telemetry\TestStatusRegistry;
use PHPUnit\Event\Test\{Errored, ErroredSubscriber};
final readonly class TestErroredSubscriber implements ErroredSubscriber
diff --git a/tools/phpunit/extension/telemetry/src/Flow/Tool/PHPUnit/Telemetry/Subscriber/TestFailedSubscriber.php b/src/bridge/phpunit/telemetry/src/Flow/Bridge/PHPUnit/Telemetry/Subscriber/TestFailedSubscriber.php
similarity index 80%
rename from tools/phpunit/extension/telemetry/src/Flow/Tool/PHPUnit/Telemetry/Subscriber/TestFailedSubscriber.php
rename to src/bridge/phpunit/telemetry/src/Flow/Bridge/PHPUnit/Telemetry/Subscriber/TestFailedSubscriber.php
index 5d229f8298..5203a1a584 100644
--- a/tools/phpunit/extension/telemetry/src/Flow/Tool/PHPUnit/Telemetry/Subscriber/TestFailedSubscriber.php
+++ b/src/bridge/phpunit/telemetry/src/Flow/Bridge/PHPUnit/Telemetry/Subscriber/TestFailedSubscriber.php
@@ -2,9 +2,9 @@
declare(strict_types=1);
-namespace Flow\Tool\PHPUnit\Telemetry\Subscriber;
+namespace Flow\Bridge\PHPUnit\Telemetry\Subscriber;
-use Flow\Tool\PHPUnit\Telemetry\TestStatusRegistry;
+use Flow\Bridge\PHPUnit\Telemetry\TestStatusRegistry;
use PHPUnit\Event\Test\{Failed, FailedSubscriber};
final readonly class TestFailedSubscriber implements FailedSubscriber
diff --git a/tools/phpunit/extension/telemetry/src/Flow/Tool/PHPUnit/Telemetry/Subscriber/TestFinishedSubscriber.php b/src/bridge/phpunit/telemetry/src/Flow/Bridge/PHPUnit/Telemetry/Subscriber/TestFinishedSubscriber.php
similarity index 95%
rename from tools/phpunit/extension/telemetry/src/Flow/Tool/PHPUnit/Telemetry/Subscriber/TestFinishedSubscriber.php
rename to src/bridge/phpunit/telemetry/src/Flow/Bridge/PHPUnit/Telemetry/Subscriber/TestFinishedSubscriber.php
index 798ee3ffc9..8c6d101f18 100644
--- a/tools/phpunit/extension/telemetry/src/Flow/Tool/PHPUnit/Telemetry/Subscriber/TestFinishedSubscriber.php
+++ b/src/bridge/phpunit/telemetry/src/Flow/Bridge/PHPUnit/Telemetry/Subscriber/TestFinishedSubscriber.php
@@ -2,11 +2,11 @@
declare(strict_types=1);
-namespace Flow\Tool\PHPUnit\Telemetry\Subscriber;
+namespace Flow\Bridge\PHPUnit\Telemetry\Subscriber;
+use Flow\Bridge\PHPUnit\Telemetry\{Configuration, SpanStack, TestStatusRegistry};
use Flow\Telemetry\{PackageVersion, Telemetry};
use Flow\Telemetry\Tracer\SpanStatus;
-use Flow\Tool\PHPUnit\Telemetry\{Configuration, SpanStack, TestStatusRegistry};
use PHPUnit\Event\Test\{Finished, FinishedSubscriber};
final readonly class TestFinishedSubscriber implements FinishedSubscriber
diff --git a/tools/phpunit/extension/telemetry/src/Flow/Tool/PHPUnit/Telemetry/Subscriber/TestMarkedIncompleteSubscriber.php b/src/bridge/phpunit/telemetry/src/Flow/Bridge/PHPUnit/Telemetry/Subscriber/TestMarkedIncompleteSubscriber.php
similarity index 81%
rename from tools/phpunit/extension/telemetry/src/Flow/Tool/PHPUnit/Telemetry/Subscriber/TestMarkedIncompleteSubscriber.php
rename to src/bridge/phpunit/telemetry/src/Flow/Bridge/PHPUnit/Telemetry/Subscriber/TestMarkedIncompleteSubscriber.php
index 6783bfcf74..dea6aa4604 100644
--- a/tools/phpunit/extension/telemetry/src/Flow/Tool/PHPUnit/Telemetry/Subscriber/TestMarkedIncompleteSubscriber.php
+++ b/src/bridge/phpunit/telemetry/src/Flow/Bridge/PHPUnit/Telemetry/Subscriber/TestMarkedIncompleteSubscriber.php
@@ -2,9 +2,9 @@
declare(strict_types=1);
-namespace Flow\Tool\PHPUnit\Telemetry\Subscriber;
+namespace Flow\Bridge\PHPUnit\Telemetry\Subscriber;
-use Flow\Tool\PHPUnit\Telemetry\TestStatusRegistry;
+use Flow\Bridge\PHPUnit\Telemetry\TestStatusRegistry;
use PHPUnit\Event\Test\{MarkedIncomplete, MarkedIncompleteSubscriber};
final readonly class TestMarkedIncompleteSubscriber implements MarkedIncompleteSubscriber
diff --git a/tools/phpunit/extension/telemetry/src/Flow/Tool/PHPUnit/Telemetry/Subscriber/TestPassedSubscriber.php b/src/bridge/phpunit/telemetry/src/Flow/Bridge/PHPUnit/Telemetry/Subscriber/TestPassedSubscriber.php
similarity index 78%
rename from tools/phpunit/extension/telemetry/src/Flow/Tool/PHPUnit/Telemetry/Subscriber/TestPassedSubscriber.php
rename to src/bridge/phpunit/telemetry/src/Flow/Bridge/PHPUnit/Telemetry/Subscriber/TestPassedSubscriber.php
index 02003c046f..61c05782aa 100644
--- a/tools/phpunit/extension/telemetry/src/Flow/Tool/PHPUnit/Telemetry/Subscriber/TestPassedSubscriber.php
+++ b/src/bridge/phpunit/telemetry/src/Flow/Bridge/PHPUnit/Telemetry/Subscriber/TestPassedSubscriber.php
@@ -2,9 +2,9 @@
declare(strict_types=1);
-namespace Flow\Tool\PHPUnit\Telemetry\Subscriber;
+namespace Flow\Bridge\PHPUnit\Telemetry\Subscriber;
-use Flow\Tool\PHPUnit\Telemetry\TestStatusRegistry;
+use Flow\Bridge\PHPUnit\Telemetry\TestStatusRegistry;
use PHPUnit\Event\Test\{Passed, PassedSubscriber};
final readonly class TestPassedSubscriber implements PassedSubscriber
diff --git a/tools/phpunit/extension/telemetry/src/Flow/Tool/PHPUnit/Telemetry/Subscriber/TestPreparationStartedSubscriber.php b/src/bridge/phpunit/telemetry/src/Flow/Bridge/PHPUnit/Telemetry/Subscriber/TestPreparationStartedSubscriber.php
similarity index 92%
rename from tools/phpunit/extension/telemetry/src/Flow/Tool/PHPUnit/Telemetry/Subscriber/TestPreparationStartedSubscriber.php
rename to src/bridge/phpunit/telemetry/src/Flow/Bridge/PHPUnit/Telemetry/Subscriber/TestPreparationStartedSubscriber.php
index 14091e8bfc..8c0cc9f4b0 100644
--- a/tools/phpunit/extension/telemetry/src/Flow/Tool/PHPUnit/Telemetry/Subscriber/TestPreparationStartedSubscriber.php
+++ b/src/bridge/phpunit/telemetry/src/Flow/Bridge/PHPUnit/Telemetry/Subscriber/TestPreparationStartedSubscriber.php
@@ -2,10 +2,10 @@
declare(strict_types=1);
-namespace Flow\Tool\PHPUnit\Telemetry\Subscriber;
+namespace Flow\Bridge\PHPUnit\Telemetry\Subscriber;
+use Flow\Bridge\PHPUnit\Telemetry\{Configuration, SpanStack};
use Flow\Telemetry\{PackageVersion, Telemetry};
-use Flow\Tool\PHPUnit\Telemetry\{Configuration, SpanStack};
use PHPUnit\Event\Test\{PreparationStarted, PreparationStartedSubscriber};
final readonly class TestPreparationStartedSubscriber implements PreparationStartedSubscriber
diff --git a/tools/phpunit/extension/telemetry/src/Flow/Tool/PHPUnit/Telemetry/Subscriber/TestSkippedSubscriber.php b/src/bridge/phpunit/telemetry/src/Flow/Bridge/PHPUnit/Telemetry/Subscriber/TestSkippedSubscriber.php
similarity index 79%
rename from tools/phpunit/extension/telemetry/src/Flow/Tool/PHPUnit/Telemetry/Subscriber/TestSkippedSubscriber.php
rename to src/bridge/phpunit/telemetry/src/Flow/Bridge/PHPUnit/Telemetry/Subscriber/TestSkippedSubscriber.php
index 5c69e8e74d..8312536c9c 100644
--- a/tools/phpunit/extension/telemetry/src/Flow/Tool/PHPUnit/Telemetry/Subscriber/TestSkippedSubscriber.php
+++ b/src/bridge/phpunit/telemetry/src/Flow/Bridge/PHPUnit/Telemetry/Subscriber/TestSkippedSubscriber.php
@@ -2,9 +2,9 @@
declare(strict_types=1);
-namespace Flow\Tool\PHPUnit\Telemetry\Subscriber;
+namespace Flow\Bridge\PHPUnit\Telemetry\Subscriber;
-use Flow\Tool\PHPUnit\Telemetry\TestStatusRegistry;
+use Flow\Bridge\PHPUnit\Telemetry\TestStatusRegistry;
use PHPUnit\Event\Test\{Skipped, SkippedSubscriber};
final readonly class TestSkippedSubscriber implements SkippedSubscriber
diff --git a/tools/phpunit/extension/telemetry/src/Flow/Tool/PHPUnit/Telemetry/Subscriber/TestSuiteFinishedSubscriber.php b/src/bridge/phpunit/telemetry/src/Flow/Bridge/PHPUnit/Telemetry/Subscriber/TestSuiteFinishedSubscriber.php
similarity index 95%
rename from tools/phpunit/extension/telemetry/src/Flow/Tool/PHPUnit/Telemetry/Subscriber/TestSuiteFinishedSubscriber.php
rename to src/bridge/phpunit/telemetry/src/Flow/Bridge/PHPUnit/Telemetry/Subscriber/TestSuiteFinishedSubscriber.php
index 65b859ec20..10700ae3c1 100644
--- a/tools/phpunit/extension/telemetry/src/Flow/Tool/PHPUnit/Telemetry/Subscriber/TestSuiteFinishedSubscriber.php
+++ b/src/bridge/phpunit/telemetry/src/Flow/Bridge/PHPUnit/Telemetry/Subscriber/TestSuiteFinishedSubscriber.php
@@ -2,11 +2,11 @@
declare(strict_types=1);
-namespace Flow\Tool\PHPUnit\Telemetry\Subscriber;
+namespace Flow\Bridge\PHPUnit\Telemetry\Subscriber;
+use Flow\Bridge\PHPUnit\Telemetry\{Configuration, SpanStack};
use Flow\Telemetry\{PackageVersion, Telemetry};
use Flow\Telemetry\Tracer\SpanStatus;
-use Flow\Tool\PHPUnit\Telemetry\{Configuration, SpanStack};
use PHPUnit\Event\TestSuite\{Finished, FinishedSubscriber};
final readonly class TestSuiteFinishedSubscriber implements FinishedSubscriber
diff --git a/tools/phpunit/extension/telemetry/src/Flow/Tool/PHPUnit/Telemetry/Subscriber/TestSuiteStartedSubscriber.php b/src/bridge/phpunit/telemetry/src/Flow/Bridge/PHPUnit/Telemetry/Subscriber/TestSuiteStartedSubscriber.php
similarity index 93%
rename from tools/phpunit/extension/telemetry/src/Flow/Tool/PHPUnit/Telemetry/Subscriber/TestSuiteStartedSubscriber.php
rename to src/bridge/phpunit/telemetry/src/Flow/Bridge/PHPUnit/Telemetry/Subscriber/TestSuiteStartedSubscriber.php
index d2c4fe867e..8858874ca2 100644
--- a/tools/phpunit/extension/telemetry/src/Flow/Tool/PHPUnit/Telemetry/Subscriber/TestSuiteStartedSubscriber.php
+++ b/src/bridge/phpunit/telemetry/src/Flow/Bridge/PHPUnit/Telemetry/Subscriber/TestSuiteStartedSubscriber.php
@@ -2,10 +2,10 @@
declare(strict_types=1);
-namespace Flow\Tool\PHPUnit\Telemetry\Subscriber;
+namespace Flow\Bridge\PHPUnit\Telemetry\Subscriber;
+use Flow\Bridge\PHPUnit\Telemetry\{Configuration, SpanStack};
use Flow\Telemetry\{PackageVersion, Telemetry};
-use Flow\Tool\PHPUnit\Telemetry\{Configuration, SpanStack};
use PHPUnit\Event\TestSuite\{Started, StartedSubscriber};
final readonly class TestSuiteStartedSubscriber implements StartedSubscriber
diff --git a/tools/phpunit/extension/telemetry/src/Flow/Tool/PHPUnit/Telemetry/TelemetryExtension.php b/src/bridge/phpunit/telemetry/src/Flow/Bridge/PHPUnit/Telemetry/TelemetryExtension.php
similarity index 81%
rename from tools/phpunit/extension/telemetry/src/Flow/Tool/PHPUnit/Telemetry/TelemetryExtension.php
rename to src/bridge/phpunit/telemetry/src/Flow/Bridge/PHPUnit/Telemetry/TelemetryExtension.php
index 3aff51f795..d7ce02dc10 100644
--- a/tools/phpunit/extension/telemetry/src/Flow/Tool/PHPUnit/Telemetry/TelemetryExtension.php
+++ b/src/bridge/phpunit/telemetry/src/Flow/Bridge/PHPUnit/Telemetry/TelemetryExtension.php
@@ -2,9 +2,9 @@
declare(strict_types=1);
-namespace Flow\Tool\PHPUnit\Telemetry;
+namespace Flow\Bridge\PHPUnit\Telemetry;
-use Flow\Tool\PHPUnit\Telemetry\Subscriber\{TestErroredSubscriber, TestFailedSubscriber, TestFinishedSubscriber, TestMarkedIncompleteSubscriber, TestPassedSubscriber, TestPreparationStartedSubscriber, TestSkippedSubscriber, TestSuiteFinishedSubscriber, TestSuiteStartedSubscriber};
+use Flow\Bridge\PHPUnit\Telemetry\Subscriber\{TestErroredSubscriber, TestFailedSubscriber, TestFinishedSubscriber, TestMarkedIncompleteSubscriber, TestPassedSubscriber, TestPreparationStartedSubscriber, TestSkippedSubscriber, TestSuiteFinishedSubscriber, TestSuiteStartedSubscriber};
use PHPUnit\Runner\Extension\{Extension, Facade, ParameterCollection};
use PHPUnit\TextUI\Configuration\Configuration as PHPUnitConfiguration;
diff --git a/tools/phpunit/extension/telemetry/src/Flow/Tool/PHPUnit/Telemetry/TelemetryFactory.php b/src/bridge/phpunit/telemetry/src/Flow/Bridge/PHPUnit/Telemetry/TelemetryFactory.php
similarity index 97%
rename from tools/phpunit/extension/telemetry/src/Flow/Tool/PHPUnit/Telemetry/TelemetryFactory.php
rename to src/bridge/phpunit/telemetry/src/Flow/Bridge/PHPUnit/Telemetry/TelemetryFactory.php
index c217ef7237..28cd370b32 100644
--- a/tools/phpunit/extension/telemetry/src/Flow/Tool/PHPUnit/Telemetry/TelemetryFactory.php
+++ b/src/bridge/phpunit/telemetry/src/Flow/Bridge/PHPUnit/Telemetry/TelemetryFactory.php
@@ -2,7 +2,7 @@
declare(strict_types=1);
-namespace Flow\Tool\PHPUnit\Telemetry;
+namespace Flow\Bridge\PHPUnit\Telemetry;
use function Flow\Bridge\Telemetry\OTLP\DSL\{otlp_curl_transport, otlp_json_serializer, otlp_metric_exporter, otlp_span_exporter};
use function Flow\Telemetry\DSL\{logger_provider, memory_context_storage, meter_provider, pass_through_log_processor, pass_through_metric_processor, pass_through_span_processor, resource, resource_detector, telemetry, tracer_provider, void_log_exporter, void_metric_exporter, void_span_exporter};
diff --git a/tools/phpunit/extension/telemetry/src/Flow/Tool/PHPUnit/Telemetry/TestStatusRegistry.php b/src/bridge/phpunit/telemetry/src/Flow/Bridge/PHPUnit/Telemetry/TestStatusRegistry.php
similarity index 94%
rename from tools/phpunit/extension/telemetry/src/Flow/Tool/PHPUnit/Telemetry/TestStatusRegistry.php
rename to src/bridge/phpunit/telemetry/src/Flow/Bridge/PHPUnit/Telemetry/TestStatusRegistry.php
index 13ef0cbe21..01de3a4691 100644
--- a/tools/phpunit/extension/telemetry/src/Flow/Tool/PHPUnit/Telemetry/TestStatusRegistry.php
+++ b/src/bridge/phpunit/telemetry/src/Flow/Bridge/PHPUnit/Telemetry/TestStatusRegistry.php
@@ -2,7 +2,7 @@
declare(strict_types=1);
-namespace Flow\Tool\PHPUnit\Telemetry;
+namespace Flow\Bridge\PHPUnit\Telemetry;
final class TestStatusRegistry
{
diff --git a/tools/phpunit/extension/telemetry/tests/Flow/Tool/PHPUnit/Telemetry/Tests/Mother/ConfigurationMother.php b/src/bridge/phpunit/telemetry/tests/Flow/Bridge/PHPUnit/Telemetry/Tests/Mother/ConfigurationMother.php
similarity index 96%
rename from tools/phpunit/extension/telemetry/tests/Flow/Tool/PHPUnit/Telemetry/Tests/Mother/ConfigurationMother.php
rename to src/bridge/phpunit/telemetry/tests/Flow/Bridge/PHPUnit/Telemetry/Tests/Mother/ConfigurationMother.php
index e0d9c9247f..9e6f6ce2de 100644
--- a/tools/phpunit/extension/telemetry/tests/Flow/Tool/PHPUnit/Telemetry/Tests/Mother/ConfigurationMother.php
+++ b/src/bridge/phpunit/telemetry/tests/Flow/Bridge/PHPUnit/Telemetry/Tests/Mother/ConfigurationMother.php
@@ -2,9 +2,9 @@
declare(strict_types=1);
-namespace Flow\Tool\PHPUnit\Telemetry\Tests\Mother;
+namespace Flow\Bridge\PHPUnit\Telemetry\Tests\Mother;
-use Flow\Tool\PHPUnit\Telemetry\Configuration;
+use Flow\Bridge\PHPUnit\Telemetry\Configuration;
final class ConfigurationMother
{
diff --git a/src/bridge/phpunit/telemetry/tests/Flow/Bridge/PHPUnit/Telemetry/Tests/Mother/TelemetryMother.php b/src/bridge/phpunit/telemetry/tests/Flow/Bridge/PHPUnit/Telemetry/Tests/Mother/TelemetryMother.php
new file mode 100644
index 0000000000..78c448eec5
--- /dev/null
+++ b/src/bridge/phpunit/telemetry/tests/Flow/Bridge/PHPUnit/Telemetry/Tests/Mother/TelemetryMother.php
@@ -0,0 +1,44 @@
+createSpan('span-1');
- $span2 = $this->createSpan('span-2');
- $suiteSpan = $this->createSpan('suite-span');
+ $span1 = SpanMother::create('span-1');
+ $span2 = SpanMother::create('span-2');
+ $suiteSpan = SpanMother::create('suite-span');
$stack->push($span1);
$stack->push($span2);
@@ -32,7 +30,7 @@ public function test_clear_removes_all_spans() : void
public function test_current_returns_top_without_removing() : void
{
$stack = new SpanStack();
- $span = $this->createSpan('test-span');
+ $span = SpanMother::create('test-span');
$stack->push($span);
@@ -44,9 +42,9 @@ public function test_current_returns_top_without_removing() : void
public function test_lifo_order() : void
{
$stack = new SpanStack();
- $span1 = $this->createSpan('span-1');
- $span2 = $this->createSpan('span-2');
- $span3 = $this->createSpan('span-3');
+ $span1 = SpanMother::create('span-1');
+ $span2 = SpanMother::create('span-2');
+ $span3 = SpanMother::create('span-3');
$stack->push($span1);
$stack->push($span2);
@@ -61,7 +59,7 @@ public function test_lifo_order() : void
public function test_push_and_pop() : void
{
$stack = new SpanStack();
- $span = $this->createSpan('test-span');
+ $span = SpanMother::create('test-span');
$stack->push($span);
@@ -74,7 +72,7 @@ public function test_push_and_pop() : void
public function test_remove_suite_span() : void
{
$stack = new SpanStack();
- $span = $this->createSpan('suite-span');
+ $span = SpanMother::create('suite-span');
$stack->setSuiteSpan('TestSuite', $span);
$stack->removeSuiteSpan('TestSuite');
@@ -85,7 +83,7 @@ public function test_remove_suite_span() : void
public function test_set_and_get_suite_span() : void
{
$stack = new SpanStack();
- $span = $this->createSpan('suite-span');
+ $span = SpanMother::create('suite-span');
$stack->setSuiteSpan('TestSuite', $span);
@@ -101,16 +99,4 @@ public function test_starts_empty() : void
self::assertNull($stack->current());
self::assertNull($stack->pop());
}
-
- private function createSpan(string $name) : Span
- {
- return new Span(
- $name,
- SpanContext::create(trace_id(), span_id()),
- SpanKind::INTERNAL,
- new \DateTimeImmutable(),
- Resource::create([]),
- new InstrumentationScope('test', '1.0.0'),
- );
- }
}
diff --git a/tools/phpunit/extension/telemetry/tests/Flow/Tool/PHPUnit/Telemetry/Tests/Unit/Subscriber/TestFinishedSubscriberTest.php b/src/bridge/phpunit/telemetry/tests/Flow/Bridge/PHPUnit/Telemetry/Tests/Unit/Subscriber/TestFinishedSubscriberTest.php
similarity index 79%
rename from tools/phpunit/extension/telemetry/tests/Flow/Tool/PHPUnit/Telemetry/Tests/Unit/Subscriber/TestFinishedSubscriberTest.php
rename to src/bridge/phpunit/telemetry/tests/Flow/Bridge/PHPUnit/Telemetry/Tests/Unit/Subscriber/TestFinishedSubscriberTest.php
index c22d55787a..4ebf023b95 100644
--- a/tools/phpunit/extension/telemetry/tests/Flow/Tool/PHPUnit/Telemetry/Tests/Unit/Subscriber/TestFinishedSubscriberTest.php
+++ b/src/bridge/phpunit/telemetry/tests/Flow/Bridge/PHPUnit/Telemetry/Tests/Unit/Subscriber/TestFinishedSubscriberTest.php
@@ -2,21 +2,21 @@
declare(strict_types=1);
-namespace Flow\Tool\PHPUnit\Telemetry\Tests\Unit\Subscriber;
+namespace Flow\Bridge\PHPUnit\Telemetry\Tests\Unit\Subscriber;
-use Flow\Telemetry\Provider\Memory\MemorySpanProcessor;
-use Flow\Telemetry\Provider\Void\VoidSpanExporter;
+use function Flow\Telemetry\DSL\{memory_span_processor, void_span_exporter};
+
+use Flow\Bridge\PHPUnit\Telemetry\{SpanStack, TestStatusRegistry};
+use Flow\Bridge\PHPUnit\Telemetry\Subscriber\TestFinishedSubscriber;
+use Flow\Bridge\PHPUnit\Telemetry\Tests\Mother\{ConfigurationMother, TelemetryMother, TestEventMother};
use Flow\Telemetry\Tests\Mother\SpanMother;
-use Flow\Tool\PHPUnit\Telemetry\{SpanStack, TestStatusRegistry};
-use Flow\Tool\PHPUnit\Telemetry\Subscriber\TestFinishedSubscriber;
-use Flow\Tool\PHPUnit\Telemetry\Tests\Mother\{ConfigurationMother, TelemetryMother, TestEventMother};
use PHPUnit\Framework\TestCase;
final class TestFinishedSubscriberTest extends TestCase
{
public function test_clears_status_registry_when_emit_test_spans_is_disabled() : void
{
- $spanProcessor = new MemorySpanProcessor(new VoidSpanExporter());
+ $spanProcessor = memory_span_processor(void_span_exporter());
$telemetry = TelemetryMother::withSpanProcessor($spanProcessor);
$spanStack = new SpanStack();
$config = ConfigurationMother::withDisabledTestSpans();
@@ -33,7 +33,7 @@ public function test_clears_status_registry_when_emit_test_spans_is_disabled() :
public function test_does_not_pop_span_when_emit_test_spans_is_disabled() : void
{
- $spanProcessor = new MemorySpanProcessor(new VoidSpanExporter());
+ $spanProcessor = memory_span_processor(void_span_exporter());
$telemetry = TelemetryMother::withSpanProcessor($spanProcessor);
$spanStack = new SpanStack();
$config = ConfigurationMother::withDisabledTestSpans();
@@ -54,7 +54,7 @@ public function test_does_not_pop_span_when_emit_test_spans_is_disabled() : void
public function test_pops_span_when_emit_test_spans_is_enabled() : void
{
- $spanProcessor = new MemorySpanProcessor(new VoidSpanExporter());
+ $spanProcessor = memory_span_processor(void_span_exporter());
$telemetry = TelemetryMother::withSpanProcessor($spanProcessor);
$spanStack = new SpanStack();
$config = ConfigurationMother::default();
diff --git a/tools/phpunit/extension/telemetry/tests/Flow/Tool/PHPUnit/Telemetry/Tests/Unit/Subscriber/TestPreparationStartedSubscriberTest.php b/src/bridge/phpunit/telemetry/tests/Flow/Bridge/PHPUnit/Telemetry/Tests/Unit/Subscriber/TestPreparationStartedSubscriberTest.php
similarity index 69%
rename from tools/phpunit/extension/telemetry/tests/Flow/Tool/PHPUnit/Telemetry/Tests/Unit/Subscriber/TestPreparationStartedSubscriberTest.php
rename to src/bridge/phpunit/telemetry/tests/Flow/Bridge/PHPUnit/Telemetry/Tests/Unit/Subscriber/TestPreparationStartedSubscriberTest.php
index 1787124374..2f877b34a8 100644
--- a/tools/phpunit/extension/telemetry/tests/Flow/Tool/PHPUnit/Telemetry/Tests/Unit/Subscriber/TestPreparationStartedSubscriberTest.php
+++ b/src/bridge/phpunit/telemetry/tests/Flow/Bridge/PHPUnit/Telemetry/Tests/Unit/Subscriber/TestPreparationStartedSubscriberTest.php
@@ -2,20 +2,20 @@
declare(strict_types=1);
-namespace Flow\Tool\PHPUnit\Telemetry\Tests\Unit\Subscriber;
+namespace Flow\Bridge\PHPUnit\Telemetry\Tests\Unit\Subscriber;
-use Flow\Telemetry\Provider\Memory\MemorySpanProcessor;
-use Flow\Telemetry\Provider\Void\VoidSpanExporter;
-use Flow\Tool\PHPUnit\Telemetry\SpanStack;
-use Flow\Tool\PHPUnit\Telemetry\Subscriber\TestPreparationStartedSubscriber;
-use Flow\Tool\PHPUnit\Telemetry\Tests\Mother\{ConfigurationMother, TelemetryMother, TestEventMother};
+use function Flow\Telemetry\DSL\{memory_span_processor, void_span_exporter};
+
+use Flow\Bridge\PHPUnit\Telemetry\SpanStack;
+use Flow\Bridge\PHPUnit\Telemetry\Subscriber\TestPreparationStartedSubscriber;
+use Flow\Bridge\PHPUnit\Telemetry\Tests\Mother\{ConfigurationMother, TelemetryMother, TestEventMother};
use PHPUnit\Framework\TestCase;
final class TestPreparationStartedSubscriberTest extends TestCase
{
public function test_creates_span_when_emit_test_spans_is_enabled() : void
{
- $spanProcessor = new MemorySpanProcessor(new VoidSpanExporter());
+ $spanProcessor = memory_span_processor(void_span_exporter());
$telemetry = TelemetryMother::withSpanProcessor($spanProcessor);
$spanStack = new SpanStack();
$config = ConfigurationMother::default();
@@ -29,7 +29,7 @@ public function test_creates_span_when_emit_test_spans_is_enabled() : void
public function test_does_not_create_span_when_emit_test_spans_is_disabled() : void
{
- $spanProcessor = new MemorySpanProcessor(new VoidSpanExporter());
+ $spanProcessor = memory_span_processor(void_span_exporter());
$telemetry = TelemetryMother::withSpanProcessor($spanProcessor);
$spanStack = new SpanStack();
$config = ConfigurationMother::withDisabledTestSpans();
diff --git a/tools/phpunit/extension/telemetry/README.md b/tools/phpunit/extension/telemetry/README.md
deleted file mode 100644
index 6e65f975e2..0000000000
--- a/tools/phpunit/extension/telemetry/README.md
+++ /dev/null
@@ -1,98 +0,0 @@
-# PHPUnit Telemetry Extension
-
-A PHPUnit extension that exports test telemetry to an OpenTelemetry collector using Flow PHP's telemetry library.
-
-## Installation
-
-This extension is part of the Flow PHP monorepo and is automatically available when using the main `flow-php/flow`
-package.
-
-## Configuration
-
-Add the extension to your `phpunit.xml`:
-
-```xml
-
-
-
-
-
-
-
-
-
-
-```
-
-### Configuration Parameters
-
-| Parameter | Type | Default | Description |
-|------------------------|--------|-------------------------|----------------------------------------------------|
-| `service_name` | string | `phpunit` | Service name for telemetry resource |
-| `otel_collector_url` | string | `http://localhost:4318` | OTEL collector HTTP endpoint |
-| `emit_traces` | bool | `true` | Enable span export |
-| `emit_metrics` | bool | `true` | Enable metric export |
-| `emit_test_spans` | bool | `true` | Emit spans for individual test methods |
-| `emit_test_case_spans` | bool | `true` | Emit spans for test cases (classes) |
-
-### Reducing Telemetry Volume
-
-For large test suites, you may want to reduce telemetry volume by disabling granular spans:
-
-```xml
-
-
-
-
-
-
-
-
-```
-
-**Span hierarchy and what each option controls:**
-
-```
-Test Suite Run (root span) <- Always emitted
- └── etl-unit (named testsuite) <- Always emitted (from phpunit.xml testsuites)
- └── DateIntervalFunctionsTest <- Controlled by emit_test_case_spans
- └── test_example <- Controlled by emit_test_spans
-```
-
-## Telemetry Data
-
-### Spans
-
-The extension creates a hierarchical span structure:
-
-```
-Test Suite Run (root span)
- └── Test Suite / Class (span)
- └── Test Method (span)
-```
-
-#### Test Method Span Attributes
-
-| Attribute | Description |
-|---------------------|--------------------------------------------------|
-| `test.class` | Fully qualified class name |
-| `test.method` | Method name |
-| `test.status` | passed / failed / errored / skipped / incomplete |
-| `test.duration_ms` | Execution time in milliseconds |
-| `test.suite` | Suite name |
-| `exception.message` | Error message (if failed/errored) |
-
-### Metrics
-
-| Metric | Type | Labels |
-|----------------------------|----------------|---------------|
-| `phpunit.test.duration` | histogram (ms) | `test.status` |
-| `phpunit.test.count` | counter | `test.status` |
-| `phpunit.suite.duration` | histogram (ms) | `test.suite` |
-| `phpunit.suite.test_count` | counter | `test.suite` |
-
-## Error Handling
-
-The extension is designed to never break your tests. All telemetry operations are wrapped in try-catch blocks with
-silent failure. If telemetry fails for any reason (network issues, configuration errors, etc.), your tests will continue
-to run normally.
diff --git a/tools/phpunit/extension/telemetry/tests/Flow/Tool/PHPUnit/Telemetry/Tests/Mother/TelemetryMother.php b/tools/phpunit/extension/telemetry/tests/Flow/Tool/PHPUnit/Telemetry/Tests/Mother/TelemetryMother.php
deleted file mode 100644
index ef6c6bf440..0000000000
--- a/tools/phpunit/extension/telemetry/tests/Flow/Tool/PHPUnit/Telemetry/Tests/Mother/TelemetryMother.php
+++ /dev/null
@@ -1,47 +0,0 @@
-
OpenApi Specification
+
+ PHPUnit Telemetry
+
Telemetry OTLP