From: Simon Glass <sjg@chromium.org>
To: u-boot@lists.denx.de
Subject: [PATCH v3 20/41] test: Drop struct dm_test_state
Date: Wed, 3 Feb 2021 05:44:26 -0700 [thread overview]
Message-ID: <20210203124447.2458527-20-sjg@chromium.org> (raw)
In-Reply-To: <20210203124447.2458527-1-sjg@chromium.org>
Driver model is a core part of U-Boot. We don't really need to have a
separate test structure for the driver model tests and it makes it harder
to write a test if you have to think about which type of test it is.
Subsume the fields from struct dm_test_state into struct unit_test_state
and delete the former.
Signed-off-by: Simon Glass <sjg@chromium.org>
---
(no changes since v1)
include/dm/test.h | 17 ----------------
include/test/test.h | 10 +++++++--
test/dm/core.c | 47 +++++++++++++++++--------------------------
test/dm/test-dm.c | 10 ++++-----
test/dm/test-driver.c | 4 +---
test/dm/test-uclass.c | 3 +--
6 files changed, 34 insertions(+), 57 deletions(-)
diff --git a/include/dm/test.h b/include/dm/test.h
index c0b463cc0f1..fe1cc2e278c 100644
--- a/include/dm/test.h
+++ b/include/dm/test.h
@@ -125,23 +125,6 @@ extern int dm_testdrv_op_count[DM_TEST_OP_COUNT];
extern struct unit_test_state global_dm_test_state;
-/*
- * struct dm_test_state - Entire state of dm test system
- *
- * This is often abreviated to dms.
- *
- * @root: Root device
- * @testdev: Test device
- * @force_fail_alloc: Force all memory allocs to fail
- * @skip_post_probe: Skip uclass post-probe processing
- */
-struct dm_test_state {
- struct udevice *root;
- struct udevice *testdev;
- int force_fail_alloc;
- int skip_post_probe;
-};
-
/* Declare a new driver model test */
#define DM_TEST(_name, _flags) \
UNIT_TEST(_name, UT_TESTF_DM | UT_TESTF_CONSOLE_REC | (_flags), dm_test)
diff --git a/include/test/test.h b/include/test/test.h
index 6997568cc07..5eeec35f525 100644
--- a/include/test/test.h
+++ b/include/test/test.h
@@ -14,18 +14,24 @@
*
* @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_live: true to use livetree if available, false to use flattree
* @of_root: Record of the livetree root node (used for setting up tests)
+ * @root: Root device
+ * @testdev: Test device
+ * @force_fail_alloc: Force all memory allocs to fail
+ * @skip_post_probe: Skip uclass post-probe processing
* @expect_str: Temporary string used to hold expected string value
* @actual_str: Temporary string used to hold actual string value
*/
struct unit_test_state {
int fail_count;
struct mallinfo start;
- void *priv;
struct device_node *of_root;
bool of_live;
+ struct udevice *root;
+ struct udevice *testdev;
+ int force_fail_alloc;
+ int skip_post_probe;
char expect_str[256];
char actual_str[256];
};
diff --git a/test/dm/core.c b/test/dm/core.c
index 1f5ca570dc7..f8e47591a13 100644
--- a/test/dm/core.c
+++ b/test/dm/core.c
@@ -108,14 +108,13 @@ int dm_leak_check_end(struct unit_test_state *uts)
/* Test that binding with plat occurs correctly */
static int dm_test_autobind(struct unit_test_state *uts)
{
- struct dm_test_state *dms = uts->priv;
struct udevice *dev;
/*
* We should have a single class (UCLASS_ROOT) and a single root
* device with no children.
*/
- ut_assert(dms->root);
+ ut_assert(uts->root);
ut_asserteq(1, list_count_items(gd->uclass_root));
ut_asserteq(0, list_count_items(&gd->dm_root->child_head));
ut_asserteq(0, dm_testdrv_op_count[DM_TEST_OP_POST_BIND]);
@@ -198,7 +197,6 @@ DM_TEST(dm_test_autobind_uclass_pdata_valid, UT_TESTF_SCAN_PDATA);
/* Test that autoprobe finds all the expected devices */
static int dm_test_autoprobe(struct unit_test_state *uts)
{
- struct dm_test_state *dms = uts->priv;
int expected_base_add;
struct udevice *dev;
struct uclass *uc;
@@ -212,7 +210,7 @@ static int dm_test_autoprobe(struct unit_test_state *uts)
ut_asserteq(0, dm_testdrv_op_count[DM_TEST_OP_POST_PROBE]);
/* The root device should not be activated until needed */
- ut_assert(dev_get_flags(dms->root) & DM_FLAG_ACTIVATED);
+ ut_assert(dev_get_flags(uts->root) & DM_FLAG_ACTIVATED);
/*
* We should be able to find the three test devices, and they should
@@ -232,7 +230,7 @@ static int dm_test_autoprobe(struct unit_test_state *uts)
/* Activating a device should activate the root device */
if (!i)
- ut_assert(dev_get_flags(dms->root) & DM_FLAG_ACTIVATED);
+ ut_assert(dev_get_flags(uts->root) & DM_FLAG_ACTIVATED);
}
/*
@@ -284,7 +282,6 @@ DM_TEST(dm_test_plat, UT_TESTF_SCAN_PDATA);
/* Test that we can bind, probe, remove, unbind a driver */
static int dm_test_lifecycle(struct unit_test_state *uts)
{
- struct dm_test_state *dms = uts->priv;
int op_count[DM_TEST_OP_COUNT];
struct udevice *dev, *test_dev;
int pingret;
@@ -292,7 +289,7 @@ static int dm_test_lifecycle(struct unit_test_state *uts)
memcpy(op_count, dm_testdrv_op_count, sizeof(op_count));
- ut_assertok(device_bind_by_name(dms->root, false, &driver_info_manual,
+ ut_assertok(device_bind_by_name(uts->root, false, &driver_info_manual,
&dev));
ut_assert(dev);
ut_assert(dm_testdrv_op_count[DM_TEST_OP_BIND]
@@ -300,7 +297,7 @@ static int dm_test_lifecycle(struct unit_test_state *uts)
ut_assert(!dev_get_priv(dev));
/* Probe the device - it should fail allocating private data */
- dms->force_fail_alloc = 1;
+ uts->force_fail_alloc = 1;
ret = device_probe(dev);
ut_assert(ret == -ENOMEM);
ut_assert(dm_testdrv_op_count[DM_TEST_OP_PROBE]
@@ -308,7 +305,7 @@ static int dm_test_lifecycle(struct unit_test_state *uts)
ut_assert(!dev_get_priv(dev));
/* Try again without the alloc failure */
- dms->force_fail_alloc = 0;
+ uts->force_fail_alloc = 0;
ut_assertok(device_probe(dev));
ut_assert(dm_testdrv_op_count[DM_TEST_OP_PROBE]
== op_count[DM_TEST_OP_PROBE] + 2);
@@ -340,19 +337,18 @@ DM_TEST(dm_test_lifecycle, UT_TESTF_SCAN_PDATA | UT_TESTF_PROBE_TEST);
/* Test that we can bind/unbind and the lists update correctly */
static int dm_test_ordering(struct unit_test_state *uts)
{
- struct dm_test_state *dms = uts->priv;
struct udevice *dev, *dev_penultimate, *dev_last, *test_dev;
int pingret;
- ut_assertok(device_bind_by_name(dms->root, false, &driver_info_manual,
+ ut_assertok(device_bind_by_name(uts->root, false, &driver_info_manual,
&dev));
ut_assert(dev);
/* Bind two new devices (numbers 4 and 5) */
- ut_assertok(device_bind_by_name(dms->root, false, &driver_info_manual,
+ ut_assertok(device_bind_by_name(uts->root, false, &driver_info_manual,
&dev_penultimate));
ut_assert(dev_penultimate);
- ut_assertok(device_bind_by_name(dms->root, false, &driver_info_manual,
+ ut_assertok(device_bind_by_name(uts->root, false, &driver_info_manual,
&dev_last));
ut_assert(dev_last);
@@ -367,7 +363,7 @@ static int dm_test_ordering(struct unit_test_state *uts)
ut_assert(dev_last == test_dev);
/* Add back the original device 3, now in position 5 */
- ut_assertok(device_bind_by_name(dms->root, false, &driver_info_manual,
+ ut_assertok(device_bind_by_name(uts->root, false, &driver_info_manual,
&dev));
ut_assert(dev);
@@ -559,7 +555,6 @@ static int create_children(struct unit_test_state *uts, struct udevice *parent,
static int dm_test_children(struct unit_test_state *uts)
{
- struct dm_test_state *dms = uts->priv;
struct udevice *top[NODE_COUNT];
struct udevice *child[NODE_COUNT];
struct udevice *grandchild[NODE_COUNT];
@@ -569,12 +564,12 @@ static int dm_test_children(struct unit_test_state *uts)
int i;
/* We don't care about the numbering for this test */
- dms->skip_post_probe = 1;
+ uts->skip_post_probe = 1;
ut_assert(NODE_COUNT > 5);
/* First create 10 top-level children */
- ut_assertok(create_children(uts, dms->root, NODE_COUNT, 0, top));
+ ut_assertok(create_children(uts, uts->root, NODE_COUNT, 0, top));
/* Now a few have their own children */
ut_assertok(create_children(uts, top[2], NODE_COUNT, 2, NULL));
@@ -645,7 +640,6 @@ DM_TEST(dm_test_children, 0);
static int dm_test_device_reparent(struct unit_test_state *uts)
{
- struct dm_test_state *dms = uts->priv;
struct udevice *top[NODE_COUNT];
struct udevice *child[NODE_COUNT];
struct udevice *grandchild[NODE_COUNT];
@@ -655,12 +649,12 @@ static int dm_test_device_reparent(struct unit_test_state *uts)
int i;
/* We don't care about the numbering for this test */
- dms->skip_post_probe = 1;
+ uts->skip_post_probe = 1;
ut_assert(NODE_COUNT > 5);
/* First create 10 top-level children */
- ut_assertok(create_children(uts, dms->root, NODE_COUNT, 0, top));
+ ut_assertok(create_children(uts, uts->root, NODE_COUNT, 0, top));
/* Now a few have their own children */
ut_assertok(create_children(uts, top[2], NODE_COUNT, 2, NULL));
@@ -806,15 +800,14 @@ DM_TEST(dm_test_device_reparent, 0);
/* Test that pre-relocation devices work as expected */
static int dm_test_pre_reloc(struct unit_test_state *uts)
{
- struct dm_test_state *dms = uts->priv;
struct udevice *dev;
/* The normal driver should refuse to bind before relocation */
- ut_asserteq(-EPERM, device_bind_by_name(dms->root, true,
+ ut_asserteq(-EPERM, device_bind_by_name(uts->root, true,
&driver_info_manual, &dev));
/* But this one is marked pre-reloc */
- ut_assertok(device_bind_by_name(dms->root, true,
+ ut_assertok(device_bind_by_name(uts->root, true,
&driver_info_pre_reloc, &dev));
return 0;
@@ -827,10 +820,9 @@ DM_TEST(dm_test_pre_reloc, 0);
*/
static int dm_test_remove_active_dma(struct unit_test_state *uts)
{
- struct dm_test_state *dms = uts->priv;
struct udevice *dev;
- ut_assertok(device_bind_by_name(dms->root, false, &driver_info_act_dma,
+ ut_assertok(device_bind_by_name(uts->root, false, &driver_info_act_dma,
&dev));
ut_assert(dev);
@@ -863,7 +855,7 @@ static int dm_test_remove_active_dma(struct unit_test_state *uts)
* the active DMA remove call
*/
ut_assertok(device_unbind(dev));
- ut_assertok(device_bind_by_name(dms->root, false, &driver_info_manual,
+ ut_assertok(device_bind_by_name(uts->root, false, &driver_info_manual,
&dev));
ut_assert(dev);
@@ -1038,11 +1030,10 @@ DM_TEST(dm_test_uclass_names, UT_TESTF_SCAN_PDATA);
static int dm_test_inactive_child(struct unit_test_state *uts)
{
- struct dm_test_state *dms = uts->priv;
struct udevice *parent, *dev1, *dev2;
/* Skip the behaviour in test_post_probe() */
- dms->skip_post_probe = 1;
+ uts->skip_post_probe = 1;
ut_assertok(uclass_first_device_err(UCLASS_TEST, &parent));
diff --git a/test/dm/test-dm.c b/test/dm/test-dm.c
index 88feb6537f1..ad64f5bdcb3 100644
--- a/test/dm/test-dm.c
+++ b/test/dm/test-dm.c
@@ -21,14 +21,15 @@
DECLARE_GLOBAL_DATA_PTR;
struct unit_test_state global_dm_test_state;
-static struct dm_test_state _global_priv_dm_test_state;
int dm_test_init(struct unit_test_state *uts)
{
- struct dm_test_state *dms = uts->priv;
bool of_live = uts->of_live;
- memset(dms, '\0', sizeof(*dms));
+ uts->root = NULL;
+ uts->testdev = NULL;
+ uts->force_fail_alloc = false;
+ uts->skip_post_probe = false;
gd->dm_root = NULL;
if (!CONFIG_IS_ENABLED(OF_PLATDATA))
memset(dm_testdrv_op_count, '\0', sizeof(dm_testdrv_op_count));
@@ -37,7 +38,7 @@ int dm_test_init(struct unit_test_state *uts)
/* Determine whether to make the live tree available */
gd_set_of_root(of_live ? uts->of_root : NULL);
ut_assertok(dm_init(of_live));
- dms->root = dm_root();
+ uts->root = dm_root();
return 0;
}
@@ -123,7 +124,6 @@ int dm_test_run(const char *test_name)
struct unit_test *test;
int found;
- uts->priv = &_global_priv_dm_test_state;
uts->fail_count = 0;
if (!CONFIG_IS_ENABLED(OF_PLATDATA)) {
diff --git a/test/dm/test-driver.c b/test/dm/test-driver.c
index a67f5d3f982..49c1c310963 100644
--- a/test/dm/test-driver.c
+++ b/test/dm/test-driver.c
@@ -116,10 +116,8 @@ static int test_manual_bind(struct udevice *dev)
static int test_manual_probe(struct udevice *dev)
{
- struct dm_test_state *dms = uts->priv;
-
dm_testdrv_op_count[DM_TEST_OP_PROBE]++;
- if (!dms->force_fail_alloc)
+ if (!uts->force_fail_alloc)
dev_set_priv(dev, calloc(1, sizeof(struct dm_test_priv)));
if (!dev_get_priv(dev))
return -ENOMEM;
diff --git a/test/dm/test-uclass.c b/test/dm/test-uclass.c
index f1b7aaa727f..f4b540c9278 100644
--- a/test/dm/test-uclass.c
+++ b/test/dm/test-uclass.c
@@ -71,13 +71,12 @@ static int test_post_probe(struct udevice *dev)
struct dm_test_uclass_perdev_priv *priv = dev_get_uclass_priv(dev);
struct uclass *uc = dev->uclass;
- struct dm_test_state *dms = uts->priv;
dm_testdrv_op_count[DM_TEST_OP_POST_PROBE]++;
ut_assert(priv);
ut_assert(device_active(dev));
priv->base_add = 0;
- if (dms->skip_post_probe)
+ if (uts->skip_post_probe)
return 0;
if (&prev->uclass_node != &uc->dev_head) {
struct dm_test_uclass_perdev_priv *prev_uc_priv
--
2.30.0.365.g02bc693789-goog
next prev parent reply other threads:[~2021-02-03 12:44 UTC|newest]
Thread overview: 47+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-02-03 12:44 [PATCH v3 00/41] test: Refactor tests to have a single test runner Simon Glass
2021-02-03 12:44 ` [PATCH v3 01/41] doc: Tidy up testing section Simon Glass
2021-02-03 12:44 ` [PATCH v3 02/41] doc: Document make tcheck Simon Glass
2021-02-03 12:44 ` [PATCH v3 03/41] sandbox: Drop the 'starting...' message unless testing Simon Glass
2021-02-03 12:44 ` [PATCH v3 04/41] test: Re-enable test_ofplatdata Simon Glass
2021-02-03 12:44 ` [PATCH v3 05/41] doc: Explain how to run tests without pytest Simon Glass
2021-02-03 12:44 ` [PATCH v3 06/41] doc: Document how sandbox_spl_tests are run Simon Glass
2021-02-03 14:40 ` Pratyush Yadav
2021-02-03 12:44 ` [PATCH v3 07/41] test: Correct setexpr test prefix Simon Glass
2021-02-03 12:44 ` [PATCH v3 08/41] test: Mark all driver model tests with a flag Simon Glass
2021-02-03 12:44 ` [PATCH v3 09/41] test: Rename test-main.c to test-dm.c Simon Glass
2021-02-03 12:44 ` [PATCH v3 10/41] test: Add an overall test runner Simon Glass
2021-02-03 12:44 ` [PATCH v3 11/41] test: Create pre/post-run functions Simon Glass
2021-02-03 12:44 ` [PATCH v3 12/41] test: Call test_pre/post_run() from driver model tests Simon Glass
2021-02-03 12:44 ` [PATCH v3 13/41] test: Move dm_extended_scan() to test_pre_run() Simon Glass
2021-02-03 12:44 ` [PATCH v3 14/41] test: Move do_autoprobe() " Simon Glass
2021-02-03 12:44 ` [PATCH v3 15/41] test: Move dm_scan_plat() " Simon Glass
2021-02-03 12:44 ` [PATCH v3 16/41] test: Drop mallinfo() work-around Simon Glass
2021-02-03 12:44 ` [PATCH v3 17/41] test: Move console silencing to test_pre_run() Simon Glass
2021-02-03 12:44 ` [PATCH v3 18/41] test: Move delay skipping " Simon Glass
2021-02-03 12:44 ` [PATCH v3 19/41] test: Handle driver model reinit in test_pre_run() Simon Glass
2021-02-03 12:44 ` Simon Glass [this message]
2021-02-03 12:44 ` [PATCH v3 21/41] test: Move dm_test_init() into test-main.c Simon Glass
2021-02-03 12:44 ` [PATCH v3 22/41] test: Move dm_test_destroy() " Simon Glass
2021-02-03 12:44 ` [PATCH v3 23/41] test: Move test running into a separate function Simon Glass
2021-02-03 12:44 ` [PATCH v3 24/41] test: Use ut_run_test() to run driver model tests Simon Glass
2021-02-03 12:44 ` [PATCH v3 25/41] test: Drop dm_do_test() Simon Glass
2021-02-03 12:44 ` [PATCH v3 26/41] test: Add ut_run_test_live_flat() to run tests twice Simon Glass
2021-02-03 12:44 ` [PATCH v3 27/41] test: Use a local variable for test state Simon Glass
2021-02-03 12:44 ` [PATCH v3 28/41] test: Run driver-model tests using ut_run_list() Simon Glass
2021-02-03 12:44 ` [PATCH v3 29/41] test: Use return values in dm_test_run() Simon Glass
2021-02-03 12:44 ` [PATCH v3 30/41] test: Move the devicetree check into ut_run_list() Simon Glass
2021-02-03 12:44 ` [PATCH v3 31/41] test: Move restoring of driver model state to ut_run_list() Simon Glass
2021-02-03 12:44 ` [PATCH v3 32/41] test: log: Rename log main test file to log_ut.c Simon Glass
2021-02-03 12:44 ` [PATCH v3 33/41] test: Add a macros for finding tests in linker_lists Simon Glass
2021-02-03 12:44 ` [PATCH v3 34/41] test: Rename all linker lists to have a ut_ prefix Simon Glass
2021-02-03 12:44 ` [PATCH v3 35/41] test: Allow SPL to run any available test Simon Glass
2021-02-03 12:44 ` [PATCH v3 36/41] sandbox: Update os_find_u_boot() to find the .img file Simon Glass
2021-02-03 12:44 ` [PATCH v3 37/41] spl: Convert spl_fit to work with sandbox Simon Glass
2021-02-03 12:44 ` [PATCH v3 38/41] doc: Move coccinelle into its own section Simon Glass
2021-02-03 12:44 ` [PATCH v3 39/41] spl: test: Add a test for spl_load_simple_fit() Simon Glass
2021-02-03 12:44 ` [PATCH v3 40/41] test: sandbox: Move sandbox test docs into doc/develop Simon Glass
2021-02-03 12:44 ` [PATCH v3 41/41] doc: Explain briefly how to write new tests Simon Glass
2021-03-03 19:37 ` [PATCH v3 00/41] test: Refactor tests to have a single test runner Tom Rini
2021-03-03 20:18 ` Tom Rini
2021-03-03 20:37 ` Tom Rini
2021-03-04 3:06 ` Simon Glass
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20210203124447.2458527-20-sjg@chromium.org \
--to=sjg@chromium.org \
--cc=u-boot@lists.denx.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.