protected function execute(InputInterface $input, OutputInterface $output)
 {
     $logger = $this->getConsoleLogger($output);
     $file = $input->getArgument('config-file');
     // Test if config file exists
     if (!file_exists($file) || !is_readable($file)) {
         $msg = "Configuration file '{$file}' does not exists or is not readable'";
         throw new \InvalidArgumentException($msg);
     }
     $params = (include $file);
     $config = new StandaloneServer\Config($params);
     $this->logServerConfig($logger, $config);
     $this->server = new StandaloneServer($config, $logger);
     $output->writeln($this->server->getCommand());
     return 1;
 }
 protected function execute(InputInterface $input, OutputInterface $output)
 {
     $logger = $this->getConsoleLogger($output);
     $file = $input->getArgument('config-file');
     // Test if config file exists
     if (!file_exists($file) || !is_readable($file)) {
         $msg = "Configuration file '{$file}' does not exists or is not readable'";
         throw new \InvalidArgumentException($msg);
     }
     $params = (include $file);
     $port = $params['port'];
     $config = new StandaloneServer\Config($params);
     $this->logServerConfig($logger, $config);
     $this->server = new StandaloneServer($config, $logger);
     $pid_file = $config->getPidFile();
     $log_file = $config->getLogFile();
     if (file_exists($log_file)) {
         $output->writeln('---------------------------------------------------------');
         $output->writeln("Content of log file ({$log_file})");
         $output->writeln('---------------------------------------------------------');
         $output->writeln($this->server->getOutput());
         $output->writeln('---------------------------------------------------------');
     }
     $isRunning = false;
     try {
         $pid = $this->server->getPid();
         if (!$this->server->isProcessRunning()) {
             $logger->error("Not running but pid file exists ({$pid_file}) and pid found ({$pid})");
             $msg = "Server not running but pid exists (pid: {$pid}) in pid_file ({$pid_file}). Please restart.";
         } else {
             $isRunning = true;
             $msg = "Server is running on port '{$port}' (pid: {$pid})";
         }
     } catch (PjbException\PidCorruptedException $e) {
         // Pid file corrupted
         $logger->critical("Cannot find server pid, your '{$pid_file}' is corrupted. Remove it.");
         $msg = 'Server not running (Critical error: pid file corrupted)';
     } catch (PjbException\PidNotFoundException $e) {
         $logger->info("Pid file '{$pid_file}' not exists, assuming server is down.");
         $msg = "Server not running on port '{$port}' (no pid file found)";
     } catch (\Exception $e) {
         $logger->error('Unexpected exception when testing pid file.');
         $msg = 'Cannot test server status';
     }
     $output->writeln($msg);
     return $isRunning ? 0 : 1;
 }
 protected function execute(InputInterface $input, OutputInterface $output)
 {
     $logger = $this->getConsoleLogger($output);
     $file = $input->getArgument('config-file');
     // Test if config file exists
     if (!file_exists($file) || !is_readable($file)) {
         $msg = "Configuration file '{$file}' does not exists or is not readable'";
         throw new \InvalidArgumentException($msg);
     }
     $params = (include $file);
     $port = $params['port'];
     $config = new StandaloneServer\Config($params);
     $logger->notice("PJB server using port '{$port}' and config in '{$file}'");
     $this->logServerConfig($logger, $config);
     $this->server = new StandaloneServer($config, $logger);
     $this->server->restart();
     $logger->debug("Server output: \n" . $this->server->getOutput());
     $output->writeln("Server successfully restarted on port {$port}");
     return 0;
 }
 protected function execute(InputInterface $input, OutputInterface $output)
 {
     $logger = $this->getConsoleLogger($output);
     $file = $input->getArgument('config-file');
     // Test if config file exists
     if (!file_exists($file) || !is_readable($file)) {
         $msg = "Configuration file '{$file}' does not exists or is not readable'";
         throw new \InvalidArgumentException($msg);
     }
     $params = (include $file);
     $port = $params['port'];
     $config = new StandaloneServer\Config($params);
     $logger->notice("Stopping the server on port '{$port}' and config file '{$file}'");
     $this->logServerConfig($logger, $config);
     $this->server = new StandaloneServer($config, $logger);
     $pid_file = $this->server->getConfig()->getPidFile();
     if (!file_exists($pid_file)) {
         $output->writeln("Server already stopped (pid_file '{$pid_file}' not found).");
     } else {
         $this->server->stop();
         $output->writeln("Server running on port {$port} successfully stopped");
     }
     return 0;
 }
 public function testStartServerThrowsPortUnavailableException()
 {
     $this->assertFalse($this->server->isStarted());
     $this->server->start();
     $this->assertTrue($this->server->isStarted());
     $pid_file = $this->server->getConfig()->getPidFile();
     $this->assertFileExists($pid_file);
     $this->setExpectedException(Exception\PortUnavailableException::class);
     // Test starting another instance on the same port
     $runningServerConfig = $this->server->getConfig()->toArray();
     // Start the original server
     $this->server->start();
     $config = array_merge($runningServerConfig, ['log_file' => $this->server->getConfig()->getLogFile() . '.extra.log', 'pid_file' => $this->server->getConfig()->getPidFile() . '.extra.pid']);
     // Other server on same port
     // should throw a port unavailable exception
     $otherServer = new StandaloneServer(new StandaloneServer\Config($config));
     $otherServer->start();
 }