phabricator/lister: Do not override max_index when bootstrapping
Turns out all newly listed repositories were filtered out because of that. Consequently, no entries in the listers database and no scheduler loading tasks were created when listing a Phabricator instance. Closes T1999
This commit is contained in:
parent
7c8f4dc9a8
commit
1ebe762ea6
3 changed files with 36 additions and 6 deletions
|
@ -163,8 +163,7 @@ class HttpListerTester(HttpListerTesterBase, abc.ABC):
|
|||
if m and (len(m.groups()) > 0):
|
||||
return self.convert_type(m.group(1))
|
||||
|
||||
@requests_mock.Mocker()
|
||||
def test_fetch_multiple_pages_yesdb(self, http_mocker):
|
||||
def create_fl_with_db(self, http_mocker):
|
||||
http_mocker.get(self.test_re, text=self.mock_response)
|
||||
db = init_db()
|
||||
|
||||
|
@ -174,10 +173,16 @@ class HttpListerTester(HttpListerTesterBase, abc.ABC):
|
|||
'args': {'db': db.url()}
|
||||
}
|
||||
})
|
||||
fl.db = db
|
||||
self.init_db(db, fl.MODEL)
|
||||
|
||||
self.disable_scheduler(fl)
|
||||
return fl
|
||||
|
||||
@requests_mock.Mocker()
|
||||
def test_fetch_multiple_pages_yesdb(self, http_mocker):
|
||||
|
||||
fl = self.create_fl_with_db(http_mocker)
|
||||
fl.run(min_bound=self.first_index)
|
||||
|
||||
self.assertEqual(fl.db_last_index(), self.last_index)
|
||||
|
|
|
@ -119,11 +119,10 @@ class PhabricatorLister(IndexingHttpLister):
|
|||
params = '&order=oldest&limit=1'
|
||||
response = self.safely_issue_request(params)
|
||||
models_list = self.transport_response_simplified(response)
|
||||
self.max_index = models_list[0]['indexable']
|
||||
models_list = self.filter_before_inject(models_list)
|
||||
injected = self.inject_repo_data_into_db(models_list)
|
||||
self.schedule_missing_tasks(models_list, injected)
|
||||
return self.max_index
|
||||
return models_list[0]['indexable']
|
||||
|
||||
|
||||
def get_repo_url(attachments):
|
||||
|
|
|
@ -5,6 +5,9 @@
|
|||
import re
|
||||
import json
|
||||
import unittest
|
||||
|
||||
import requests_mock
|
||||
|
||||
from swh.lister.core.tests.test_lister import HttpListerTester
|
||||
from swh.lister.phabricator.lister import PhabricatorLister
|
||||
from swh.lister.phabricator.lister import get_repo_url
|
||||
|
@ -12,17 +15,29 @@ from swh.lister.phabricator.lister import get_repo_url
|
|||
|
||||
class PhabricatorListerTester(HttpListerTester, unittest.TestCase):
|
||||
Lister = PhabricatorLister
|
||||
test_re = re.compile(r'\&after=([^?&]+)')
|
||||
# first request will have the after parameter empty
|
||||
test_re = re.compile(r'\&after=([^?&]*)')
|
||||
lister_subdir = 'phabricator'
|
||||
good_api_response_file = 'api_response.json'
|
||||
good_api_response_undefined_protocol = 'api_response_undefined_'\
|
||||
'protocol.json'
|
||||
bad_api_response_file = 'api_empty_response.json'
|
||||
first_index = 1
|
||||
# first_index must be retrieved through a bootstrap process for Phabricator
|
||||
first_index = None
|
||||
last_index = 12
|
||||
entries_per_page = 10
|
||||
|
||||
convert_type = int
|
||||
|
||||
def request_index(self, request):
|
||||
"""(Override) This is needed to emulate the listing bootstrap
|
||||
when no min_bound is provided to run
|
||||
"""
|
||||
m = self.test_re.search(request.path_url)
|
||||
idx = m.group(1)
|
||||
if idx == str(self.last_index):
|
||||
return int(idx)
|
||||
|
||||
def get_fl(self, override_config=None):
|
||||
"""(Override) Retrieve an instance of fake lister (fl).
|
||||
|
||||
|
@ -58,3 +73,14 @@ class PhabricatorListerTester(HttpListerTester, unittest.TestCase):
|
|||
self.assertEqual(
|
||||
'https://svn.blender.org/svnroot/bf-blender/',
|
||||
get_repo_url(repo['attachments']['uris']['uris']))
|
||||
|
||||
@requests_mock.Mocker()
|
||||
def test_full_listing(self, http_mocker):
|
||||
fl = self.create_fl_with_db(http_mocker)
|
||||
|
||||
fl.run()
|
||||
|
||||
self.assertEqual(fl.db_last_index(), self.last_index)
|
||||
ingested_repos = list(fl.db_query_range(self.first_index,
|
||||
self.last_index))
|
||||
self.assertEqual(len(ingested_repos), self.entries_per_page)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue