From patchwork Wed May 10 14:21:06 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Simon Glass X-Patchwork-Id: 760615 X-Patchwork-Delegate: sjg@chromium.org Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from lists.denx.de (dione.denx.de [81.169.180.215]) by ozlabs.org (Postfix) with ESMTP id 3wNJcx1BfBz9s86 for ; Thu, 11 May 2017 00:33:21 +1000 (AEST) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=google.com header.i=@google.com header.b="E3++AMy+"; dkim-atps=neutral Received: by lists.denx.de (Postfix, from userid 105) id 445F2C21D6C; Wed, 10 May 2017 14:30:30 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on lists.denx.de X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H2, T_DKIM_INVALID autolearn=unavailable autolearn_force=no version=3.4.0 Received: from lists.denx.de (localhost [IPv6:::1]) by lists.denx.de (Postfix) with ESMTP id 45F09C21D54; Wed, 10 May 2017 14:24:08 +0000 (UTC) Received: by lists.denx.de (Postfix, from userid 105) id BC115C21CF5; Wed, 10 May 2017 14:23:20 +0000 (UTC) Received: from mail-oi0-f48.google.com (mail-oi0-f48.google.com [209.85.218.48]) by lists.denx.de (Postfix) with ESMTPS id 2C4BDC21D1B for ; Wed, 10 May 2017 14:23:12 +0000 (UTC) Received: by mail-oi0-f48.google.com with SMTP id h4so37176955oib.3 for ; Wed, 10 May 2017 07:23:12 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references; bh=pL2rx+ClvUsbg24fIIgY0TqXmCu/wWFpWDEPtNMMX2U=; b=E3++AMy+dQ7UmvO3vd3Hswb+rhjOVSfE5F2rWksCIX9sElyUIjADAXLfPwuK2KVVcq +he3QvjEKkVXwK9KFbhlqdMazKKi/NZeAfnVKf0AZZUlq09fd3Sl2pLhEXj7LAfAi9OI mgZnqh8LaJWr63Aa/8RUbZVQLkJiw5UlqNaMBZqbximryE+QGzPrwVAmVcX8pyMNY9yY 8RGQfWJLf0Lx3CWMXEkNUfLYcdo4hmVko+/I4ZM7fZNAA5m0gRllT1aJ9pS4P1nm836h W8DoskdmCtyY6e8BDgphVSHPErU+0jrvITgcqHlOfXlAmErtkkkpVVbiaAV9KM/ibmzf vM8A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references; bh=pL2rx+ClvUsbg24fIIgY0TqXmCu/wWFpWDEPtNMMX2U=; b=JmiTcQSQEFRormzDgo9xQxguSsYSH8FUu0PrqCAuYOGsm06p5OLUiPR7NjWI6U0naL ZRFewCqhd+GrbNF/afEDmGD8bkM1gMqZ0HiAz3wW9Z4183JmD1t/0nhswCEOJsr7je/u W6hrA7S+Eown8MuHkAbtM1xfQu3gHyobulpme4PebhMgSQsr+xRj7Vpt1g71k3qESNV3 B/ItqfcVjPTex+jzUl4VCChgOLruQ7ENipkZDX0Sl3d6FVBiM4xsGRqJhODJAaakp5uE wtu4sr6ZtEjL81UMwb+2CrJInPRaNOCcGcBkyhBk9hYVVknElhJ9TEDPeWDZLV61KtIE zBSQ== X-Gm-Message-State: AODbwcAopdpU4sHFpH8dMg9sB6WNhOVXNksqPnWRMmUOH5lJKqWK+Jh7 EegZIhuXqsN7YlIB X-Received: by 10.202.197.194 with SMTP id v185mr2682375oif.123.1494426190875; Wed, 10 May 2017 07:23:10 -0700 (PDT) Received: from kaki.bld.corp.google.com ([100.100.184.96]) by smtp.gmail.com with ESMTPSA id r10sm1585923oia.29.2017.05.10.07.23.10 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 10 May 2017 07:23:10 -0700 (PDT) Received: by kaki.bld.corp.google.com (Postfix, from userid 121222) id C4F3240550; Wed, 10 May 2017 08:23:09 -0600 (MDT) From: Simon Glass To: U-Boot Mailing List Date: Wed, 10 May 2017 08:21:06 -0600 Message-Id: <20170510142150.30515-28-sjg@chromium.org> X-Mailer: git-send-email 2.13.0.rc2.291.g57267f2277-goog In-Reply-To: <20170510142150.30515-1-sjg@chromium.org> References: <20170510142150.30515-1-sjg@chromium.org> Cc: Tom Rini , Stephen Warren Subject: [U-Boot] [PATCH v2 27/71] dm: core: Run tests with both livetree and flat tree X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.18 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" Some tests require either livetree or flat tree. Add flags to allow the tests to specify this. Adjust the test runner to run with livetree (if supported) and then flat tree. Some video tests are quite slow and running on flat tree adds little extra test value, so run these on livetree only. Signed-off-by: Simon Glass --- Changes in v2: None include/dm/test.h | 2 ++ include/test/test.h | 2 ++ test/dm/test-main.c | 38 ++++++++++++++++++++++++++++++++++++-- 3 files changed, 40 insertions(+), 2 deletions(-) diff --git a/include/dm/test.h b/include/dm/test.h index cba504909a..cecee26f33 100644 --- a/include/dm/test.h +++ b/include/dm/test.h @@ -150,6 +150,8 @@ enum { DM_TESTF_SCAN_PDATA = 1 << 0, /* test needs platform data */ DM_TESTF_PROBE_TEST = 1 << 1, /* probe test uclass */ DM_TESTF_SCAN_FDT = 1 << 2, /* scan device tree */ + DM_TESTF_FLAT_TREE = 1 << 3, /* test needs flat DT */ + DM_TESTF_LIVE_TREE = 1 << 4, /* needs live device tree */ }; /* Declare a new driver model test */ diff --git a/include/test/test.h b/include/test/test.h index e3e821c6ea..646dbfd486 100644 --- a/include/test/test.h +++ b/include/test/test.h @@ -15,11 +15,13 @@ * @fail_count: Number of tests that failed * @start: Store the starting mallinfo when doing leak test * @priv: A pointer to some other info some suites want to track + * @of_root: Record of the livetree root node (used for setting up tests) */ struct unit_test_state { int fail_count; struct mallinfo start; void *priv; + struct device_node *of_root; }; /** diff --git a/test/dm/test-main.c b/test/dm/test-main.c index 88ef267458..9d88d31467 100644 --- a/test/dm/test-main.c +++ b/test/dm/test-main.c @@ -110,6 +110,21 @@ static int dm_do_test(struct unit_test_state *uts, struct unit_test *test, return 0; } +/** + * dm_test_run_on_flattree() - Check if we should run a test with flat DT + * + * This skips long/slow tests where there is not much value in running a flat + * DT test in addition to a live DT test. + * + * @return true to run the given test on the flat device tree + */ +static bool dm_test_run_on_flattree(struct unit_test *test) +{ + const char *fname = strrchr(test->file, '/') + 1; + + return !strstr(fname, "video") || strstr(test->name, "video_base"); +} + static int dm_test_main(const char *test_name) { struct unit_test *tests = ll_entry_start(struct unit_test, dm_test); @@ -140,14 +155,33 @@ static int dm_test_main(const char *test_name) #endif for (test = tests; test < tests + n_ents; test++) { const char *name = test->name; + int runs; /* All tests have this prefix */ if (!strncmp(name, "dm_test_", 8)) name += 8; if (test_name && strcmp(test_name, name)) continue; - ut_assertok(dm_do_test(uts, test, false)); - run_count++; + + /* Run with the live tree if possible */ + runs = 0; + if (IS_ENABLED(CONFIG_OF_LIVE)) { + if (!(test->flags & DM_TESTF_FLAT_TREE)) { + ut_assertok(dm_do_test(uts, test, true)); + runs++; + } + } + + /* + * Run with the flat tree if we couldn't run it with live tree, + * or it is a core test. + */ + if (!(test->flags & DM_TESTF_LIVE_TREE) && + (!runs || dm_test_run_on_flattree(test))) { + ut_assertok(dm_do_test(uts, test, false)); + runs++; + } + run_count += runs; } if (test_name && !run_count)