From mboxrd@z Thu Jan 1 00:00:00 1970 X-GM-THRID: 7067458069078212608 X-Received: by 2002:a02:1dc4:0:b0:314:472c:9dad with SMTP id 187-20020a021dc4000000b00314472c9dadmr18127663jaj.254.1645520811647; Tue, 22 Feb 2022 01:06:51 -0800 (PST) X-BeenThere: isar-users@googlegroups.com Received: by 2002:a05:6638:412a:b0:313:f01a:bb9e with SMTP id ay42-20020a056638412a00b00313f01abb9els2923742jab.5.gmail; Tue, 22 Feb 2022 01:06:51 -0800 (PST) X-Google-Smtp-Source: ABdhPJxr/3P4mpUVPaPbkOUiScUdGy/gFfYGb/c4pLXK2265MAb6pnUgHMbLJOTFE4Kruni7VZ1T X-Received: by 2002:a02:cbc8:0:b0:314:c010:e941 with SMTP id u8-20020a02cbc8000000b00314c010e941mr12777787jaq.300.1645520811189; Tue, 22 Feb 2022 01:06:51 -0800 (PST) ARC-Seal: i=2; a=rsa-sha256; t=1645520811; cv=pass; d=google.com; s=arc-20160816; b=ZQ8oIkMfoe/D5dVwd0pWtj+Yf4qcKtGVZvts6vfo/KwTS3aRoEfKsfA+78K1DsuN3Z v7Vi/OlKDgEsscnc3s2Mqm/NgJc8seD1FTncwL+NYC2m8cV+6HYFWZoNW72ufov6EB8k M6a+eFmK8XEgjrI5mww2b9Ke2Z59d05DWTshwx8BDCMBJD5bC6/nHhZrEqgCy+zqogfx yfYtsKy4uvz1j3QLyxGioSXNjdvIHk2cR9gIvScTDLL6BhE1qwE6HGGkGkjvE9fdFuV0 km++YSMchGaYVtHGQuLJ/1YZGr9usXplMFAAjvzoAgTBK4KMdDSC52LOQ/3+8Tp/hM0X 0FiA== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:dkim-signature; bh=KvsFBpnmrcrc/yTmIPcGcoQjnu1sD1Y2F6QG6UDVnIA=; b=agSgynUK7Wti2nkOETrlzGN5JQrZnkyhLnG4LLm9K4Epy5TU6jo7CiTEjbilxvduRK KgBa6aqXagZbbOkSgiyGupqjwfnMeYsb+JQKALFcVtcQ0cECvek6maQHNWbCa4pk47qM 6c1VniRwP/DoMPmu3Y4uWIbTaJ3kc/jMgQdaS43KqDsmEyJfD6ftNrFtJziIypJAOWrA T2k1oQoeD+fXXvbdyzsI5UgOwAn0Na1Wf9a4zEptJwYmdn1qWuwMXlg/q+qZ12Axcuek tM8LsZ5gzz26en35tfu1ilV6rFQ0U/pVA5rXNFrjrQNCTk9fHy3XVEgH8d4A/vQNslU+ 5xow== ARC-Authentication-Results: i=2; gmr-mx.google.com; dkim=pass header.i=@siemens.com header.s=selector2 header.b=dmww1GUF; arc=pass (i=1 spf=pass spfdomain=siemens.com dmarc=pass fromdomain=siemens.com); spf=pass (google.com: domain of adriaan.schmidt@siemens.com designates 2a01:111:f400:fe0c::60d as permitted sender) smtp.mailfrom=adriaan.schmidt@siemens.com; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=siemens.com Return-Path: Received: from EUR04-DB3-obe.outbound.protection.outlook.com (mail-db3eur04on060d.outbound.protection.outlook.com. [2a01:111:f400:fe0c::60d]) by gmr-mx.google.com with ESMTPS id r10si1644619ill.1.2022.02.22.01.06.50 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Tue, 22 Feb 2022 01:06:50 -0800 (PST) Received-SPF: pass (google.com: domain of adriaan.schmidt@siemens.com designates 2a01:111:f400:fe0c::60d as permitted sender) client-ip=2a01:111:f400:fe0c::60d; Authentication-Results: gmr-mx.google.com; dkim=pass header.i=@siemens.com header.s=selector2 header.b=dmww1GUF; arc=pass (i=1 spf=pass spfdomain=siemens.com dmarc=pass fromdomain=siemens.com); spf=pass (google.com: domain of adriaan.schmidt@siemens.com designates 2a01:111:f400:fe0c::60d as permitted sender) smtp.mailfrom=adriaan.schmidt@siemens.com; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=siemens.com ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=ksb7UksgdcHR+BbZIxP3mTcBfzBxXRjQ+VwVISlOUmaszux+6jrb9LOyqAGoZLDxRhAJ9L6lZ/WWhdABU2Ibe4i3hw9UuqZBpDCzOQl98m2CCTkY5WJ8I0I6ToXAJ+ixnQ3lhOGuwuyV99fb4Ed5E+ua5O/X4P6FqsP377OocjLiwbuQqEyBabukJ77+tRDJYkWBOwz4l+/inu84UnXL435NJDizJSus2thSo64GzVugcB/0glvqyPnNeDVZOZOg2cDcXx+U5kj2ucHK/aJJB7ICRWOzzsmUwv1NtqX6ELEHh0L+wp+3TTlnOsybKdfiMYvkNuweBCWSCHMoB/2UXg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=KvsFBpnmrcrc/yTmIPcGcoQjnu1sD1Y2F6QG6UDVnIA=; b=T2y4VyTqhLPNYUP7dmcB7hivXjUOBJjJvlAQMpahvsiTKy/p+sTowmTUEzK2hCTHjlZmnSX4QWff3WKq+/59/jJ33KojLB3p9fie3IM6ehimjmlvZMFDpDXGHr8jlMBpMnfuLfsT8cxWiTV9dFrB3tABESpUQGTfewqkqOKmLa2KaUXlGm7AQPGZlybixBG1yeLArBVkbU3+QGcDd7qUcFBzsbvaOaTxZMY+m+SoOg6Pu/i8YIxl4o+UXQY0ctwcSrbLUtFdqk2eE8b3E8mI0QmHp+m8YvsbSTyfMp2UGC43pF3WoFVeVl+mpNyGa171qGO5IYJLPmgpm+xfMRbaJw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 194.138.21.72) smtp.rcpttodomain=googlegroups.com smtp.mailfrom=siemens.com; dmarc=pass (p=none sp=none pct=100) action=none header.from=siemens.com; dkim=none (message not signed); arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=siemens.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=KvsFBpnmrcrc/yTmIPcGcoQjnu1sD1Y2F6QG6UDVnIA=; b=dmww1GUFTSSaWBFFDXxGEL1tItNpy9xcjs7oLubwuYsL25YSY+UK52oUQvq0k5WnKvqASoGAA6Uo58bYWrcx67FHNxZgQ0Q7ziUjL6gy4Nf20OSL7bK8RecF34NPLgORruBb+8zwB5y0O8DHWtXXqT1MgQygyq8xuvVnZ9a2oX07zavLbdy1w9ZgbjHY4IJgIcHXq2me2/WsgQPCfyB/mvPvtdcLOmrIHANepke1AH688F8KPoivvAiNFn2XRxFjz56IW+PLUSTS9eqf63yoxohPthRvOdvgEwEFcLK9n+HS3KsFssZlqAXegw5+9lf8zbb1ya2aiR5pP+Q7+FRc1w== Received: from AS8PR05CA0013.eurprd05.prod.outlook.com (2603:10a6:20b:311::18) by AS4PR10MB5272.EURPRD10.PROD.OUTLOOK.COM (2603:10a6:20b:4b8::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4995.17; Tue, 22 Feb 2022 09:06:49 +0000 Received: from VE1EUR01FT025.eop-EUR01.prod.protection.outlook.com (2603:10a6:20b:311:cafe::69) by AS8PR05CA0013.outlook.office365.com (2603:10a6:20b:311::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4995.27 via Frontend Transport; Tue, 22 Feb 2022 09:06:49 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 194.138.21.72) smtp.mailfrom=siemens.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=siemens.com; Received-SPF: Pass (protection.outlook.com: domain of siemens.com designates 194.138.21.72 as permitted sender) receiver=protection.outlook.com; client-ip=194.138.21.72; helo=hybrid.siemens.com; Received: from hybrid.siemens.com (194.138.21.72) by VE1EUR01FT025.mail.protection.outlook.com (10.152.2.232) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.4995.20 via Frontend Transport; Tue, 22 Feb 2022 09:06:49 +0000 Received: from DEMCHDC8A0A.ad011.siemens.net (139.25.226.106) by DEMCHDC9SMA.ad011.siemens.net (194.138.21.72) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.18; Tue, 22 Feb 2022 10:06:48 +0100 Received: from random.ppmd.siemens.net (139.25.68.25) by DEMCHDC8A0A.ad011.siemens.net (139.25.226.106) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.18; Tue, 22 Feb 2022 10:06:48 +0100 From: Adriaan Schmidt To: CC: Adriaan Schmidt Subject: [PATCH v2 2/3] sstate: add test case Date: Tue, 22 Feb 2022 10:06:27 +0100 Message-ID: <20220222090628.2174022-3-adriaan.schmidt@siemens.com> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20220222090628.2174022-1-adriaan.schmidt@siemens.com> References: <20220222090628.2174022-1-adriaan.schmidt@siemens.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Content-Type: text/plain Return-Path: adriaan.schmidt@siemens.com X-Originating-IP: [139.25.68.25] X-ClientProxiedBy: DEMCHDC89YA.ad011.siemens.net (139.25.226.104) To DEMCHDC8A0A.ad011.siemens.net (139.25.226.106) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 5299189c-946c-4303-c34f-08d9f5e2a8a8 X-MS-TrafficTypeDiagnostic: AS4PR10MB5272:EE_ X-Microsoft-Antispam-PRVS: X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 0apctdmF9ogwGL6pm0bbvnY4eDDmapUAK6lSRMtlci/oq3tbxp8leJYNqgGflwL1c+XKdz8PZcWJngJA0FXeOS6gdPQt3JD6udLDYGtzRuRwJpY7+j0cXZVOipLLWf6r/tVfBGfvlpeQMEaD4gIvgG0RfOLPQ2wVVyWw28bxt70F8b4O3F6B44g+4/UC3pbxNoELNynsP65hQ83QkPPl7yDhP4gg/+p2tz7ueRaj/LC0ZoLFCBdDumgN2SCEsONlL+trhXsh6Ml2A9eMLboEhv3ja4FZpRrRaqAuh9TT4fvFRRDgrbLONqwE5FIwLFndikTxMr603S0L2bvrvNyIYfDgGk422Vu6wchr9kabOPSAqFiJn1l59r+r/FFi3Beeqa3X9hSERw9ZVoYq7gvLa53ymMQjbeWro0GaEXUEuOSsiSKFm1z6uVaMNCkcmLkK+qz11ScUqHFgkTi9pv2KJnKAzGbBM6sOFvG++VmJdXeZc6MN1mOD1zHPsShjfjNXvvwU6+wgQH78I0U2kZEnpMg2mGoIO7tFcFlrp7EaY1bVNlJhDrMNfOMTyIDFeTzhglIs/E3aRswY/sLh0FrVMqBArLe96pSqOeC3CRidUEcVig8JAb8FOpawLh+BTTaqMwfDdQWFhCMT2yM7lDth9SaqI/+3hSyn2q1VsMsJdj7S8PaWG0vLRz3dYR/HOrmYXjCMiZTh/+fumPIDr55blQ== X-Forefront-Antispam-Report: CIP:194.138.21.72;CTRY:DE;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:hybrid.siemens.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230001)(4636009)(46966006)(36840700001)(40470700004)(47076005)(36756003)(86362001)(26005)(186003)(40460700003)(81166007)(2906002)(6666004)(356005)(107886003)(82960400001)(16526019)(36860700001)(44832011)(8676002)(70586007)(70206006)(316002)(6916009)(508600001)(82310400004)(4326008)(8936002)(1076003)(956004)(2616005)(5660300002)(336012)(83380400001)(36900700001);DIR:OUT;SFP:1101; X-OriginatorOrg: siemens.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Feb 2022 09:06:49.0158 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 5299189c-946c-4303-c34f-08d9f5e2a8a8 X-MS-Exchange-CrossTenant-Id: 38ae3bcd-9579-4fd4-adda-b42e1495d55a X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=38ae3bcd-9579-4fd4-adda-b42e1495d55a;Ip=[194.138.21.72];Helo=[hybrid.siemens.com] X-MS-Exchange-CrossTenant-AuthSource: VE1EUR01FT025.eop-EUR01.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS4PR10MB5272 X-TUID: /Z8sc/j6WteM The test populates an sstate cache, and then (after removing tmp/) rebuilds certain recipes. Bitbake task_order logs are examined to confirm that rebuilds used arifacts from the cache. Signed-off-by: Adriaan Schmidt --- testsuite/build_test/build_test.py | 14 +++++ testsuite/build_test/cibase.py | 90 ++++++++++++++++++++++++++++++ 2 files changed, 104 insertions(+) diff --git a/testsuite/build_test/build_test.py b/testsuite/build_test/build_test.py index ec1bb311..e0eea1bd 100644 --- a/testsuite/build_test/build_test.py +++ b/testsuite/build_test/build_test.py @@ -230,3 +230,17 @@ class ContainerSdkTest(CIBaseTest): self.init() self.perform_build_test(targets, bitbake_cmd='do_populate_sdk', container=True) + +class SstateTest(CIBaseTest): + + """ + Test builds with artifacts taken from sstate cache + + :avocado: tags=sstate,fast,full + """ + def test_sstate(self): + image_target = 'mc:qemuamd64-bullseye:isar-image-base' + package_target = 'mc:qemuamd64-bullseye:hello' + + self.init('build-sstate') + self.perform_sstate_test(image_target, package_target) diff --git a/testsuite/build_test/cibase.py b/testsuite/build_test/cibase.py index 49d34de1..dbf4d3a3 100644 --- a/testsuite/build_test/cibase.py +++ b/testsuite/build_test/cibase.py @@ -1,5 +1,6 @@ #!/usr/bin/env python3 +import glob import os import re import tempfile @@ -77,3 +78,92 @@ class CIBaseTest(CIBuilder): # Cleanup self.delete_from_build_dir('tmp') self.delete_from_build_dir('ccache') + + def perform_sstate_test(self, image_target, package_target, **kwargs): + def check_executed_tasks(target, expected): + taskorder_file = glob.glob(f'{self.build_dir}/tmp/work/*/{target}/*/temp/log.task_order') + try: + with open(taskorder_file[0], 'r') as f: + tasks = [l.split()[0] for l in f.readlines()] + except (FileNotFoundError, IndexError): + tasks = [] + if expected is None: + # require that no tasks were executed + return len(tasks) == 0 + for e in expected: + should_run = True + if e.startswith('!'): + should_run = False + e = e[1:] + if should_run != (e in tasks): + self.log.error(f"{target}: executed tasks {str(tasks)} did not match expected {str(expected)}") + return False + return True + + self.configure(sstate=True, **kwargs) + + # Cleanup sstate and tmp before test + self.delete_from_build_dir('sstate-cache') + self.delete_from_build_dir('tmp') + + # Populate cache + self.bitbake(image_target, **kwargs) + + # Save contents of image deploy dir + expected_files = set(glob.glob(f'{self.build_dir}/tmp/deploy/images/*/*')) + + # Rebuild image + self.delete_from_build_dir('tmp') + self.bitbake(image_target, **kwargs) + if not all([ + check_executed_tasks('isar-bootstrap-target', + ['do_bootstrap_setscene', '!do_bootstrap']), + check_executed_tasks('buildchroot-target', + ['do_rootfs_install_setscene', '!do_rootfs_install']), + check_executed_tasks('isar-image-base-*-wic-img', + ['do_rootfs_install_setscene', '!do_rootfs_install']) + ]): + self.fail("Failed rebuild image") + + # Verify content of image deploy dir + deployed_files = set(glob.glob(f'{self.build_dir}/tmp/deploy/images/*/*')) + if not deployed_files == expected_files: + if len(expected_files - deployed_files) > 0: + self.log.error(f"{target}: files missing from deploy dir after rebuild with sstate cache:" + f"{expected_files - deployed_files}") + if len(deployed_files - expected_files) > 0: + self.log.error(f"{target}: additional files in deploy dir after rebuild with sstate cache:" + f"{deployed_files - expected_files}") + self.fail("Failed rebuild image") + + # Rebuild single package + self.delete_from_build_dir('tmp') + self.bitbake(package_target, **kwargs) + if not all([ + check_executed_tasks('isar-bootstrap-target', + ['do_bootstrap_setscene']), + check_executed_tasks('buildchroot-target', + ['!do_buildchroot_deploy']), + check_executed_tasks('hello', + ['do_dpkg_build_setscene', 'do_deploy_deb', '!do_dpkg_build']) + ]): + self.fail("Failed rebuild single package") + + # Rebuild package and image + self.delete_from_build_dir('tmp') + process.run(f'find {self.build_dir}/sstate-cache/ -name sstate:hello:* -delete') + self.bitbake(image_target, **kwargs) + if not all([ + check_executed_tasks('isar-bootstrap-target', + ['do_bootstrap_setscene', '!do_bootstrap']), + check_executed_tasks('buildchroot-target', + ['do_rootfs_install_setscene', '!do_rootfs_install']), + check_executed_tasks('hello', + ['do_fetch', 'do_dpkg_build']), + # TODO: if we actually make a change to hello, then we could test + # that do_rootfs is executed. currently, hello is rebuilt, + # but its sstate sig/hash does not change. + check_executed_tasks('isar-image-base-*-wic-img', + ['do_rootfs_install_setscene', '!do_rootfs_install']) + ]): + self.fail("Failed rebuild package and image") -- 2.30.2