diff options
author | iaz1607 <iaz1607@yandex-team.ru> | 2022-02-10 16:45:37 +0300 |
---|---|---|
committer | Daniil Cherednik <dcherednik@yandex-team.ru> | 2022-02-10 16:45:37 +0300 |
commit | 94e51c602b555459333b3c6ae92476c424c930bc (patch) | |
tree | b2cc84ee7850122e7ccf51d0ea21e4fa7e7a5685 /library/python/testing/yatest_lib/test_splitter.py | |
parent | e5437feb4ac2d2dc044e1090b9312dde5ef197e0 (diff) | |
download | ydb-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.py | 104 |
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} |