123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 |
- <?php
- namespace React\Tests\EventLoop;
- use React\EventLoop\ExtLibeventLoop;
- class ExtLibeventLoopTest extends AbstractLoopTest
- {
- /** @var ?string */
- private $fifoPath;
- public function createLoop()
- {
- if ('Linux' === PHP_OS && !extension_loaded('posix')) {
- $this->markTestSkipped('libevent tests skipped on linux due to linux epoll issues.');
- }
- if (!function_exists('event_base_new')) {
- $this->markTestSkipped('libevent tests skipped because ext-libevent is not installed.');
- }
- return new ExtLibeventLoop();
- }
- /**
- * @after
- */
- public function tearDownFile()
- {
- if ($this->fifoPath !== null && file_exists($this->fifoPath)) {
- unlink($this->fifoPath);
- }
- }
- public function createStream()
- {
- if ('Linux' !== PHP_OS) {
- return parent::createStream();
- }
- $this->fifoPath = tempnam(sys_get_temp_dir(), 'react-');
- assert(is_string($this->fifoPath));
- unlink($this->fifoPath);
- // Use a FIFO on linux to get around lack of support for disk-based file
- // descriptors when using the EPOLL back-end.
- posix_mkfifo($this->fifoPath, 0600);
- $stream = fopen($this->fifoPath, 'r+');
- return $stream;
- }
- public function writeToStream($stream, $content)
- {
- if ('Linux' !== PHP_OS) {
- return parent::writeToStream($stream, $content);
- }
- fwrite($stream, $content);
- }
- }
|