1
0
mirror of https://github.com/danog/file.git synced 2024-12-02 09:17:57 +01:00
file/test/ParallelHandleTest.php

57 lines
1.3 KiB
PHP
Raw Normal View History

<?php
2016-08-30 21:05:14 +02:00
namespace Amp\File\Test;
use Amp\File;
use Amp\Loop;
2016-08-30 21:05:14 +02:00
use Amp\Parallel\Worker\DefaultPool;
use function Amp\call;
2016-08-30 21:05:14 +02:00
class ParallelHandleTest extends AsyncHandleTest {
protected function execute(callable $cb) {
2017-06-17 23:41:57 +02:00
Loop::run(function () use ($cb) {
$pool = new DefaultPool;
$pool->start();
File\filesystem(new File\ParallelDriver($pool));
yield call($cb);
yield $pool->shutdown();
2016-08-30 21:05:14 +02:00
});
}
/**
* @expectedException \Amp\File\PendingOperationError
*/
public function testSimultaneousSeeks() {
$this->execute(function () {
/** @var \Amp\File\Handle $handle */
$handle = yield File\open(__FILE__, "r");
$promise1 = $handle->seek(0);
$promise2 = $handle->seek(10);
$this->assertSame(0, yield $promise1);
yield $promise2;
});
}
/**
* @expectedException \Amp\File\PendingOperationError
*/
public function testReadWhileSeeking() {
$this->execute(function () {
/** @var \Amp\File\Handle $handle */
$handle = yield File\open(__FILE__, "r");
$promise1 = $handle->seek(0);
$promise2 = $handle->read();
$this->assertSame(0, yield $promise1);
yield $promise2;
});
}
2016-08-30 21:05:14 +02:00
}