aboutsummaryrefslogtreecommitdiffstats
path: root/library/python/testing/yatest_lib/test_splitter.py
diff options
context:
space:
mode:
authoriaz1607 <iaz1607@yandex-team.ru>2022-02-10 16:45:37 +0300
committerDaniil Cherednik <dcherednik@yandex-team.ru>2022-02-10 16:45:37 +0300
commite5437feb4ac2d2dc044e1090b9312dde5ef197e0 (patch)
treef5a238c69dd20a1fa2092127a31b8aff25020f7d /library/python/testing/yatest_lib/test_splitter.py
parentf4945d0a44b8770f0801de3056aa41639b0b7bd2 (diff)
downloadydb-e5437feb4ac2d2dc044e1090b9312dde5ef197e0.tar.gz
Restoring authorship annotation for <iaz1607@yandex-team.ru>. Commit 1 of 2.
Diffstat (limited to 'library/python/testing/yatest_lib/test_splitter.py')
-rw-r--r--library/python/testing/yatest_lib/test_splitter.py104
1 files changed, 52 insertions, 52 deletions
diff --git a/library/python/testing/yatest_lib/test_splitter.py b/library/python/testing/yatest_lib/test_splitter.py
index acbcd4300e..2f2ec39a6e 100644
--- a/library/python/testing/yatest_lib/test_splitter.py
+++ b/library/python/testing/yatest_lib/test_splitter.py
@@ -18,66 +18,66 @@ def flatten_tests(test_classes):
return tests
-def get_sequential_chunk(tests, modulo, modulo_index, is_sorted=False):
+def get_sequential_chunk(tests, modulo, modulo_index, is_sorted=False):
"""
- >>> get_sequential_chunk(range(10), 4, 0)
+ >>> get_sequential_chunk(range(10), 4, 0)
[0, 1, 2]
- >>> get_sequential_chunk(range(10), 4, 1)
+ >>> get_sequential_chunk(range(10), 4, 1)
[3, 4, 5]
- >>> get_sequential_chunk(range(10), 4, 2)
- [6, 7]
- >>> get_sequential_chunk(range(10), 4, 3)
- [8, 9]
- >>> get_sequential_chunk(range(10), 4, 4)
+ >>> get_sequential_chunk(range(10), 4, 2)
+ [6, 7]
+ >>> get_sequential_chunk(range(10), 4, 3)
+ [8, 9]
+ >>> get_sequential_chunk(range(10), 4, 4)
[]
- >>> get_sequential_chunk(range(10), 4, 5)
+ >>> get_sequential_chunk(range(10), 4, 5)
[]
"""
- if not is_sorted:
- tests = sorted(tests)
- chunk_size = len(tests) // modulo
- not_used = len(tests) % modulo
- shift = chunk_size + (modulo_index < not_used)
- start = chunk_size * modulo_index + min(modulo_index, not_used)
+ if not is_sorted:
+ tests = sorted(tests)
+ chunk_size = len(tests) // modulo
+ not_used = len(tests) % modulo
+ shift = chunk_size + (modulo_index < not_used)
+ start = chunk_size * modulo_index + min(modulo_index, not_used)
end = start + shift
- return [] if end > len(tests) else tests[start:end]
+ return [] if end > len(tests) else tests[start:end]
-def get_shuffled_chunk(tests, modulo, modulo_index, is_sorted=False):
- """
- >>> get_shuffled_chunk(range(10), 4, 0)
- [0, 4, 8]
- >>> get_shuffled_chunk(range(10), 4, 1)
- [1, 5, 9]
- >>> get_shuffled_chunk(range(10), 4, 2)
- [2, 6]
- >>> get_shuffled_chunk(range(10), 4, 3)
- [3, 7]
- >>> get_shuffled_chunk(range(10), 4, 4)
- []
- >>> get_shuffled_chunk(range(10), 4, 5)
- []
- """
- if not is_sorted:
- tests = sorted(tests)
- result_tests = []
- for i, test in enumerate(tests):
- if i % modulo == modulo_index:
- result_tests.append(test)
- return result_tests
-
-
-def get_splitted_tests(test_entities, modulo, modulo_index, partition_mode, is_sorted=False):
- if partition_mode == 'SEQUENTIAL':
- return get_sequential_chunk(test_entities, modulo, modulo_index, is_sorted)
- elif partition_mode == 'MODULO':
- return get_shuffled_chunk(test_entities, modulo, modulo_index, is_sorted)
- else:
- raise ValueError("detected unknown partition mode: {}".format(partition_mode))
-
-
-def filter_tests_by_modulo(test_classes, modulo, modulo_index, split_by_tests, partition_mode="SEQUENTIAL"):
+def get_shuffled_chunk(tests, modulo, modulo_index, is_sorted=False):
"""
+ >>> get_shuffled_chunk(range(10), 4, 0)
+ [0, 4, 8]
+ >>> get_shuffled_chunk(range(10), 4, 1)
+ [1, 5, 9]
+ >>> get_shuffled_chunk(range(10), 4, 2)
+ [2, 6]
+ >>> get_shuffled_chunk(range(10), 4, 3)
+ [3, 7]
+ >>> get_shuffled_chunk(range(10), 4, 4)
+ []
+ >>> get_shuffled_chunk(range(10), 4, 5)
+ []
+ """
+ if not is_sorted:
+ tests = sorted(tests)
+ result_tests = []
+ for i, test in enumerate(tests):
+ if i % modulo == modulo_index:
+ result_tests.append(test)
+ return result_tests
+
+
+def get_splitted_tests(test_entities, modulo, modulo_index, partition_mode, is_sorted=False):
+ if partition_mode == 'SEQUENTIAL':
+ return get_sequential_chunk(test_entities, modulo, modulo_index, is_sorted)
+ elif partition_mode == 'MODULO':
+ return get_shuffled_chunk(test_entities, modulo, modulo_index, is_sorted)
+ else:
+ raise ValueError("detected unknown partition mode: {}".format(partition_mode))
+
+
+def filter_tests_by_modulo(test_classes, modulo, modulo_index, split_by_tests, partition_mode="SEQUENTIAL"):
+ """
>>> test_classes = {x: [x] for x in range(20)}
>>> filter_tests_by_modulo(test_classes, 4, 0, False)
{0: [0], 1: [1], 2: [2], 3: [3], 4: [4]}
@@ -92,11 +92,11 @@ def filter_tests_by_modulo(test_classes, modulo, modulo_index, split_by_tests, p
{8: [8], 9: [9], 5: [5], 6: [6], 7: [7]}
"""
if split_by_tests:
- tests = get_splitted_tests(flatten_tests(test_classes), modulo, modulo_index, partition_mode)
+ tests = get_splitted_tests(flatten_tests(test_classes), modulo, modulo_index, partition_mode)
test_classes = collections.defaultdict(list)
for class_name, test_name in tests:
test_classes[class_name].append(test_name)
return test_classes
else:
- target_classes = get_splitted_tests(test_classes, modulo, modulo_index, partition_mode)
+ target_classes = get_splitted_tests(test_classes, modulo, modulo_index, partition_mode)
return {class_name: test_classes[class_name] for class_name in target_classes}