1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89
|
<?php declare(strict_types=1);
/*
* This file is part of PHPUnit.
*
* (c) Sebastian Bergmann <sebastian@phpunit.de>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace PHPUnit\Event\Telemetry;
use function hrtime;
use PHPUnit\Framework\Attributes\CoversClass;
use PHPUnit\Framework\Attributes\Small;
use PHPUnit\Framework\TestCase;
#[CoversClass(System::class)]
#[Small]
final class SystemTest extends TestCase
{
public function testSnapshotReturnsSnapshot(): void
{
$time = HRTime::fromSecondsAndNanoseconds(...hrtime(false));
$clock = new class($time) implements StopWatch
{
private readonly HRTime $time;
public function __construct(HRTime $time)
{
$this->time = $time;
}
public function current(): HRTime
{
return $this->time;
}
};
$memoryUsage = MemoryUsage::fromBytes(2000);
$peakMemoryUsage = MemoryUsage::fromBytes(3000);
$memoryMeter = new class($memoryUsage, $peakMemoryUsage) implements MemoryMeter
{
private readonly MemoryUsage $memoryUsage;
private readonly MemoryUsage $peakMemoryUsage;
public function __construct(MemoryUsage $memoryUsage, MemoryUsage $peakMemoryUsage)
{
$this->memoryUsage = $memoryUsage;
$this->peakMemoryUsage = $peakMemoryUsage;
}
public function memoryUsage(): MemoryUsage
{
return $this->memoryUsage;
}
public function peakMemoryUsage(): MemoryUsage
{
return $this->peakMemoryUsage;
}
};
$garbageCollectorStatus = new GarbageCollectorStatus(0, 0, 0, 0, 0.0, 0.0, 0.0, 0.0, false, false, false, 0);
$garbageCollectorProvider = new class($garbageCollectorStatus) implements GarbageCollectorStatusProvider
{
private readonly GarbageCollectorStatus $status;
public function __construct(GarbageCollectorStatus $status)
{
$this->status = $status;
}
public function status(): GarbageCollectorStatus
{
return $this->status;
}
};
$snapshot = (new System($clock, $memoryMeter, $garbageCollectorProvider))->snapshot();
$this->assertSame($time, $snapshot->time());
$this->assertSame($memoryUsage, $snapshot->memoryUsage());
$this->assertSame($peakMemoryUsage, $snapshot->peakMemoryUsage());
$this->assertSame($garbageCollectorStatus, $snapshot->garbageCollectorStatus());
}
}
|