public function testPercent()
 {
     $progress = new ProgressHelper();
     $progress->start($output = $this->getOutputStream(), 50);
     $progress->display();
     $progress->advance();
     $progress->advance();
     rewind($output->getStream());
     $this->assertEquals($this->generateOutput('  0/50 [>---------------------------]   0%') . $this->generateOutput('  1/50 [>---------------------------]   2%') . $this->generateOutput('  2/50 [=>--------------------------]   4%'), stream_get_contents($output->getStream()));
 }
 public function testPercentNotHundredBeforeComplete()
 {
     $progress = new ProgressHelper();
     $progress->start($output = $this->getOutputStream(), 200);
     $progress->display();
     $progress->advance(199);
     $progress->advance();
     rewind($output->getStream());
     $this->assertEquals($this->generateOutput('   0/200 [>---------------------------]   0%') . $this->generateOutput(' 199/200 [===========================>]  99%') . $this->generateOutput(' 200/200 [============================] 100%'), stream_get_contents($output->getStream()));
 }
 public function testSetCurrentProgress()
 {
     $progress = new ProgressHelper();
     $progress->start($output = $this->getOutputStream(), 50);
     $progress->display();
     $progress->advance();
     $progress->setCurrent(15);
     $progress->setCurrent(25);
     rewind($output->getStream());
     $this->assertEquals($this->generateOutput('  0/50 [>---------------------------]   0%') . $this->generateOutput('  1/50 [>---------------------------]   2%') . $this->generateOutput(' 15/50 [========>-------------------]  30%') . $this->generateOutput(' 25/50 [==============>-------------]  50%'), stream_get_contents($output->getStream()));
 }
Beispiel #4
0
 public function run()
 {
     foreach ($this->processes as $process) {
         /** @var $process Process  **/
         $process->setIdleTimeout($this->idleTimeout);
         $process->setTimeout($this->timeout);
         $process->start();
         $this->printTaskInfo($process->getCommandLine());
     }
     $progress = new ProgressHelper();
     $progress->setFormat(" <fg=white;bg=cyan;options=bold>[" . get_class($this) . "]</fg=white;bg=cyan;options=bold> Processes: %current%/%max% [%bar%] %percent%%");
     $progress->start($this->getOutput(), count($this->processes));
     $running = $this->processes;
     $progress->display();
     $started = microtime(true);
     while (true) {
         foreach ($running as $k => $process) {
             try {
                 $process->checkTimeout();
             } catch (ProcessTimedOutException $e) {
             }
             if (!$process->isRunning()) {
                 $progress->advance();
                 if ($this->isPrinted) {
                     $this->getOutput()->writeln("");
                     $this->printTaskInfo("Output for <fg=white;bg=magenta> " . $process->getCommandLine() . " </fg=white;bg=magenta>");
                     $this->getOutput()->writeln($process->getOutput(), OutputInterface::OUTPUT_RAW);
                     if ($process->getErrorOutput()) {
                         $this->getOutput()->writeln("<error>" . $process->getErrorOutput() . "</error>");
                     }
                 }
                 unset($running[$k]);
             }
         }
         if (empty($running)) {
             break;
         }
         usleep(1000);
     }
     $this->getOutput()->writeln("");
     $taken = number_format(microtime(true) - $started, 2);
     $this->printTaskInfo(count($this->processes) . " processes ended in {$taken} s");
     $errorMessage = '';
     $exitCode = 0;
     foreach ($this->processes as $p) {
         if ($p->getExitCode() === 0) {
             continue;
         }
         $errorMessage .= "'" . $p->getCommandLine() . "' exited with code " . $p->getExitCode() . " \n";
         $exitCode = max($exitCode, $p->getExitCode());
     }
     return new Result($this, $exitCode, $errorMessage);
 }
 /**
  * Log warning while progress helper is running.
  *
  * @param \Symfony\Component\Console\Output\OutputInterface $output
  * @param \Symfony\Component\Console\Helper\ProgressHelper $progress
  * @param $message
  */
 private function logWarning(OutputInterface $output, ProgressHelper $progress, $message)
 {
     $progress->clear();
     // get rid of padding (side effect of displaying progress bar)
     $output->write("\r");
     $this->logger->warning($message);
     $progress->display();
 }
Beispiel #6
0
 /**
  * @param int $count The number of founded files
  */
 public function start($count)
 {
     $this->progress->start($this->output, $count);
     $this->progress->display();
     $this->started = microtime(true);
 }