Skip to content

Commit e0f24c0

Browse files
committed
Merge 'test.py: merge all 'Topology' suite types int one folder 'cluster'' from Artsiom Mishuta
Now that we support suite subfolders, there is no need to create an own suite for object_store and auth_cluster, topology, topology_custom. this PR merge all these folders into one: 'cluster" this pr also introduce and apply 'prepare_3_nodes_cluster' fixture that allow preparing non-dirty 3 nodes cluster that can be reused between tests(for tests that was in topology folder) number of tests in master release -3461 dev -3472 debug -3446 number of tests in this PR release -3460 dev -3471 debug -3445 There is a minus one test in each mode because It was 2 test_topology_failure_recovery files(topology and topology_custom) with the same utility functions but different test cases. This PR merged them into one Closes scylladb#22917 * github.com:scylladb/scylladb: test.py: merge object_store into cluster folder test.py: merge auth_cluster into cluster folter test.py: rename topology_custom folder to cluster test.py: merge topology test suite into topology_custom test.py delete conftest in topology_custom test.py apply prepare_3_nodes_cluster in topology test.py: introduce prepare_3_nodes_cluster marker
2 parents c13b6c9 + 97a620c commit e0f24c0

File tree

155 files changed

+332
-331
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

155 files changed

+332
-331
lines changed

test/auth_cluster/suite.yaml

Lines changed: 0 additions & 8 deletions
This file was deleted.
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
#
2+
# Copyright (C) 2025-present ScyllaDB
3+
#
4+
# SPDX-License-Identifier: LicenseRef-ScyllaDB-Source-Available-1.0
5+
#
6+
# This file configures pytest for all tests in this directory, and also
7+
# defines common test fixtures for all of them to use
8+
9+
# migrated from old suite.yaml when tasks tests was in separate folder auth_cluster
10+
extra_scylla_config_options = {'authenticator':'PasswordAuthenticator',
11+
'authorizer':'CassandraAuthorizer'}
Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@
66
# This file configures pytest for all tests in this directory, and also
77
# defines common test fixtures for all of them to use
88
from pytest import Config
9-
from test.topology.conftest import *
109

1110
def pytest_configure(config: Config):
1211
config.option.auth_username = 'cassandra'

test/auth_cluster/test_auth_no_quorum.py renamed to test/cluster/auth_cluster/test_auth_no_quorum.py

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,8 @@
1111
from cassandra.auth import PlainTextAuthProvider
1212
from test.pylib.rest_client import read_barrier
1313
from test.pylib.util import unique_name, wait_for_cql_and_get_hosts
14-
from test.topology.util import trigger_snapshot
14+
from test.cluster.util import trigger_snapshot
15+
from test.cluster.auth_cluster import extra_scylla_config_options as auth_config
1516

1617

1718
"""
@@ -21,6 +22,7 @@
2122
@pytest.mark.asyncio
2223
async def test_auth_no_quorum(manager: ManagerClient) -> None:
2324
config = {
25+
**auth_config,
2426
# disable auth cache
2527
'permissions_validity_in_ms': 0,
2628
'permissions_update_interval_in_ms': 0,
@@ -60,7 +62,7 @@ async def test_auth_no_quorum(manager: ManagerClient) -> None:
6062
"""
6163
@pytest.mark.asyncio
6264
async def test_auth_raft_snapshot_transfer(manager: ManagerClient) -> None:
63-
servers = await manager.servers_add(1)
65+
servers = await manager.servers_add(1, config=auth_config)
6466

6567
cql = manager.get_cql()
6668
await wait_for_cql_and_get_hosts(cql, servers, time.time() + 60)
@@ -73,7 +75,7 @@ async def test_auth_raft_snapshot_transfer(manager: ManagerClient) -> None:
7375
await trigger_snapshot(manager, servers[0])
7476

