From 89f2315c89f49d358bfdc16ca2dec03d73a20181 Mon Sep 17 00:00:00 2001 From: Andreas Motl Date: Thu, 25 Mar 2021 22:21:31 +0100 Subject: [PATCH] Tests: Explicitly set multiprocessing start method to "fork" By using multiprocessing's ForkProcess, the testsuite will also start working on macOS again, even on Python 3.8+. The background on this is that beginning with Python 3.8+, "fork" is not the default on all platforms anymore but has been changed to "spawn" on macOS. This method, however, apparently is not compatible with how multiprocessing is currently used within the test harness. --- src/crate/client/test_http.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/crate/client/test_http.py b/src/crate/client/test_http.py index aa115714..b90b992e 100644 --- a/src/crate/client/test_http.py +++ b/src/crate/client/test_http.py @@ -29,10 +29,10 @@ import random import traceback from http.server import BaseHTTPRequestHandler, HTTPServer +from multiprocessing.context import ForkProcess from unittest import TestCase from unittest.mock import patch, MagicMock from threading import Thread, Event -from multiprocessing import Process from decimal import Decimal import datetime as dt import urllib3.exceptions @@ -396,7 +396,7 @@ class KeepAliveClientTest(TestCase): def __init__(self, *args, **kwargs): super(KeepAliveClientTest, self).__init__(*args, **kwargs) - self.server_process = Process(target=self._run_server) + self.server_process = ForkProcess(target=self._run_server) def setUp(self): super(KeepAliveClientTest, self).setUp() @@ -529,8 +529,8 @@ def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self.assertIsNotNone(self.request_handler) self.server_address = ('127.0.0.1', random.randint(65000, 65535)) - self.server_process = Process(target=TestingHTTPServer.run_server, - args=(self.server_address, self.request_handler)) + self.server_process = ForkProcess(target=TestingHTTPServer.run_server, + args=(self.server_address, self.request_handler)) def setUp(self): self.server_process.start()