From 5ece582c61914fed37cec2947c50e59e3cece819 Mon Sep 17 00:00:00 2001
From: PGijsbers
Date: Wed, 4 Nov 2026 15:29:03 +0100
Subject: [PATCH 1/5] Mark a test which we know fails when connected to the
test server
---
tests/test_flows/test_flow.py | 13 ++++++++++++-
1 file changed, 12 insertions(+), 1 deletion(-)
diff --git a/tests/test_flows/test_flow.py b/tests/test_flows/test_flow.py
index a6130371a..4c4581089 100644
--- a/tests/test_flows/test_flow.py
+++ b/tests/test_flows/test_flow.py
@@ -128,6 +128,7 @@ def test_get_structure():
def test_tagging():
+ # Not possible as a marker since autouse fixtures change the configuration
flows = openml.flows.list_flows(size=1)
flow_id = flows["id"].iloc[0]
flow = openml.flows.get_flow(flow_id)
@@ -136,7 +137,17 @@ def test_tagging():
tag = f"test_tag_TestFlow_{unique_indicator}"
flows = openml.flows.list_flows(tag=tag)
assert len(flows) == 0
- flow.push_tag(tag)
+ try:
+ flow.push_tag(tag)
+ except openml.exceptions.OpenMLServerException as e:
+ # pytest.mark.xfail doesn't work because the autouse fixtures change server config
+ reason = "There is an issue with Elasticsearch on the test server since Oct 2026."
+ test_server = openml.config.get_server_base_url() == "https://test.openml.org"
+ elastic_search_error = "Elastic Search" in e.message
+ if test_server and elastic_search_error:
+ pytest.xfail(reason)
+ raise
+
flows = openml.flows.list_flows(tag=tag)
assert len(flows) == 1
assert flow_id in flows["id"].values
From 463b5dcc7e17b75935f12f740532517d1dc45281 Mon Sep 17 00:00:00 2001
From: PGijsbers
Date: Thu, 5 Nov 2026 10:44:00 +0100
Subject: [PATCH 2/5] use file upload instead of url upload
---
tests/test_api/test_datasets.py | 19 ++++++++++++++++---
1 file changed, 16 insertions(+), 3 deletions(-)
diff --git a/tests/test_api/test_datasets.py b/tests/test_api/test_datasets.py
index b809a734c..6f5bdca77 100644
--- a/tests/test_api/test_datasets.py
+++ b/tests/test_api/test_datasets.py
@@ -126,14 +126,27 @@ def test_v1_get_qualities(dataset_v1):
reason="Test requires admin key. Set OPENML_TEST_SERVER_ADMIN_KEY environment variable.",
)
@pytest.mark.test_server
-def test_v1_status_update(dataset_v1):
+def test_v1_status_update(dataset_v1, static_cache_dir):
openml.config.apikey = TestBase.admin_key
+ arff_file_path = (
+ static_cache_dir
+ / "org"
+ / "openml"
+ / "test"
+ / "data"
+ / "download"
+ / "1666876"
+ / "phpFsFYVN"
+ / "body.arff"
+ )
new_dataset = OpenMLDataset(
f"TEST-{time.time()!s}-UploadTestWithURL",
"test",
- "ARFF",
+ data_format="arff",
version=1,
- url="https://www.openml.org/data/download/61/dataset_61_iris.arff",
+ licence="public",
+ default_target_attribute="class",
+ data_file=arff_file_path,
)
new_dataset.publish()
_status_update_check(dataset_v1, new_dataset.dataset_id, "deactivated")
From 3bf61b10176e67a8516b8c2c5bb107ad79ec769c Mon Sep 17 00:00:00 2001
From: PGijsbers
Date: Thu, 5 Nov 2026 10:47:13 +0100
Subject: [PATCH 3/5] use dataset upload instead of url upload
---
tests/test_datasets/test_dataset_functions.py | 13 +++++++++++--
1 file changed, 11 insertions(+), 2 deletions(-)
diff --git a/tests/test_datasets/test_dataset_functions.py b/tests/test_datasets/test_dataset_functions.py
index 5f0ba5e4f..2fb007c67 100644
--- a/tests/test_datasets/test_dataset_functions.py
+++ b/tests/test_datasets/test_dataset_functions.py
@@ -547,10 +547,18 @@ def _assert_status_of_dataset(self, *, did: int, status: str):
@pytest.mark.test_server
def test_data_status(self):
arff_file_path = (
- self.static_cache_dir / "org" / "openml" / "test" / "datasets" / "2" / "dataset.arff"
+ self.static_cache_dir
+ / "org"
+ / "openml"
+ / "test"
+ / "data"
+ / "download"
+ / "1666876"
+ / "phpFsFYVN"
+ / "body.arff"
)
dataset = OpenMLDataset(
- "anneal",
+ f"TEST-{time.time()!s}-UploadTestWithURL",
"test",
data_format="arff",
version=1,
@@ -559,6 +567,7 @@ def test_data_status(self):
data_file=arff_file_path,
)
dataset.publish()
+ dataset.publish()
TestBase._mark_entity_for_removal("data", dataset.dataset_id)
TestBase.logger.info(
f"collected from {__file__.split('/')[-1]}: {dataset.dataset_id}",
From 3c926401c7773c2f84220281b4bfe88f6994b7ab Mon Sep 17 00:00:00 2001
From: PGijsbers
Date: Thu, 5 Nov 2026 12:27:02 +0100
Subject: [PATCH 4/5] use services with MinIO instead of SeaweedFS
---
.github/workflows/test.yml | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml
index 0e93465ca..0d2255c4d 100644
--- a/.github/workflows/test.yml
+++ b/.github/workflows/test.yml
@@ -113,7 +113,9 @@ jobs:
if: matrix.os == 'ubuntu-latest'
id: clone-services
run: |
- git clone --depth 1 https://github.com/openml/services.git
+ # 2026-11-05: Services switched to SeaweedFS and the MinIO client cannot handle the new URLs.
+ # We use the old stack until we have migrated away from the MinIO client
+ git clone --revision dd8b98a9e0450bf487f973e1711c8b00dc022294 --depth 1 https://github.com/openml/services.git
- name: Start Docker Services
id: start-services
From b6b329eb8bd270e5d4e655ed6efa912a94b67823 Mon Sep 17 00:00:00 2001
From: PGijsbers
Date: Thu, 5 Nov 2026 14:03:49 +0100
Subject: [PATCH 5/5] Update dataset name to reflect data uploaded
---
tests/test_api/test_datasets.py | 2 +-
tests/test_datasets/test_dataset_functions.py | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/tests/test_api/test_datasets.py b/tests/test_api/test_datasets.py
index 6f5bdca77..e104f3fb0 100644
--- a/tests/test_api/test_datasets.py
+++ b/tests/test_api/test_datasets.py
@@ -140,7 +140,7 @@ def test_v1_status_update(dataset_v1, static_cache_dir):
/ "body.arff"
)
new_dataset = OpenMLDataset(
- f"TEST-{time.time()!s}-UploadTestWithURL",
+ f"TEST-{time.time()!s}-UploadTestWithFile",
"test",
data_format="arff",
version=1,
diff --git a/tests/test_datasets/test_dataset_functions.py b/tests/test_datasets/test_dataset_functions.py
index 2fb007c67..f71dc3858 100644
--- a/tests/test_datasets/test_dataset_functions.py
+++ b/tests/test_datasets/test_dataset_functions.py
@@ -558,7 +558,7 @@ def test_data_status(self):
/ "body.arff"
)
dataset = OpenMLDataset(
- f"TEST-{time.time()!s}-UploadTestWithURL",
+ f"TEST-{time.time()!s}-UploadTestWithFile",
"test",
data_format="arff",
version=1,