utils.split_range: Split into not overlapping ranges
Existing listers use the `is_within_bound` [1] method from the base lister. This method uses inclusive boundaries in all cases. As some "range" task listers [2] [3] are using `split_range` function to create "overlapping" ranges, this can cause concurrent insert issues down the line [4]. This commit adapts the function `split_range` to make the generated ranges no longer overlap. [1] https://forge.softwareheritage.org/source/swh-lister/browse/master/swh/lister/core/lister_base.py$194-199 [2] https://forge.softwareheritage.org/source/swh-lister/browse/master/swh/lister/gitlab/tasks.py$37-41 [3] https://forge.softwareheritage.org/source/swh-lister/browse/master/swh/lister/gitea/tasks.py$36-41 Related to T2577
This commit is contained in:
parent
725c1fe4ad
commit
e3c856b5ee
4 changed files with 54 additions and 44 deletions
|
@ -11,7 +11,12 @@ from swh.lister import utils
|
|||
|
||||
@pytest.mark.parametrize(
|
||||
"total_pages,nb_pages,expected_ranges",
|
||||
[(14, 5, [(0, 5), (5, 10), (10, 14)]), (19, 10, [(0, 10), (10, 19)])],
|
||||
[
|
||||
(14, 5, [(0, 4), (5, 9), (10, 14)]),
|
||||
(19, 10, [(0, 9), (10, 19)]),
|
||||
(20, 3, [(0, 2), (3, 5), (6, 8), (9, 11), (12, 14), (15, 17), (18, 20)]),
|
||||
(21, 3, [(0, 2), (3, 5), (6, 8), (9, 11), (12, 14), (15, 17), (18, 21),],),
|
||||
],
|
||||
)
|
||||
def test_split_range(total_pages, nb_pages, expected_ranges):
|
||||
actual_ranges = list(utils.split_range(total_pages, nb_pages))
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue