Skip to content

Commit d30129e

Browse files
authored
[FIX] Remove multiprocessing module usage to start tests, linearize tests' start (#856)
1 parent 17c8345 commit d30129e

File tree

2 files changed

+16
-21
lines changed

2 files changed

+16
-21
lines changed

mod_ci/controllers.py

Lines changed: 7 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@
99
import time
1010
import zipfile
1111
from collections import defaultdict
12-
from multiprocessing import Process
1312
from pathlib import Path
1413
from typing import Any, Dict
1514

@@ -90,9 +89,7 @@ def before_app_request() -> None:
9089

9190
def start_platforms(repository, delay=None, platform=None) -> None:
9291
"""
93-
Start new test on both platforms in parallel.
94-
95-
We use multiprocessing module which bypasses Python GIL to make use of multiple cores of the processor.
92+
Start new test on both platforms.
9693
9794
:param repository: repository to run tests on
9895
:type repository: str
@@ -121,20 +118,18 @@ def start_platforms(repository, delay=None, platform=None) -> None:
121118
with app.app_context():
122119
from flask import current_app
123120
app = current_app._get_current_object()
121+
122+
# Create a database session
123+
db = create_session(config.get('DATABASE_URI', ''))
124+
124125
if platform is None or platform == TestPlatform.linux:
125126
log.info('Define process to run Linux GCP instances')
126-
# Create a database session
127-
db = create_session(config.get('DATABASE_URI', ''))
128-
linux_process = Process(target=gcp_instance, args=(app, db, TestPlatform.linux, repository, delay))
129-
linux_process.start()
127+
gcp_instance(app, db, TestPlatform.linux, repository, delay)
130128
log.info('Linux GCP instances process kicked off')
131129

132130
if platform is None or platform == TestPlatform.windows:
133131
log.info('Define process to run Windows GCP instances')
134-
# Create a database session
135-
db = create_session(config.get('DATABASE_URI', ''))
136-
windows_process = Process(target=gcp_instance, args=(app, db, TestPlatform.windows, repository, delay))
137-
windows_process.start()
132+
gcp_instance(app, db, TestPlatform.windows, repository, delay)
138133
log.info('Windows GCP instances process kicked off')
139134

140135

tests/test_ci/test_controllers.py

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -112,43 +112,43 @@ def test_comment_info_handles_invalid_variants_correctly(self):
112112

113113
@mock.patch('mod_ci.controllers.get_compute_service_object')
114114
@mock.patch('mod_ci.controllers.delete_expired_instances')
115-
@mock.patch('mod_ci.controllers.Process')
115+
@mock.patch('mod_ci.controllers.gcp_instance')
116116
@mock.patch('run.log')
117-
def test_start_platform_none_specified(self, mock_log, mock_process,
117+
def test_start_platform_none_specified(self, mock_log, mock_gcp_instance,
118118
mock_delete_expired_instances, mock_get_compute_service_object):
119119
"""Test that both platforms run when no platform value is passed."""
120120
start_platforms(mock.ANY, 1)
121121

122122
mock_delete_expired_instances.assert_called_once()
123123
mock_get_compute_service_object.assert_called_once()
124-
self.assertEqual(2, mock_process.call_count)
124+
self.assertEqual(2, mock_gcp_instance.call_count)
125125
self.assertEqual(4, mock_log.info.call_count)
126126

127127
@mock.patch('mod_ci.controllers.get_compute_service_object')
128128
@mock.patch('mod_ci.controllers.delete_expired_instances')
129-
@mock.patch('mod_ci.controllers.Process')
129+
@mock.patch('mod_ci.controllers.gcp_instance')
130130
@mock.patch('run.log')
131-
def test_start_platform_linux_specified(self, mock_log, mock_process,
131+
def test_start_platform_linux_specified(self, mock_log, mock_gcp_instance,
132132
mock_delete_expired_instances, mock_get_compute_service_object):
133133
"""Test that only Linux platform runs when platform is specified as Linux."""
134134
start_platforms(mock.ANY, platform=TestPlatform.linux)
135135

136-
self.assertEqual(1, mock_process.call_count)
136+
self.assertEqual(1, mock_gcp_instance.call_count)
137137
self.assertEqual(2, mock_log.info.call_count)
138138
mock_log.info.assert_called_with("Linux GCP instances process kicked off")
139139
mock_delete_expired_instances.assert_called_once()
140140
mock_get_compute_service_object.assert_called_once()
141141

142142
@mock.patch('mod_ci.controllers.get_compute_service_object')
143143
@mock.patch('mod_ci.controllers.delete_expired_instances')
144-
@mock.patch('mod_ci.controllers.Process')
144+
@mock.patch('mod_ci.controllers.gcp_instance')
145145
@mock.patch('run.log')
146-
def test_start_platform_windows_specified(self, mock_log, mock_process,
146+
def test_start_platform_windows_specified(self, mock_log, mock_gcp_instance,
147147
mock_delete_expired_instances, mock_get_compute_service_object):
148148
"""Test that only Windows platform runs when platform is specified as Windows."""
149149
start_platforms(mock.ANY, platform=TestPlatform.windows)
150150

151-
self.assertEqual(1, mock_process.call_count)
151+
self.assertEqual(1, mock_gcp_instance.call_count)
152152
self.assertEqual(2, mock_log.info.call_count)
153153
mock_log.info.assert_called_with("Windows GCP instances process kicked off")
154154
mock_delete_expired_instances.assert_called_once()

0 commit comments

Comments
 (0)