From patchwork Tue Mar 22 21:19:07 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sean Anderson X-Patchwork-Id: 1608370 X-Patchwork-Delegate: trini@ti.com Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: bilbo.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=seco.com header.i=@seco.com header.a=rsa-sha256 header.s=selector1 header.b=F6eFqx8J; dkim-atps=neutral Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de (client-ip=85.214.62.61; helo=phobos.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Received: from phobos.denx.de (phobos.denx.de [85.214.62.61]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits)) (No client certificate requested) by bilbo.ozlabs.org (Postfix) with ESMTPS id 4KNPWN23Gsz9s1l for ; Wed, 23 Mar 2022 08:19:28 +1100 (AEDT) Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) by phobos.denx.de (Postfix) with ESMTP id 4B39183BAF; Tue, 22 Mar 2022 22:19:25 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=pass (p=reject dis=none) header.from=seco.com Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de Authentication-Results: phobos.denx.de; dkim=pass (2048-bit key; unprotected) header.d=seco.com header.i=@seco.com header.b="F6eFqx8J"; dkim-atps=neutral Received: by phobos.denx.de (Postfix, from userid 109) id 56FCB83BB6; Tue, 22 Mar 2022 22:19:23 +0100 (CET) X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de X-Spam-Level: X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,SPF_HELO_PASS,SPF_PASS, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.2 Received: from EUR04-VI1-obe.outbound.protection.outlook.com (mail-vi1eur04on0610.outbound.protection.outlook.com [IPv6:2a01:111:f400:fe0e::610]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by phobos.denx.de (Postfix) with ESMTPS id 9853783BA3 for ; Tue, 22 Mar 2022 22:19:19 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=pass (p=reject dis=none) header.from=seco.com Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=sean.anderson@seco.com ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=B8eLbYXG6K4EJXI/ro1F8qZpJciipNPC2eo/D8FD+cNXoOZm5Ik5lEMQiZwVXI58PajmEvPf8NAY5uzOQ+PIaZrrauLpgNUP5PRxdozgVuhz4vfqBfNI+fjz+5SiOrJ50dC734wssbF8mRfUL/ehbfh6A7YpmzsXiBpQ5DEnQJKt65LMRBh4eMyhWIAEEtyrdvOCu0Kterg95qb9VH2ydoIR2PV4YaiVhzNV0Ogq6EGj6xh6H+8Yq86uxyfEg8pJ4XGEWHYAFnPjnhYZJHsNRyAu86nRczc6iyYMH1Jx2PjqnK5aynKMdJmN64bjNofbpqU/RnZUCtrrXQpEerDT9A== 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=GVV6+p0MmyVplibB125VeQu29QrE9xkaPzSny3d19DM=; b=Ou8PvP30lASK/juyanD30ulWvTXbjEtYG1oaNaU5zVvkhmd9hXjbVD2ZCjon+5CXd3c9PRBhvVgp5CnEVEUWLXWJvL2hUPUypJT6FfEsH6okQO23jFcChnWIOdI8jawNO5fOfwRh1SOhvsDZ6QtKeq2KPqqyaFQskVIIBr8SVBhrud0xoVZmlECmqYUpNe+0DX0t6g2K/3DUegrz2xYhZW0MVybNWieRjtIDQHt53VRvhsl07pDuFLYk+dnAQtY9DtTElb1VQZJaL9+ojlyIPJC+OVgmUMhTFc8IBpCKzMUORf4rxsow0R3cEpc9fHeA7qh0KMGgZZbIn0NU5GrDMA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=seco.com; dmarc=pass action=none header.from=seco.com; dkim=pass header.d=seco.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=seco.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=GVV6+p0MmyVplibB125VeQu29QrE9xkaPzSny3d19DM=; b=F6eFqx8JrSCJjFT6Ugzd+LQ9fpdPVkwtOKxyCXOfSiM0TjGfkAVWKTPSDTJnmnCUUNPx4rg/6yt+ZSxmrbuQ3voI/rr7dB4HXIxFnCyTXeYaPrgDjtUN1+d2VcpW+aHwDOJyCj0wtYEfpWKbc+DtLyGZb11OXKP4/z2dtUShfD7PtTnNdt9nLFKp+0MKwjJmKHWkuu1jp7vVfyxIm7IKXfhPjdX1E+cya3K0xiRhpK+kJl70/dsPblx3JKyPV6cCBR/gxH/s4EVQfivUBlDiDbyp7AIB9L5mID5VPNDYX1bfbBH8d9+1V85oqTGh7NULWYRc3Uc5zORW8rQDfrxw1Q== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=seco.com; Received: from DB7PR03MB4972.eurprd03.prod.outlook.com (2603:10a6:10:7d::22) by AM6PR03MB3736.eurprd03.prod.outlook.com (2603:10a6:209:2d::33) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5081.22; Tue, 22 Mar 2022 21:19:18 +0000 Received: from DB7PR03MB4972.eurprd03.prod.outlook.com ([fe80::2414:8ad5:9fd6:3bff]) by DB7PR03MB4972.eurprd03.prod.outlook.com ([fe80::2414:8ad5:9fd6:3bff%5]) with mapi id 15.20.5081.023; Tue, 22 Mar 2022 21:19:18 +0000 From: Sean Anderson To: u-boot@lists.denx.de Cc: Sean Anderson Subject: [RESEND PATCH v3 28/29] test: serial: Add test for putc/puts Date: Tue, 22 Mar 2022 17:19:07 -0400 Message-Id: <20220322211907.1724323-1-sean.anderson@seco.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220322205938.1721846-1-sean.anderson@seco.com> References: <20220322205938.1721846-1-sean.anderson@seco.com> X-ClientProxiedBy: MN2PR05CA0060.namprd05.prod.outlook.com (2603:10b6:208:236::29) To DB7PR03MB4972.eurprd03.prod.outlook.com (2603:10a6:10:7d::22) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 50803f1d-2bfa-42fb-ace8-08da0c49a004 X-MS-TrafficTypeDiagnostic: AM6PR03MB3736: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: iZY7Hq91+Mdl+t48tfqNPscib5ClH3m0p676RlS7h8fvCns0x1aTyGunq8ylGYI64HEaTdtVqvlWQ4HndLISYaJdgd5SW8oUU70/FWCaS/jrFj0IxQaFE8Fl4V4nJhJA9inQPw3eX5KoXpxsgRrh4DDRIEPRrS2jpqrTP7Y3DhcpFy4r/sYU8242+gY1in0YYTeUTbRQJSiv93CQpuoXWQQt0wDEbl6fE32wyISSZa++mhBzn88mku1o9uf/5k5arZfbNa4GScMJiLOwGIrpmLGTESc1Em/qUXnQmJJNNXQA32T6KCKdG+XK6vG+jKPCL9krhWXLS7iBpatwF0K+GxKK5sTz68WroawIGiTFyoUTsXGwuQOH5nsyqXteFUOEQKFUnZlWz3vnEMsY/Rrz1f2CJm6UGHF63C3uBRzgG4AfU2+PqlIfKu3CCiKoiowX2KLb+BWMKV6iDagLFa4fUvBvIgjdi1mNCgambTBT9FamwRHIw6BevIcAXEJjvtM5/x5P0c06gE0k/zb5hRDp+pFaPuXW6Lpy/vDVFCR8OvScPYGlnhUerrcYzbc5J88AKLHEyU3gpJ12rV66Pxv+hQvPjjZaYJ4WRl9pJMzDjy82V54UdnFh9VFXdYm0FzsQrJ+YRxLZNpxRFlwjyMl9ZpsF/1FpSXW3wfq6GKx6R902yRdIK5swGHvoxGUo6smT1wtLSqb2Xm7UH/aj7+HUHQ== X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DB7PR03MB4972.eurprd03.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230001)(366004)(66946007)(316002)(86362001)(6916009)(5660300002)(83380400001)(66556008)(38350700002)(38100700002)(66476007)(186003)(26005)(8676002)(4326008)(1076003)(107886003)(2616005)(6666004)(6486002)(6506007)(6512007)(52116002)(2906002)(36756003)(8936002)(44832011)(508600001); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: 1n8Q/q2gcObXzkvj+Q/yfJO/Y6pepiJVsdm3Wcr7AYAN6f553l4k2+6wPimJhlWsKjFZMrpeCKFOueOvIaoldULwbmp6WX4UXub8qwN+R6/gQfutqpcNuzmSpo07COBj0MHwXrZ1gzSvDOPQDb3KjhquRBdISHXhgbIHPzIFurzIy6Jw+FKthv8d0xRaPqbpG2fLymAcxs5MavJqPvd0wYxtyaRSRfFUoUHa+U65KZrqSdqvc06PBr6nOQF90GzkGD+KNOUb9j3o7wwjApB0f27hDqz9JXB268tA5VxL8xYOojxx4Sqr4tU/X+JhxcjbmZUQUZB7WGOSoA1O5d7McIunFwiUZ9yQj+VB/G+R69ecm4j/jA/Ufcd9EIdttA8l54lQgUFYG+XBqq4hpDBanntkNLywyX8xOzIeAHv0royYo8hbcDaWwPfjB6liLpyp8cSiA2Oy4ZZfLz+VamzM7+93UPh4KAh99Dg6oLMmf8gRPDN93XLABnezwDxPgyukXKkwsMMDtQVoTfqGrhF0Dwxd1ReLTPqdcP/OboZQCOuMFkNf4LAvBpYkv76KY1PWE0Si8sL0GaEEyW8dMnJFpnxQkaqbztnpjzedj6l3j5LCDsZINnq3MIWpxj7TuzSumKlY4TAtzyt7OOhH2LphXsY71ykDYgkVpVr8j9NgSHGfw3v2SgIkTvhA83f71MxzIu9Vi83wKxWTQgTSD3ufQqWm1USViguo9dTl2LSg5pzrQc/2ppwHf/vmLuDaBSJT+ahiScQMkJnnbQVQZapSeptwK3q0wYI8X50ysVA0Lf4EspYJdC3TvAFfNdUF+fNZlQU29dq3OV1RJkIwWSMjNDqIQkPeYzCFZ1qox87iHzHodVQK7rcavrYNaflIvHnTLOJXjjRrOF4+o6XiBJFnjAspRMuIEnXHv74ldMnLifO2IRr1cdKcbd9te4nURJunkTdIdtIkX46DjFW2yIKf1m8E6ma9IbCCl+YEYj+egWW4G9BWIqj+knqRadXkUPNuxZOd8OOGzWl8Yj3a/dDXR5qUfJQcvZ9TYbk9TTsa49wjTq/GDsFEAkV7BAIoN0KG0ZSUSegx36cBKIZOOjIr0MLaqAnZlmm3ZVPL2d74exdCm506wqOZE7AGjWwZv8TOEb/tc39ifD/gkP9BGV6XfSG8p1GNK3p1vHViYJMr0bRP87sEoe/v8d0l1Dpd7IJAGn6y4u+SgbILUeWyO/jK6VgOF6qtlQrMf2fU+ZJIxsqnFRXUWAbyrDo5unuXYdJ64nCHCipkCNv3ww2JU8xPFq3cVX3NIhoNKsXbepE07r184CcY82In/R1IATCtx9VaXmJe7sxJnotjGCelKeyVCrEazYFuASFPSwhtR/d/ITGADiubf3fI2e9pSAi4X427w/+XetlK+q65eiBlXBItDeZQxPKFghIUVcCrf4UmDDT/w0Gn4uoHQbZR3tL8rJ8WBSQ/eRNziMtNBCR6QFuWWQ== X-OriginatorOrg: seco.com X-MS-Exchange-CrossTenant-Network-Message-Id: 50803f1d-2bfa-42fb-ace8-08da0c49a004 X-MS-Exchange-CrossTenant-AuthSource: DB7PR03MB4972.eurprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Mar 2022 21:19:18.4090 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: bebe97c3-6438-442e-ade3-ff17aa50e733 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: WAYWmrTOKFjWGF3L9aDkR+wIlMJiXRxSIqPi/QArrSS8jjyOet2dIuBgbW776Unb2eEHXN1Es6UbAO1CqjgpPA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM6PR03MB3736 X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.39 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" X-Virus-Scanned: clamav-milter 0.103.5 at phobos.denx.de X-Virus-Status: Clean This adds a test to ensure that puts is equivalent to putc called in a loop. We don't verify the contents of the message to avoid having to record console output a second time (though that could be added in the future). The globals are initialized to non-zero values to avoid a warning; in particular, the character count is off-by-one (but we always make relative measurements). Signed-off-by: Sean Anderson --- Changes in v3: - New arch/sandbox/include/asm/serial.h | 6 ++++++ drivers/serial/sandbox.c | 23 +++++++++++++++++++---- test/dm/serial.c | 19 +++++++++++++++++++ 3 files changed, 44 insertions(+), 4 deletions(-) diff --git a/arch/sandbox/include/asm/serial.h b/arch/sandbox/include/asm/serial.h index bc82aebd0e..7bce240268 100644 --- a/arch/sandbox/include/asm/serial.h +++ b/arch/sandbox/include/asm/serial.h @@ -16,6 +16,12 @@ struct sandbox_serial_plat { int colour; /* Text colour to use for output, -1 for none */ }; +/* Total number of characters written; for use by tests */ +extern size_t sandbox_serial_written; + +/* Disable serial device output; for use by tests */ +extern bool sandbox_serial_enabled; + /** * struct sandbox_serial_priv - Private data for this driver * diff --git a/drivers/serial/sandbox.c b/drivers/serial/sandbox.c index 50cf2c74a7..6d42d87229 100644 --- a/drivers/serial/sandbox.c +++ b/drivers/serial/sandbox.c @@ -23,6 +23,9 @@ DECLARE_GLOBAL_DATA_PTR; +size_t sandbox_serial_written = 1; +bool sandbox_serial_enabled = true; + /** * output_ansi_colour() - Output an ANSI colour code * @@ -84,11 +87,14 @@ static int sandbox_serial_putc(struct udevice *dev, const char ch) { struct sandbox_serial_priv *priv = dev_get_priv(dev); - sandbox_print_color(dev); - os_write(1, &ch, 1); if (ch == '\n') priv->start_of_line = true; + if (sandbox_serial_enabled) { + sandbox_print_color(dev); + os_write(1, &ch, 1); + } + sandbox_serial_written += 1; return 0; } @@ -96,12 +102,21 @@ static ssize_t sandbox_serial_puts(struct udevice *dev, const char *s, size_t len) { struct sandbox_serial_priv *priv = dev_get_priv(dev); + ssize_t ret; - sandbox_print_color(dev); if (s[len - 1] == '\n') priv->start_of_line = true; - return os_write(1, s, len); + if (sandbox_serial_enabled) { + sandbox_print_color(dev); + ret = os_write(1, s, len); + if (ret < 0) + return ret; + } else { + ret = len; + } + sandbox_serial_written += ret; + return ret; } static int sandbox_serial_pending(struct udevice *dev, bool input) diff --git a/test/dm/serial.c b/test/dm/serial.c index 0662b5f09b..a0f360ba43 100644 --- a/test/dm/serial.c +++ b/test/dm/serial.c @@ -7,14 +7,22 @@ #include #include #include +#include #include #include #include +static const char test_message[] = + "This is a test message\n" + "consisting of multiple lines\n"; + static int dm_test_serial(struct unit_test_state *uts) { + int i; struct serial_device_info info_serial = {0}; struct udevice *dev_serial; + size_t start, putc_written; + uint value_serial; ut_assertok(uclass_get_device_by_name(UCLASS_SERIAL, "serial", @@ -66,6 +74,17 @@ static int dm_test_serial(struct unit_test_state *uts) SERIAL_8_BITS, SERIAL_TWO_STOP))); + /* Verify that putc and puts print the same number of characters */ + sandbox_serial_enabled = false; + start = sandbox_serial_written; + for (i = 0; i < sizeof(test_message) - 1; i++) + serial_putc(test_message[i]); + putc_written = sandbox_serial_written; + serial_puts(test_message); + sandbox_serial_enabled = true; + ut_asserteq(putc_written - start, + sandbox_serial_written - putc_written); + return 0; }