From df920be523ac8c90570980b4ad259d6d8b3920d6 Mon Sep 17 00:00:00 2001 From: Cees-Jan Kiewiet Date: Mon, 16 Jul 2018 21:39:00 +0200 Subject: [PATCH 1/2] Test reading and writing from and to binary files --- tests/Adapters/FileTest.php | 23 +++++++++++++++++++++++ tests/Adapters/reactphp-logo.png | Bin 0 -> 58832 bytes 2 files changed, 23 insertions(+) create mode 100644 tests/Adapters/reactphp-logo.png diff --git a/tests/Adapters/FileTest.php b/tests/Adapters/FileTest.php index ce26747a..f0e43fe0 100644 --- a/tests/Adapters/FileTest.php +++ b/tests/Adapters/FileTest.php @@ -151,6 +151,17 @@ public function testGetContents(LoopInterface $loop, FilesystemInterface $filesy $this->assertSame($contents, $fileContents); } + /** + * @dataProvider filesystemProvider + */ + public function testGetBinaryContents(LoopInterface $loop, FilesystemInterface $filesystem) + { + $file = __DIR__ . DIRECTORY_SEPARATOR . 'reactphp-logo.png'; + $this->assertFileExists($file); + $fileContents = $this->await($filesystem->file($file)->getContents(), $loop); + $this->assertSame(file_get_contents($file), $fileContents); + } + /** * @dataProvider filesystemProvider */ @@ -257,4 +268,16 @@ public function testPutContents(LoopInterface $loop, FilesystemInterface $filesy $this->assertFileExists($tempFile); $this->assertSame($contents, file_get_contents($tempFile)); } + /** + * @dataProvider filesystemProvider + */ + public function testPutBinaryContents(LoopInterface $loop, FilesystemInterface $filesystem) + { + $contents = file_get_contents(__DIR__ . DIRECTORY_SEPARATOR . 'reactphp-logo.png'); + $filename = uniqid('', true); + $tempFile = $this->tmpDir . $filename; + $this->await($filesystem->file($tempFile)->putContents($contents), $loop); + $this->assertFileExists($tempFile); + $this->assertSame($contents, file_get_contents($tempFile)); + } } diff --git a/tests/Adapters/reactphp-logo.png b/tests/Adapters/reactphp-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..001a8c8d17557f09a66e00e918284d4eb8c73768 GIT binary patch literal 58832 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%0A!=F~{~Dw#J8)*Z#Ku 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 literal 0 HcmV?d00001 From 9ce450aed42eda073252a21ff04667375933c70c Mon Sep 17 00:00:00 2001 From: Cees-Jan Kiewiet Date: Mon, 16 Jul 2018 21:41:40 +0200 Subject: [PATCH 2/2] base64 all file reading/writing in the child process adapter --- src/ChildProcess/Adapter.php | 4 ++-- src/WoolTrait.php | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/ChildProcess/Adapter.php b/src/ChildProcess/Adapter.php index 45fdd484..d1ebdee6 100644 --- a/src/ChildProcess/Adapter.php +++ b/src/ChildProcess/Adapter.php @@ -195,7 +195,7 @@ public function read($fileDescriptor, $length, $offset) 'length' => $length, 'offset' => $offset, ]))->then(function ($payload) { - return \React\Promise\resolve($payload['chunk']); + return \React\Promise\resolve(base64_decode($payload['chunk'])); }); } @@ -209,7 +209,7 @@ public function read($fileDescriptor, $length, $offset) public function write($fileDescriptor, $data, $length, $offset) { return $this->fileDescriptors[$fileDescriptor]->rpc(Factory::rpc('write', [ - 'chunk' => $data, + 'chunk' => base64_encode($data), 'length' => $length, 'offset' => $offset, ])); diff --git a/src/WoolTrait.php b/src/WoolTrait.php index 497a7e38..d786b6b4 100644 --- a/src/WoolTrait.php +++ b/src/WoolTrait.php @@ -172,7 +172,7 @@ public function read(array $payload) { fseek($this->fd, $payload['offset']); return \React\Promise\resolve([ - 'chunk' => fread($this->fd, $payload['length']), + 'chunk' => base64_encode(fread($this->fd, $payload['length'])), ]); } @@ -184,7 +184,7 @@ public function write(array $payload) { fseek($this->fd, $payload['offset']); return \React\Promise\resolve([ - 'written' => fwrite($this->fd, $payload['chunk'], $payload['length']), + 'written' => fwrite($this->fd, base64_decode($payload['chunk']), $payload['length']), ]); }