summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlexander Kanavin <alex.kanavin@gmail.com>2023-10-26 12:33:20 +0200
committerLuca Ceresoli <luca.ceresoli@bootlin.com>2023-10-27 12:03:45 +0200
commit8a9749dde77bbd63082153d22388aa225f390106 (patch)
treef2eba8927918a1f48802041d17ee023efbe6c03e
parentd4d93f68f979c490cf2ed3b0511daa4557b2ea15 (diff)
downloadopenembedded-core-contrib-8a9749dde77bbd63082153d22388aa225f390106.tar.gz
selftest/sstatetests: add a test for CDN sstate cache
Specifically, the test checks that everything needed for building standard oe-core images for x86_64 and arm64 is available from the cache (with minor exceptions). Going forward, a complete world check could be enabled and additional configurations, but that requires improvements to performance of hash equivalence server in particular. Signed-off-by: Alexander Kanavin <alex@linutronix.de> Signed-off-by: Luca Ceresoli <luca.ceresoli@bootlin.com>
-rw-r--r--meta/lib/oeqa/selftest/cases/sstatetests.py46
1 files changed, 46 insertions, 0 deletions
diff --git a/meta/lib/oeqa/selftest/cases/sstatetests.py b/meta/lib/oeqa/selftest/cases/sstatetests.py
index b96eacc9ad..6a0531ae4c 100644
--- a/meta/lib/oeqa/selftest/cases/sstatetests.py
+++ b/meta/lib/oeqa/selftest/cases/sstatetests.py
@@ -14,6 +14,7 @@ import re
from oeqa.utils.commands import runCmd, bitbake, get_bb_var, create_temp_layer, get_bb_vars
from oeqa.selftest.case import OESelftestTestCase
+from oeqa.core.decorator import OETestTag
import oe
import bb.siggen
@@ -886,3 +887,48 @@ expected_sametmp_output, expected_difftmp_output)
INHERIT += "base-do-configure-modified"
""",
expected_sametmp_output, expected_difftmp_output)
+
+@OETestTag("yocto-mirrors")
+class SStateMirrors(SStateBase):
+ def check_bb_output(self, output, exceptions):
+ in_tasks = False
+ missing_objects = []
+ for l in output.splitlines():
+ if "The differences between the current build and any cached tasks start at the following tasks" in l:
+ in_tasks = True
+ continue
+ if "Writing task signature files" in l:
+ in_tasks = False
+ continue
+ if in_tasks:
+ recipe_task = l.split("/")[-1]
+ recipe, task = recipe_task.split(":")
+ for e in exceptions:
+ if e[0] in recipe and task == e[1]:
+ break
+ else:
+ missing_objects.append(recipe_task)
+ self.assertTrue(len(missing_objects) == 0, "Missing objects in the cache:\n{}".format("\n".join(missing_objects)))
+
+
+ def run_test_cdn_mirror(self, machine, targets, exceptions):
+ exceptions = exceptions + [[t, "do_deploy_source_date_epoch"] for t in targets.split()]
+ exceptions = exceptions + [[t, "do_image_qa"] for t in targets.split()]
+ self.config_sstate(True)
+ self.append_config("""
+MACHINE = "{}"
+BB_HASHSERVE_UPSTREAM = "hashserv.yocto.io:8687"
+SSTATE_MIRRORS ?= "file://.* http://cdn.jsdelivr.net/yocto/sstate/all/PATH;downloadfilename=PATH"
+""".format(machine))
+ result = bitbake("-S printdiff {}".format(targets))
+ self.check_bb_output(result.output, exceptions)
+
+ def test_cdn_mirror_qemux86_64(self):
+ # Example:
+ # exceptions = [ ["packagegroup-core-sdk","do_package"] ]
+ exceptions = []
+ self.run_test_cdn_mirror("qemux86-64", "core-image-minimal core-image-full-cmdline core-image-sato-sdk", exceptions)
+
+ def test_cdn_mirror_qemuarm64(self):
+ exceptions = []
+ self.run_test_cdn_mirror("qemuarm64", "core-image-minimal core-image-full-cmdline core-image-sato-sdk", exceptions)