{"action":"created","comment":{"url":"https://api.github.com/repos/lmc-eu/steward/pulls/comments/229059610","pull_request_review_id":169468891,"id":229059610,"node_id":"MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDIyOTA1OTYxMA==","diff_hunk":"@@ -245,4 +300,9 @@ protected function flushProcessOutput(ProcessWrapper $processWrapper): void\n             $processWrapper->getClassName()\n         );\n     }\n+\n+    protected function parallelLimitReached(): bool\n+    {\n+        return count($this->processSet->get(ProcessWrapper::PROCESS_STATUS_PREPARED)) >= $this->parallelLimit;","path":"src/Process/ExecutionLoop.php","position":134,"original_position":134,"commit_id":"1d0bf743b7c356a276870ada65c00d01068ac172","original_commit_id":"1d0bf743b7c356a276870ada65c00d01068ac172","user":{"login":"jirinovak","id":1377270,"node_id":"MDQ6VXNlcjEzNzcyNzA=","avatar_url":"https://avatars1.githubusercontent.com/u/1377270?v=4","gravatar_id":"","url":"https://api.github.com/users/jirinovak","html_url":"https://github.com/jirinovak","followers_url":"https://api.github.com/users/jirinovak/followers","following_url":"https://api.github.com/users/jirinovak/following{/other_user}","gists_url":"https://api.github.com/users/jirinovak/gists{/gist_id}","starred_url":"https://api.github.com/users/jirinovak/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jirinovak/subscriptions","organizations_url":"https://api.github.com/users/jirinovak/orgs","repos_url":"https://api.github.com/users/jirinovak/repos","events_url":"https://api.github.com/users/jirinovak/events{/privacy}","received_events_url":"https://api.github.com/users/jirinovak/received_events","type":"User","site_admin":false},"body":"This is strange, isn`t it?\r\n\r\nHow current number of processes be greater than limit?","created_at":"2018-10-29T19:04:59Z","updated_at":"2018-10-29T19:10:59Z","html_url":"https://github.com/lmc-eu/steward/pull/225#discussion_r229059610","pull_request_url":"https://api.github.com/repos/lmc-eu/steward/pulls/225","author_association":"MEMBER","_links":{"self":{"href":"https://api.github.com/repos/lmc-eu/steward/pulls/comments/229059610"},"html":{"href":"https://github.com/lmc-eu/steward/pull/225#discussion_r229059610"},"pull_request":{"href":"https://api.github.com/repos/lmc-eu/steward/pulls/225"}}},"pull_request":{"url":"https://api.github.com/repos/lmc-eu/steward/pulls/225","id":225958644,"node_id":"MDExOlB1bGxSZXF1ZXN0MjI1OTU4NjQ0","html_url":"https://github.com/lmc-eu/steward/pull/225","diff_url":"https://github.com/lmc-eu/steward/pull/225.diff","patch_url":"https://github.com/lmc-eu/steward/pull/225.patch","issue_url":"https://api.github.com/repos/lmc-eu/steward/issues/225","number":225,"state":"open","locked":false,"title":"Add parallel limit","user":{"login":"OndraM","id":793041,"node_id":"MDQ6VXNlcjc5MzA0MQ==","avatar_url":"https://avatars0.githubusercontent.com/u/793041?v=4","gravatar_id":"","url":"https://api.github.com/users/OndraM","html_url":"https://github.com/OndraM","followers_url":"https://api.github.com/users/OndraM/followers","following_url":"https://api.github.com/users/OndraM/following{/other_user}","gists_url":"https://api.github.com/users/OndraM/gists{/gist_id}","starred_url":"https://api.github.com/users/OndraM/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/OndraM/subscriptions","organizations_url":"https://api.github.com/users/OndraM/orgs","repos_url":"https://api.github.com/users/OndraM/repos","events_url":"https://api.github.com/users/OndraM/events{/privacy}","received_events_url":"https://api.github.com/users/OndraM/received_events","type":"User","site_admin":false},"body":"Ref. #210, #153 \r\n\r\nAllow to define a parallel limit (by default 50) - the actual number of parallel processes started by Steward.\r\n\r\nCurrent theory of operation was:\r\n1. start separate system process for **each** testace class (except those with delay)\r\n2. start PHPUnit in each process and let it connect to Selenium server\r\n3. use Selenium queue capabilities (ie. wait with open connection until Selenium session is created)\r\n4. run the test\r\n\r\nBut this started causing issues on large testsuites (with hundreds of tests), because, obviously, there has been running system process (consuming RAM, CPU) for each testcase, even if most of them were just queued and were just waiting for free slot. And with Selenium farm, which is capable of running many tests in a parallel, this could easily lead to uncontrolled resources exhausting.\r\n\r\nThe new theory operation is:\r\n1. start separate system process for testace class until parallel limit is reached\r\n2. any new process will be started only after some of the previously started processes finishes (and the number of parallel processes is below the limit)\r\n\r\nNote the PR is still kind-of proof of concept, I expect some beta-testing of this branch (and maybe some code cleanup) before this will be merged to master.","created_at":"2018-10-26T02:33:04Z","updated_at":"2018-10-29T19:10:59Z","closed_at":null,"merged_at":null,"merge_commit_sha":"64439c48f3c267e6b44e0c7929b51aeb26ccd87b","assignee":null,"assignees":[],"requested_reviewers":[{"login":"MortalFlesh","id":6317184,"node_id":"MDQ6VXNlcjYzMTcxODQ=","avatar_url":"https://avatars0.githubusercontent.com/u/6317184?v=4","gravatar_id":"","url":"https://api.github.com/users/MortalFlesh","html_url":"https://github.com/MortalFlesh","followers_url":"https://api.github.com/users/MortalFlesh/followers","following_url":"https://api.github.com/users/MortalFlesh/following{/other_user}","gists_url":"https://api.github.com/users/MortalFlesh/gists{/gist_id}","starred_url":"https://api.github.com/users/MortalFlesh/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/MortalFlesh/subscriptions","organizations_url":"https://api.github.com/users/MortalFlesh/orgs","repos_url":"https://api.github.com/users/MortalFlesh/repos","events_url":"https://api.github.com/users/MortalFlesh/events{/privacy}","received_events_url":"https://api.github.com/users/MortalFlesh/received_events","type":"User","site_admin":false},{"login":"minarikv","id":6458191,"node_id":"MDQ6VXNlcjY0NTgxOTE=","avatar_url":"https://avatars0.githubusercontent.com/u/6458191?v=4","gravatar_id":"","url":"https://api.github.com/users/minarikv","html_url":"https://github.com/minarikv","followers_url":"https://api.github.com/users/minarikv/followers","following_url":"https://api.github.com/users/minarikv/following{/other_user}","gists_url":"https://api.github.com/users/minarikv/gists{/gist_id}","starred_url":"https://api.github.com/users/minarikv/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/minarikv/subscriptions","organizations_url":"https://api.github.com/users/minarikv/orgs","repos_url":"https://api.github.com/users/minarikv/repos","events_url":"https://api.github.com/users/minarikv/events{/privacy}","received_events_url":"https://api.github.com/users/minarikv/received_events","type":"User","site_admin":false}],"requested_teams":[],"labels":[{"id":209299412,"node_id":"MDU6TGFiZWwyMDkyOTk0MTI=","url":"https://api.github.com/repos/lmc-eu/steward/labels/enhancement","name":"enhancement","color":"84b6eb","default":true}],"milestone":{"url":"https://api.github.com/repos/lmc-eu/steward/milestones/3","html_url":"https://github.com/lmc-eu/steward/milestone/3","labels_url":"https://api.github.com/repos/lmc-eu/steward/milestones/3/labels","id":2359380,"node_id":"MDk6TWlsZXN0b25lMjM1OTM4MA==","number":3,"title":"3.0","description":"","creator":{"login":"OndraM","id":793041,"node_id":"MDQ6VXNlcjc5MzA0MQ==","avatar_url":"https://avatars0.githubusercontent.com/u/793041?v=4","gravatar_id":"","url":"https://api.github.com/users/OndraM","html_url":"https://github.com/OndraM","followers_url":"https://api.github.com/users/OndraM/followers","following_url":"https://api.github.com/users/OndraM/following{/other_user}","gists_url":"https://api.github.com/users/OndraM/gists{/gist_id}","starred_url":"https://api.github.com/users/OndraM/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/OndraM/subscriptions","organizations_url":"https://api.github.com/users/OndraM/orgs","repos_url":"https://api.github.com/users/OndraM/repos","events_url":"https://api.github.com/users/OndraM/events{/privacy}","received_events_url":"https://api.github.com/users/OndraM/received_events","type":"User","site_admin":false},"open_issues":11,"closed_issues":19,"state":"open","created_at":"2017-03-02T17:47:34Z","updated_at":"2018-10-26T02:33:04Z","due_on":null,"closed_at":null},"commits_url":"https://api.github.com/repos/lmc-eu/steward/pulls/225/commits","review_comments_url":"https://api.github.com/repos/lmc-eu/steward/pulls/225/comments","review_comment_url":"https://api.github.com/repos/lmc-eu/steward/pulls/comments{/number}","comments_url":"https://api.github.com/repos/lmc-eu/steward/issues/225/comments","statuses_url":"https://api.github.com/repos/lmc-eu/steward/statuses/1d0bf743b7c356a276870ada65c00d01068ac172","head":{"label":"lmc-eu:feature/parallel-limit","ref":"feature/parallel-limit","sha":"1d0bf743b7c356a276870ada65c00d01068ac172","user":{"login":"lmc-eu","id":429615,"node_id":"MDEyOk9yZ2FuaXphdGlvbjQyOTYxNQ==","avatar_url":"https://avatars3.githubusercontent.com/u/429615?v=4","gravatar_id":"","url":"https://api.github.com/users/lmc-eu","html_url":"https://github.com/lmc-eu","followers_url":"https://api.github.com/users/lmc-eu/followers","following_url":"https://api.github.com/users/lmc-eu/following{/other_user}","gists_url":"https://api.github.com/users/lmc-eu/gists{/gist_id}","starred_url":"https://api.github.com/users/lmc-eu/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/lmc-eu/subscriptions","organizations_url":"https://api.github.com/users/lmc-eu/orgs","repos_url":"https://api.github.com/users/lmc-eu/repos","events_url":"https://api.github.com/users/lmc-eu/events{/privacy}","received_events_url":"https://api.github.com/users/lmc-eu/received_events","type":"Organization","site_admin":false},"repo":{"id":35304655,"node_id":"MDEwOlJlcG9zaXRvcnkzNTMwNDY1NQ==","name":"steward","full_name":"lmc-eu/steward","private":false,"owner":{"login":"lmc-eu","id":429615,"node_id":"MDEyOk9yZ2FuaXphdGlvbjQyOTYxNQ==","avatar_url":"https://avatars3.githubusercontent.com/u/429615?v=4","gravatar_id":"","url":"https://api.github.com/users/lmc-eu","html_url":"https://github.com/lmc-eu","followers_url":"https://api.github.com/users/lmc-eu/followers","following_url":"https://api.github.com/users/lmc-eu/following{/other_user}","gists_url":"https://api.github.com/users/lmc-eu/gists{/gist_id}","starred_url":"https://api.github.com/users/lmc-eu/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/lmc-eu/subscriptions","organizations_url":"https://api.github.com/users/lmc-eu/orgs","repos_url":"https://api.github.com/users/lmc-eu/repos","events_url":"https://api.github.com/users/lmc-eu/events{/privacy}","received_events_url":"https://api.github.com/users/lmc-eu/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/lmc-eu/steward","description":"PHP libraries that makes Selenium WebDriver + PHPUnit functional testing easy and robust","fork":false,"url":"https://api.github.com/repos/lmc-eu/steward","forks_url":"https://api.github.com/repos/lmc-eu/steward/forks","keys_url":"https://api.github.com/repos/lmc-eu/steward/keys{/key_id}","collaborators_url":"https://api.github.com/repos/lmc-eu/steward/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/lmc-eu/steward/teams","hooks_url":"https://api.github.com/repos/lmc-eu/steward/hooks","issue_events_url":"https://api.github.com/repos/lmc-eu/steward/issues/events{/number}","events_url":"https://api.github.com/repos/lmc-eu/steward/events","assignees_url":"https://api.github.com/repos/lmc-eu/steward/assignees{/user}","branches_url":"https://api.github.com/repos/lmc-eu/steward/branches{/branch}","tags_url":"https://api.github.com/repos/lmc-eu/steward/tags","blobs_url":"https://api.github.com/repos/lmc-eu/steward/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/lmc-eu/steward/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/lmc-eu/steward/git/refs{/sha}","trees_url":"https://api.github.com/repos/lmc-eu/steward/git/trees{/sha}","statuses_url":"https://api.github.com/repos/lmc-eu/steward/statuses/{sha}","languages_url":"https://api.github.com/repos/lmc-eu/steward/languages","stargazers_url":"https://api.github.com/repos/lmc-eu/steward/stargazers","contributors_url":"https://api.github.com/repos/lmc-eu/steward/contributors","subscribers_url":"https://api.github.com/repos/lmc-eu/steward/subscribers","subscription_url":"https://api.github.com/repos/lmc-eu/steward/subscription","commits_url":"https://api.github.com/repos/lmc-eu/steward/commits{/sha}","git_commits_url":"https://api.github.com/repos/lmc-eu/steward/git/commits{/sha}","comments_url":"https://api.github.com/repos/lmc-eu/steward/comments{/number}","issue_comment_url":"https://api.github.com/repos/lmc-eu/steward/issues/comments{/number}","contents_url":"https://api.github.com/repos/lmc-eu/steward/contents/{+path}","compare_url":"https://api.github.com/repos/lmc-eu/steward/compare/{base}...{head}","merges_url":"https://api.github.com/repos/lmc-eu/steward/merges","archive_url":"https://api.github.com/repos/lmc-eu/steward/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/lmc-eu/steward/downloads","issues_url":"https://api.github.com/repos/lmc-eu/steward/issues{/number}","pulls_url":"https://api.github.com/repos/lmc-eu/steward/pulls{/number}","milestones_url":"https://api.github.com/repos/lmc-eu/steward/milestones{/number}","notifications_url":"https://api.github.com/repos/lmc-eu/steward/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/lmc-eu/steward/labels{/name}","releases_url":"https://api.github.com/repos/lmc-eu/steward/releases{/id}","deployments_url":"https://api.github.com/repos/lmc-eu/steward/deployments","created_at":"2015-05-08T22:23:47Z","updated_at":"2018-10-24T16:29:55Z","pushed_at":"2018-10-26T10:30:03Z","git_url":"git://github.com/lmc-eu/steward.git","ssh_url":"git@github.com:lmc-eu/steward.git","clone_url":"https://github.com/lmc-eu/steward.git","svn_url":"https://github.com/lmc-eu/steward","homepage":null,"size":1173,"stargazers_count":170,"watchers_count":170,"language":"PHP","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":true,"forks_count":34,"mirror_url":null,"archived":false,"open_issues_count":22,"license":{"key":"mit","name":"MIT License","spdx_id":"MIT","url":"https://api.github.com/licenses/mit","node_id":"MDc6TGljZW5zZTEz"},"forks":34,"open_issues":22,"watchers":170,"default_branch":"master"}},"base":{"label":"lmc-eu:master","ref":"master","sha":"eace4ecd0289e761dfd77b07fae9742d3e3bbe51","user":{"login":"lmc-eu","id":429615,"node_id":"MDEyOk9yZ2FuaXphdGlvbjQyOTYxNQ==","avatar_url":"https://avatars3.githubusercontent.com/u/429615?v=4","gravatar_id":"","url":"https://api.github.com/users/lmc-eu","html_url":"https://github.com/lmc-eu","followers_url":"https://api.github.com/users/lmc-eu/followers","following_url":"https://api.github.com/users/lmc-eu/following{/other_user}","gists_url":"https://api.github.com/users/lmc-eu/gists{/gist_id}","starred_url":"https://api.github.com/users/lmc-eu/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/lmc-eu/subscriptions","organizations_url":"https://api.github.com/users/lmc-eu/orgs","repos_url":"https://api.github.com/users/lmc-eu/repos","events_url":"https://api.github.com/users/lmc-eu/events{/privacy}","received_events_url":"https://api.github.com/users/lmc-eu/received_events","type":"Organization","site_admin":false},"repo":{"id":35304655,"node_id":"MDEwOlJlcG9zaXRvcnkzNTMwNDY1NQ==","name":"steward","full_name":"lmc-eu/steward","private":false,"owner":{"login":"lmc-eu","id":429615,"node_id":"MDEyOk9yZ2FuaXphdGlvbjQyOTYxNQ==","avatar_url":"https://avatars3.githubusercontent.com/u/429615?v=4","gravatar_id":"","url":"https://api.github.com/users/lmc-eu","html_url":"https://github.com/lmc-eu","followers_url":"https://api.github.com/users/lmc-eu/followers","following_url":"https://api.github.com/users/lmc-eu/following{/other_user}","gists_url":"https://api.github.com/users/lmc-eu/gists{/gist_id}","starred_url":"https://api.github.com/users/lmc-eu/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/lmc-eu/subscriptions","organizations_url":"https://api.github.com/users/lmc-eu/orgs","repos_url":"https://api.github.com/users/lmc-eu/repos","events_url":"https://api.github.com/users/lmc-eu/events{/privacy}","received_events_url":"https://api.github.com/users/lmc-eu/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/lmc-eu/steward","description":"PHP libraries that makes Selenium WebDriver + PHPUnit functional testing easy and robust","fork":false,"url":"https://api.github.com/repos/lmc-eu/steward","forks_url":"https://api.github.com/repos/lmc-eu/steward/forks","keys_url":"https://api.github.com/repos/lmc-eu/steward/keys{/key_id}","collaborators_url":"https://api.github.com/repos/lmc-eu/steward/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/lmc-eu/steward/teams","hooks_url":"https://api.github.com/repos/lmc-eu/steward/hooks","issue_events_url":"https://api.github.com/repos/lmc-eu/steward/issues/events{/number}","events_url":"https://api.github.com/repos/lmc-eu/steward/events","assignees_url":"https://api.github.com/repos/lmc-eu/steward/assignees{/user}","branches_url":"https://api.github.com/repos/lmc-eu/steward/branches{/branch}","tags_url":"https://api.github.com/repos/lmc-eu/steward/tags","blobs_url":"https://api.github.com/repos/lmc-eu/steward/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/lmc-eu/steward/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/lmc-eu/steward/git/refs{/sha}","trees_url":"https://api.github.com/repos/lmc-eu/steward/git/trees{/sha}","statuses_url":"https://api.github.com/repos/lmc-eu/steward/statuses/{sha}","languages_url":"https://api.github.com/repos/lmc-eu/steward/languages","stargazers_url":"https://api.github.com/repos/lmc-eu/steward/stargazers","contributors_url":"https://api.github.com/repos/lmc-eu/steward/contributors","subscribers_url":"https://api.github.com/repos/lmc-eu/steward/subscribers","subscription_url":"https://api.github.com/repos/lmc-eu/steward/subscription","commits_url":"https://api.github.com/repos/lmc-eu/steward/commits{/sha}","git_commits_url":"https://api.github.com/repos/lmc-eu/steward/git/commits{/sha}","comments_url":"https://api.github.com/repos/lmc-eu/steward/comments{/number}","issue_comment_url":"https://api.github.com/repos/lmc-eu/steward/issues/comments{/number}","contents_url":"https://api.github.com/repos/lmc-eu/steward/contents/{+path}","compare_url":"https://api.github.com/repos/lmc-eu/steward/compare/{base}...{head}","merges_url":"https://api.github.com/repos/lmc-eu/steward/merges","archive_url":"https://api.github.com/repos/lmc-eu/steward/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/lmc-eu/steward/downloads","issues_url":"https://api.github.com/repos/lmc-eu/steward/issues{/number}","pulls_url":"https://api.github.com/repos/lmc-eu/steward/pulls{/number}","milestones_url":"https://api.github.com/repos/lmc-eu/steward/milestones{/number}","notifications_url":"https://api.github.com/repos/lmc-eu/steward/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/lmc-eu/steward/labels{/name}","releases_url":"https://api.github.com/repos/lmc-eu/steward/releases{/id}","deployments_url":"https://api.github.com/repos/lmc-eu/steward/deployments","created_at":"2015-05-08T22:23:47Z","updated_at":"2018-10-24T16:29:55Z","pushed_at":"2018-10-26T10:30:03Z","git_url":"git://github.com/lmc-eu/steward.git","ssh_url":"git@github.com:lmc-eu/steward.git","clone_url":"https://github.com/lmc-eu/steward.git","svn_url":"https://github.com/lmc-eu/steward","homepage":null,"size":1173,"stargazers_count":170,"watchers_count":170,"language":"PHP","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":true,"forks_count":34,"mirror_url":null,"archived":false,"open_issues_count":22,"license":{"key":"mit","name":"MIT License","spdx_id":"MIT","url":"https://api.github.com/licenses/mit","node_id":"MDc6TGljZW5zZTEz"},"forks":34,"open_issues":22,"watchers":170,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/lmc-eu/steward/pulls/225"},"html":{"href":"https://github.com/lmc-eu/steward/pull/225"},"issue":{"href":"https://api.github.com/repos/lmc-eu/steward/issues/225"},"comments":{"href":"https://api.github.com/repos/lmc-eu/steward/issues/225/comments"},"review_comments":{"href":"https://api.github.com/repos/lmc-eu/steward/pulls/225/comments"},"review_comment":{"href":"https://api.github.com/repos/lmc-eu/steward/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/lmc-eu/steward/pulls/225/commits"},"statuses":{"href":"https://api.github.com/repos/lmc-eu/steward/statuses/1d0bf743b7c356a276870ada65c00d01068ac172"}},"author_association":"MEMBER"}}
{"actor":{"display_login":"jirinovak"}}