/**
     * @depends testAppendStreamOnNewFile
     *
     * @param ExtendedFilesystem $fs
     *
     * @return ExtendedFilesystem
     */
    public function testAppendStreamOnExistingFile(ExtendedFilesystem $fs)
    {
        $newFile = "new_file.txt";
        $orig = <<<STRING
abcdefghijklmn
STRING;
        $fs->write($newFile, $orig);
        $str = <<<STRING
opqrst
STRING;
        $fh = $fs->appendStream($newFile);
        fwrite($fh, $str);
        fclose($fh);
        $this->assertContains($orig . $str, $fs->read($newFile));
        $str2 = <<<STRING
uvwxyz
STRING;
        $fs->append($newFile, $str2);
        $this->assertContains($orig . $str . $str2, $fs->read($newFile));
        return $fs;
    }
 public function testDataImportExportWithGzipAndParallel()
 {
     $exportPrefix = "redshift_ut_" . time();
     $this->testDataImport(true);
     $exporter = new RedshiftExporter(self::$rs, self::$localFs, self::$s3Fs, self::$s3Region, self::$sts);
     $exporter->exportToFile($exportPrefix, "SELECT * FROM php_redshift_test", true, true, true);
     $exportedCount = 0;
     $finder = self::$localFs->getFinder();
     $finder->path("#^" . preg_quote($exportPrefix, "#") . "#");
     $unloaded = [];
     foreach ($finder as $splFileInfo) {
         $relativePathname = $splFileInfo->getRelativePathname();
         $unloaded[] = $relativePathname;
         $content = self::$localFs->read($relativePathname);
         mdebug(gzdecode($content));
         $fh = fopen('php://memory', 'r+');
         fwrite($fh, gzdecode($content));
         rewind($fh);
         $reader = new DrdStreamReader($fh, self::FIELDS);
         while ($reader->readRecord()) {
             $exportedCount++;
         }
         fclose($fh);
     }
     self::assertEquals(5, $exportedCount);
     // test import of parallel data
     $importer = new RedshiftImporter(self::$rs, self::$localFs, self::$s3Fs, self::$s3Region, self::$sts);
     $importer->importFromFile($exportPrefix, 'php_redshift_test', self::FIELDS, true, true);
     $stmt = self::$rs->prepare("SELECT COUNT(*) FROM php_redshift_test");
     $stmt->execute();
     $result = $stmt->fetchColumn();
     self::assertEquals(10, $result);
     foreach ($unloaded as $relativePathname) {
         self::$localFs->delete($relativePathname);
     }
 }