diff options
author | Mariano Lopez <mariano.lopez@linux.intel.com> | 2017-01-13 10:47:53 +0000 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2017-01-23 12:05:20 +0000 |
commit | 58789be270c903bf75c1946a4c626b37a5bcdc72 (patch) | |
tree | db84f05a6ab1fdeac5cdd1224558216e562f35d6 /meta/lib/oeqa/utils/package_manager.py | |
parent | f8d7db1905902c048d22c86ecddd1be98419bbaf (diff) | |
download | poky-58789be270c903bf75c1946a4c626b37a5bcdc72.tar.gz |
testimage.bbclass: Add package install feature
This allows to use the package install feature with
the new OEQA framework.
[YOCTO #10234]
(From OE-Core rev: 077dc19445574457769eb4f231de97e8059cb75e)
Signed-off-by: Mariano Lopez <mariano.lopez@linux.intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'meta/lib/oeqa/utils/package_manager.py')
-rw-r--r-- | meta/lib/oeqa/utils/package_manager.py | 46 |
1 files changed, 33 insertions, 13 deletions
diff --git a/meta/lib/oeqa/utils/package_manager.py b/meta/lib/oeqa/utils/package_manager.py index ab0d3e5564..92646488da 100644 --- a/meta/lib/oeqa/utils/package_manager.py +++ b/meta/lib/oeqa/utils/package_manager.py | |||
@@ -1,7 +1,8 @@ | |||
1 | import bb | 1 | import os |
2 | import json | 2 | import json |
3 | import shutil | 3 | import shutil |
4 | 4 | ||
5 | from oeqa.core.utils.test import getCaseFile, getCaseMethod | ||
5 | 6 | ||
6 | def get_package_manager(d, root_path): | 7 | def get_package_manager(d, root_path): |
7 | """ | 8 | """ |
@@ -86,6 +87,7 @@ def extract_packages(d, needed_packages): | |||
86 | Extract packages that will be needed during runtime. | 87 | Extract packages that will be needed during runtime. |
87 | """ | 88 | """ |
88 | 89 | ||
90 | import bb | ||
89 | import oe.path | 91 | import oe.path |
90 | 92 | ||
91 | extracted_path = d.getVar('TEST_EXTRACTED_DIR') | 93 | extracted_path = d.getVar('TEST_EXTRACTED_DIR') |
@@ -152,20 +154,38 @@ def _copy_package(d, pkg): | |||
152 | shutil.copy2(file_path, dst_dir) | 154 | shutil.copy2(file_path, dst_dir) |
153 | shutil.rmtree(pkg_path) | 155 | shutil.rmtree(pkg_path) |
154 | 156 | ||
155 | def install_uninstall_packages(self, test_id, pkg_dir, install): | 157 | def install_package(test_case): |
156 | """ | 158 | """ |
157 | Check if the test requires a package and Install/Unistall it in the DUT | 159 | Installs package in DUT if required. |
158 | """ | 160 | """ |
161 | needed_packages = test_needs_package(test_case) | ||
162 | if needed_packages: | ||
163 | _install_uninstall_packages(needed_packages, test_case, True) | ||
159 | 164 | ||
160 | test = test_id.split('.')[4] | 165 | def uninstall_package(test_case): |
161 | module = self.getModulefromID(test_id) | 166 | """ |
162 | json = self._getJsonFile(module) | 167 | Uninstalls package in DUT if required. |
163 | if json: | 168 | """ |
164 | needed_packages = self._getNeededPackages(json, test) | 169 | needed_packages = test_needs_package(test_case) |
170 | if needed_packages: | ||
171 | _install_uninstall_packages(needed_packages, test_case, False) | ||
172 | |||
173 | def test_needs_package(test_case): | ||
174 | """ | ||
175 | Checks if a test case requires to install/uninstall packages. | ||
176 | """ | ||
177 | test_file = getCaseFile(test_case) | ||
178 | json_file = _get_json_file(test_file) | ||
179 | |||
180 | if json_file: | ||
181 | test_method = getCaseMethod(test_case) | ||
182 | needed_packages = _get_needed_packages(json_file, test_method) | ||
165 | if needed_packages: | 183 | if needed_packages: |
166 | self._install_uninstall_packages(needed_packages, pkg_dir, install) | 184 | return needed_packages |
185 | |||
186 | return None | ||
167 | 187 | ||
168 | def _install_uninstall_packages(self, needed_packages, pkg_dir, install=True): | 188 | def _install_uninstall_packages(needed_packages, test_case, install=True): |
169 | """ | 189 | """ |
170 | Install/Unistall packages in the DUT without using a package manager | 190 | Install/Unistall packages in the DUT without using a package manager |
171 | """ | 191 | """ |
@@ -179,12 +199,12 @@ def _install_uninstall_packages(self, needed_packages, pkg_dir, install=True): | |||
179 | pkg = package['pkg'] | 199 | pkg = package['pkg'] |
180 | rm = package.get('rm', False) | 200 | rm = package.get('rm', False) |
181 | extract = package.get('extract', True) | 201 | extract = package.get('extract', True) |
182 | src_dir = os.path.join(pkg_dir, pkg) | 202 | src_dir = os.path.join(test_case.tc.extract_dir, pkg) |
183 | 203 | ||
184 | # Install package | 204 | # Install package |
185 | if install and extract: | 205 | if install and extract: |
186 | self.target.connection.copy_dir_to(src_dir, '/') | 206 | test_case.tc.target.copyDirTo(src_dir, '/') |
187 | 207 | ||
188 | # Unistall package | 208 | # Unistall package |
189 | elif not install and rm: | 209 | elif not install and rm: |
190 | self.target.connection.delete_dir_structure(src_dir, '/') | 210 | test_case.tc.target.deleteDirStructure(src_dir, '/') |