Received: by 2002:a05:6358:489b:b0:bb:da1:e618 with SMTP id x27csp114748rwn; Wed, 7 Sep 2022 13:25:23 -0700 (PDT) X-Google-Smtp-Source: AA6agR48POtVcjZd2eRIpNUQ58DLZPZaWS89UWcKQL2K1dNKnp7aHy+rFfM7/7ySu1tchDQmWTNc X-Received: by 2002:a17:906:dc8d:b0:739:df2d:3400 with SMTP id cs13-20020a170906dc8d00b00739df2d3400mr3462045ejc.561.1662582323656; Wed, 07 Sep 2022 13:25:23 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1662582323; cv=none; d=google.com; s=arc-20160816; b=IIj9QX0dST/SXuX2LDXtej+xRWSLMqX3FDgcQnBd7QIpGejvlKj2bbaZQs45yr/V9M 1qlXQsBI1T1tr8sRfOcRo78JgKZcUInFbXhGdIRUYB585ehFLLl/h9pWOH+m5d7XekJA oZV/Sn/h1/fKwGXKJIrc2KzUQgdqwVTjb4J+Gu4THS85zjzDAXkMNRT7R7HLR74UBoDk oZaxwAlCPe4QJFISva51DsPZvJ3LSc+Yv/AUerDaxmRorX0cjAhMUWqH7gnjZDotoWp3 S+TJ82OSVemyWXVMpkI74rK+XKrPRd2U4mccOvQdQDopZYP2AtMyQcvjIN/xToTaJJjs Etkw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :message-id:date:subject:cc:to:from:dkim-signature; bh=kCsXfy6uHtYOHdCILirNMUxLC+1ROdg38wE6fEEgO20=; b=Ji9Oxixzon5GL+4y1/ji3GrIoHd883UbU22HWWnuHoerbd5FpLNy5j+aUe6RHY32QX PX6sfHIIGPn0A+SqprziJnvYrtKk+OWpwrY6/FuNfeD8PXDK+ytOjOW6FDNMtrTZwz6H vqxwnUbYeOp7TE4nv2vZxJoKS6yXzIzfQ53FZAKKm8R9XSRy0mzsMBrIhSuPf4lSs/II z/Ml4+/AykGcsJOldPRhjzKzD0+PY6iY8h59/wz62aUaySHjWTNXxFbyGKUzTNvcaapu yzhqKmb+siZzmURtMFqEEdk7mbn0/8J2agDH90ea1l8kjStRlJSesxWwfCygD2lG0z5q bWKA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@riseup.net header.s=squak header.b=IVYuHBPO; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=riseup.net Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id t18-20020a056402525200b00448b880b8b8si5641039edd.410.2022.09.07.13.24.45; Wed, 07 Sep 2022 13:25:23 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@riseup.net header.s=squak header.b=IVYuHBPO; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=riseup.net Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230003AbiIGUFu (ORCPT + 99 others); Wed, 7 Sep 2022 16:05:50 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:41234 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229830AbiIGUFr (ORCPT ); Wed, 7 Sep 2022 16:05:47 -0400 Received: from mx0.riseup.net (mx0.riseup.net [198.252.153.6]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id B830159251 for ; Wed, 7 Sep 2022 13:05:43 -0700 (PDT) Received: from fews1.riseup.net (fews1-pn.riseup.net [10.0.1.83]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256 client-signature RSA-PSS (2048 bits) client-digest SHA256) (Client CN "mail.riseup.net", Issuer "R3" (not verified)) by mx0.riseup.net (Postfix) with ESMTPS id 4MNCtF70mVz9sdZ; Wed, 7 Sep 2022 20:05:41 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=riseup.net; s=squak; t=1662581142; bh=cQj2iyDMliA/bCXjKY1ERkLILYcbmwXjdapERd70sJw=; h=From:To:Cc:Subject:Date:From; b=IVYuHBPOotuFsRzV32LbQk59Nc2o4WCdJfrgxVk5bMUHzU8Bw4h/w0fHqaORrX2nS cNHd0VjAIj5bxXkUcRsQSwFW/vm3d/lt0C+0dtzTqNuHaCXlQu6npq+Vfq3D9g+lsZ MWe5R0L7WgitZAZIRoKN6SikWSw9GVfVd+r/v2GA= X-Riseup-User-ID: 1C140A385A49F8B23FC455DD0D05073008D1958C1D7500AFA0B2AB16478369AB Received: from [127.0.0.1] (localhost [127.0.0.1]) by fews1.riseup.net (Postfix) with ESMTPSA id 4MNCt66jTPz5vh4; Wed, 7 Sep 2022 20:05:34 +0000 (UTC) From: =?UTF-8?q?Ma=C3=ADra=20Canal?= To: Isabella Basso , magalilemes00@gmail.com, tales.aparecida@gmail.com, mwen@igalia.com, andrealmeid@riseup.net, siqueirajordao@riseup.net, Trevor Woerner , Daniel Vetter , David Airlie , Javier Martinez Canillas , David Gow , brendanhiggins@google.com, Arthur Grillo , michal.winiarski@intel.com, =?UTF-8?q?Jos=C3=A9=20Exp=C3=B3sito?= , Jani Nikula , Maxime Ripard Cc: kunit-dev@googlegroups.com, dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, =?UTF-8?q?Ma=C3=ADra=20Canal?= Subject: [PATCH v3 1/2] drm/tests: Split drm_framebuffer_create_test into parameterized tests Date: Wed, 7 Sep 2022 17:02:46 -0300 Message-Id: <20220907200247.89679-1-mairacanal@riseup.net> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-2.8 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_LOW,SPF_HELO_PASS, SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org The igt_check_drm_framebuffer_create is based on a loop that executes tests for all createbuffer_tests test cases. This could be better represented by parameterized tests, provided by KUnit. So, convert the igt_check_drm_framebuffer_create into parameterized tests. Signed-off-by: Maíra Canal Reviewed-by: Michał Winiarski Reviewed-by: David Gow --- v1 -> v2: https://lore.kernel.org/dri-devel/20220830211603.191734-1-mairacanal@riseup.net/ - Use .init for mock_drm_device instead of a global variable. (Michał Winiarski) - Add Michał's Reviewed-by tag. v2 -> v3: https://lore.kernel.org/dri-devel/20220901124210.591994-1-mairacanal@riseup.net/ - Add David's Reviewed-by tag. --- drivers/gpu/drm/tests/drm_framebuffer_test.c | 45 ++++++++++++-------- 1 file changed, 27 insertions(+), 18 deletions(-) diff --git a/drivers/gpu/drm/tests/drm_framebuffer_test.c b/drivers/gpu/drm/tests/drm_framebuffer_test.c index ec7a08ba4056..6b6f6ff4f591 100644 --- a/drivers/gpu/drm/tests/drm_framebuffer_test.c +++ b/drivers/gpu/drm/tests/drm_framebuffer_test.c @@ -25,7 +25,7 @@ struct drm_framebuffer_test { const char *name; }; -static struct drm_framebuffer_test createbuffer_tests[] = { +static const struct drm_framebuffer_test drm_framebuffer_create_cases[] = { { .buffer_created = 1, .name = "ABGR8888 normal sizes", .cmd = { .width = 600, .height = 600, .pixel_format = DRM_FORMAT_ABGR8888, .handles = { 1, 0, 0 }, .pitches = { 4 * 600, 0, 0 }, @@ -330,43 +330,52 @@ static struct drm_mode_config_funcs mock_config_funcs = { .fb_create = fb_create_mock, }; -static struct drm_device mock_drm_device = { - .mode_config = { +static int drm_framebuffer_test_init(struct kunit *test) +{ + struct drm_device *mock; + + mock = kunit_kzalloc(test, sizeof(*mock), GFP_KERNEL); + KUNIT_ASSERT_NOT_ERR_OR_NULL(test, mock); + + mock->mode_config = (struct drm_mode_config) { .min_width = MIN_WIDTH, .max_width = MAX_WIDTH, .min_height = MIN_HEIGHT, .max_height = MAX_HEIGHT, .funcs = &mock_config_funcs, - }, -}; + }; -static int execute_drm_mode_fb_cmd2(struct drm_mode_fb_cmd2 *r) + test->priv = mock; + return 0; +} + +static void drm_test_framebuffer_create(struct kunit *test) { + const struct drm_framebuffer_test *params = test->param_value; + struct drm_device *mock = test->priv; int buffer_created = 0; - mock_drm_device.dev_private = &buffer_created; - drm_internal_framebuffer_create(&mock_drm_device, r, NULL); - return buffer_created; + mock->dev_private = &buffer_created; + drm_internal_framebuffer_create(mock, ¶ms->cmd, NULL); + KUNIT_EXPECT_EQ(test, params->buffer_created, buffer_created); } -static void igt_check_drm_framebuffer_create(struct kunit *test) +static void drm_framebuffer_test_to_desc(const struct drm_framebuffer_test *t, char *desc) { - int i = 0; - - for (i = 0; i < ARRAY_SIZE(createbuffer_tests); i++) { - KUNIT_EXPECT_EQ_MSG(test, createbuffer_tests[i].buffer_created, - execute_drm_mode_fb_cmd2(&createbuffer_tests[i].cmd), - "Test %d: \"%s\" failed\n", i, createbuffer_tests[i].name); - } + strcpy(desc, t->name); } +KUNIT_ARRAY_PARAM(drm_framebuffer_create, drm_framebuffer_create_cases, + drm_framebuffer_test_to_desc); + static struct kunit_case drm_framebuffer_tests[] = { - KUNIT_CASE(igt_check_drm_framebuffer_create), + KUNIT_CASE_PARAM(drm_test_framebuffer_create, drm_framebuffer_create_gen_params), { } }; static struct kunit_suite drm_framebuffer_test_suite = { .name = "drm_framebuffer", + .init = drm_framebuffer_test_init, .test_cases = drm_framebuffer_tests, }; -- 2.37.3