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
commit94e51c602b555459333b3c6ae92476c424c930bc (patch)
treeb2cc84ee7850122e7ccf51d0ea21e4fa7e7a5685 /library/python/testing/yatest_lib/test_splitter.py
parente5437feb4ac2d2dc044e1090b9312dde5ef197e0 (diff)
downloadydb-94e51c602b555459333b3c6ae92476c424c930bc.tar.gz
Restoring authorship annotation for <iaz1607@yandex-team.ru>. Commit 2 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 2f2ec39a6e..acbcd4300e 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):
+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"):
"""
- >>> 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}