mirror of
https://github.com/clearml/clearml-server
synced 2025-06-26 23:15:47 +00:00
Add scroll support to *.get_*
This commit is contained in:
@@ -71,7 +71,7 @@ class TestService(TestCase, TestServiceInterface):
|
||||
delete_params=delete_params,
|
||||
)
|
||||
|
||||
def setUp(self, version="1.7"):
|
||||
def setUp(self, version="999.0"):
|
||||
self._api = APIClient(base_url=f"http://localhost:8008/v{version}")
|
||||
self._deferred = []
|
||||
self._version = parse(version)
|
||||
|
||||
82
apiserver/tests/automated/test_paging_and_scrolling.py
Normal file
82
apiserver/tests/automated/test_paging_and_scrolling.py
Normal file
@@ -0,0 +1,82 @@
|
||||
import math
|
||||
from apiserver.tests.automated import TestService
|
||||
|
||||
|
||||
class TestEntityOrdering(TestService):
|
||||
name_prefix = f"Test paging "
|
||||
|
||||
def setUp(self, **kwargs):
|
||||
super().setUp(**kwargs)
|
||||
self.task_ids = self._create_tasks()
|
||||
|
||||
def _create_tasks(self):
|
||||
tasks = [
|
||||
self._temp_task(
|
||||
name=f"{self.name_prefix}{i}",
|
||||
hyperparams={"test": {"param": {"section": "test", "name": "param", "type": "str", "value": str(i)}}},
|
||||
)
|
||||
for i in range(18)
|
||||
]
|
||||
return tasks
|
||||
|
||||
def test_paging(self):
|
||||
page_size = 10
|
||||
for page in range(0, math.ceil(len(self.task_ids) / page_size)):
|
||||
start = page * page_size
|
||||
expected_size = min(page_size, len(self.task_ids) - start)
|
||||
tasks = self._get_tasks(
|
||||
page=page,
|
||||
page_size=page_size,
|
||||
).tasks
|
||||
self.assertEqual(len(tasks), expected_size)
|
||||
for i, t in enumerate(tasks):
|
||||
self.assertEqual(t.name, f"{self.name_prefix}{start + i}")
|
||||
|
||||
def test_scrolling(self):
|
||||
page_size = 10
|
||||
scroll_id = None
|
||||
for page in range(0, math.ceil(len(self.task_ids) / page_size)):
|
||||
start = page * page_size
|
||||
expected_size = min(page_size, len(self.task_ids) - start)
|
||||
res = self._get_tasks(
|
||||
size=page_size,
|
||||
scroll_id=scroll_id,
|
||||
)
|
||||
self.assertTrue(res.scroll_id)
|
||||
scroll_id = res.scroll_id
|
||||
tasks = res.tasks
|
||||
self.assertEqual(len(tasks), expected_size)
|
||||
for i, t in enumerate(tasks):
|
||||
self.assertEqual(t.name, f"{self.name_prefix}{start + i}")
|
||||
|
||||
# no more data in this scroll
|
||||
tasks = self._get_tasks(
|
||||
size=page_size,
|
||||
scroll_id=scroll_id,
|
||||
).tasks
|
||||
self.assertFalse(tasks)
|
||||
|
||||
# refresh brings all
|
||||
tasks = self._get_tasks(
|
||||
size=page_size,
|
||||
scroll_id=scroll_id,
|
||||
refresh_scroll=True,
|
||||
).tasks
|
||||
self.assertEqual([t.id for t in tasks], self.task_ids)
|
||||
|
||||
def _get_tasks(self, **page_params):
|
||||
return self.api.tasks.get_all_ex(
|
||||
name="^Test paging ",
|
||||
order_by=["hyperparams.param"],
|
||||
**page_params,
|
||||
)
|
||||
|
||||
def _temp_task(self, name, **kwargs):
|
||||
return self.create_temp(
|
||||
"tasks",
|
||||
name=name,
|
||||
comment="Test task",
|
||||
type="testing",
|
||||
input=dict(view=dict()),
|
||||
**kwargs,
|
||||
)
|
||||
Reference in New Issue
Block a user