Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add infection test tool #1306

Merged
merged 4 commits into from
May 15, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
2 changes: 2 additions & 0 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,8 @@ psalm-info: ## Run psalm and show info
$(DC_RUN_PHP) env XDEBUG_MODE=off vendor-bin/psalm/vendor/bin/psalm --show-info=true --threads=1
phpstan: ## Run phpstan
$(DC_RUN_PHP) env XDEBUG_MODE=off vendor/bin/phpstan analyse --memory-limit=256M
infection: ## Run infection (mutation testing)
$(DC_RUN_PHP) env XDEBUG_MODE=coverage php -d memory_limit=1024M vendor-bin/infection/vendor/bin/infection --threads=max
packages-composer: ## Validate composer packages
$(DC_RUN_PHP) env XDEBUG_MODE=off vendor/bin/otel packages:composer:validate
benchmark: ## Run phpbench
Expand Down
19 changes: 19 additions & 0 deletions infection.json5
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
{
"$schema": "https://raw.githubusercontent.com/infection/infection/0.28.1/resources/schema.json",
"source": {
"directories": [
"src"
],
"excludes": [
"Composer"
]
},
"logs": {
"text": "var/infection/infection.log",
"html": "var/infection/infection.html",
},
"timeout": 1,
"mutators": {
"@default": true
}
}
1 change: 1 addition & 0 deletions phpunit.xml.dist
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
bootstrap="./tests/bootstrap.php"
cacheResult="false"
colors="false"
executionOrder="random"
processIsolation="false"
stopOnError="false"
stopOnFailure="false"
Expand Down
6 changes: 6 additions & 0 deletions src/API/Behavior/Internal/Logging.php
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
namespace OpenTelemetry\API\Behavior\Internal;

use OpenTelemetry\API\Behavior\Internal\LogWriter\LogWriterInterface;
use OpenTelemetry\API\Behavior\Internal\LogWriter\NoopLogWriter;
use Psr\Log\LogLevel;

/**
Expand Down Expand Up @@ -87,4 +88,9 @@ public static function reset(): void
self::$logLevel = null;
self::$writer = null;
}

public static function disable(): void
{
self::$writer = new NoopLogWriter();
}
}
4 changes: 4 additions & 0 deletions src/API/LoggerHolder.php
Original file line number Diff line number Diff line change
Expand Up @@ -38,13 +38,17 @@ public static function isSet(): bool
return null !== self::$logger;
}

/**
* @internal
*/
public static function unset(): void
{
self::$logger = null;
}

