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 + + ./../web/landing/build/documentation/api/bridge/phpunit/telemetry + ./../var/phpdocumentor/cache/bridge/phpunit/telemetry + + + + + src/bridge/phpunit/telemetry/src + + telemetry + 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