summaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorJoe Hershberger <joe.hershberger@ni.com>2015-05-20 14:27:27 -0500
committerTom Rini <trini@konsulko.com>2015-05-21 09:16:16 -0400
commite721b882e9daf3ad3599eef5a9ccf3847b694228 (patch)
treed92fadcb65548e6ed19c60d4dfa27ecc80c3778c /include
parent6e0d26c0502e4d697cb235069aef188f8f1407d3 (diff)
downloadtalos-obmc-uboot-e721b882e9daf3ad3599eef5a9ccf3847b694228.tar.gz
talos-obmc-uboot-e721b882e9daf3ad3599eef5a9ccf3847b694228.zip
test: Generalize the unit test framework
Separate the ability to define tests and assert status of test functions from the dm tests so they can be used more consistently throughout all tests. Signed-off-by: Joe Hershberger <joe.hershberger@ni.com> Reviewed-by: Simon Glass <sjg@chromium.org>
Diffstat (limited to 'include')
-rw-r--r--include/dm/test.h35
-rw-r--r--include/test/test.h47
-rw-r--r--include/test/ut.h (renamed from include/dm/ut.h)28
3 files changed, 68 insertions, 42 deletions
diff --git a/include/dm/test.h b/include/dm/test.h
index f03fbcb1cd..98f2b9e996 100644
--- a/include/dm/test.h
+++ b/include/dm/test.h
@@ -8,7 +8,7 @@
#define __DM_TEST_H
#include <dm.h>
-#include <malloc.h>
+#include <test/test.h>
/**
* struct dm_test_cdata - configuration data for test instance
@@ -124,7 +124,7 @@ struct dm_test_perdev_uc_pdata {
*/
extern int dm_testdrv_op_count[DM_TEST_OP_COUNT];
-extern struct dm_test_state global_test_state;
+extern struct unit_test_state global_dm_test_state;
/*
* struct dm_test_state - Entire state of dm test system
@@ -133,7 +133,6 @@ extern struct dm_test_state global_test_state;
*
* @root: Root device
* @testdev: Test device
- * @fail_count: Number of tests that failed
* @force_fail_alloc: Force all memory allocs to fail
* @skip_post_probe: Skip uclass post-probe processing
* @removed: Used to keep track of a device that was removed
@@ -141,11 +140,9 @@ extern struct dm_test_state global_test_state;
struct dm_test_state {
struct udevice *root;
struct udevice *testdev;
- int fail_count;
int force_fail_alloc;
int skip_post_probe;
struct udevice *removed;
- struct mallinfo start;
};
/* Test flags for each test */
@@ -155,26 +152,8 @@ enum {
DM_TESTF_SCAN_FDT = 1 << 2, /* scan device tree */
};
-/**
- * struct dm_test - Information about a driver model test
- *
- * @name: Name of test
- * @func: Function to call to perform test
- * @flags: Flags indicated pre-conditions for test
- */
-struct dm_test {
- const char *name;
- int (*func)(struct dm_test_state *dms);
- int flags;
-};
-
/* Declare a new driver model test */
-#define DM_TEST(_name, _flags) \
- ll_entry_declare(struct dm_test, _name, dm_test) = { \
- .name = #_name, \
- .flags = _flags, \
- .func = _name, \
- }
+#define DM_TEST(_name, _flags) UNIT_TEST(_name, _flags, dm_test)
/* Declare ping methods for the drivers */
int test_ping(struct udevice *dev, int pingval, int *pingret);
@@ -191,7 +170,7 @@ int testfdt_ping(struct udevice *dev, int pingval, int *pingret);
* @priv: Pointer to private test information
* @return 0 if OK, -ve on error
*/
-int dm_check_operations(struct dm_test_state *dms, struct udevice *dev,
+int dm_check_operations(struct unit_test_state *uts, struct udevice *dev,
uint32_t base, struct dm_test_priv *priv);
/**
@@ -201,7 +180,7 @@ int dm_check_operations(struct dm_test_state *dms, struct udevice *dev,
* @num_devices: Number of test devices to check
* @return 0 if OK, -ve on error
*/
-int dm_check_devices(struct dm_test_state *dms, int num_devices);
+int dm_check_devices(struct unit_test_state *uts, int num_devices);
/**
* dm_leak_check_start() - Prepare to check for a memory leak
@@ -211,7 +190,7 @@ int dm_check_devices(struct dm_test_state *dms, int num_devices);
*
* @dms: Overall test state
*/
-void dm_leak_check_start(struct dm_test_state *dms);
+void dm_leak_check_start(struct unit_test_state *uts);
/**
* dm_leak_check_end() - Check that no memory has leaked
@@ -221,7 +200,7 @@ void dm_leak_check_start(struct dm_test_state *dms);
* it sees a different amount of total memory allocated than before.
*
* @dms: Overall test state
- */int dm_leak_check_end(struct dm_test_state *dms);
+ */int dm_leak_check_end(struct unit_test_state *uts);
/**
diff --git a/include/test/test.h b/include/test/test.h
new file mode 100644
index 0000000000..b7e1ae2dec
--- /dev/null
+++ b/include/test/test.h
@@ -0,0 +1,47 @@
+/*
+ * Copyright (c) 2013 Google, Inc.
+ *
+ * SPDX-License-Identifier: GPL-2.0+
+ */
+
+#ifndef __TEST_TEST_H
+#define __TEST_TEST_H
+
+#include <malloc.h>
+
+/*
+ * struct unit_test_state - Entire state of test system
+ *
+ * @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
+ */
+struct unit_test_state {
+ int fail_count;
+ struct mallinfo start;
+ void *priv;
+};
+
+/**
+ * struct unit_test - Information about a unit test
+ *
+ * @name: Name of test
+ * @func: Function to call to perform test
+ * @flags: Flags indicated pre-conditions for test
+ */
+struct unit_test {
+ const char *name;
+ int (*func)(struct unit_test_state *state);
+ int flags;
+};
+
+/* Declare a new unit test */
+#define UNIT_TEST(_name, _flags, _suite) \
+ ll_entry_declare(struct unit_test, _name, _suite) = { \
+ .name = #_name, \
+ .flags = _flags, \
+ .func = _name, \
+ }
+
+
+#endif /* __TEST_TEST_H */
diff --git a/include/dm/ut.h b/include/test/ut.h
index ec6146545b..275f27ffea 100644
--- a/include/dm/ut.h
+++ b/include/test/ut.h
@@ -1,39 +1,39 @@
/*
- * Simple unit test library for driver model
+ * Simple unit test library
*
* Copyright (c) 2013 Google, Inc
*
* SPDX-License-Identifier: GPL-2.0+
*/
-#ifndef __DM_UT_H
-#define __DM_UT_H
+#ifndef __TEST_UT_H
+#define __TEST_UT_H
-struct dm_test_state;
+struct unit_test_state;
/**
* ut_fail() - Record failure of a unit test
*
- * @dms: Test state
+ * @uts: Test state
* @fname: Filename where the error occured
* @line: Line number where the error occured
* @func: Function name where the error occured
* @cond: The condition that failed
*/
-void ut_fail(struct dm_test_state *dms, const char *fname, int line,
+void ut_fail(struct unit_test_state *uts, const char *fname, int line,
const char *func, const char *cond);
/**
* ut_failf() - Record failure of a unit test
*
- * @dms: Test state
+ * @uts: Test state
* @fname: Filename where the error occured
* @line: Line number where the error occured
* @func: Function name where the error occured
* @cond: The condition that failed
* @fmt: printf() format string for the error, followed by args
*/
-void ut_failf(struct dm_test_state *dms, const char *fname, int line,
+void ut_failf(struct unit_test_state *uts, const char *fname, int line,
const char *func, const char *cond, const char *fmt, ...)
__attribute__ ((format (__printf__, 6, 7)));
@@ -41,14 +41,14 @@ void ut_failf(struct dm_test_state *dms, const char *fname, int line,
/* Assert that a condition is non-zero */
#define ut_assert(cond) \
if (!(cond)) { \
- ut_fail(dms, __FILE__, __LINE__, __func__, #cond); \
+ ut_fail(uts, __FILE__, __LINE__, __func__, #cond); \
return -1; \
}
/* Assert that a condition is non-zero, with printf() string */
#define ut_assertf(cond, fmt, args...) \
if (!(cond)) { \
- ut_failf(dms, __FILE__, __LINE__, __func__, #cond, \
+ ut_failf(uts, __FILE__, __LINE__, __func__, #cond, \
fmt, ##args); \
return -1; \
}
@@ -58,7 +58,7 @@ void ut_failf(struct dm_test_state *dms, const char *fname, int line,
unsigned int val1 = (expr1), val2 = (expr2); \
\
if (val1 != val2) { \
- ut_failf(dms, __FILE__, __LINE__, __func__, \
+ ut_failf(uts, __FILE__, __LINE__, __func__, \
#expr1 " == " #expr2, \
"Expected %d, got %d", val1, val2); \
return -1; \
@@ -70,7 +70,7 @@ void ut_failf(struct dm_test_state *dms, const char *fname, int line,
const char *val1 = (expr1), *val2 = (expr2); \
\
if (strcmp(val1, val2)) { \
- ut_failf(dms, __FILE__, __LINE__, __func__, \
+ ut_failf(uts, __FILE__, __LINE__, __func__, \
#expr1 " = " #expr2, \
"Expected \"%s\", got \"%s\"", val1, val2); \
return -1; \
@@ -82,7 +82,7 @@ void ut_failf(struct dm_test_state *dms, const char *fname, int line,
const void *val1 = (expr1), *val2 = (expr2); \
\
if (val1 != val2) { \
- ut_failf(dms, __FILE__, __LINE__, __func__, \
+ ut_failf(uts, __FILE__, __LINE__, __func__, \
#expr1 " = " #expr2, \
"Expected %p, got %p", val1, val2); \
return -1; \
@@ -94,7 +94,7 @@ void ut_failf(struct dm_test_state *dms, const char *fname, int line,
const void *val = (expr); \
\
if (val == NULL) { \
- ut_failf(dms, __FILE__, __LINE__, __func__, \
+ ut_failf(uts, __FILE__, __LINE__, __func__, \
#expr " = NULL", \
"Expected non-null, got NULL"); \
return -1; \
OpenPOWER on IntegriCloud