213 lines
11 KiB
Diff
213 lines
11 KiB
Diff
diff --git a/packageship/application/apps/package/view.py b/packageship/application/apps/package/view.py
|
|
index 86072fc61f78ddcae87a53728d1490821ccc41a7..3ca7ffa261d93b8868571e9bedf13f1232e4768e 100644
|
|
--- a/packageship/application/apps/package/view.py
|
|
+++ b/packageship/application/apps/package/view.py
|
|
@@ -108,14 +108,16 @@ class SourcePackages(ParsePackageMethod):
|
|
page_num = result.get("page_num")
|
|
page_size = result.get("page_size")
|
|
query_pkg_name = [result.get("query_pkg_name")] if result.get(
|
|
- "query_pkg_name") else []
|
|
+ "query_pkg_name") else None
|
|
find_package = Package()
|
|
try:
|
|
result_all = find_package.all_src_packages(
|
|
result.get("database_name"), page_num=page_num, page_size=page_size, package_list=query_pkg_name,
|
|
command_line=result.get("command_line"))
|
|
- except (ElasticSearchQueryException, DatabaseConfigException, PackageInfoGettingError) as e:
|
|
+ except (ElasticSearchQueryException, DatabaseConfigException):
|
|
return jsonify(self.rspmsg.body('connect_db_error'))
|
|
+ except PackageInfoGettingError:
|
|
+ return jsonify(self.rspmsg.body('pack_name_not_found'))
|
|
if result_all:
|
|
return jsonify(self.parse_package(result_all, page_size))
|
|
return jsonify(self.rspmsg.body("table_name_not_exist"))
|
|
@@ -167,14 +169,16 @@ class BinaryPackages(ParsePackageMethod):
|
|
page_num = result.get("page_num")
|
|
page_size = result.get("page_size")
|
|
query_pkg_name = [result.get("query_pkg_name")] if result.get(
|
|
- "query_pkg_name") else []
|
|
+ "query_pkg_name") else None
|
|
find_package = Package()
|
|
try:
|
|
result_all = find_package.all_bin_packages(
|
|
result.get("database_name"), page_num=page_num, page_size=page_size, package_list=query_pkg_name,
|
|
command_line=result.get("command_line"))
|
|
- except (ElasticSearchQueryException, DatabaseConfigException, PackageInfoGettingError) as e:
|
|
+ except (ElasticSearchQueryException, DatabaseConfigException):
|
|
return jsonify(self.rspmsg.body('connect_db_error'))
|
|
+ except PackageInfoGettingError:
|
|
+ return jsonify(self.rspmsg.body('pack_name_not_found'))
|
|
if result_all:
|
|
return jsonify(self.parse_package(result_all, page_size))
|
|
return jsonify(self.rspmsg.body("table_name_not_exist"))
|
|
diff --git a/packageship/application/query/pkg.py b/packageship/application/query/pkg.py
|
|
index 6c4e1f253ecf0cef68ab6319a9fae1731e826a8b..67e5c2e3a2cab3107c1d1fcb1edc618ed6f2a370 100644
|
|
--- a/packageship/application/query/pkg.py
|
|
+++ b/packageship/application/query/pkg.py
|
|
@@ -82,7 +82,7 @@ class QueryPackage(object):
|
|
Raises: DatabaseConfigException ElasticSearchQueryException
|
|
"""
|
|
self.rpm_type = SOURCE_DB_TYPE
|
|
- response = self._get_rpm_info(src_list, database, page_num, page_size, command_line)
|
|
+ response = self._get_rpm_info(database, page_num, page_size, command_line, rpm_list=src_list)
|
|
return response
|
|
|
|
def get_bin_info(self, binary_list, database, page_num, page_size, command_line=False):
|
|
@@ -98,7 +98,7 @@ class QueryPackage(object):
|
|
Raises: DatabaseConfigException ElasticSearchQueryException
|
|
"""
|
|
self.rpm_type = BINARY_DB_TYPE
|
|
- response = self._get_rpm_info(binary_list, database, page_num, page_size, command_line)
|
|
+ response = self._get_rpm_info(database, page_num, page_size, command_line, rpm_list=binary_list)
|
|
return response
|
|
|
|
def _query_src_bin_rpm(self, rpm_list, query_db_type, specify_db):
|
|
@@ -150,7 +150,7 @@ class QueryPackage(object):
|
|
|
|
return rpm_info
|
|
|
|
- def _get_rpm_info(self, rpm_list, database, page_num, page_size, command_line):
|
|
+ def _get_rpm_info(self, database, page_num, page_size, command_line, rpm_list=None):
|
|
"""
|
|
General method for obtaining package details
|
|
Args:
|
|
@@ -162,10 +162,16 @@ class QueryPackage(object):
|
|
|
|
Returns: result of query package details
|
|
"""
|
|
- self.index = UNDERLINE.join((database, self.rpm_type))
|
|
response = dict(total=0, data=[])
|
|
+ # If the query list is empty, return directly; if the query list is None, it means query all packages.
|
|
+ if isinstance(rpm_list, list):
|
|
+ rpm_list = [rpm for rpm in rpm_list if rpm]
|
|
+ if not rpm_list:
|
|
+ return response
|
|
+
|
|
+ self.index = UNDERLINE.join((database, self.rpm_type))
|
|
# Used for Command Line,query all data and no Pagination
|
|
- if command_line and not rpm_list:
|
|
+ if command_line and rpm_list is None:
|
|
query_result = self._db_session.scan(index=self.index, body=QueryBody.QUERY_ALL)
|
|
total_num = self._db_session.count(index=self.index, body=QueryBody.QUERY_ALL)
|
|
response['total'] = total_num.get('count')
|
|
@@ -190,6 +196,7 @@ class QueryPackage(object):
|
|
if query_all else query_result['hits']['total']['value']
|
|
response['total'] = total_num
|
|
except KeyError:
|
|
+ response = dict(total=0, data=[])
|
|
return response
|
|
return response
|
|
|
|
@@ -211,7 +218,7 @@ class QueryPackage(object):
|
|
# Query specify rpm_list of Command line mode
|
|
query_body = self._process_query_terms(DEFAULT_PAGE_NUM, MAX_PAGE_SIZE, rpm_list)
|
|
else:
|
|
- if not rpm_list:
|
|
+ if rpm_list is None:
|
|
# Query all data and Pagination of UI mode
|
|
query_body = self._format_paging_query_all(page_num, page_size)
|
|
query_all = True
|
|
diff --git a/test/cli/depend_commands/__init__.py b/test/cli/depend_commands/__init__.py
|
|
index 1aab4d66def3400065e077e884258ab446e0f2da..13fbaa063d39e3a19c9dec58fc480fe05c35aa3b 100755
|
|
--- a/test/cli/depend_commands/__init__.py
|
|
+++ b/test/cli/depend_commands/__init__.py
|
|
@@ -130,6 +130,7 @@ class DependTestBase(ClientTest):
|
|
if not pkg_info:
|
|
continue
|
|
ret_dict_p["hits"]["hits"].append(pkg_info)
|
|
+ ret_dict_p['hits']['total']['value'] = len(pkg_lst)
|
|
|
|
@staticmethod
|
|
def make_newline_split_res(ln, lines, idx):
|
|
@@ -244,12 +245,12 @@ class DependTestBase(ClientTest):
|
|
if handle_tolong_name_in_newline(ln, source_lines, idx):
|
|
continue
|
|
source_lines.append(split_ln)
|
|
-
|
|
+
|
|
if not all(normal_query_judgment_lst):
|
|
raise ValueError(
|
|
"check Your expected str please, must be a normal query result"
|
|
)
|
|
-
|
|
+
|
|
return binary_lines, source_lines
|
|
|
|
def assert_result(self):
|
|
@@ -264,12 +265,12 @@ class DependTestBase(ClientTest):
|
|
current_bin, current_src = self._process_depend_command_value(self.print_result)
|
|
self.assertListEqual(sorted(excepted_bin), sorted(current_bin))
|
|
self.assertListEqual(sorted(excepted_src), sorted(current_src))
|
|
-
|
|
+
|
|
def assert_exc_result(self):
|
|
"""assert_exc_result
|
|
"""
|
|
- super(DependTestBase,self).assert_result()
|
|
-
|
|
+ super(DependTestBase, self).assert_result()
|
|
+
|
|
def _es_search_result(self, index: str, body: dict):
|
|
"""
|
|
Get different return values through different call parameters
|
|
@@ -281,7 +282,7 @@ class DependTestBase(ClientTest):
|
|
ret_dict(dict):Parsable es-like data for the project
|
|
"""
|
|
|
|
- ret_dict = {"hits": {"hits": []}}
|
|
+ ret_dict = {"hits": {"hits": [], "total": {"value": 0}}}
|
|
if index == "databaseinfo":
|
|
return DATA_BASE_INFO
|
|
elif "binary" in index:
|
|
diff --git a/test/cli/package_command/pkg_list/test_pkg_list.py b/test/cli/package_command/pkg_list/test_pkg_list.py
|
|
index 3c7f9930a773c9aea1eafeb6e0739a10d6c5b7db..da5300b1ca5935d116700f0d20ca8352e16bf464 100644
|
|
--- a/test/cli/package_command/pkg_list/test_pkg_list.py
|
|
+++ b/test/cli/package_command/pkg_list/test_pkg_list.py
|
|
@@ -77,8 +77,8 @@ HINT :Make sure the table is valid"""
|
|
test pkgInfoGetingError for all bin packages
|
|
"""
|
|
self.excepted_str = """
|
|
-ERROR_CONTENT :Failed to Connect the database
|
|
-HINT :Check the connection"""
|
|
+ERROR_CONTENT :The querying package does not exist in the databases
|
|
+HINT :Use the correct package name and try again"""
|
|
self.command_params = ["os-version"]
|
|
self.mock_es_search(return_value=DATA_BASE_INFO)
|
|
self.mock_es_scan(return_value=[])
|
|
diff --git a/test/cli/package_command/pkg_list/test_pkg_list_s.py b/test/cli/package_command/pkg_list/test_pkg_list_s.py
|
|
index 3044c93e7ac5b64fa1de8195c766bd10fd554e0b..45c949dcbe007e719a2004b22a83b72aa8c59986 100644
|
|
--- a/test/cli/package_command/pkg_list/test_pkg_list_s.py
|
|
+++ b/test/cli/package_command/pkg_list/test_pkg_list_s.py
|
|
@@ -77,8 +77,8 @@ HINT :Make sure the table is valid"""
|
|
test pkgInfoGettingError
|
|
"""
|
|
self.excepted_str = """
|
|
-ERROR_CONTENT :Failed to Connect the database
|
|
-HINT :Check the connection"""
|
|
+ERROR_CONTENT :The querying package does not exist in the databases
|
|
+HINT :Use the correct package name and try again"""
|
|
self.command_params = ["os-version", "-s"]
|
|
self.mock_es_search(return_value=DATA_BASE_INFO)
|
|
self.mock_es_scan(return_value=[])
|
|
diff --git a/test/test_module/test_database_query/test_database_query_package/test_query_bin_info.py b/test/test_module/test_database_query/test_database_query_package/test_query_bin_info.py
|
|
index e59e82e5768015a328ce2ceecf4d60e5a655b9b8..3254eb8b2089bc8a76ba1844d60d92938ae888d9 100644
|
|
--- a/test/test_module/test_database_query/test_database_query_package/test_query_bin_info.py
|
|
+++ b/test/test_module/test_database_query/test_database_query_package/test_query_bin_info.py
|
|
@@ -41,7 +41,7 @@ class TestQueryBinaryPkgInfo(TestCase):
|
|
"""
|
|
self.session.scan = MagicMock(return_value=self.ALL_BINARY_RPM_INFO)
|
|
self.session.count = MagicMock(return_value={"count": 5})
|
|
- query_result = self.query_package.get_bin_info(binary_list=[], database='os_version_1', page_num=1, page_size=20,
|
|
+ query_result = self.query_package.get_bin_info(binary_list=None, database='os_version_1', page_num=1, page_size=20,
|
|
command_line=True)
|
|
self.assertIsNotNone(query_result['data'])
|
|
|
|
@@ -52,7 +52,7 @@ class TestQueryBinaryPkgInfo(TestCase):
|
|
"""
|
|
self.session.query = MagicMock(return_value=self.ALL_BINARY_INFO_PAGING)
|
|
self.session.count = MagicMock(return_value={"count": 5})
|
|
- query_result = self.query_package.get_bin_info(binary_list=[], database='os_version_1', page_num=1, page_size=5,
|
|
+ query_result = self.query_package.get_bin_info(binary_list=None, database='os_version_1', page_num=1, page_size=5,
|
|
command_line=False)
|
|
self.assertEqual(len(query_result['data']), 5)
|