public function testRegisterProcessTerminatesExisting() { $pidFolder = 'mfs://stubber/process'; $this->mockFs->getFileSystem()->addDirectory('process', '/stubber'); $this->mockFs->getFileSystem()->addFile('127.0.0.1:8080', 1234, '/stubber/process'); $this->mockFilesystem->shouldReceive('exists')->with($pidFolder)->andReturn(true); $this->mockFilesystem->shouldReceive('remove')->with($pidFolder . '/127.0.0.1:8080')->andReturn(true); $processManager = new ProcessManager($this->mockFilesystem, $this->mockFinder, $pidFolder); $processManager->registerProcess(new Process(1234), '127.0.0.1', 'mock'); $this->assertSame('1234', file_get_contents($pidFolder . '/127.0.0.1:mock')); }
/** * Start the server * * @return Server * @throws SocketConnectionException */ public function start() { $this->primer->prepare(); $server = $this; $processManager = $this->processManager; $this->process = $this->processManager->parallel(function (\ProcessControl\Process $process) use($server, $processManager) { try { $processManager->registerProcess($process, $server->getHost(), $server->getPort()); $server->getSocketServer()->listen($server->getPort(), $server->getHost()); } catch (ConnectionException $e) { $processManager->terminateProcess($process); } $server->getLoop()->run(); }); return $this; }