summaryrefslogtreecommitdiffstats
path: root/bitbake/lib/bb/tests/runqueue.py
diff options
context:
space:
mode:
authorRichard Purdie <richard.purdie@linuxfoundation.org>2019-08-19 15:19:39 +0100
committerRichard Purdie <richard.purdie@linuxfoundation.org>2019-09-30 17:23:35 +0100
commitd0b7471ba89e6c7c1c00019bfe6c6c0aea94dd5a (patch)
treeb028f021428dc07c70bb97dade3c52190b11ca1d /bitbake/lib/bb/tests/runqueue.py
parentb83d5c15adcc2d106194d85dd1b0496678c675e1 (diff)
downloadpoky-d0b7471ba89e6c7c1c00019bfe6c6c0aea94dd5a.tar.gz
bitbake: runqueue: Fix task migration problems
Tasks were not migrating consistently, particularly: * if a task was rehashed which had already run * if a task which was valid became invalid due to a rehash We need to always run the migration code for rehashed tasks and then reprocess them for hash validity. This means rearranging the code. It also means several tests are no longer correct and can't be written correctly to work on all possible workflows so those are removed. (Bitbake rev: 8443989ee41e9b162972935513e437b5c66ea74d) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'bitbake/lib/bb/tests/runqueue.py')
-rw-r--r--bitbake/lib/bb/tests/runqueue.py89
1 files changed, 0 insertions, 89 deletions
diff --git a/bitbake/lib/bb/tests/runqueue.py b/bitbake/lib/bb/tests/runqueue.py
index cb4d526f13..01b992c47c 100644
--- a/bitbake/lib/bb/tests/runqueue.py
+++ b/bitbake/lib/bb/tests/runqueue.py
@@ -312,92 +312,3 @@ class RunQueueTests(unittest.TestCase):
312 else: 312 else:
313 self.assertEqual(tasks.count(i), 1, "%s not in task list once" % i) 313 self.assertEqual(tasks.count(i), 1, "%s not in task list once" % i)
314 314
315 @unittest.skipIf(sys.version_info < (3, 5, 0), 'Python 3.5 or later required')
316 def test_hashserv_partial_match(self):
317 # e1:do_package matches initial built but not second hash value
318 with tempfile.TemporaryDirectory(prefix="runqueuetest") as tempdir:
319 extraenv = {
320 "BB_HASHSERVE" : "auto",
321 "BB_SIGNATURE_HANDLER" : "TestEquivHash"
322 }
323 cmd = ["bitbake", "a1", "b1"]
324 setscenetasks = ['package_write_ipk_setscene', 'package_write_rpm_setscene', 'packagedata_setscene',
325 'populate_sysroot_setscene', 'package_qa_setscene']
326 sstatevalid = ""
327 tasks = self.run_bitbakecmd(cmd, tempdir, sstatevalid, extraenv=extraenv, cleanup=True)
328 expected = ['a1:' + x for x in self.alltasks] + ['b1:' + x for x in self.alltasks]
329 self.assertEqual(set(tasks), set(expected))
330 with open(tempdir + "/stamps/a1.do_install.taint", "w") as f:
331 f.write("d460a29e-903f-4b76-a96b-3bcc22a65994")
332 with open(tempdir + "/stamps/b1.do_install.taint", "w") as f:
333 f.write("ed36d46a-2977-458a-b3de-eef885bc1817")
334 cmd = ["bitbake", "e1"]
335 sstatevalid = "e1:do_package:685e69a026b2f029483fdefe6a11e1e06641dd2a0f6f86e27b9b550f8f21229d"
336 tasks = self.run_bitbakecmd(cmd, tempdir, sstatevalid, extraenv=extraenv, cleanup=True)
337 expected = ['a1:package', 'a1:install', 'b1:package', 'b1:install', 'a1:populate_sysroot', 'b1:populate_sysroot',
338 'a1:package_write_ipk_setscene', 'b1:packagedata_setscene', 'b1:package_write_rpm_setscene',
339 'a1:package_write_rpm_setscene', 'b1:package_write_ipk_setscene', 'a1:packagedata_setscene',
340 'e1:package_setscene'] + ['e1:' + x for x in self.alltasks]
341 expected.remove('e1:package')
342 self.assertEqual(set(tasks), set(expected))
343
344 @unittest.skipIf(sys.version_info < (3, 5, 0), 'Python 3.5 or later required')
345 def test_hashserv_partial_match2(self):
346 # e1:do_package + e1:do_populate_sysroot matches initial built but not second hash value
347 with tempfile.TemporaryDirectory(prefix="runqueuetest") as tempdir:
348 extraenv = {
349 "BB_HASHSERVE" : "auto",
350 "BB_SIGNATURE_HANDLER" : "TestEquivHash"
351 }
352 cmd = ["bitbake", "a1", "b1"]
353 setscenetasks = ['package_write_ipk_setscene', 'package_write_rpm_setscene', 'packagedata_setscene',
354 'populate_sysroot_setscene', 'package_qa_setscene']
355 sstatevalid = ""
356 tasks = self.run_bitbakecmd(cmd, tempdir, sstatevalid, extraenv=extraenv, cleanup=True)
357 expected = ['a1:' + x for x in self.alltasks] + ['b1:' + x for x in self.alltasks]
358 self.assertEqual(set(tasks), set(expected))
359 with open(tempdir + "/stamps/a1.do_install.taint", "w") as f:
360 f.write("d460a29e-903f-4b76-a96b-3bcc22a65994")
361 with open(tempdir + "/stamps/b1.do_install.taint", "w") as f:
362 f.write("ed36d46a-2977-458a-b3de-eef885bc1817")
363 cmd = ["bitbake", "e1"]
364 sstatevalid = "e1:do_package:685e69a026b2f029483fdefe6a11e1e06641dd2a0f6f86e27b9b550f8f21229d e1:do_populate_sysroot:ef7dc0e2dd55d0534e75cba50731ff42f949818b6f29a65d72bc05856e56711d"
365 tasks = self.run_bitbakecmd(cmd, tempdir, sstatevalid, extraenv=extraenv, cleanup=True)
366 expected = ['a1:package', 'a1:install', 'b1:package', 'b1:install', 'a1:populate_sysroot', 'b1:populate_sysroot',
367 'a1:package_write_ipk_setscene', 'b1:packagedata_setscene', 'b1:package_write_rpm_setscene',
368 'a1:package_write_rpm_setscene', 'b1:package_write_ipk_setscene', 'a1:packagedata_setscene',
369 'e1:package_setscene', 'e1:populate_sysroot_setscene', 'e1:build', 'e1:package_qa', 'e1:package_write_rpm', 'e1:package_write_ipk', 'e1:packagedata']
370 self.assertEqual(set(tasks), set(expected))
371
372 @unittest.skipIf(sys.version_info < (3, 5, 0), 'Python 3.5 or later required')
373 def test_hashserv_partial_match3(self):
374 # e1:do_package is valid for a1 but not after b1
375 # In former buggy code, this triggered e1:do_fetch, then e1:do_populate_sysroot to run
376 # with none of the intermediate tasks which is a serious bug
377 with tempfile.TemporaryDirectory(prefix="runqueuetest") as tempdir:
378 extraenv = {
379 "BB_HASHSERVE" : "auto",
380 "BB_SIGNATURE_HANDLER" : "TestEquivHash"
381 }
382 cmd = ["bitbake", "a1", "b1"]
383 setscenetasks = ['package_write_ipk_setscene', 'package_write_rpm_setscene', 'packagedata_setscene',
384 'populate_sysroot_setscene', 'package_qa_setscene']
385 sstatevalid = ""
386 tasks = self.run_bitbakecmd(cmd, tempdir, sstatevalid, extraenv=extraenv, cleanup=True)
387 expected = ['a1:' + x for x in self.alltasks] + ['b1:' + x for x in self.alltasks]
388 self.assertEqual(set(tasks), set(expected))
389 with open(tempdir + "/stamps/a1.do_install.taint", "w") as f:
390 f.write("d460a29e-903f-4b76-a96b-3bcc22a65994")
391 with open(tempdir + "/stamps/b1.do_install.taint", "w") as f:
392 f.write("ed36d46a-2977-458a-b3de-eef885bc1817")
393 cmd = ["bitbake", "e1", "-DD"]
394 sstatevalid = "e1:do_package:af056eae12a733a6a8c4f4da8c6757e588e13565852c94e2aad4d953a3989c13 e1:do_package:a3677703db82b22d28d57c1820a47851dd780104580863f5bd32e66e003a779d"
395 tasks = self.run_bitbakecmd(cmd, tempdir, sstatevalid, extraenv=extraenv, cleanup=True, slowtasks="e1:fetch b1:install")
396 expected = ['a1:package', 'a1:install', 'b1:package', 'b1:install', 'a1:populate_sysroot', 'b1:populate_sysroot',
397 'a1:package_write_ipk_setscene', 'b1:packagedata_setscene', 'b1:package_write_rpm_setscene',
398 'a1:package_write_rpm_setscene', 'b1:package_write_ipk_setscene', 'a1:packagedata_setscene',
399 'e1:package_setscene'] + ['e1:' + x for x in self.alltasks]
400 expected.remove('e1:package')
401 self.assertEqual(set(tasks), set(expected))
402
403