diff options
author | Richard Purdie <richard.purdie@linuxfoundation.org> | 2019-08-02 15:32:27 +0100 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2019-08-06 11:21:32 +0100 |
commit | fd79638046891fb5ab6091f7ef3e7ae6df12c39b (patch) | |
tree | 04a256b8a35158fbb1d90b6d4fbcb84cb2301066 /bitbake/lib/bb/tests | |
parent | 347c2056022d21deea6e2e7359eca2b96c6f01fe (diff) | |
download | poky-fd79638046891fb5ab6091f7ef3e7ae6df12c39b.tar.gz |
bitbake: tests/runqueue: Add hashserv+runqueue test
Add a test which tests the runqueue adaptations for hash equivalency.
(Bitbake rev: 477321d0780df177c1582db119c2bb6795912fc6)
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'bitbake/lib/bb/tests')
-rw-r--r-- | bitbake/lib/bb/tests/runqueue-tests/classes/base.bbclass | 14 | ||||
-rw-r--r-- | bitbake/lib/bb/tests/runqueue-tests/conf/bitbake.conf | 2 | ||||
-rw-r--r-- | bitbake/lib/bb/tests/runqueue.py | 27 |
3 files changed, 40 insertions, 3 deletions
diff --git a/bitbake/lib/bb/tests/runqueue-tests/classes/base.bbclass b/bitbake/lib/bb/tests/runqueue-tests/classes/base.bbclass index 3a0f151c9a..138edc3fa9 100644 --- a/bitbake/lib/bb/tests/runqueue-tests/classes/base.bbclass +++ b/bitbake/lib/bb/tests/runqueue-tests/classes/base.bbclass | |||
@@ -5,7 +5,8 @@ def stamptask(d): | |||
5 | import time | 5 | import time |
6 | 6 | ||
7 | thistask = d.expand("${PN}:${BB_CURRENTTASK}") | 7 | thistask = d.expand("${PN}:${BB_CURRENTTASK}") |
8 | with open(d.expand("${TOPDIR}/%s.run") % thistask, "a+") as f: | 8 | stampname = d.expand("${TOPDIR}/%s.run" % thistask) |
9 | with open(stampname, "a+") as f: | ||
9 | f.write("\n") | 10 | f.write("\n") |
10 | 11 | ||
11 | if d.getVar("BB_CURRENT_MC") != "default": | 12 | if d.getVar("BB_CURRENT_MC") != "default": |
@@ -13,10 +14,21 @@ def stamptask(d): | |||
13 | if thistask in d.getVar("SLOWTASKS").split(): | 14 | if thistask in d.getVar("SLOWTASKS").split(): |
14 | bb.note("Slowing task %s" % thistask) | 15 | bb.note("Slowing task %s" % thistask) |
15 | time.sleep(0.5) | 16 | time.sleep(0.5) |
17 | if d.getVar("BB_HASHSERVE"): | ||
18 | task = d.getVar("BB_CURRENTTASK") | ||
19 | if task in ['package', 'package_qa', 'packagedata', 'package_write_ipk', 'package_write_rpm', 'populate_lic', 'populate_sysroot']: | ||
20 | bb.parse.siggen.report_unihash(os.getcwd(), d.getVar("BB_CURRENTTASK"), d) | ||
16 | 21 | ||
17 | with open(d.expand("${TOPDIR}/task.log"), "a+") as f: | 22 | with open(d.expand("${TOPDIR}/task.log"), "a+") as f: |
18 | f.write(thistask + "\n") | 23 | f.write(thistask + "\n") |
19 | 24 | ||
25 | |||
26 | def sstate_output_hash(path, sigfile, task, d): | ||
27 | import hashlib | ||
28 | h = hashlib.sha256() | ||
29 | h.update(d.expand("${PN}:${BB_CURRENTTASK}").encode('utf-8')) | ||
30 | return h.hexdigest() | ||
31 | |||
20 | python do_fetch() { | 32 | python do_fetch() { |
21 | # fetch | 33 | # fetch |
22 | stamptask(d) | 34 | stamptask(d) |
diff --git a/bitbake/lib/bb/tests/runqueue-tests/conf/bitbake.conf b/bitbake/lib/bb/tests/runqueue-tests/conf/bitbake.conf index 96ee1cd5ec..1c61f27607 100644 --- a/bitbake/lib/bb/tests/runqueue-tests/conf/bitbake.conf +++ b/bitbake/lib/bb/tests/runqueue-tests/conf/bitbake.conf | |||
@@ -11,6 +11,6 @@ STAMP = "${TMPDIR}/stamps/${PN}" | |||
11 | T = "${TMPDIR}/workdir/${PN}/temp" | 11 | T = "${TMPDIR}/workdir/${PN}/temp" |
12 | BB_NUMBER_THREADS = "4" | 12 | BB_NUMBER_THREADS = "4" |
13 | 13 | ||
14 | BB_HASHBASE_WHITELIST = "BB_CURRENT_MC" | 14 | BB_HASHBASE_WHITELIST = "BB_CURRENT_MC BB_HASHSERVE" |
15 | 15 | ||
16 | include conf/multiconfig/${BB_CURRENT_MC}.conf | 16 | include conf/multiconfig/${BB_CURRENT_MC}.conf |
diff --git a/bitbake/lib/bb/tests/runqueue.py b/bitbake/lib/bb/tests/runqueue.py index f22ad4bd81..fbdacccfa1 100644 --- a/bitbake/lib/bb/tests/runqueue.py +++ b/bitbake/lib/bb/tests/runqueue.py | |||
@@ -25,7 +25,7 @@ class RunQueueTests(unittest.TestCase): | |||
25 | a1_sstatevalid = "a1:do_package a1:do_package_qa a1:do_packagedata a1:do_package_write_ipk a1:do_package_write_rpm a1:do_populate_lic a1:do_populate_sysroot" | 25 | a1_sstatevalid = "a1:do_package a1:do_package_qa a1:do_packagedata a1:do_package_write_ipk a1:do_package_write_rpm a1:do_populate_lic a1:do_populate_sysroot" |
26 | b1_sstatevalid = "b1:do_package b1:do_package_qa b1:do_packagedata b1:do_package_write_ipk b1:do_package_write_rpm b1:do_populate_lic b1:do_populate_sysroot" | 26 | b1_sstatevalid = "b1:do_package b1:do_package_qa b1:do_packagedata b1:do_package_write_ipk b1:do_package_write_rpm b1:do_populate_lic b1:do_populate_sysroot" |
27 | 27 | ||
28 | def run_bitbakecmd(self, cmd, builddir, sstatevalid="", slowtasks="", extraenv=None): | 28 | def run_bitbakecmd(self, cmd, builddir, sstatevalid="", slowtasks="", extraenv=None, cleanup=False): |
29 | env = os.environ.copy() | 29 | env = os.environ.copy() |
30 | env["BBPATH"] = os.path.realpath(os.path.join(os.path.dirname(__file__), "runqueue-tests")) | 30 | env["BBPATH"] = os.path.realpath(os.path.join(os.path.dirname(__file__), "runqueue-tests")) |
31 | env["BB_ENV_EXTRAWHITE"] = "SSTATEVALID SLOWTASKS" | 31 | env["BB_ENV_EXTRAWHITE"] = "SSTATEVALID SLOWTASKS" |
@@ -42,6 +42,8 @@ class RunQueueTests(unittest.TestCase): | |||
42 | tasks = [] | 42 | tasks = [] |
43 | with open(builddir + "/task.log", "r") as f: | 43 | with open(builddir + "/task.log", "r") as f: |
44 | tasks = [line.rstrip() for line in f] | 44 | tasks = [line.rstrip() for line in f] |
45 | if cleanup: | ||
46 | os.remove(builddir + "/task.log") | ||
45 | return tasks | 47 | return tasks |
46 | 48 | ||
47 | def test_no_setscenevalid(self): | 49 | def test_no_setscenevalid(self): |
@@ -226,3 +228,26 @@ class RunQueueTests(unittest.TestCase): | |||
226 | expected.remove(x) | 228 | expected.remove(x) |
227 | self.assertEqual(set(tasks), set(expected)) | 229 | self.assertEqual(set(tasks), set(expected)) |
228 | 230 | ||
231 | |||
232 | def test_hashserv(self): | ||
233 | with tempfile.TemporaryDirectory(prefix="runqueuetest") as tempdir: | ||
234 | extraenv = { | ||
235 | "BB_HASHSERVE" : "localhost:0", | ||
236 | "BB_SIGNATURE_HANDLER" : "TestEquivHash" | ||
237 | } | ||
238 | cmd = ["bitbake", "a1", "b1"] | ||
239 | setscenetasks = ['package_write_ipk_setscene', 'package_write_rpm_setscene', 'packagedata_setscene', | ||
240 | 'populate_sysroot_setscene', 'package_qa_setscene'] | ||
241 | sstatevalid = "" | ||
242 | tasks = self.run_bitbakecmd(cmd, tempdir, sstatevalid, extraenv=extraenv, cleanup=True) | ||
243 | expected = ['a1:' + x for x in self.alltasks] + ['b1:' + x for x in self.alltasks] | ||
244 | self.assertEqual(set(tasks), set(expected)) | ||
245 | cmd = ["bitbake", "a1", "-c", "install", "-f"] | ||
246 | tasks = self.run_bitbakecmd(cmd, tempdir, sstatevalid, extraenv=extraenv, cleanup=True) | ||
247 | expected = ['a1:install'] | ||
248 | self.assertEqual(set(tasks), set(expected)) | ||
249 | cmd = ["bitbake", "a1", "b1"] | ||
250 | tasks = self.run_bitbakecmd(cmd, tempdir, sstatevalid, extraenv=extraenv, cleanup=True) | ||
251 | expected = ['a1:' + x for x in setscenetasks] + ['b1:' + x for x in setscenetasks] + ['a1:build', 'b1:build'] | ||
252 | self.assertEqual(set(tasks), set(expected)) | ||
253 | |||