Robo и Codeception запускают большое количество параллельных процессов - PullRequest
0 голосов
/ 01 апреля 2019

Я использую Codeception для тестирования конечных точек API моего веб-сервера.Я хочу выполнить некоторые стресс-тесты, поэтому в файле Cest под названием «StressCest» я написал несколько тестов, которые выполняют несколько вызовов наиболее часто используемых конечных точек моего сервера.

Я хочу запустить (параллельно) большое количество нескольких экземпляров этого файла Cest.

Для этой цели я использовал Robo.Я установил файл конфигурации Robo (RoboFile.php) с помощью метода "parallelRun ()" (https://codeception.com/docs/12-ParallelExecution) внутри.

public function parallelRun()
{
    $parallel = $this->taskParallelExec();
    for ($i = 1; $i <= 1000; $i++) {
        $parallel->process(
            $this->taskCodecept()
                ->suite('api')
                ->test('StressCest')
        );
    }
    return $parallel->run();
}

, который порождает 1000 параллельных процессов StressCest. Когда я выполняюконсольная команда robo parallel:run появляется эта ошибка:

Предупреждение: proc_open (): невозможно создать канал. Слишком много открытых файлов в /../vendor/symfony/process/Process.php в строке 337.[ошибка] Невозможно запустить новый процесс. ОШИБКА: proc_open (): невозможно создать канал. Слишком много открытых файлов в /../vendor/symfony/process/Process.php:337

IsЕсть какой-нибудь способ обойти эту ошибку или другой способ выполнить параллельное стресс-тестирование с помощью CestFile?

Заранее благодарен за любой ответ

1 Ответ

0 голосов
/ 03 апреля 2019

Я решил эту проблему, увеличив ограничение на количество открытых файлов в моей ОС

Вот руководство для MacOSX, также действительная форма Mojave

Спасибо всем за помощь. Надеюсь, что этот вопрос поможет кому-то еще.

...