the middle of the idiots
This commit is contained in:
		
							
								
								
									
										90
									
								
								qwen/php/vendor/phpunit/php-timer/src/Duration.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										90
									
								
								qwen/php/vendor/phpunit/php-timer/src/Duration.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,90 @@
 | 
			
		||||
<?php declare(strict_types=1);
 | 
			
		||||
/*
 | 
			
		||||
 * This file is part of phpunit/php-timer.
 | 
			
		||||
 *
 | 
			
		||||
 * (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 SebastianBergmann\Timer;
 | 
			
		||||
 | 
			
		||||
use function floor;
 | 
			
		||||
use function sprintf;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * @psalm-immutable
 | 
			
		||||
 */
 | 
			
		||||
final class Duration
 | 
			
		||||
{
 | 
			
		||||
    private readonly float $nanoseconds;
 | 
			
		||||
    private readonly int $hours;
 | 
			
		||||
    private readonly int $minutes;
 | 
			
		||||
    private readonly int $seconds;
 | 
			
		||||
    private readonly int $milliseconds;
 | 
			
		||||
 | 
			
		||||
    public static function fromMicroseconds(float $microseconds): self
 | 
			
		||||
    {
 | 
			
		||||
        return new self($microseconds * 1000);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public static function fromNanoseconds(float $nanoseconds): self
 | 
			
		||||
    {
 | 
			
		||||
        return new self($nanoseconds);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private function __construct(float $nanoseconds)
 | 
			
		||||
    {
 | 
			
		||||
        $this->nanoseconds     = $nanoseconds;
 | 
			
		||||
        $timeInMilliseconds    = $nanoseconds / 1000000;
 | 
			
		||||
        $hours                 = floor($timeInMilliseconds / 60 / 60 / 1000);
 | 
			
		||||
        $hoursInMilliseconds   = $hours * 60 * 60 * 1000;
 | 
			
		||||
        $minutes               = floor($timeInMilliseconds / 60 / 1000) % 60;
 | 
			
		||||
        $minutesInMilliseconds = $minutes * 60 * 1000;
 | 
			
		||||
        $seconds               = floor(($timeInMilliseconds - $hoursInMilliseconds - $minutesInMilliseconds) / 1000);
 | 
			
		||||
        $secondsInMilliseconds = $seconds * 1000;
 | 
			
		||||
        $milliseconds          = $timeInMilliseconds - $hoursInMilliseconds - $minutesInMilliseconds - $secondsInMilliseconds;
 | 
			
		||||
        $this->hours           = (int) $hours;
 | 
			
		||||
        $this->minutes         = $minutes;
 | 
			
		||||
        $this->seconds         = (int) $seconds;
 | 
			
		||||
        $this->milliseconds    = (int) $milliseconds;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function asNanoseconds(): float
 | 
			
		||||
    {
 | 
			
		||||
        return $this->nanoseconds;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function asMicroseconds(): float
 | 
			
		||||
    {
 | 
			
		||||
        return $this->nanoseconds / 1000;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function asMilliseconds(): float
 | 
			
		||||
    {
 | 
			
		||||
        return $this->nanoseconds / 1000000;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function asSeconds(): float
 | 
			
		||||
    {
 | 
			
		||||
        return $this->nanoseconds / 1000000000;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function asString(): string
 | 
			
		||||
    {
 | 
			
		||||
        $result = '';
 | 
			
		||||
 | 
			
		||||
        if ($this->hours > 0) {
 | 
			
		||||
            $result = sprintf('%02d', $this->hours) . ':';
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        $result .= sprintf('%02d', $this->minutes) . ':';
 | 
			
		||||
        $result .= sprintf('%02d', $this->seconds);
 | 
			
		||||
 | 
			
		||||
        if ($this->milliseconds > 0) {
 | 
			
		||||
            $result .= '.' . sprintf('%03d', $this->milliseconds);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        return $result;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										73
									
								
								qwen/php/vendor/phpunit/php-timer/src/ResourceUsageFormatter.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										73
									
								
								qwen/php/vendor/phpunit/php-timer/src/ResourceUsageFormatter.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,73 @@
 | 
			
		||||
<?php declare(strict_types=1);
 | 
			
		||||
/*
 | 
			
		||||
 * This file is part of phpunit/php-timer.
 | 
			
		||||
 *
 | 
			
		||||
 * (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 SebastianBergmann\Timer;
 | 
			
		||||
 | 
			
		||||
use function is_float;
 | 
			
		||||
use function memory_get_peak_usage;
 | 
			
		||||
use function microtime;
 | 
			
		||||
use function sprintf;
 | 
			
		||||
 | 
			
		||||
final class ResourceUsageFormatter
 | 
			
		||||
{
 | 
			
		||||
    /**
 | 
			
		||||
     * @psalm-var array<string,int>
 | 
			
		||||
     */
 | 
			
		||||
    private const SIZES = [
 | 
			
		||||
        'GB' => 1073741824,
 | 
			
		||||
        'MB' => 1048576,
 | 
			
		||||
        'KB' => 1024,
 | 
			
		||||
    ];
 | 
			
		||||
 | 
			
		||||
    public function resourceUsage(Duration $duration): string
 | 
			
		||||
    {
 | 
			
		||||
        return sprintf(
 | 
			
		||||
            'Time: %s, Memory: %s',
 | 
			
		||||
            $duration->asString(),
 | 
			
		||||
            $this->bytesToString(memory_get_peak_usage(true))
 | 
			
		||||
        );
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @throws TimeSinceStartOfRequestNotAvailableException
 | 
			
		||||
     */
 | 
			
		||||
    public function resourceUsageSinceStartOfRequest(): string
 | 
			
		||||
    {
 | 
			
		||||
        if (!isset($_SERVER['REQUEST_TIME_FLOAT'])) {
 | 
			
		||||
            throw new TimeSinceStartOfRequestNotAvailableException(
 | 
			
		||||
                'Cannot determine time at which the request started because $_SERVER[\'REQUEST_TIME_FLOAT\'] is not available'
 | 
			
		||||
            );
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        if (!is_float($_SERVER['REQUEST_TIME_FLOAT'])) {
 | 
			
		||||
            throw new TimeSinceStartOfRequestNotAvailableException(
 | 
			
		||||
                'Cannot determine time at which the request started because $_SERVER[\'REQUEST_TIME_FLOAT\'] is not of type float'
 | 
			
		||||
            );
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        return $this->resourceUsage(
 | 
			
		||||
            Duration::fromMicroseconds(
 | 
			
		||||
                (1000000 * (microtime(true) - $_SERVER['REQUEST_TIME_FLOAT']))
 | 
			
		||||
            )
 | 
			
		||||
        );
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private function bytesToString(int $bytes): string
 | 
			
		||||
    {
 | 
			
		||||
        foreach (self::SIZES as $unit => $value) {
 | 
			
		||||
            if ($bytes >= $value) {
 | 
			
		||||
                return sprintf('%.2f %s', $bytes / $value, $unit);
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        // @codeCoverageIgnoreStart
 | 
			
		||||
        return $bytes . ' byte' . ($bytes !== 1 ? 's' : '');
 | 
			
		||||
        // @codeCoverageIgnoreEnd
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										40
									
								
								qwen/php/vendor/phpunit/php-timer/src/Timer.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										40
									
								
								qwen/php/vendor/phpunit/php-timer/src/Timer.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,40 @@
 | 
			
		||||
<?php declare(strict_types=1);
 | 
			
		||||
/*
 | 
			
		||||
 * This file is part of phpunit/php-timer.
 | 
			
		||||
 *
 | 
			
		||||
 * (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 SebastianBergmann\Timer;
 | 
			
		||||
 | 
			
		||||
use function array_pop;
 | 
			
		||||
use function hrtime;
 | 
			
		||||
 | 
			
		||||
final class Timer
 | 
			
		||||
{
 | 
			
		||||
    /**
 | 
			
		||||
     * @psalm-var list<float>
 | 
			
		||||
     */
 | 
			
		||||
    private array $startTimes = [];
 | 
			
		||||
 | 
			
		||||
    public function start(): void
 | 
			
		||||
    {
 | 
			
		||||
        $this->startTimes[] = (float) hrtime(true);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @throws NoActiveTimerException
 | 
			
		||||
     */
 | 
			
		||||
    public function stop(): Duration
 | 
			
		||||
    {
 | 
			
		||||
        if (empty($this->startTimes)) {
 | 
			
		||||
            throw new NoActiveTimerException(
 | 
			
		||||
                'Timer::start() has to be called before Timer::stop()'
 | 
			
		||||
            );
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        return Duration::fromNanoseconds((float) hrtime(true) - array_pop($this->startTimes));
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										16
									
								
								qwen/php/vendor/phpunit/php-timer/src/exceptions/Exception.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										16
									
								
								qwen/php/vendor/phpunit/php-timer/src/exceptions/Exception.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,16 @@
 | 
			
		||||
<?php declare(strict_types=1);
 | 
			
		||||
/*
 | 
			
		||||
 * This file is part of phpunit/php-timer.
 | 
			
		||||
 *
 | 
			
		||||
 * (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 SebastianBergmann\Timer;
 | 
			
		||||
 | 
			
		||||
use Throwable;
 | 
			
		||||
 | 
			
		||||
interface Exception extends Throwable
 | 
			
		||||
{
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										16
									
								
								qwen/php/vendor/phpunit/php-timer/src/exceptions/NoActiveTimerException.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										16
									
								
								qwen/php/vendor/phpunit/php-timer/src/exceptions/NoActiveTimerException.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,16 @@
 | 
			
		||||
<?php declare(strict_types=1);
 | 
			
		||||
/*
 | 
			
		||||
 * This file is part of phpunit/php-timer.
 | 
			
		||||
 *
 | 
			
		||||
 * (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 SebastianBergmann\Timer;
 | 
			
		||||
 | 
			
		||||
use LogicException;
 | 
			
		||||
 | 
			
		||||
final class NoActiveTimerException extends LogicException implements Exception
 | 
			
		||||
{
 | 
			
		||||
}
 | 
			
		||||
@@ -0,0 +1,16 @@
 | 
			
		||||
<?php declare(strict_types=1);
 | 
			
		||||
/*
 | 
			
		||||
 * This file is part of phpunit/php-timer.
 | 
			
		||||
 *
 | 
			
		||||
 * (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 SebastianBergmann\Timer;
 | 
			
		||||
 | 
			
		||||
use RuntimeException;
 | 
			
		||||
 | 
			
		||||
final class TimeSinceStartOfRequestNotAvailableException extends RuntimeException implements Exception
 | 
			
		||||
{
 | 
			
		||||
}
 | 
			
		||||
		Reference in New Issue
	
	Block a user