/**
* Disable psr-3 logging
* @internal
*/
public static function disable(): void
{
Expand Down
5 changes: 5 additions & 0 deletions tests/Unit/API/Behavior/Internal/LogWriterFactoryTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,11 @@ class LogWriterFactoryTest extends TestCase
{
use EnvironmentVariables;

public function setUp(): void
{
LoggerHolder::unset();
}

public function tearDown(): void
{
self::restoreEnvironmentVariables();
Expand Down
1 change: 1 addition & 0 deletions tests/Unit/API/Behavior/LogsMessagesTraitTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ class LogsMessagesTraitTest extends TestCase

public function setUp(): void
{
Logging::reset();
$this->writer = $this->createMock(LogWriterInterface::class);
Logging::setLogWriter($this->writer);
}
Expand Down
10 changes: 10 additions & 0 deletions tests/Unit/API/Common/Time/ClockTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,16 @@
*/
class ClockTest extends TestCase
{
public function setUp(): void
{
Clock::reset();
}

public function tearDown(): void
{
Clock::reset();
}

public function test_default_is_system_clock(): void
{
$this->assertInstanceOf(SystemClock::class, Clock::getDefault());
Expand Down
5 changes: 5 additions & 0 deletions tests/Unit/API/Instrumentation/InstrumentationTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,11 @@
*/
final class InstrumentationTest extends TestCase
{
public function setUp(): void
{
Globals::reset();
}

public function tearDown(): void
{
Globals::reset();
Expand Down
5 changes: 5 additions & 0 deletions tests/Unit/API/LoggerHolderTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,11 @@ public function tearDown(): void
LoggerHolder::unset();
}

public function setUp(): void
{
LoggerHolder::unset();
}

public function test_constructor(): void
{
$logger = $this->createMock(LoggerInterface::class);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@

namespace OpenTelemetry\Tests\Unit\API\Trace\Propagation;

use OpenTelemetry\API\LoggerHolder;
use OpenTelemetry\API\Behavior\Internal\Logging;
use OpenTelemetry\API\Trace\Propagation\TraceContextPropagator;
use OpenTelemetry\API\Trace\SpanContext;
use OpenTelemetry\API\Trace\SpanContextInterface;
Expand All @@ -16,7 +16,6 @@
use OpenTelemetry\Context\ContextInterface;
use OpenTelemetry\SDK\Trace\Span;
use PHPUnit\Framework\TestCase;
use Psr\Log\NullLogger;

/**
* @covers \OpenTelemetry\API\Trace\Propagation\TraceContextPropagator
Expand All @@ -35,7 +34,7 @@ class TraceContextPropagatorTest extends TestCase

protected function setUp(): void
{
LoggerHolder::set(new NullLogger());
Logging::disable();
$this->traceContextPropagator = TraceContextPropagator::getInstance();
$this->traceState = (new TraceState())->with('bar', 'baz')->with('foo', 'bar');
}
Expand Down
2 changes: 2 additions & 0 deletions tests/Unit/Contrib/Otlp/LogsExporterTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@

namespace OpenTelemetry\Tests\Unit\Contrib\Otlp;

use OpenTelemetry\API\Behavior\Internal\Logging;
use OpenTelemetry\Contrib\Otlp\LogsExporter;
use OpenTelemetry\SDK\Common\Export\TransportInterface;
use OpenTelemetry\SDK\Common\Future\CompletedFuture;
Expand All @@ -24,6 +25,7 @@ public function setUp(): void
$this->transport = $this->createMock(TransportInterface::class);
$this->transport->method('contentType')->willReturn('application/x-protobuf');
$this->exporter = new LogsExporter($this->transport);
Logging::disable();
}

public function test_export_with_transport_failure(): void
Expand Down
2 changes: 2 additions & 0 deletions tests/Unit/Contrib/Otlp/SpanExporterTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
namespace OpenTelemetry\Tests\Unit\Contrib\Otlp;

use function fseek;
use OpenTelemetry\API\Behavior\Internal\Logging;
use OpenTelemetry\API\Trace\SpanContext;
use OpenTelemetry\Contrib\Otlp\SpanExporter;
use OpenTelemetry\SDK\Common\Export\Stream\StreamTransport;
Expand All @@ -26,6 +27,7 @@ class SpanExporterTest extends TestCase

public function setUp(): void
{
Logging::disable();
$this->transport = $this->createMock(TransportInterface::class);
$this->transport->method('contentType')->willReturn('application/x-protobuf');
$this->exporter = new SpanExporter($this->transport);
Expand Down
5 changes: 2 additions & 3 deletions tests/Unit/SDK/Metrics/MeterProviderFactoryTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -5,13 +5,12 @@
namespace OpenTelemetry\Tests\Unit\SDK\Metrics;

use AssertWell\PHPUnitGlobalState\EnvironmentVariables;
use OpenTelemetry\API\LoggerHolder;
use OpenTelemetry\API\Behavior\Internal\Logging;
use OpenTelemetry\API\Metrics\MeterInterface;
use OpenTelemetry\SDK\Common\Configuration\KnownValues;
use OpenTelemetry\SDK\Common\Configuration\Variables;
use OpenTelemetry\SDK\Metrics\MeterProviderFactory;
use PHPUnit\Framework\TestCase;
use Psr\Log\NullLogger;

/**
* @covers \OpenTelemetry\SDK\Metrics\MeterProviderFactory
Expand All @@ -22,7 +21,7 @@ class MeterProviderFactoryTest extends TestCase

public function setUp(): void
{
LoggerHolder::set(new NullLogger());
Logging::disable();
}

public function tearDown(): void
Expand Down
6 changes: 6 additions & 0 deletions tests/Unit/SDK/Metrics/Stream/MetricStreamTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@

use function current;
use function extension_loaded;
use OpenTelemetry\API\Behavior\Internal\Logging;
use OpenTelemetry\Context\Context;
use OpenTelemetry\SDK\Common\Attribute\Attributes;
use OpenTelemetry\SDK\Metrics\Aggregation\SumAggregation;
Expand Down Expand Up @@ -44,6 +45,11 @@
*/
final class MetricStreamTest extends TestCase
{
public function setUp(): void
{
Logging::disable();
}

public function test_asynchronous_single_data_point(): void
{
$s = new AsynchronousMetricStream(new SumAggregation(), 3);
Expand Down
5 changes: 3 additions & 2 deletions tests/Unit/SDK/Propagation/PropagatorFactoryTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@

use AssertWell\PHPUnitGlobalState\EnvironmentVariables;
use OpenTelemetry\API\Baggage\Propagation\BaggagePropagator;
use OpenTelemetry\API\Behavior\Internal\Logging;
use OpenTelemetry\API\LoggerHolder;
use OpenTelemetry\API\Trace\Propagation\TraceContextPropagator;
use OpenTelemetry\Context\Propagation\MultiTextMapPropagator;
Expand All @@ -18,7 +19,6 @@
use OpenTelemetry\SDK\Common\Configuration\Variables;
use OpenTelemetry\SDK\Propagation\PropagatorFactory;
use PHPUnit\Framework\TestCase;
use Psr\Log\NullLogger;

/**
* @covers \OpenTelemetry\SDK\Propagation\PropagatorFactory
Expand All @@ -29,7 +29,8 @@ class PropagatorFactoryTest extends TestCase

public function setUp(): void
{
LoggerHolder::set(new NullLogger());
LoggerHolder::disable();
Logging::disable();
}

public function tearDown(): void
Expand Down
5 changes: 2 additions & 3 deletions tests/Unit/SDK/Resource/ResourceInfoTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -7,14 +7,13 @@
use AssertWell\PHPUnitGlobalState\EnvironmentVariables;
use Composer\InstalledVersions;
use Generator;
use OpenTelemetry\API\LoggerHolder;
use OpenTelemetry\API\Behavior\Internal\Logging;
use OpenTelemetry\SDK\Common\Attribute\Attributes;
use OpenTelemetry\SDK\Resource\Detectors;
use OpenTelemetry\SDK\Resource\ResourceInfo;
use OpenTelemetry\SDK\Resource\ResourceInfoFactory;
use OpenTelemetry\SemConv\ResourceAttributes;
use PHPUnit\Framework\TestCase;
use Psr\Log\NullLogger;

/**
* @covers \OpenTelemetry\SDK\Resource\ResourceInfo
Expand All @@ -25,7 +24,7 @@ class ResourceInfoTest extends TestCase

public function setUp(): void
{
LoggerHolder::set(new NullLogger());
Logging::disable();
}

public function tearDown(): void
Expand Down
5 changes: 2 additions & 3 deletions tests/Unit/SDK/SdkAutoloaderTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@
namespace OpenTelemetry\Tests\Unit\SDK;

use AssertWell\PHPUnitGlobalState\EnvironmentVariables;
use OpenTelemetry\API\Behavior\Internal\Logging;
use OpenTelemetry\API\Globals;
use OpenTelemetry\API\LoggerHolder;
use OpenTelemetry\API\Logs\NoopEventLoggerProvider;
use OpenTelemetry\API\Logs\NoopLoggerProvider;
use OpenTelemetry\API\Metrics\Noop\NoopMeterProvider;
Expand All @@ -15,7 +15,6 @@
use OpenTelemetry\SDK\Common\Configuration\Variables;
use OpenTelemetry\SDK\SdkAutoloader;
use PHPUnit\Framework\TestCase;
use Psr\Log\NullLogger;

/**
* @covers \OpenTelemetry\SDK\SdkAutoloader
Expand All @@ -26,7 +25,7 @@ class SdkAutoloaderTest extends TestCase

public function setUp(): void
{
LoggerHolder::set(new NullLogger());
Logging::disable();
Globals::reset();
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,14 +6,13 @@

use Mockery;
use Mockery\Adapter\Phpunit\MockeryTestCase;
use OpenTelemetry\API\LoggerHolder;
use OpenTelemetry\API\Behavior\Internal\Logging;
use OpenTelemetry\SDK\Common\Export\TransportInterface;
use OpenTelemetry\SDK\Common\Future\CompletedFuture;
use OpenTelemetry\SDK\Common\Future\ErrorFuture;
use OpenTelemetry\SDK\Common\Future\FutureInterface;
use OpenTelemetry\SDK\Trace\SpanExporterInterface;
use OpenTelemetry\Tests\Unit\SDK\Util\SpanData;
use Psr\Log\NullLogger;

/**
* @psalm-suppress UndefinedInterfaceMethod
Expand All @@ -25,7 +24,7 @@ abstract class AbstractExporterTestCase extends MockeryTestCase

public function setUp(): void
{
LoggerHolder::set(new NullLogger());
Logging::disable();
$this->future = Mockery::mock(FutureInterface::class);
$this->future->allows([
'map' => $this->future,
Expand Down
10 changes: 10 additions & 0 deletions vendor-bin/infection/composer.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
{
"require-dev": {
"infection/infection": "^0.28.1"
},
"config": {
"allow-plugins": {
"infection/extension-installer": true
}
}
}