Skip to content

Commit 35d4347

Browse files
GitHKAndrei Neaguodeimaiz
authored
Fix wrong redis key (#1504)
* pylint will now output the error + where to look * keep alive will now be correctly set avoids creating corrupted keys * adjusted a couple of missing splits * refactored pylint assert test (maybe) * added missing requirement for testing and dev * removing 1 level of search depth * installing in editable mode * added missing dependency to catalog * added depoendencies for service-library * fixing paths * added storage service missing requirements * fixed naming, it is now clearer * triggering a new build * enhanced output Co-authored-by: Andrei Neagu <[email protected]> Co-authored-by: Odei Maiz <[email protected]>
1 parent 55efd02 commit 35d4347

File tree

17 files changed

+67
-38
lines changed

17 files changed

+67
-38
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
""" Helps with running Pylint tests on different modules """
2+
import subprocess
3+
4+
5+
AUTODETECT = 0
6+
7+
8+
def assert_pylint_is_passing(pylintrc, package_dir, number_of_jobs: int = AUTODETECT):
9+
"""Runs Pylint with given inputs. In case of error some helpful Pylint messages are displayed
10+
11+
This is used in different packages
12+
"""
13+
command = f"pylint --jobs={number_of_jobs} --rcfile {pylintrc} -v {package_dir}".split(
14+
" "
15+
)
16+
pipes = subprocess.Popen(command, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
17+
std_out, _ = pipes.communicate()
18+
if pipes.returncode != 0:
19+
print(f'>>>> Exit code "{pipes.returncode}"\n{std_out.decode("utf-8")}\n<<<<')
20+
assert False, "Pylint failed with error, check this test's stdout to fix it"

packages/service-library/requirements/ci.txt

+3
Original file line numberDiff line numberDiff line change
@@ -9,5 +9,8 @@
99
# installs base + tests requirements
1010
-r _test.txt
1111

12+
# installs this repo's packages
13+
../pytest-simcore/
14+
1215
# current module
1316
.

packages/service-library/requirements/dev.txt

+3
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,9 @@
99
# installs base + tests requirements
1010
-r _test.txt
1111

12+
# installs this repo's packages
13+
-e ../pytest-simcore/
14+
1215
# current module
1316
-e .
1417

packages/service-library/tests/test_package.py

+2-7
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,11 @@
55

66
import os
77
import re
8-
import subprocess
98
from pathlib import Path
109

1110
import pytest
1211
from servicelib.utils import is_osparc_repo_dir, search_osparc_repo_dir
12+
from pytest_simcore.helpers.utils_pylint import assert_pylint_is_passing
1313

1414

1515
@pytest.fixture
@@ -20,12 +20,7 @@ def pylintrc(osparc_simcore_root_dir):
2020

2121

2222
def test_run_pylint(pylintrc, package_dir):
23-
try:
24-
AUTODETECT = 0
25-
cmd = f"pylint --jobs={AUTODETECT} --rcfile {pylintrc} -v {package_dir}".split()
26-
assert subprocess.check_call(cmd) == 0
27-
except subprocess.CalledProcessError as err:
28-
pytest.fail("Linting error. Linter existed with code %d" % err.returncode)
23+
assert_pylint_is_passing(pylintrc=pylintrc, package_dir=package_dir)
2924

3025

3126
def test_no_pdbs_in_place(package_dir):

services/api-gateway/requirements/ci.txt

+3
Original file line numberDiff line numberDiff line change
@@ -9,5 +9,8 @@
99
# installs base + tests requirements
1010
-r _test.txt
1111

12+
# installs this repo's packages
13+
../../packages/pytest-simcore/
14+
1215
# installs current package
1316
.

services/api-gateway/requirements/dev.txt

+3
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,9 @@
99
# installs base + tests requirements
1010
-r _test.txt
1111

12+
# installs this repo's packages
13+
-e ../../packages/pytest-simcore/
14+
1215
# installs current package
1316
-e .
1417

services/api-gateway/tests/unit/test_code_syntax.py

+3-3
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,9 @@
44

55
import os
66
import re
7-
import subprocess
87
from pathlib import Path
8+
from pytest_simcore.helpers.utils_pylint import assert_pylint_is_passing
9+
910

1011
import pytest
1112

@@ -18,8 +19,7 @@ def pylintrc(osparc_simcore_root_dir):
1819

1920

2021
def test_run_pylint(pylintrc, package_dir):
21-
cmd = "pylint --jobs 0 --rcfile {} -v {}".format(pylintrc, package_dir)
22-
assert subprocess.check_call(cmd.split()) == 0
22+
assert_pylint_is_passing(pylintrc=pylintrc, package_dir=package_dir)
2323

2424

2525
def test_no_pdbs_in_place(package_dir):

services/catalog/requirements/ci.txt

+1
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111

1212
# installs this repo's packages
1313
../../packages/postgres-database
14+
../../packages/pytest-simcore/
1415

1516
# installs current package
1617
.

services/catalog/requirements/dev.txt

+1
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111

1212
# installs this repo's packages
1313
-e ../../packages/postgres-database/
14+
-e ../../packages/pytest-simcore/
1415

1516
# installs current package
1617
-e .

services/catalog/tests/unit/test_package.py

+2-3
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
import os
66
import re
7-
import subprocess
7+
from pytest_simcore.helpers.utils_pylint import assert_pylint_is_passing
88
from pathlib import Path
99

1010
import pytest
@@ -22,8 +22,7 @@ def pylintrc(project_slug_dir, osparc_simcore_root_dir):
2222

2323

2424
def test_run_pylint(pylintrc, package_dir):
25-
cmd = "pylint --jobs 0 --rcfile {} -v {}".format(pylintrc, package_dir)
26-
assert subprocess.check_call(cmd.split()) == 0
25+
assert_pylint_is_passing(pylintrc=pylintrc, package_dir=package_dir)
2726

2827

2928
# FIXME: main entrypoint

services/sidecar/tests/unit/test_code_syntax.py

+3-5
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@
44

55
import os
66
import re
7-
import subprocess
87
from pathlib import Path
8+
from pytest_simcore.helpers.utils_pylint import assert_pylint_is_passing
99

1010
import pytest
1111

@@ -18,9 +18,7 @@ def pylintrc(osparc_simcore_root_dir):
1818

1919

2020
def test_run_pylint(pylintrc, package_dir):
21-
cmd = "pylint --jobs 0 --rcfile {} -v {}".format(pylintrc, package_dir)
22-
proc: subprocess.CompletedProcess = subprocess.run(cmd.split(), check=True)
23-
assert proc.returncode == 0, f"pylint error: {proc.stdout}"
21+
assert_pylint_is_passing(pylintrc=pylintrc, package_dir=package_dir)
2422

2523

2624
def test_no_pdbs_in_place(package_dir):
@@ -33,4 +31,4 @@ def test_no_pdbs_in_place(package_dir):
3331
code = pypth.read_text()
3432
found = MATCH.findall(code)
3533
assert not found, "pbd.set_trace found in %s" % pypth
36-
dirs[:] = [d for d in dirs if d not in EXCLUDE]
34+
dirs[:] = [d for d in dirs if d not in EXCLUDE]

services/storage/requirements/ci.txt

+1
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
../../packages/postgres-database/
1515
../../packages/simcore-sdk/
1616
../../packages/service-library/
17+
../../packages/pytest-simcore/
1718

1819
# installs current package
1920
.

services/storage/requirements/dev.txt

+1
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
-e ../../packages/postgres-database/
1515
-e ../../packages/simcore-sdk/
1616
-e ../../packages/service-library
17+
-e ../../packages/pytest-simcore/
1718

1819
# installs current package
1920
-e .

services/storage/tests/test_package.py

+2-7
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
# W0621: Redefining name ... from outer scope
66
# pylint: disable=W0621
77

8-
import subprocess
8+
from pytest_simcore.helpers.utils_pylint import assert_pylint_is_passing
99

1010
import pytest
1111

@@ -20,12 +20,7 @@ def pylintrc(osparc_simcore_root_dir):
2020

2121

2222
def test_run_pylint(pylintrc, package_dir):
23-
try:
24-
AUTODETECT = 0
25-
cmd = f"pylint --jobs={AUTODETECT} --rcfile {pylintrc} -v {package_dir}".split()
26-
assert subprocess.check_call(cmd) == 0
27-
except subprocess.CalledProcessError as err:
28-
pytest.fail("Linting error. Linter existed with code %d" % err.returncode)
23+
assert_pylint_is_passing(pylintrc=pylintrc, package_dir=package_dir)
2924

3025

3126
def test_main(here): # pylint: disable=unused-variable

services/web/server/src/simcore_service_webserver/resource_manager/websocket_manager.py

+7
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,13 @@ async def remove_socket_id(self) -> None:
7676
self._resource_key(), False, get_service_deletion_timeout(self.app)
7777
)
7878

79+
async def set_heartbeat(self) -> None:
80+
"""Refreshes heartbeat """
81+
registry = get_registry(self.app)
82+
await registry.set_key_alive(
83+
self._resource_key(), False, get_service_deletion_timeout(self.app)
84+
)
85+
7986
async def find_socket_ids(self) -> List[str]:
8087
log.debug(
8188
"user %s/tab %s finding %s from registry...",

services/web/server/src/simcore_service_webserver/socketio/handlers.py

+10-6
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
from socketio.exceptions import ConnectionRefusedError as SocketIOConnectionError
1818

1919
from ..login.decorators import RQT_USERID_KEY, login_required
20-
from ..resource_manager.websocket_manager import managed_resource, get_registry
20+
from ..resource_manager.websocket_manager import managed_resource
2121
from ..resource_manager.config import get_service_deletion_timeout
2222
from .config import get_socket_server
2323
from .handlers_utils import register_socketio_handler
@@ -57,7 +57,7 @@ async def connect(sid: str, environ: Dict, app: web.Application) -> bool:
5757
log.info("Sending set_heartbeat_emit_interval with %s", emit_interval)
5858

5959
user_id = request.get(RQT_USERID_KEY, ANONYMOUS_USER_ID)
60-
await post_messages(app, user_id, {'set_heartbeat_emit_interval': emit_interval})
60+
await post_messages(app, user_id, {"set_heartbeat_emit_interval": emit_interval})
6161

6262
return True
6363

@@ -147,6 +147,7 @@ async def disconnect(sid: str, app: web.Application) -> None:
147147
str(socketio_session),
148148
)
149149

150+
150151
@register_socketio_handler
151152
async def client_heartbeat(sid: str, _: Any, app: web.Application) -> None:
152153
"""JS client invokes this handler to signal its presence.
@@ -161,7 +162,10 @@ async def client_heartbeat(sid: str, _: Any, app: web.Application) -> None:
161162
"""
162163
sio = get_socket_server(app)
163164
async with sio.session(sid) as socketio_session:
164-
registry = get_registry(app)
165-
await registry.set_key_alive(
166-
socketio_session, False, get_service_deletion_timeout(app)
167-
)
165+
if "user_id" not in socketio_session:
166+
return
167+
168+
user_id = socketio_session["user_id"]
169+
client_session_id = socketio_session["client_session_id"]
170+
with managed_resource(user_id, client_session_id, app) as rt:
171+
await rt.set_heartbeat()

services/web/server/tests/unit/test_package.py

+2-7
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
# pylint:disable=redefined-outer-name
66

77
import pytest
8-
import subprocess
8+
from pytest_simcore.helpers.utils_pylint import assert_pylint_is_passing
99
import os
1010
import re
1111

@@ -22,12 +22,7 @@ def pylintrc(osparc_simcore_root_dir):
2222

2323

2424
def test_run_pylint(pylintrc, package_dir):
25-
try:
26-
AUTODETECT = 0
27-
cmd = f"pylint --jobs={AUTODETECT} --rcfile {pylintrc} -v {package_dir}".split()
28-
assert subprocess.check_call(cmd) == 0
29-
except subprocess.CalledProcessError as err:
30-
pytest.fail("Linting error. Linter existed with code %d" % err.returncode)
25+
assert_pylint_is_passing(pylintrc=pylintrc, package_dir=package_dir)
3126

3227

3328
def test_main(here): # pylint: disable=unused-variable

0 commit comments

Comments
 (0)