Skip to content

Commit a476825

Browse files
authored
CI: avoid port-already-in-use errors (#40282)
1 parent 28a839b commit a476825

File tree

1 file changed

+31
-26
lines changed

1 file changed

+31
-26
lines changed

pandas/tests/io/test_user_agent.py

Lines changed: 31 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -179,39 +179,40 @@ def do_GET(self):
179179

180180

181181
@pytest.mark.parametrize(
182-
"responder, read_method, port, parquet_engine",
182+
"responder, read_method, parquet_engine",
183183
[
184-
(CSVUserAgentResponder, pd.read_csv, 34259, None),
184+
(CSVUserAgentResponder, pd.read_csv, None),
185185
pytest.param(
186186
JSONUserAgentResponder,
187187
pd.read_json,
188-
34260,
189188
None,
190189
marks=td.skip_array_manager_not_yet_implemented,
191190
),
192-
(ParquetPyArrowUserAgentResponder, pd.read_parquet, 34261, "pyarrow"),
193-
(ParquetFastParquetUserAgentResponder, pd.read_parquet, 34262, "fastparquet"),
194-
(PickleUserAgentResponder, pd.read_pickle, 34263, None),
195-
(StataUserAgentResponder, pd.read_stata, 34264, None),
196-
(GzippedCSVUserAgentResponder, pd.read_csv, 34265, None),
191+
(ParquetPyArrowUserAgentResponder, pd.read_parquet, "pyarrow"),
192+
(ParquetFastParquetUserAgentResponder, pd.read_parquet, "fastparquet"),
193+
(PickleUserAgentResponder, pd.read_pickle, None),
194+
(StataUserAgentResponder, pd.read_stata, None),
195+
(GzippedCSVUserAgentResponder, pd.read_csv, None),
197196
pytest.param(
198197
GzippedJSONUserAgentResponder,
199198
pd.read_json,
200-
34266,
201199
None,
202200
marks=td.skip_array_manager_not_yet_implemented,
203201
),
204202
],
205203
)
206-
def test_server_and_default_headers(responder, read_method, port, parquet_engine):
204+
def test_server_and_default_headers(responder, read_method, parquet_engine):
207205
if parquet_engine is not None:
208206
pytest.importorskip(parquet_engine)
209207
if parquet_engine == "fastparquet":
210208
pytest.importorskip("fsspec")
211209

212-
with http.server.HTTPServer(("localhost", port), responder) as server:
210+
# passing 0 for the port will let the system find an unused port
211+
with http.server.HTTPServer(("localhost", 0), responder) as server:
213212
server_thread = threading.Thread(target=server.serve_forever)
214213
server_thread.start()
214+
215+
port = server.server_port
215216
if parquet_engine is None:
216217
df_http = read_method(f"http://localhost:{port}")
217218
else:
@@ -223,42 +224,43 @@ def test_server_and_default_headers(responder, read_method, port, parquet_engine
223224

224225

225226
@pytest.mark.parametrize(
226-
"responder, read_method, port, parquet_engine",
227+
"responder, read_method, parquet_engine",
227228
[
228-
(CSVUserAgentResponder, pd.read_csv, 34267, None),
229+
(CSVUserAgentResponder, pd.read_csv, None),
229230
pytest.param(
230231
JSONUserAgentResponder,
231232
pd.read_json,
232-
34268,
233233
None,
234234
marks=td.skip_array_manager_not_yet_implemented,
235235
),
236-
(ParquetPyArrowUserAgentResponder, pd.read_parquet, 34269, "pyarrow"),
237-
(ParquetFastParquetUserAgentResponder, pd.read_parquet, 34270, "fastparquet"),
238-
(PickleUserAgentResponder, pd.read_pickle, 34271, None),
239-
(StataUserAgentResponder, pd.read_stata, 34272, None),
240-
(GzippedCSVUserAgentResponder, pd.read_csv, 34273, None),
236+
(ParquetPyArrowUserAgentResponder, pd.read_parquet, "pyarrow"),
237+
(ParquetFastParquetUserAgentResponder, pd.read_parquet, "fastparquet"),
238+
(PickleUserAgentResponder, pd.read_pickle, None),
239+
(StataUserAgentResponder, pd.read_stata, None),
240+
(GzippedCSVUserAgentResponder, pd.read_csv, None),
241241
pytest.param(
242242
GzippedJSONUserAgentResponder,
243243
pd.read_json,
244-
34274,
245244
None,
246245
marks=td.skip_array_manager_not_yet_implemented,
247246
),
248247
],
249248
)
250-
def test_server_and_custom_headers(responder, read_method, port, parquet_engine):
249+
def test_server_and_custom_headers(responder, read_method, parquet_engine):
251250
if parquet_engine is not None:
252251
pytest.importorskip(parquet_engine)
253252
if parquet_engine == "fastparquet":
254253
pytest.importorskip("fsspec")
255254

256255
custom_user_agent = "Super Cool One"
257256
df_true = pd.DataFrame({"header": [custom_user_agent]})
258-
with http.server.HTTPServer(("localhost", port), responder) as server:
257+
258+
# passing 0 for the port will let the system find an unused port
259+
with http.server.HTTPServer(("localhost", 0), responder) as server:
259260
server_thread = threading.Thread(target=server.serve_forever)
260261
server_thread.start()
261262

263+
port = server.server_port
262264
if parquet_engine is None:
263265
df_http = read_method(
264266
f"http://localhost:{port}",
@@ -279,22 +281,25 @@ def test_server_and_custom_headers(responder, read_method, port, parquet_engine)
279281

280282

281283
@pytest.mark.parametrize(
282-
"responder, read_method, port",
284+
"responder, read_method",
283285
[
284-
(AllHeaderCSVResponder, pd.read_csv, 34275),
286+
(AllHeaderCSVResponder, pd.read_csv),
285287
],
286288
)
287-
def test_server_and_all_custom_headers(responder, read_method, port):
289+
def test_server_and_all_custom_headers(responder, read_method):
288290
custom_user_agent = "Super Cool One"
289291
custom_auth_token = "Super Secret One"
290292
storage_options = {
291293
"User-Agent": custom_user_agent,
292294
"Auth": custom_auth_token,
293295
}
294-
with http.server.HTTPServer(("localhost", port), responder) as server:
296+
297+
# passing 0 for the port will let the system find an unused port
298+
with http.server.HTTPServer(("localhost", 0), responder) as server:
295299
server_thread = threading.Thread(target=server.serve_forever)
296300
server_thread.start()
297301

302+
port = server.server_port
298303
df_http = read_method(
299304
f"http://localhost:{port}",
300305
storage_options=storage_options,

0 commit comments

Comments
 (0)