7577
# on startup node should receive snapshot
76-
snapshot_receiving_server = await manager.server_add()
78+
snapshot_receiving_server = await manager.server_add(config=auth_config)
7779
servers.append(snapshot_receiving_server)
7880
await wait_for_cql_and_get_hosts(cql, servers, time.time() + 60)
7981
await manager.servers_see_each_other(servers)

test/auth_cluster/test_auth_password_ensured.py renamed to test/cluster/auth_cluster/test_auth_password_ensured.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,11 @@
99
import time
1010

1111
from cassandra.cluster import NoHostAvailable
12-
from test.auth_cluster.conftest import skip_mode
12+
from test.cluster.conftest import skip_mode
1313
from test.pylib.manager_client import ManagerClient, ServerUpState
1414
from test.pylib.util import wait_for
15+
from test.cluster.auth_cluster import extra_scylla_config_options as auth_config
16+
1517

1618
async def repeat_if_host_unavailable(f):
1719
async def try_execute(f):
@@ -30,6 +32,7 @@ async def try_execute(f):
3032
@skip_mode('release', 'error injection is disabled in release mode')
3133
async def test_auth_password_ensured(manager: ManagerClient) -> None:
3234
config = {
35+
**auth_config,
3336
'authenticator': "com.scylladb.auth.TransitionalAuthenticator",
3437
'error_injections_at_startup': ['password_authenticator_start_pause'],
3538
}

test/auth_cluster/test_auth_raft_command_split.py renamed to test/cluster/auth_cluster/test_auth_raft_command_split.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,14 +9,15 @@
99
import pytest
1010
from test.pylib.rest_client import inject_error, read_barrier
1111
from test.pylib.util import unique_name
12+
from test.cluster.auth_cluster import extra_scylla_config_options as auth_config
1213

1314

1415
"""
1516
Tests case when bigger auth operation is split into multiple raft commands.
1617
"""
1718
@pytest.mark.asyncio
1819
async def test_auth_raft_command_split(manager: ManagerClient) -> None:
19-
servers = await manager.servers_add(3)
20+
servers = await manager.servers_add(3, config=auth_config)
2021
cql, hosts = await manager.get_ready_cql(servers)
2122

2223
initial_perms = await cql.run_async("SELECT * FROM system.role_permissions")

test/auth_cluster/test_auth_v2_migration.py renamed to test/cluster/auth_cluster/test_auth_v2_migration.py

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,10 @@
1313
from test.pylib.rest_client import get_host_api_address, read_barrier
1414
from test.pylib.util import wait_for_cql_and_get_hosts, unique_name
1515
from cassandra.cluster import ConsistencyLevel
16-
from test.topology.util import wait_until_topology_upgrade_finishes, enter_recovery_state, reconnect_driver, \
16+
from test.cluster.util import wait_until_topology_upgrade_finishes, enter_recovery_state, reconnect_driver, \
1717
delete_raft_topology_state, delete_raft_data_and_upgrade_state, wait_until_upgrade_finishes
18+
from test.cluster.auth_cluster import extra_scylla_config_options as auth_config
19+
1820

