From 4b82291c402f876a57a115c5a6a04185bfaaf096 Mon Sep 17 00:00:00 2001 From: Josh Marshall Date: Tue, 30 Mar 2021 15:20:57 +0900 Subject: Bypassing TCP sockopts for Unix sockets, fixing Unix teardowns. --- jsonrpclib/SimpleJSONRPCServer.py | 8 ++++++++ tests.py | 10 +++++++--- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/jsonrpclib/SimpleJSONRPCServer.py b/jsonrpclib/SimpleJSONRPCServer.py index 5addcf0..0bb1833 100644 --- a/jsonrpclib/SimpleJSONRPCServer.py +++ b/jsonrpclib/SimpleJSONRPCServer.py @@ -189,6 +189,11 @@ class SimpleJSONRPCRequestHandler( self.connection.shutdown(1) +class SimpleJSONRPCUnixRequestHandler(SimpleJSONRPCRequestHandler): + + disable_nagle_algorithm = False + + class SimpleJSONRPCServer(socketserver.TCPServer, SimpleJSONRPCDispatcher): allow_reuse_address = True @@ -210,6 +215,9 @@ class SimpleJSONRPCServer(socketserver.TCPServer, SimpleJSONRPCDispatcher): except OSError: logging.warning("Could not unlink socket %s", addr) + if requestHandler == SimpleJSONRPCRequestHandler: + requestHandler = SimpleJSONRPCUnixRequestHandler + socketserver.TCPServer.__init__( self, addr, requestHandler, bind_and_activate) if fcntl is not None and hasattr(fcntl, 'FD_CLOEXEC'): diff --git a/tests.py b/tests.py index e3e74de..9a104e0 100644 --- a/tests.py +++ b/tests.py @@ -330,7 +330,10 @@ class InternalTests(unittest.TestCase): def test_single_namespace(self): client = self.get_client() + response = client.namespace.sum(1, 2, 4) + self.assertEqual(7, response) + request = json.loads(history.request) response = json.loads(history.response) verify_request = { @@ -342,8 +345,8 @@ class InternalTests(unittest.TestCase): } verify_request['id'] = request['id'] verify_response['id'] = request['id'] - self.assertTrue(verify_request == request) - self.assertTrue(verify_response == response) + self.assertEqual(verify_request, request) + self.assertEqual(verify_response, response) def test_history_defaults_to_20(self): client = self.get_client() @@ -445,6 +448,7 @@ class UnixSocketInternalTests(InternalTests): but over a Unix socket instead of a TCP socket. """ def setUp(self): + super().setUp() suffix = "%d.sock" % get_port() # Open to safer, alternative processes @@ -461,7 +465,6 @@ class UnixSocketInternalTests(InternalTests): ) def get_client(self): - print("Serving on {}".format(self.port)) return Server('unix:/%s' % self.port) def tearDown(self): @@ -551,6 +554,7 @@ def server_set_up(addr, address_family=socket.AF_INET): server.shutdown() server_proc = Thread(target=server.serve_forever) + server_proc.daemon = True server_proc.stop = stop server_proc.start() return server_proc -- cgit v1.2.1 From 2a4158cf4c07cdb7e5337d68addd83d00b0c0746 Mon Sep 17 00:00:00 2001 From: Josh Marshall Date: Tue, 30 Mar 2021 15:25:39 +0900 Subject: Using different python image in Circle. --- .circleci/config.yml | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 569417e..4839fb4 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -1,11 +1,9 @@ version: 2.1 -orbs: - python: circleci/python@0.2.1 - jobs: build-and-test: - executor: python/default + docker: + - image: cimg/python:3.9.2 steps: - checkout - restore_cache: -- cgit v1.2.1 From bb5f0f9e24d148dec055d4e958eec9f6bcb5a93d Mon Sep 17 00:00:00 2001 From: Josh Marshall Date: Tue, 30 Mar 2021 15:27:12 +0900 Subject: Separate pyenv commands in Circle. --- .circleci/config.yml | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 4839fb4..df417a1 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -15,9 +15,11 @@ jobs: - run: name: Install CI dependencies command: pip3 install tox twine tox-pyenv - - run: - name: Install Python versions - command: pyenv install --skip-existing 3.5-dev 3.6-dev 3.7-dev 3.8-dev 3.9-dev + - run: pyenv install --skip-existing 3.5-dev + - run: pyenv install --skip-existing 3.6-dev + - run: pyenv install --skip-existing 3.7-dev + - run: pyenv install --skip-existing 3.8-dev + - run: pyenv install --skip-existing 3.9-dev - run: name: Set local Python versions command: pyenv local 3.5-dev 3.6-dev 3.7-dev 3.8-dev 3.9-dev -- cgit v1.2.1 From 822561da30dbc5720e8540e246a06cb113cace34 Mon Sep 17 00:00:00 2001 From: Josh Marshall Date: Tue, 30 Mar 2021 16:14:56 +0900 Subject: Don't run flake8 as part of tox. --- .circleci/config.yml | 2 +- tox.ini | 3 +-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index df417a1..b621812 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -22,7 +22,7 @@ jobs: - run: pyenv install --skip-existing 3.9-dev - run: name: Set local Python versions - command: pyenv local 3.5-dev 3.6-dev 3.7-dev 3.8-dev 3.9-dev + command: pyenv local 3.5-dev 3.6-dev 3.7-dev 3.8-dev 3.9-dev 3.9.2 - save_cache: key: dev-cache-{{ checksum dev-requirements.txt }} paths: diff --git a/tox.ini b/tox.ini index 3b2ff0d..9b53f09 100644 --- a/tox.ini +++ b/tox.ini @@ -2,6 +2,5 @@ envlist = py35,py36,py37,py38,py39 [testenv] deps= -rdev-requirements.txt -commands=flake8 - coverage run -m pytest tests.py +commands=coverage run -m pytest tests.py coverage report -m jsonrpclib/*.py -- cgit v1.2.1