diff options
Diffstat (limited to 'meta/lib/oeqa/selftest/cases/prservice.py')
-rw-r--r-- | meta/lib/oeqa/selftest/cases/prservice.py | 35 |
1 files changed, 26 insertions, 9 deletions
diff --git a/meta/lib/oeqa/selftest/cases/prservice.py b/meta/lib/oeqa/selftest/cases/prservice.py index 578b2b4dd9..8da3739c57 100644 --- a/meta/lib/oeqa/selftest/cases/prservice.py +++ b/meta/lib/oeqa/selftest/cases/prservice.py | |||
@@ -1,4 +1,6 @@ | |||
1 | # | 1 | # |
2 | # Copyright OpenEmbedded Contributors | ||
3 | # | ||
2 | # SPDX-License-Identifier: MIT | 4 | # SPDX-License-Identifier: MIT |
3 | # | 5 | # |
4 | 6 | ||
@@ -12,6 +14,8 @@ from oeqa.selftest.case import OESelftestTestCase | |||
12 | from oeqa.utils.commands import runCmd, bitbake, get_bb_var | 14 | from oeqa.utils.commands import runCmd, bitbake, get_bb_var |
13 | from oeqa.utils.network import get_free_port | 15 | from oeqa.utils.network import get_free_port |
14 | 16 | ||
17 | import bb.utils | ||
18 | |||
15 | class BitbakePrTests(OESelftestTestCase): | 19 | class BitbakePrTests(OESelftestTestCase): |
16 | 20 | ||
17 | @classmethod | 21 | @classmethod |
@@ -19,6 +23,16 @@ class BitbakePrTests(OESelftestTestCase): | |||
19 | super(BitbakePrTests, cls).setUpClass() | 23 | super(BitbakePrTests, cls).setUpClass() |
20 | cls.pkgdata_dir = get_bb_var('PKGDATA_DIR') | 24 | cls.pkgdata_dir = get_bb_var('PKGDATA_DIR') |
21 | 25 | ||
26 | cls.exported_db_path = os.path.join(cls.builddir, 'export.inc') | ||
27 | cls.current_db_path = os.path.join(get_bb_var('PERSISTENT_DIR'), 'prserv.sqlite3') | ||
28 | |||
29 | def cleanup(self): | ||
30 | # Ensure any memory resident bitbake is stopped | ||
31 | bitbake("-m") | ||
32 | # Remove any existing export file or prserv database | ||
33 | bb.utils.remove(self.exported_db_path) | ||
34 | bb.utils.remove(self.current_db_path + "*") | ||
35 | |||
22 | def get_pr_version(self, package_name): | 36 | def get_pr_version(self, package_name): |
23 | package_data_file = os.path.join(self.pkgdata_dir, 'runtime', package_name) | 37 | package_data_file = os.path.join(self.pkgdata_dir, 'runtime', package_name) |
24 | package_data = ftools.read_file(package_data_file) | 38 | package_data = ftools.read_file(package_data_file) |
@@ -40,13 +54,14 @@ class BitbakePrTests(OESelftestTestCase): | |||
40 | return str(stamps[0]) | 54 | return str(stamps[0]) |
41 | 55 | ||
42 | def increment_package_pr(self, package_name): | 56 | def increment_package_pr(self, package_name): |
43 | inc_data = "do_package_append() {\n bb.build.exec_func('do_test_prserv', d)\n}\ndo_test_prserv() {\necho \"The current date is: %s\" > ${PKGDESTWORK}/${PN}.datestamp\n}" % datetime.datetime.now() | 57 | inc_data = "do_package:append() {\n bb.build.exec_func('do_test_prserv', d)\n}\ndo_test_prserv() {\necho \"The current date is: %s\" > ${PKGDESTWORK}/${PN}.datestamp\n}" % datetime.datetime.now() |
44 | self.write_recipeinc(package_name, inc_data) | 58 | self.write_recipeinc(package_name, inc_data) |
45 | res = bitbake(package_name, ignore_status=True) | 59 | res = bitbake(package_name, ignore_status=True) |
46 | self.delete_recipeinc(package_name) | 60 | self.delete_recipeinc(package_name) |
47 | self.assertEqual(res.status, 0, msg=res.output) | 61 | self.assertEqual(res.status, 0, msg=res.output) |
48 | 62 | ||
49 | def config_pr_tests(self, package_name, package_type='rpm', pr_socket='localhost:0'): | 63 | def config_pr_tests(self, package_name, package_type='rpm', pr_socket='localhost:0'): |
64 | self.cleanup() | ||
50 | config_package_data = 'PACKAGE_CLASSES = "package_%s"' % package_type | 65 | config_package_data = 'PACKAGE_CLASSES = "package_%s"' % package_type |
51 | self.write_config(config_package_data) | 66 | self.write_config(config_package_data) |
52 | config_server_data = 'PRSERV_HOST = "%s"' % pr_socket | 67 | config_server_data = 'PRSERV_HOST = "%s"' % pr_socket |
@@ -66,24 +81,24 @@ class BitbakePrTests(OESelftestTestCase): | |||
66 | self.assertTrue(pr_2 - pr_1 == 1, "New PR %s did not increment as expected (from %s), difference should be 1" % (pr_2, pr_1)) | 81 | self.assertTrue(pr_2 - pr_1 == 1, "New PR %s did not increment as expected (from %s), difference should be 1" % (pr_2, pr_1)) |
67 | self.assertTrue(stamp_1 != stamp_2, "Different pkg rev. but same stamp: %s" % stamp_1) | 82 | self.assertTrue(stamp_1 != stamp_2, "Different pkg rev. but same stamp: %s" % stamp_1) |
68 | 83 | ||
84 | self.cleanup() | ||
85 | |||
69 | def run_test_pr_export_import(self, package_name, replace_current_db=True): | 86 | def run_test_pr_export_import(self, package_name, replace_current_db=True): |
70 | self.config_pr_tests(package_name) | 87 | self.config_pr_tests(package_name) |
71 | 88 | ||
72 | self.increment_package_pr(package_name) | 89 | self.increment_package_pr(package_name) |
73 | pr_1 = self.get_pr_version(package_name) | 90 | pr_1 = self.get_pr_version(package_name) |
74 | 91 | ||
75 | exported_db_path = os.path.join(self.builddir, 'export.inc') | 92 | export_result = runCmd("bitbake-prserv-tool export %s" % self.exported_db_path, ignore_status=True) |
76 | export_result = runCmd("bitbake-prserv-tool export %s" % exported_db_path, ignore_status=True) | ||
77 | self.assertEqual(export_result.status, 0, msg="PR Service database export failed: %s" % export_result.output) | 93 | self.assertEqual(export_result.status, 0, msg="PR Service database export failed: %s" % export_result.output) |
78 | self.assertTrue(os.path.exists(exported_db_path)) | 94 | self.assertTrue(os.path.exists(self.exported_db_path), msg="%s didn't exist, tool output %s" % (self.exported_db_path, export_result.output)) |
79 | 95 | ||
80 | if replace_current_db: | 96 | if replace_current_db: |
81 | current_db_path = os.path.join(get_bb_var('PERSISTENT_DIR'), 'prserv.sqlite3') | 97 | self.assertTrue(os.path.exists(self.current_db_path), msg="Path to current PR Service database is invalid: %s" % self.current_db_path) |
82 | self.assertTrue(os.path.exists(current_db_path), msg="Path to current PR Service database is invalid: %s" % current_db_path) | 98 | os.remove(self.current_db_path) |
83 | os.remove(current_db_path) | ||
84 | 99 | ||
85 | import_result = runCmd("bitbake-prserv-tool import %s" % exported_db_path, ignore_status=True) | 100 | import_result = runCmd("bitbake-prserv-tool import %s" % self.exported_db_path, ignore_status=True) |
86 | os.remove(exported_db_path) | 101 | #os.remove(self.exported_db_path) |
87 | self.assertEqual(import_result.status, 0, msg="PR Service database import failed: %s" % import_result.output) | 102 | self.assertEqual(import_result.status, 0, msg="PR Service database import failed: %s" % import_result.output) |
88 | 103 | ||
89 | self.increment_package_pr(package_name) | 104 | self.increment_package_pr(package_name) |
@@ -91,6 +106,8 @@ class BitbakePrTests(OESelftestTestCase): | |||
91 | 106 | ||
92 | self.assertTrue(pr_2 - pr_1 == 1, "New PR %s did not increment as expected (from %s), difference should be 1" % (pr_2, pr_1)) | 107 | self.assertTrue(pr_2 - pr_1 == 1, "New PR %s did not increment as expected (from %s), difference should be 1" % (pr_2, pr_1)) |
93 | 108 | ||
109 | self.cleanup() | ||
110 | |||
94 | def test_import_export_replace_db(self): | 111 | def test_import_export_replace_db(self): |
95 | self.run_test_pr_export_import('m4') | 112 | self.run_test_pr_export_import('m4') |
96 | 113 | ||