This is an automated email from the ASF dual-hosted git repository. brandonwilliams pushed a commit to branch trunk in repository https://gitbox.apache.org/repos/asf/cassandra-dtest.git
commit 9cd503ce92b7eeb7e7e9557606d46c01b7267aea Author: Brandon Williams <brandonwilli...@apache.org> AuthorDate: Thu Dec 15 09:14:05 2022 -0600 Add python 3.11 support Patch by brandonwilliams; reviewed by bereng for CASSANDRA-18121 --- client_request_metrics_local_remote_test.py | 8 ++++---- conftest.py | 21 ++++++++++++--------- consistency_test.py | 2 +- jmx_test.py | 2 +- pytest.ini | 15 ++++++++++++++- rebuild_test.py | 14 ++++++++------ requirements.txt | 2 +- tools/misc.py | 5 ++++- 8 files changed, 45 insertions(+), 24 deletions(-) diff --git a/client_request_metrics_local_remote_test.py b/client_request_metrics_local_remote_test.py index 476d4626..8d817f9f 100644 --- a/client_request_metrics_local_remote_test.py +++ b/client_request_metrics_local_remote_test.py @@ -9,7 +9,7 @@ since = pytest.mark.since class TestClientRequestMetricsLocalRemote(Tester): def test_write_and_read(self): - session, node = setup(self) + session, node = setup_test(self) read_metrics = ClientRequestMetricsContainer(node, 'Read') write_metrics = ClientRequestMetricsContainer(node, 'Write') @@ -47,7 +47,7 @@ class TestClientRequestMetricsLocalRemote(Tester): assert 0 < (r3_r.remote_requests - r2_r.remote_requests) def test_batch_and_slice(self): - session, node = setup(self) + session, node = setup_test(self) read_metrics = ClientRequestMetricsContainer(node, 'Read') write_metrics = ClientRequestMetricsContainer(node, 'Write') @@ -89,7 +89,7 @@ class TestClientRequestMetricsLocalRemote(Tester): assert 0 < (r3_r.remote_requests - r2_r.remote_requests) def test_paxos(self): - session, node = setup(self) + session, node = setup_test(self) read_metrics = ClientRequestMetricsContainer(node, 'Read') write_metrics = ClientRequestMetricsContainer(node, 'Write') @@ -177,7 +177,7 @@ def setup_schema(session): session.execute("CREATE TABLE test (id int,ord int,val varchar,PRIMARY KEY (id, ord));""") -def setup(obj): +def setup_test(obj): cluster = obj.cluster cluster.populate(2) diff --git a/conftest.py b/conftest.py index fac8f26d..5ba3de80 100644 --- a/conftest.py +++ b/conftest.py @@ -1,5 +1,8 @@ import copy -import collections +try: + import collections.abc as collections +except ImportError: + import collections import logging import os import platform @@ -149,7 +152,7 @@ def fixture_logging_setup(request): log_level = logging.INFO try: # first see if logging level overridden by user as command line argument - log_level_from_option = pytest.config.getoption("--log-level") + log_level_from_option = request.config.getoption("--log-level") if log_level_from_option is not None: log_level = logging.getLevelName(log_level_from_option) else: @@ -158,22 +161,22 @@ def fixture_logging_setup(request): # nope, user didn't specify it as a command line argument to pytest, check if # we have a default in the loaded pytest.ini. Note: words are seperated in variables # in .ini land with a "_" while the command line arguments use "-" - if pytest.config.inicfg.get("log_level") is not None: - log_level = logging.getLevelName(pytest.config.inicfg.get("log_level")) + if request.config.inicfg.get("log_level") is not None: + log_level = logging.getLevelName(request.config.inicfg.get("log_level")) logging.root.setLevel(log_level) logging_format = None try: # first see if logging level overridden by user as command line argument - log_format_from_option = pytest.config.getoption("--log-format") + log_format_from_option = request.config.getoption("--log-format") if log_format_from_option is not None: logging_format = log_format_from_option else: raise ValueError except ValueError: - if pytest.config.inicfg.get("log_format") is not None: - logging_format = pytest.config.inicfg.get("log_format") + if request.config.inicfg.get("log_format") is not None: + logging_format = request.config.inicfg.get("log_format") logging.basicConfig(level=log_level, format=logging_format) @@ -192,8 +195,8 @@ def fixture_logging_setup(request): @pytest.fixture(scope="session") def log_global_env_facts(fixture_dtest_config, fixture_logging_setup): - if pytest.config.pluginmanager.hasplugin('junitxml'): - my_junit = getattr(pytest.config, '_xml', None) + if fixture_dtest_config.config.pluginmanager.hasplugin('junitxml'): + my_junit = getattr(fixture_dtest_config.config, '_xml', None) my_junit.add_global_property('USE_VNODES', fixture_dtest_config.use_vnodes) diff --git a/consistency_test.py b/consistency_test.py index 0175adfd..cf9056bb 100644 --- a/consistency_test.py +++ b/consistency_test.py @@ -556,7 +556,7 @@ class TestAccuracy(TestHelper): logger.debug("Waiting for workers to complete") while exceptions_queue.empty(): time.sleep(0.1) - if len([t for t in threads if t.isAlive()]) == 0: + if len([t for t in threads if t.is_alive()]) == 0: break if not exceptions_queue.empty(): diff --git a/jmx_test.py b/jmx_test.py index 762bb09c..8f7f8834 100644 --- a/jmx_test.py +++ b/jmx_test.py @@ -42,7 +42,7 @@ class TestJMX(Tester): node1.flush() node1.stop(gently=False) - with pytest.raises(ToolError, message=r"ConnectException: 'Connection refused( \(Connection refused\))?'."): + with pytest.raises(ToolError, match=r"ConnectException: 'Connection refused( \(Connection refused\))?'."): node1.nodetool('netstats') # don't wait; we're testing for when nodetool is called on a node mid-startup diff --git a/pytest.ini b/pytest.ini index c8e85d44..6054229a 100644 --- a/pytest.ini +++ b/pytest.ini @@ -1,7 +1,20 @@ [pytest] +addopts = --show-capture=stdout python_files = test_*.py *_test.py *_tests.py junit_suite_name = Cassandra dtests -log_print = True log_level = INFO log_format = %(asctime)s,%(msecs)d %(name)s %(levelname)s %(message)s timeout = 900 +markers = + since + vnodes + no_vnodes + resource_intensive + offheap_memtables + no_offheap_memtables + ported_to_in_jvm + env + skip_version + upgrade_test + depends_cqlshlib + depends_driver diff --git a/rebuild_test.py b/rebuild_test.py index 6f3a4455..3837ed18 100644 --- a/rebuild_test.py +++ b/rebuild_test.py @@ -217,17 +217,17 @@ class TestRebuild(Tester): node3.byteman_submit(script) # First rebuild must fail and data must be incomplete - with pytest.raises(ToolError, message='Unexpected: SUCCEED'): + with pytest.raises(ToolError): logger.debug('Executing first rebuild -> '), node3.nodetool('rebuild dc1') - logger.debug('Expected: FAILED') + pytest.fail("Expected: FAILED") session.execute('USE ks') - with pytest.raises(AssertionError, message='Unexpected: COMPLETE'): + with pytest.raises(AssertionError): logger.debug('Checking data is complete -> '), for i in range(0, 20000): query_c1c2(session, i, ConsistencyLevel.LOCAL_ONE) - logger.debug('Expected: INCOMPLETE') + pytest.fail('Expected: INCOMPLETE') logger.debug('Executing second rebuild -> '), node3.nodetool('rebuild dc1') @@ -336,8 +336,9 @@ class TestRebuild(Tester): session = self.patient_exclusive_cql_connection(node1) session.execute("CREATE KEYSPACE ks1 WITH replication = {'class':'SimpleStrategy', 'replication_factor':2};") - with pytest.raises(ToolError, match='is not a range that is owned by this node'): + with pytest.raises(ToolError): node1.nodetool('rebuild -ks ks1 -ts (%s,%s]' % (node1_token, node2_token)) + pytest.fail("range should not be owned by this node") @since('3.10') @pytest.mark.no_vnodes @@ -372,8 +373,9 @@ class TestRebuild(Tester): session = self.patient_exclusive_cql_connection(node1) session.execute("CREATE KEYSPACE ks1 WITH replication = {'class':'SimpleStrategy', 'replication_factor':2};") - with pytest.raises(ToolError, message='Unable to find sufficient sources for streaming range'): + with pytest.raises(ToolError): node1.nodetool('rebuild -ks ks1 -ts (%s,%s] -s %s' % (node3_token, node1_token, node3_address)) + pytest.fail("should not find sufficient sources") @since('3.10') @pytest.mark.no_vnodes diff --git a/requirements.txt b/requirements.txt index d7c396a9..38c13732 100644 --- a/requirements.txt +++ b/requirements.txt @@ -15,7 +15,7 @@ docopt enum34 flaky mock -pytest==3.6.4 +pytest>=6.5.0 pytest-timeout==1.4.2 pytest-repeat parse diff --git a/tools/misc.py b/tools/misc.py index 542a889a..2f43d9df 100644 --- a/tools/misc.py +++ b/tools/misc.py @@ -5,7 +5,10 @@ import hashlib import logging import pytest -from collections import Mapping +try: + from collections.abc import Mapping +except ImportError: + from collections import Mapping from ccmlib.node import Node --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org For additional commands, e-mail: commits-h...@cassandra.apache.org