1921
def auth_data():
2022
return [
@@ -147,12 +149,12 @@ async def check_auth_v2_works(manager: ManagerClient, hosts):
147149
@pytest.mark.asyncio
148150
async def test_auth_v2_migration(request, manager: ManagerClient):
149151
# First, force the first node to start in legacy mode
150-
cfg = {'force_gossip_topology_changes': True}
152+
cfg = {**auth_config, 'force_gossip_topology_changes': True, 'enable_tablets': False}
151153

152154
servers = [await manager.server_add(config=cfg)]
153155
# Enable raft-based node operations for subsequent nodes - they should fall back to
154156
# using gossiper-based node operations
155-
del cfg['force_gossip_topology_changes']
157+
cfg.pop('force_gossip_topology_changes')
156158

157159
servers += [await manager.server_add(config=cfg) for _ in range(2)]
158160
cql = manager.cql
@@ -184,7 +186,7 @@ async def test_auth_v2_migration(request, manager: ManagerClient):
184186

185187
@pytest.mark.asyncio
186188
async def test_auth_v2_during_recovery(manager: ManagerClient):
187-
servers = await manager.servers_add(3)
189+
servers = await manager.servers_add(3, config=auth_config)
188190
cql, hosts = await manager.get_ready_cql(servers)
189191

190192
logging.info("Checking auth version before recovery")

test/auth_cluster/test_maintenance_socket.py renamed to test/cluster/auth_cluster/test_maintenance_socket.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,8 @@
1111
from test.pylib.manager_client import ManagerClient
1212

1313
import pytest
14+
from test.cluster.auth_cluster import extra_scylla_config_options as auth_config
15+
1416

1517
@pytest.mark.asyncio
1618
async def test_maintenance_socket(manager: ManagerClient):
@@ -19,6 +21,7 @@ async def test_maintenance_socket(manager: ManagerClient):
1921
even if the authentication is enabled on the regular port.
2022
"""
2123
config = {
24+
**auth_config,
2225
"authenticator": "PasswordAuthenticator",
2326
"authorizer": "CassandraAuthorizer",
2427
}

test/auth_cluster/test_raft_service_levels.py renamed to test/cluster/auth_cluster/test_raft_service_levels.py

Lines changed: 15 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -10,13 +10,14 @@
1010
from test.pylib.rest_client import get_host_api_address, read_barrier
1111
from test.pylib.util import unique_name, wait_for_cql_and_get_hosts
1212
from test.pylib.manager_client import ManagerClient
13-
from test.topology.util import trigger_snapshot, wait_until_topology_upgrade_finishes, enter_recovery_state, reconnect_driver, \
13+
from test.cluster.util import trigger_snapshot, wait_until_topology_upgrade_finishes, enter_recovery_state, reconnect_driver, \
1414
delete_raft_topology_state, delete_raft_data_and_upgrade_state, wait_until_upgrade_finishes, wait_for_token_ring_and_group0_consistency
15-
from test.topology.conftest import skip_mode
15+
from test.cluster.conftest import skip_mode
1616
from cassandra import ConsistencyLevel
1717
from cassandra.query import SimpleStatement
1818
from cassandra.protocol import InvalidRequest
1919
from cassandra.auth import PlainTextAuthProvider
20+
from test.cluster.auth_cluster import extra_scylla_config_options as auth_config
2021

2122

2223
logger = logging.getLogger(__name__)
@@ -28,7 +29,7 @@ async def test_service_levels_snapshot(manager: ManagerClient):
2829
Add 10 service levels. Start new server and it should get a snapshot on bootstrap.
2930
Stop 3 `old` servers and query the new server to validete if it has the same service levels.
3031
"""
31-
servers = await manager.servers_add(3)
32+
servers = await manager.servers_add(3, config=auth_config)
3233
cql = manager.get_cql()
3334
await wait_for_cql_and_get_hosts(cql, servers, time.time() + 60)
3435
await manager.servers_see_each_other(servers)
@@ -44,7 +45,7 @@ async def test_service_levels_snapshot(manager: ManagerClient):
4445
host0 = cql.cluster.metadata.get_host(servers[0].ip_addr)
4546
result = await cql.run_async("SELECT service_level FROM system.service_levels_v2", host=host0)
4647

47-
new_server = await manager.server_add()
48+
new_server = await manager.server_add(config=auth_config)
4849
all_servers = servers + [new_server]
4950
await wait_for_cql_and_get_hosts(cql, all_servers, time.time() + 60)
5051
await manager.servers_see_each_other(all_servers)
@@ -61,12 +62,12 @@ async def test_service_levels_snapshot(manager: ManagerClient):
6162
@pytest.mark.asyncio
6263
async def test_service_levels_upgrade(request, manager: ManagerClient):
6364
# First, force the first node to start in legacy mode
64-
cfg = {'force_gossip_topology_changes': True}
65+
cfg = {**auth_config, 'force_gossip_topology_changes': True, 'enable_tablets': False}
6566

6667
servers = [await manager.server_add(config=cfg)]
6768
# Enable raft-based node operations for subsequent nodes - they should fall back to
6869
# using gossiper-based node operations
69-
del cfg['force_gossip_topology_changes']
70+
cfg.pop('force_gossip_topology_changes')
7071

7172
servers += [await manager.server_add(config=cfg) for _ in range(2)]
7273
cql = manager.get_cql()
@@ -105,7 +106,7 @@ async def test_service_levels_upgrade(request, manager: ManagerClient):
105106

106107
@pytest.mark.asyncio
107108
async def test_service_levels_work_during_recovery(manager: ManagerClient):
108-
servers = await manager.servers_add(3)
109+
servers = await manager.servers_add(3, config=auth_config)
109110

110111
logging.info("Waiting until driver connects to every server")
111112
cql = manager.get_cql()
@@ -235,7 +236,7 @@ async def assert_connections_params(manager: ManagerClient, hosts, expect):
235236
@pytest.mark.asyncio
236237
@skip_mode('release', 'cql server testing REST API is not supported in release mode')
237238
async def test_connections_parameters_auto_update(manager: ManagerClient, build_mode):
238-
servers = await manager.servers_add(3)
239+
servers = await manager.servers_add(3, config=auth_config)
239240
cql = manager.get_cql()
240241
hosts = await wait_for_cql_and_get_hosts(cql, servers, time.time() + 60)
241242

@@ -318,7 +319,7 @@ async def test_connections_parameters_auto_update(manager: ManagerClient, build_
318319

319320
@pytest.mark.asyncio
320321
async def test_service_level_cache_after_restart(manager: ManagerClient):
321-
servers = await manager.servers_add(1)
322+
servers = await manager.servers_add(1, config=auth_config)
322323
cql = manager.get_cql()
323324
hosts = await wait_for_cql_and_get_hosts(cql, servers, time.time() + 60)
324325

@@ -379,9 +380,11 @@ async def test_workload_prioritization_upgrade(manager: ManagerClient):
379380
# Using error injection, the test disables WORKLOAD_PRIORITIZATION feature
380381
# and removes `shares` column from system_distributed.service_levels table.
381382
config = {
383+
**auth_config,
382384
'authenticator': 'AllowAllAuthenticator',
383385
'authorizer': 'AllowAllAuthorizer',
384386
'force_gossip_topology_changes': True,
387+
'enable_tablets': False,
385388
'error_injections_at_startup': [
386389
{
387390
'name': 'suppress_features',
@@ -417,7 +420,7 @@ async def test_workload_prioritization_upgrade(manager: ManagerClient):
417420
@pytest.mark.asyncio
418421
@skip_mode('release', 'error injection is disabled in release mode')
419422
async def test_service_levels_over_limit(manager: ManagerClient):
420-
srv = await manager.server_add(config={
423+
srv = await manager.server_add(config={**auth_config,
421424
"error_injections_at_startup": ['allow_service_level_over_limit']
422425
})
423426
await manager.server_start(srv.server_id)
@@ -445,7 +448,7 @@ async def test_service_levels_over_limit(manager: ManagerClient):
445448
# Reproduces issue scylla-enterprise#4912
446449
@pytest.mark.asyncio
447450
async def test_service_level_metric_name_change(manager: ManagerClient) -> None:
448-
servers = await manager.servers_add(2)
451+
servers = await manager.servers_add(2, config=auth_config)
449452
s = servers[0]
450453
cql = manager.get_cql()
451454
[h] = await wait_for_cql_and_get_hosts(cql, [s], time.time() + 60)
@@ -476,5 +479,5 @@ async def test_service_level_metric_name_change(manager: ManagerClient) -> None:
476479
await cql.run_async(f"DROP SERVICE LEVEL {sl2}", host=h)
477480

478481
# Check if group0 is healthy
479-
s2 = await manager.server_add()
482+
s2 = await manager.server_add(config=auth_config)
480483
await wait_for_token_ring_and_group0_consistency(manager, time.time() + 30)

0 commit comments

Comments
 (0)