|
41 | 41 |
|
42 | 42 | logger = getLogger(__name__) |
43 | 43 |
|
44 | | -if RUNNING_ON_GH: |
45 | | - TEST_SCHEMA = "GH_JOB_{}".format(str(uuid.uuid4()).replace("-", "_")) |
46 | | -else: |
47 | | - TEST_SCHEMA = "python_connector_tests_" + str(uuid.uuid4()).replace("-", "_") |
| 44 | +def _get_worker_specific_schema(): |
| 45 | + """Generate worker-specific schema name for parallel test execution.""" |
| 46 | + base_uuid = str(uuid.uuid4()).replace("-", "_") |
| 47 | + |
| 48 | + # Check if running in pytest-xdist parallel mode |
| 49 | + worker_id = os.getenv("PYTEST_XDIST_WORKER") |
| 50 | + if worker_id: |
| 51 | + # Use worker ID to ensure unique schema per worker |
| 52 | + worker_suffix = worker_id.replace("-", "_") |
| 53 | + if RUNNING_ON_GH: |
| 54 | + return f"GH_JOB_{worker_suffix}_{base_uuid}" |
| 55 | + else: |
| 56 | + return f"python_connector_tests_{worker_suffix}_{base_uuid}" |
| 57 | + else: |
| 58 | + # Single worker mode (original behavior) |
| 59 | + if RUNNING_ON_GH: |
| 60 | + return f"GH_JOB_{base_uuid}" |
| 61 | + else: |
| 62 | + return f"python_connector_tests_{base_uuid}" |
| 63 | + |
| 64 | +TEST_SCHEMA = _get_worker_specific_schema() |
48 | 65 |
|
49 | 66 | if TEST_USING_VENDORED_ARROW: |
50 | 67 | snowflake.connector.cursor.NANOARR_USAGE = ( |
@@ -131,8 +148,15 @@ def get_db_parameters(connection_name: str = "default") -> dict[str, Any]: |
131 | 148 | print_help() |
132 | 149 | sys.exit(2) |
133 | 150 |
|
134 | | - # a unique table name |
135 | | - ret["name"] = "python_tests_" + str(uuid.uuid4()).replace("-", "_") |
| 151 | + # a unique table name (worker-specific for parallel execution) |
| 152 | + base_uuid = str(uuid.uuid4()).replace("-", "_") |
| 153 | + worker_id = os.getenv("PYTEST_XDIST_WORKER") |
| 154 | + if worker_id: |
| 155 | + # Include worker ID to prevent conflicts between parallel workers |
| 156 | + worker_suffix = worker_id.replace("-", "_") |
| 157 | + ret["name"] = f"python_tests_{worker_suffix}_{base_uuid}" |
| 158 | + else: |
| 159 | + ret["name"] = f"python_tests_{base_uuid}" |
136 | 160 | ret["name_wh"] = ret["name"] + "wh" |
137 | 161 |
|
138 | 162 | ret["schema"] = TEST_SCHEMA |
|
0 commit comments