X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/d761fb1e9d9e39626eded4b1e4804b0fc3d5d8c8..e67d0f5d43c56f78694ea4a5f93acec5c93cd0fb:/sdk/python/tests/keepstub.py diff --git a/sdk/python/tests/keepstub.py b/sdk/python/tests/keepstub.py index 4992196923..6be8d8b646 100644 --- a/sdk/python/tests/keepstub.py +++ b/sdk/python/tests/keepstub.py @@ -1,3 +1,7 @@ +# Copyright (C) The Arvados Authors. All rights reserved. +# +# SPDX-License-Identifier: Apache-2.0 + from __future__ import division from future import standard_library standard_library.install_aliases() @@ -6,13 +10,40 @@ import http.server import hashlib import os import re +import socket import socketserver import sys +import threading import time +from . import arvados_testutil as tutil + _debug = os.environ.get('ARVADOS_DEBUG', None) +class StubKeepServers(tutil.ApiClientMock): + + def setUp(self): + super(StubKeepServers, self).setUp() + sock = socket.socket() + sock.bind(('0.0.0.0', 0)) + self.port = sock.getsockname()[1] + sock.close() + self.server = Server(('0.0.0.0', self.port), Handler) + self.thread = threading.Thread(target=self.server.serve_forever) + self.thread.daemon = True # Exit thread if main proc exits + self.thread.start() + self.api_client = self.mock_keep_services( + count=1, + service_host='localhost', + service_port=self.port, + ) + + def tearDown(self): + self.server.shutdown() + super(StubKeepServers, self).tearDown() + + class Server(socketserver.ThreadingMixIn, http.server.HTTPServer, object): allow_reuse_address = 1