mirror of
https://pagure.io/fm-orchestrator.git
synced 2026-04-14 05:49:48 +08:00
MBSResolver: improve efficiency of querying latest version
Only get 5 results at a time, and if we see that we're already retrieving an old versions, stop requesting more pages.
This commit is contained in:
@@ -56,11 +56,12 @@ class FakeMBS(object):
|
||||
def __init__(self, session_mock):
|
||||
session_mock.get = self.get
|
||||
self.items = test_items
|
||||
self.request_count = 0
|
||||
self.required_params = {
|
||||
'order_desc_by': 'version',
|
||||
'state': ['ready'],
|
||||
'verbose': True,
|
||||
'per_page': 10,
|
||||
'per_page': 5,
|
||||
}
|
||||
|
||||
def item_matches(self, item, params):
|
||||
@@ -86,6 +87,8 @@ class FakeMBS(object):
|
||||
self.items.append(item)
|
||||
|
||||
def get(self, url, params={}):
|
||||
self.request_count += 1
|
||||
|
||||
for k, v in self.required_params.items():
|
||||
if v == ABSENT:
|
||||
assert k not in params
|
||||
@@ -153,15 +156,18 @@ class TestMBSModule:
|
||||
):
|
||||
""" Test for querying MBS without the version of a module """
|
||||
|
||||
version = formatted_testmodule_mmd.get_version()
|
||||
|
||||
fake_mbs.items = []
|
||||
|
||||
for i in range(0, 6):
|
||||
for context in ("00000000", "00000001"):
|
||||
# First page has version1.context[0..4]
|
||||
# Second page has version1.context5, version2.context[0..3]
|
||||
# Third page has version2.context[4..5]
|
||||
# We should only query the first two pages
|
||||
for i in range(0, 2):
|
||||
for context in range(0, 6):
|
||||
context_string = "{0:08d}".format(context)
|
||||
m = formatted_testmodule_mmd.copy()
|
||||
m.set_version(20180205135154 - i)
|
||||
m.set_context(context)
|
||||
m.set_context(context_string)
|
||||
add_item(fake_mbs.items, mmd=m)
|
||||
|
||||
ret = resolver.get_module_modulemds("testmodule", "master")
|
||||
@@ -169,8 +175,13 @@ class TestMBSModule:
|
||||
expected = {
|
||||
"testmodule:master:20180205135154:00000000",
|
||||
"testmodule:master:20180205135154:00000001",
|
||||
"testmodule:master:20180205135154:00000002",
|
||||
"testmodule:master:20180205135154:00000003",
|
||||
"testmodule:master:20180205135154:00000004",
|
||||
"testmodule:master:20180205135154:00000005",
|
||||
}
|
||||
assert nsvcs == expected
|
||||
assert fake_mbs.request_count == 2
|
||||
|
||||
@pytest.mark.parametrize('strict', (False, True))
|
||||
def test_get_module_modulemds_not_found(self, resolver, fake_mbs, strict):
|
||||
|
||||
Reference in New Issue
Block a user