summaryrefslogtreecommitdiffstats
path: root/meta/lib/oeqa/selftest/cases/prservice.py
diff options
context:
space:
mode:
Diffstat (limited to 'meta/lib/oeqa/selftest/cases/prservice.py')
-rw-r--r--meta/lib/oeqa/selftest/cases/prservice.py35
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
12from oeqa.utils.commands import runCmd, bitbake, get_bb_var 14from oeqa.utils.commands import runCmd, bitbake, get_bb_var
13from oeqa.utils.network import get_free_port 15from oeqa.utils.network import get_free_port
14 16
17import bb.utils
18
15class BitbakePrTests(OESelftestTestCase): 19class 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