test.py: Modify s3 server mock

Add the possibility to return environment as a dict to use it later it subprocess created by xdist, without starting another s3 mock server for each thread.
This commit is contained in:
Andrei Chekun
2024-10-30 10:48:17 +01:00
parent 7948c4561d
commit fb4722443d
2 changed files with 28 additions and 4 deletions

View File

@@ -220,12 +220,23 @@ class S3ProxyServer:
self.server.socket.settimeout(10000)
self.server.socket.listen(1000)
self.is_running = False
os.environ['PROXY_S3_SERVER_PORT'] = f'{port}'
os.environ['PROXY_S3_SERVER_HOST'] = host
self.envs = {'PROXY_S3_SERVER_PORT': f'{port}', 'PROXY_S3_SERVER_HOST': f'{host}'}
def _set_environ(self):
for key, value in self.envs.items():
os.environ[key] = value
def _unset_environ(self):
for key in self.envs.keys():
del os.environ[key]
def get_envs_settings(self):
return self.envs
async def start(self):
if not self.is_running:
self.logger.info('Starting S3 proxy server on %s', self.server.server_address)
self._set_environ()
loop = asyncio.get_running_loop()
self.server_thread = loop.run_in_executor(None, self.server.serve_forever)
self.is_running = True
@@ -233,6 +244,7 @@ class S3ProxyServer:
async def stop(self):
if self.is_running:
self.logger.info('Stopping S3 proxy server')
self._unset_environ()
self.server.shutdown()
await self.server_thread
self.is_running = False

View File

@@ -268,12 +268,23 @@ class MockS3Server:
self.server.socket.listen(1000)
self.logger = logger
self.is_running = False
os.environ['MOCK_S3_SERVER_PORT'] = f'{port}'
os.environ['MOCK_S3_SERVER_HOST'] = host
self.envs = {'MOCK_S3_SERVER_PORT': f'{port}', 'MOCK_S3_SERVER_HOST': f'{host}'}
def _set_environ(self):
for key, value in self.envs.items():
os.environ[key] = value
def _unset_environ(self):
for key in self.envs.keys():
del os.environ[key]
def get_envs_settings(self):
return self.envs
async def start(self):
if not self.is_running:
self.logger.info('Starting S3 mock server on %s', self.server.server_address)
self._set_environ()
loop = asyncio.get_running_loop()
self.server_thread = loop.run_in_executor(None, self.server.serve_forever)
self.is_running = True
@@ -281,6 +292,7 @@ class MockS3Server:
async def stop(self):
if self.is_running:
self.logger.info('Stopping S3 mock server')
self._unset_environ()
self.server.shutdown()
await self.server_thread
self.is_running = False