From 87fd254be3bfb2af0b4c3af2ee3d0e29b256b7eb Mon Sep 17 00:00:00 2001 From: ZT <1450026690@qq.com> Date: Thu, 10 Sep 2020 20:00:41 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9source=5Frpm=E5=92=8Csrc=5Fna?= =?UTF-8?q?me=E7=9A=84=E5=8C=B9=E9=85=8D=E5=85=B3=E7=B3=BB,=E4=BF=AE?= =?UTF-8?q?=E6=94=B9=E8=81=94=E8=A1=A8=E7=9A=84=E5=AF=B9=E5=BA=94=E9=80=BB?= =?UTF-8?q?=E8=BE=91,=E4=BF=AE=E6=94=B9=E5=AF=B9=E5=BA=94=E5=8D=95?= =?UTF-8?q?=E5=85=83=E6=B5=8B=E8=AF=95=E5=86=85=E5=AE=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../apps/package/function/searchdb.py | 109 ++-- .../apps/package/function/self_depend.py | 23 +- .../application/initsystem/data_import.py | 11 + .../packageship/application/models/package.py | 1 + .../correct_test_result_json/self_depend.json | 540 ------------------ .../common_files/db_origin/data_1_bin.sqlite | Bin 40960 -> 1351680 bytes .../common_files/db_origin/data_2_bin.sqlite | Bin 40960 -> 45056 bytes packageship/test/common_files/dbs/fedora30.db | Bin 24576 -> 28672 bytes packageship/test/common_files/dbs/mainline.db | Bin 24576 -> 28672 bytes .../test/common_files/operate_dbs/fedora30.db | Bin 24576 -> 28672 bytes .../test/common_files/operate_dbs/mainline.db | Bin 24576 -> 28672 bytes packageship/test/common_files/package.ini | 24 +- .../init_system_tests/test_importdata.py | 6 +- 13 files changed, 115 insertions(+), 599 deletions(-) diff --git a/packageship/packageship/application/apps/package/function/searchdb.py b/packageship/packageship/application/apps/package/function/searchdb.py index e977f7a2..400d422f 100644 --- a/packageship/packageship/application/apps/package/function/searchdb.py +++ b/packageship/packageship/application/apps/package/function/searchdb.py @@ -15,7 +15,7 @@ from sqlalchemy import exists from packageship.libs.dbutils import DBHelper from packageship.libs.log import Log -from packageship.application.models.package import BinPack +from packageship.application.models.package import BinPack,SrcPack from packageship.libs.exception import ContentNoneException, Error from packageship.system_config import DATABASE_FILE_INFO from .constants import ResponseCode @@ -86,16 +86,18 @@ class SearchDB(): SELECT DISTINCT bin_pack.NAME AS depend_name, bin_pack.version AS depend_version, - bin_pack.src_name AS depend_src_name, + s2.name AS depend_src_name, bin_requires.NAME AS req_name, bin.NAME AS search_name, - bin.src_name AS search_src_name, + s1.name AS search_src_name, bin.version AS search_version FROM - ( SELECT pkgKey,NAME,version,src_name FROM bin_pack WHERE {} ) bin + ( SELECT pkgKey, NAME, version, rpm_sourcerpm FROM bin_pack WHERE {} ) bin + LEFT JOIN src_pack s1 ON bin.rpm_sourcerpm = s1.src_name LEFT JOIN bin_requires ON bin.pkgKey = bin_requires.pkgKey LEFT JOIN bin_provides ON bin_provides.name = bin_requires.name - LEFT JOIN bin_pack ON bin_pack.pkgKey = bin_provides.pkgKey; + LEFT JOIN bin_pack ON bin_pack.pkgKey = bin_provides.pkgKey + LEFT JOIN src_pack s2 ON bin_pack.rpm_sourcerpm = s2.src_name; """.format(name_in)) install_set = data_base.session. \ execute(sql_com, {'name_{}'.format(i): v @@ -159,20 +161,29 @@ class SearchDB(): SQLAlchemyError: sqlalchemy error """ for db_name, data_base in self.db_object_dict.items(): + sql_str = """ + SELECT DISTINCT + src_pack.name AS source_name, + src_pack.version AS source_version + FROM + bin_pack, + src_pack + WHERE + src_pack.src_name = bin_pack.rpm_sourcerpm + AND bin_pack.name = :binary_name; + """ try: - bin_obj = data_base.session.query(BinPack).filter_by( - name=binary_name - ).first() - source_name = bin_obj.src_name - source_version = bin_obj.version + bin_obj = data_base.session.execute(text(sql_str), {"binary_name": binary_name}).fetchone() + source_name = bin_obj.source_name + source_version = bin_obj.source_version if source_name is not None: return ResponseCode.SUCCESS, db_name, \ - source_name, source_version + source_name, source_version except AttributeError as error_msg: LOGGER.logger.error(error_msg) except SQLAlchemyError as error_msg: LOGGER.logger.error(error_msg) - return ResponseCode.DIS_CONNECTION_DB, None + return ResponseCode.DIS_CONNECTION_DB, None, None, None return ResponseCode.PACK_NAME_NOT_FOUND, None, None, None def get_sub_pack(self, source_name_list): @@ -202,11 +213,12 @@ class SearchDB(): sql_com = text(''' SELECT bin_pack.name AS subpack_name, + bin_pack.version AS sub_pack_version, src.name AS search_name, src.version AS search_version FROM - (SELECT name,version FROM src_pack WHERE {}) src - LEFT JOIN bin_pack on src.name = bin_pack.src_name'''.format(name_in)) + (SELECT name,version,src_name FROM src_pack WHERE {}) src + LEFT JOIN bin_pack on src.src_name = bin_pack.rpm_sourcerpm'''.format(name_in)) subpack_tuple = data_base.session. \ execute(sql_com, {'name_{}'.format(i): v for i, v in enumerate(search_set, 1)}).fetchall() @@ -225,10 +237,10 @@ class SearchDB(): except SQLAlchemyError as sql_error: current_app.logger.error(sql_error) return_tuple = namedtuple( - 'return_tuple', 'subpack_name search_version search_name') + 'return_tuple', 'subpack_name sub_pack_version search_version search_name') for search_name in search_set: result_list.append( - (return_tuple(None, None, search_name), 'NOT_FOUND')) + (return_tuple(None, None, None, search_name), 'NOT_FOUND')) return ResponseCode.SUCCESS, result_list def _get_binary_in_other_database(self, not_found_binary): @@ -268,17 +280,19 @@ class SearchDB(): search_list.clear() try: sql_string = text(""" - SELECT DISTINCT - t1.src_name AS source_name, - t1.NAME AS bin_name, - t1.version, - t2.NAME AS req_name - FROM - bin_pack t1, - bin_provides t2 - WHERE - t2.{} - AND t1.pkgKey = t2.pkgKey; + SELECT DISTINCT + s1.name AS source_name, + t1.NAME AS bin_name, + t1.version, + t2.NAME AS req_name + FROM + src_pack s1, + bin_pack t1, + bin_provides t2 + WHERE + t2.{} + AND t1.pkgKey = t2.pkgKey + AND t1.rpm_sourcerpm = s1.src_name; """.format(literal_column('name').in_(search_set))) bin_set = data_base.session. \ execute(sql_string, {'name_{}'.format(i): v @@ -335,17 +349,19 @@ class SearchDB(): search_set = set(search_list) search_list.clear() sql_string = text(""" - SELECT DISTINCT - t1.src_name AS source_name, + SELECT DISTINCT + s1.name AS source_name, t1.NAME AS bin_name, t1.version, t2.NAME AS req_name FROM + src_pack s1, bin_pack t1, - bin_provides t2 + bin_provides t2 WHERE t2.{} - AND t1.pkgKey = t2.pkgKey; + AND t1.pkgKey = t2.pkgKey + AND t1.rpm_sourcerpm = s1.src_name; """.format(literal_column('name').in_(search_set))) bin_set = data_base.session. \ execute(sql_string, {'name_{}'.format(i): v @@ -421,19 +437,20 @@ class SearchDB(): temp_list = list(s_name_set) for input_name_li in [temp_list[i:i + 900] for i in range(0, len(temp_list), 900)]: sql_com = text(""" - SELECT DISTINCT + SELECT DISTINCT src.NAME AS search_name, src.version AS search_version, - bin_pack.src_name AS source_name, + s1.name AS source_name, bin_provides.pkgKey AS bin_id, src_requires.NAME AS req_name, bin_pack.version AS version, - bin_pack.NAME AS bin_name + bin_pack.NAME AS bin_name FROM - ( SELECT pkgKey, NAME, version FROM src_pack WHERE {} ) src + ( SELECT pkgKey, NAME, version FROM src_pack WHERE {}) src LEFT JOIN src_requires ON src.pkgKey = src_requires.pkgKey LEFT JOIN bin_provides ON bin_provides.NAME = src_requires.NAME - LEFT JOIN bin_pack ON bin_pack.pkgKey = bin_provides.pkgKey; + LEFT JOIN bin_pack ON bin_pack.pkgKey = bin_provides.pkgKey + LEFT JOIN src_pack s1 on bin_pack.rpm_sourcerpm=s1.src_name; """.format(literal_column("name").in_(input_name_li))) res = data_base.session.execute( sql_com, @@ -516,6 +533,26 @@ class SearchDB(): return 'NOT FOUND' + def get_version_and_db(self, src_name): + """ + + Args: + src_name:the source package name + Returns: + this source package version and db_name + """ + try: + for db_name, data_base in self.db_object_dict.items(): + res = data_base.session.query(SrcPack.version).filter_by(name=src_name).first() + if res: + return db_name, res.version + except AttributeError as attr_err: + current_app.logger.error(attr_err) + except SQLAlchemyError as sql_err: + current_app.logger.error(sql_err) + + return None, None + def db_priority(): """ diff --git a/packageship/packageship/application/apps/package/function/self_depend.py b/packageship/packageship/application/apps/package/function/self_depend.py index 3f51e2a7..dd72bed7 100644 --- a/packageship/packageship/application/apps/package/function/self_depend.py +++ b/packageship/packageship/application/apps/package/function/self_depend.py @@ -152,9 +152,10 @@ class SelfDepend(): if not source_name: LOGGER.logger.warning("source name is None") if source_name and source_name not in self.source_dicts.dictionary: + db_, src_version_ = self.search_db.get_version_and_db(source_name) self.source_dicts.append_src(key=source_name, - dbname=values[ListNode.DBNAME], - version=values[ListNode.VERSION]) + dbname=db_ if db_ else values[ListNode.DBNAME], + version=src_version_ if src_version_ else values[ListNode.VERSION]) self.search_build_list.append(source_name) if self.withsubpack == 1: self.search_subpack_list.append(source_name) @@ -173,10 +174,10 @@ class SelfDepend(): _, result_list = self.search_db.get_sub_pack(self.search_subpack_list) for subpack_tuple, dbname in result_list: if dbname != 'NOT_FOUND': - if subpack_tuple.subpack_name not in self.binary_dict.dictionary: + if subpack_tuple.subpack_name and subpack_tuple.subpack_name not in self.binary_dict.dictionary: self.binary_dict.append_bin(key=subpack_tuple.subpack_name, src=subpack_tuple.search_name, - version=subpack_tuple.search_version, + version=subpack_tuple.sub_pack_version, dbname=dbname, parent_node=[subpack_tuple.search_name, 'Subpack']) self.search_install_list.append(subpack_tuple.subpack_name) @@ -221,13 +222,14 @@ class SelfDepend(): if not source_name: LOGGER.logger.warning("source name is None") if source_name and source_name not in self.source_dicts.dictionary: + db_, src_version_ = self.search_db.get_version_and_db(source_name) self.source_dicts.append_src(key=source_name, - dbname=values[ListNode.DBNAME], - version=values[ListNode.VERSION]) + dbname=db_ if db_ else values[ListNode.DBNAME], + version=src_version_ if src_version_ else values[ListNode.VERSION]) if self.withsubpack == 1: self.search_subpack_list.append(source_name) - elif key in self.binary_dict.dictionary: - self.binary_dict.update_value(key=key, parent_list=values[ListNode.PARENT_LIST]) + elif key in self.binary_dict.dictionary: + self.binary_dict.update_value(key=key, parent_list=values[ListNode.PARENT_LIST]) def query_selfbuild(self): """ @@ -312,6 +314,7 @@ class DictionaryOperations(): Returns: Raises: """ - if parent_list: - self.dictionary[key][ListNode.PARENT_LIST].extend(parent_list) + for parent in parent_list: + if parent not in self.dictionary[key][ListNode.PARENT_LIST]: + self.dictionary[key][ListNode.PARENT_LIST].append(parent) diff --git a/packageship/packageship/application/initsystem/data_import.py b/packageship/packageship/application/initsystem/data_import.py index 1c84ca57..c2169c15 100644 --- a/packageship/packageship/application/initsystem/data_import.py +++ b/packageship/packageship/application/initsystem/data_import.py @@ -326,6 +326,17 @@ class InitDataBase(): raise ContentNoneException( '{db_name}:There is no relevant data in the source \ package provided '.format(db_name=db_name)) + for index, src_package_item in enumerate(packages_datas): + try: + src_package_name = '-'.join([src_package_item.get('name'), + src_package_item.get('version'), + src_package_item.get('release') + '.src.rpm' + ]) + except AttributeError as exception_msg: + src_package_name = None + LOGGER.logger.warning(exception_msg) + finally: + packages_datas[index]['src_name'] = src_package_name with DBHelper(db_name=db_name) as database: database.batch_add(packages_datas, SrcPack) if lifecycle_status_val == 'enable': diff --git a/packageship/packageship/application/models/package.py b/packageship/packageship/application/models/package.py index a8b9140f..f95bfcc2 100644 --- a/packageship/packageship/application/models/package.py +++ b/packageship/packageship/application/models/package.py @@ -42,6 +42,7 @@ class SrcPack(DBHelper.BASE): checksum_type = Column(String(500), nullable=True) maintaniner = Column(String(100), nullable=True) maintainlevel = Column(String(100), nullable=True) + src_name = Column(String(100), nullable=True) class BinPack(DBHelper.BASE): diff --git a/packageship/test/common_files/correct_test_result_json/self_depend.json b/packageship/test/common_files/correct_test_result_json/self_depend.json index 6fee2dc8..260aedb4 100644 --- a/packageship/test/common_files/correct_test_result_json/self_depend.json +++ b/packageship/test/common_files/correct_test_result_json/self_depend.json @@ -19,14 +19,6 @@ [ "D1", "install" - ], - [ - "B1", - "install" - ], - [ - "D", - "build" ] ] ], @@ -42,10 +34,6 @@ [ "C1", "install" - ], - [ - "C", - "build" ] ] ], @@ -80,17 +68,9 @@ "0.1", "mainline", [ - [ - "A", - "build" - ], [ "A2", "install" - ], - [ - "B2", - "install" ] ] ], @@ -146,14 +126,6 @@ [ "D1", "install" - ], - [ - "B1", - "install" - ], - [ - "D", - "build" ] ] ], @@ -169,10 +141,6 @@ [ "A1", "install" - ], - [ - "C", - "build" ] ] ], @@ -211,17 +179,9 @@ "root", null ], - [ - "A", - "build" - ], [ "A2", "install" - ], - [ - "B2", - "install" ] ] ], @@ -289,14 +249,6 @@ [ "D1", "install" - ], - [ - "B1", - "install" - ], - [ - "D", - "build" ] ] ], @@ -316,10 +268,6 @@ [ "A1", "install" - ], - [ - "C", - "build" ] ] ], @@ -357,14 +305,6 @@ [ "A2", "install" - ], - [ - "B2", - "install" - ], - [ - "A", - "build" ] ] ], @@ -452,14 +392,6 @@ [ "D1", "install" - ], - [ - "B1", - "install" - ], - [ - "D", - "build" ] ] ], @@ -479,178 +411,6 @@ [ "A1", "install" - ], - [ - "C", - "build" - ] - ] - ], - "B1": [ - "B", - "0.0.2", - "mainline", - [ - [ - "A", - "build" - ], - [ - "D", - "build" - ] - ] - ], - "B2": [ - "B", - "0.0.2", - "mainline", - [ - [ - "C", - "build" - ] - ] - ], - "C1": [ - "C", - "0.1", - "mainline", - [ - [ - "A2", - "install" - ], - [ - "B2", - "install" - ], - [ - "A", - "build" - ] - ] - ], - "D1": [ - "D", - "0.11", - "mainline", - [ - [ - "A2", - "install" - ], - [ - "D2", - "install" - ] - ] - ], - "C2": [ - "C", - "0.1", - "mainline", - [ - [ - "C", - "Subpack" - ] - ] - ], - "D2": [ - "D", - "0.11", - "mainline", - [ - [ - "D", - "Subpack" - ] - ] - ] - }, - "source_dicts": { - "A": [ - "mainline", - "0.0.23b" - ], - "B": [ - "mainline", - "0.0.2" - ], - "C": [ - "mainline", - "0.1" - ], - "D": [ - "mainline", - "0.11" - ] - }, - - "not_found_components": [] - }, - "msg": "Successful Operation!" - } - }, - { - "input": { - "packagename": "A", - "selfbuild": "1", - "withsubpack": "1", - "packtype": "source" - }, - "output": { - "code": "2001", - "data": { - "binary_dicts": { - "A1": [ - "A", - "0.0.23b", - "mainline", - [ - [ - "root", - null - ], - [ - "D1", - "install" - ], - [ - "B", - "build" - ], - [ - "D", - "build" - ], - [ - "B1", - "install" - ] - ] - ], - "A2": [ - "A", - "0.0.23b", - "mainline", - [ - [ - "root", - null - ], - [ - "A1", - "install" - ], - [ - "C1", - "install" - ], - [ - "C", - "build" ] ] ], @@ -688,18 +448,6 @@ [ "A2", "install" - ], - [ - "B", - "build" - ], - [ - "A", - "build" - ], - [ - "B2", - "install" ] ] ], @@ -759,294 +507,6 @@ "0.11" ] }, - - "not_found_components": [] - }, - "msg": "Successful Operation!" - } - }, - { - "input": { - "packagename": "A2", - "selfbuild": "1", - "withsubpack": "0" - }, - "output": { - "code": "2001", - "data": { - "binary_dicts": { - "A1": [ - "A", - "0.0.23b", - "mainline", - [ - [ - "D1", - "install" - ], - [ - "B", - "build" - ], - [ - "D", - "build" - ], - [ - "B1", - "install" - ] - ] - ], - "A2": [ - "A", - "0.0.23b", - "mainline", - [ - [ - "root", - null - ], - [ - "C1", - "install" - ], - [ - "A1", - "install" - ], - [ - "C", - "build" - ] - ] - ], - "B1": [ - "B", - "0.0.2", - "mainline", - [ - [ - "A", - "build" - ], - [ - "D", - "build" - ] - ] - ], - "B2": [ - "B", - "0.0.2", - "mainline", - [ - [ - "C", - "build" - ] - ] - ], - "C1": [ - "C", - "0.1", - "mainline", - [ - [ - "A2", - "install" - ], - [ - "B", - "build" - ], - [ - "A", - "build" - ], - [ - "B2", - "install" - ] - ] - ], - "D1": [ - "D", - "0.11", - "mainline", - [ - [ - "A2", - "install" - ] - ] - ] - }, - "source_dicts": { - "A": [ - "mainline", - "0.0.23b" - ], - "B": [ - "mainline", - "0.0.2" - ], - "C": [ - "mainline", - "0.1" - ], - "D": [ - "mainline", - "0.11" - ] - }, - - "not_found_components": [] - }, - "msg": "Successful Operation!" - } - }, - { - "input": { - "packagename": "A", - "selfbuild": "1", - "withsubpack": "0", - "packtype": "source" - }, - "output": { - "code": "2001", - "data": { - "binary_dicts": { - "A1": [ - "A", - "0.0.23b", - "mainline", - [ - [ - "root", - null - ], - [ - "D1", - "install" - ], - [ - "B", - "build" - ], - [ - "D", - "build" - ], - [ - "B1", - "install" - ] - ] - ], - "A2": [ - "A", - "0.0.23b", - "mainline", - [ - [ - "root", - null - ], - [ - "A1", - "install" - ], - [ - "C1", - "install" - ], - [ - "C", - "build" - ] - ] - ], - "B1": [ - "B", - "0.0.2", - "mainline", - [ - [ - "A", - "build" - ], - [ - "D", - "build" - ] - ] - ], - "B2": [ - "B", - "0.0.2", - "mainline", - [ - [ - "C", - "build" - ] - ] - ], - "C1": [ - "C", - "0.1", - "mainline", - [ - [ - "A2", - "install" - ], - [ - "B", - "build" - ], - [ - "A", - "build" - ], - [ - "B2", - "install" - ] - ] - ], - "D1": [ - "D", - "0.11", - "mainline", - [ - [ - "A2", - "install" - ] - ] - ] - }, - "source_dicts": { - "A": [ - "mainline", - "0.0.23b" - ], - "B": [ - "mainline", - "0.0.2" - ], - "C": [ - "mainline", - "0.1" - ], - "D": [ - "mainline", - "0.11" - ] - }, - "not_found_components": [] }, "msg": "Successful Operation!" diff --git a/packageship/test/common_files/db_origin/data_1_bin.sqlite b/packageship/test/common_files/db_origin/data_1_bin.sqlite index 8d5051866a938530ba81ffb7a1b971e4ef3c8f78..5a7d5a748d93f43596bd4c29aa3f38c94b80506a 100644 GIT binary patch delta 3209 zcmeI!cT`n%0KoD41C*hN;J|^3I7lUjqteu}$V{=)24H*hqPmhGv1E}lBafBT#B&gXZ3@16U&KYrhLAJjG{)izhu_s-6VqOf}uMI9Z> z9lIxn6&L12!$+;nOq~<8OU;WiD>J62x1^P&=KcFp{KP{d&wWO~~O0k@!iMl0Cm6`K$n)>H2%4!;s-L_b<>v@U#;+pJ`G9XGSnmJ>7(S#{ei)L3Rr#mS=Zzn_ihE8PBnQUxL z)P=5eqdU3upeMcPO&)#dOF#1IPXPlM$exSQE$HnO)eG-H5~Q!C3ZWFZO01_N9XT7{~q`z=0gZ z!5qS&97ZLFa|A~+o(UYqMAwfdnM~$rj$sPNavW70&s0ue8YeQH8B{ZqlQ@}En8j>P z4~#Kl~~rPPz)G8(v?E4Y%YxSDIYmg~5l z8@Q31xS2-gGLQMLA9N482i=42LHD40&^_oLbPu`*-GlBy_n>>wJ?I{E54s24gYH51 zpnK3gjHU$LgYIDry2tl)kUiAs9&``7x8Cr#TGeeV;CAldPVVAv?qMN|Sj@dNaUV;# zp9gr5r98yLEaMR#%koEay2|Si$qWz>B=Z%e=y?tmHLb=MCQE zE#77o@9-|~@jf5$As@y4KQ{S6{zw#Tu z^9O(O7k{&k^>*7K1lJEqB$Glr+LKBe8Kl#ZOgfQ8XR^tm3tj0(cXH`LPkPatJo?a= ze&o}ikp+eU3}g_4>0oKMU{O)Ls6t1JiYz3uuqdPHzi-{vuimzyal_xBwvA}pi1>ez Uw$DM^9<+T9{_kzDxPE2wKkM-bNB{r; delta 1205 zcmZ{i&1(}u7{+&Yb~8Jx%iDNKQG?rvpddn0wW1*A3n@Z{s-V~gHpvoVwZ>FMPi^xT zDE$M3>Ot@znv?WWdMPaxtRDOT75q3Tf{G~kaqyj)U7N&qA^S0IO}NT`GHa=xtyuezc)avIiSIa6&xMm&WTUvtoVP`mBrVOSRA|2_%W>wSvSfs;$q!PBQVc#CF zxyWDW<3m)9G1Vb@r4g^<3yzvvju{12}9_Ap0z#eN5=yh|oQz z(A|d6UMe)D8x(j_nJsAW3%JcoU**)ls&?w2JELoCFlx!*@OVSi2lQLvU zQc=<=-K0^TPEH@{+ANH1m=}~k;0t_2>(}rcp1?zxNAo*y!lZ;STd0X#sQ7O}4CEz* zS_UN?K?%{hRMViGFd+{0UOL!vlH-k6{T1-G>2zW=TLMxlKH0%pmhng^zcEA@D9xbxJu` co^$^lIn1HwZ8)glxhesCJGG3GSry*<3&(F9;Q#;t diff --git a/packageship/test/common_files/db_origin/data_2_bin.sqlite b/packageship/test/common_files/db_origin/data_2_bin.sqlite index 76533ab871181f22041d56ed879eb4f841e4fd35..aa3d11c5a2a741750fa6ed08279514f9c87532de 100644 GIT binary patch delta 172 zcmZoTz|`=7X@ayMI|Bm)HxR>sz(gHmWp)NV>yNxZA#QdV2Hsd+CY~i+MVzNNvpBgp zoY)_+H?hlXY@EfWmBP&~E-ud4s9utol#`m4nUh)!Cb*r0TpdGP6+#@Hd|VZjfMS#X zaY`|lR2ED=%^}0g%cZ%wiM?(H7sv`m{QMOFqq>yNxZAujeN2Hsd+CY~i+MVzNNvpBgp UoY)_+H*HoFU}E3g#9lW80NO|nhyVZp diff --git a/packageship/test/common_files/dbs/fedora30.db b/packageship/test/common_files/dbs/fedora30.db index 2d6c77f9da54228843d3026dd79df0a5ad219588..cb66065433352c32ea7d4d71c9cdbce45582c38a 100644 GIT binary patch delta 532 zcmZoTz}WDBae}lU4+8@OI}pPF+e95>Ngf70=fk`}AvQKi2A%_)yEwM6uVdTICb_Y3 zA*)%VJR7^XygXwQZ%JZOPHIwSUVK_+PHHin!R{R7>KNjx5aQ_MJ#%oQkNpl4!W1Xk&)3uNm;*l@M1V71()rVzEp z21b+jX-P6Wv&c;rl#$UiH*o=*VQ6Gv3^v3CXo#VaE`$R&g&At2u`@(9RIxKiF`8Oe zCb`LZGBP@rMowV0271O&pEvqH%6aV`cu=fk`}Ay&343_LeEFLRt_KhAb#v!Xy8 z+veSDY;2q=jO^mFvWz{_n@{nuGEaWNFDuC1#=tY1C!5EXhmZRK_a^SP&58yE+{{|+ zvXehb$q1Oc6&EEN8W`%OB^z1lu*ps~kd_fLa|H?-=$RN8L4;XB!m?rzQDdm6E{iM! zKfkc(BpGpG6Bn=sLn8xYhz@3mLB`Gyaj38!lk8+W85tuZC$O-Ao-x$owj@S5kYUpN kl8K#yhAb?en!1s^OiY?AEG*#+k_-%+m&mv diff --git a/packageship/test/common_files/dbs/mainline.db b/packageship/test/common_files/dbs/mainline.db index a96d22a6301a92698fa34d0e3fa5dfca78d11245..c78effe5542c9170811ee769d564a45a5ddf498f 100644 GIT binary patch delta 339 zcmZoTz}WDBae}lU4+8@OI}pPF+e95>Ngf70=fk`}AvQKi2A%_)yEwM6uVdTICb_Y3 zA*)%VJR7^XygXwQZ%JZOPHIwSUVK_+PHHin!R{R7>KNjx5aQ_MX7QLqH%6aV`cu=fk`}Ay&343_LeEFLRt_KhAb#v!Fm6 z+veSDY;2q=jO^mFvWz{_n@{nuGEaWNFUNI>fv1bdhev?>(q=`2L)=_8EV2x`{KBIA zk`o<8Cr_7_XSQONoqSGOX7X!kS!Nq1*~#)UGLvm&Ngf70=fk`}AvQKi2A%_)yEwM6uVdTICb_Y3 zA*)%VJR7^XygXwQZ%JZOPHIwSUVK_+PHHin!R{R7>KNjx5aQ_MJ#%oQkNpl4!W1Xk&)3uNm;*l@M1V71()rVzEp z21b+jX-P6Wv&c;rl#$UiH*o=*VQ6Gv3^v3CXo#VaE`$R&g&At2u`@(9RIxKiF`8Oe zCb`LZGBP@rMowV0271O&pEvqH%6aV`cu=fk`}Ay&343_LeEFLRt_KhAb#v!Xy8 z+veSDY;2q=jO^mFvWz{_n@{nuGEaWNFDuC1#=tY1C!5EXhmZRK_a^SP&58yE+{{|+ zvXehb$q1Oc6&EEN8W`%OB^z1lu*ps~kd_fLa|H?-=$RN8L4;XB!m?rzQDdm6E{iM! zKfkc(BpGpG6Bn=sLn8xYhz@3mLB`Gyaj38!lk8+W85tuZC$O-Ao-x$owj@S5kYUpN kl8K#yhAb?en!1s^OiY?AEG*#+k_-%+m&mv diff --git a/packageship/test/common_files/operate_dbs/mainline.db b/packageship/test/common_files/operate_dbs/mainline.db index a96d22a6301a92698fa34d0e3fa5dfca78d11245..c78effe5542c9170811ee769d564a45a5ddf498f 100644 GIT binary patch delta 339 zcmZoTz}WDBae}lU4+8@OI}pPF+e95>Ngf70=fk`}AvQKi2A%_)yEwM6uVdTICb_Y3 zA*)%VJR7^XygXwQZ%JZOPHIwSUVK_+PHHin!R{R7>KNjx5aQ_MX7QLqH%6aV`cu=fk`}Ay&343_LeEFLRt_KhAb#v!Fm6 z+veSDY;2q=jO^mFvWz{_n@{nuGEaWNFUNI>fv1bdhev?>(q=`2L)=_8EV2x`{KBIA zk`o<8Cr_7_XSQONoqSGOX7X!kS!Nq1*~#)UGLvm&