summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNicolas Boichat <drinkcat@google.com>2017-05-25 07:51:23 +0800
committerchrome-bot <chrome-bot@chromium.org>2017-05-25 02:33:04 -0700
commit661259ebff96a3acc1f72701b90ea2c4955addc6 (patch)
treed0fbe38a80af8c06728cfb325a5fef8f285373ba
parent3219d9988b4816f5dbbacfda038aa448e6065f61 (diff)
downloadchrome-ec-661259ebff96a3acc1f72701b90ea2c4955addc6.tar.gz
tests: Split utils in 2 subtests
utils test is a little too large for hammer's small RO, so we split it in 2 test: utils and utils_str. Instead of one test that requires about 8kb extra flash, we have 2 tests that take respectively 3.4kb (utils_str) and 4.6kb (utils) of extra flash. BRANCH=none BUG=chromium:726113 TEST=make BOARD=hammer tests -j util/flash_ec --board=hammer --image=build/hammer/test-utils.bin runtest => pass Repeat with test-utils_str.bin TEST=Before this change: make runtests -j ./util/run_host_test utils | grep Running | sort > old Apply this change: make runtests -j (./util/run_host_test utils; ./util/run_host_test utils_str) \ | grep Running | sort > new diff old new => No difference (except timing) Change-Id: I917d572e671d6ce0a8799508761f55de7bd83133 Reviewed-on: https://chromium-review.googlesource.com/514604 Commit-Ready: Nicolas Boichat <drinkcat@chromium.org> Tested-by: Nicolas Boichat <drinkcat@chromium.org> Reviewed-by: Aseda Aboagye <aaboagye@chromium.org>
-rw-r--r--test/build.mk4
-rw-r--r--test/utils.c141
-rw-r--r--test/utils_str.c162
-rw-r--r--test/utils_str.tasklist17
4 files changed, 182 insertions, 142 deletions
diff --git a/test/build.mk b/test/build.mk
index 0079c21f48..b92e263e8f 100644
--- a/test/build.mk
+++ b/test/build.mk
@@ -6,7 +6,7 @@
# on-board test binaries build
#
-test-list-y=pingpong timer_calib timer_dos timer_jump mutex utils
+test-list-y=pingpong timer_calib timer_dos timer_jump mutex utils utils_str
#disable: powerdemo
test-list-$(BOARD_BDS)+=
@@ -73,6 +73,7 @@ test-list-host += timer_dos
test-list-host += usb_pd
test-list-host += usb_pd_giveback
test-list-host += utils
+test-list-host += utils_str
test-list-host += x25519
endif
@@ -119,4 +120,5 @@ timer_dos-y=timer_dos.o
usb_pd-y=usb_pd.o
usb_pd_giveback-y=usb_pd.o
utils-y=utils.o
+utils_str-y=utils_str.o
x25519-y=x25519.o
diff --git a/test/utils.c b/test/utils.c
index 293c1507c4..c382a46828 100644
--- a/test/utils.c
+++ b/test/utils.c
@@ -13,59 +13,6 @@
#include "timer.h"
#include "util.h"
-static int test_isalpha(void)
-{
- TEST_CHECK(isalpha('a') && isalpha('z') && isalpha('A') &&
- isalpha('Z') && !isalpha('0') && !isalpha('~') &&
- !isalpha(' ') && !isalpha('\0') && !isalpha('\n'));
-}
-
-static int test_isprint(void)
-{
- TEST_CHECK(isprint('a') && isprint('z') && isprint('A') &&
- isprint('Z') && isprint('0') && isprint('~') &&
- isprint(' ') && !isprint('\0') && !isprint('\n'));
-}
-
-static int test_strtoi(void)
-{
- char *e;
-
- TEST_ASSERT(strtoi("10", &e, 0) == 10);
- TEST_ASSERT(e && (*e == '\0'));
- TEST_ASSERT(strtoi("0x1f z", &e, 0) == 31);
- TEST_ASSERT(e && (*e == ' '));
- TEST_ASSERT(strtoi("10a", &e, 16) == 266);
- TEST_ASSERT(e && (*e == '\0'));
- TEST_ASSERT(strtoi("0x02C", &e, 16) == 44);
- TEST_ASSERT(e && (*e == '\0'));
- TEST_ASSERT(strtoi(" -12", &e, 0) == -12);
- TEST_ASSERT(e && (*e == '\0'));
- TEST_ASSERT(strtoi("!", &e, 0) == 0);
- TEST_ASSERT(e && (*e == '!'));
-
- return EC_SUCCESS;
-}
-
-static int test_parse_bool(void)
-{
- int v;
-
- TEST_ASSERT(parse_bool("on", &v) == 1);
- TEST_ASSERT(v == 1);
- TEST_ASSERT(parse_bool("off", &v) == 1);
- TEST_ASSERT(v == 0);
- TEST_ASSERT(parse_bool("enable", &v) == 1);
- TEST_ASSERT(v == 1);
- TEST_ASSERT(parse_bool("disable", &v) == 1);
- TEST_ASSERT(v == 0);
- TEST_ASSERT(parse_bool("di", &v) == 0);
- TEST_ASSERT(parse_bool("en", &v) == 0);
- TEST_ASSERT(parse_bool("of", &v) == 0);
-
- return EC_SUCCESS;
-}
-
static int test_memmove(void)
{
int i;
@@ -242,82 +189,6 @@ static int test_memchr(void)
return EC_SUCCESS;
}
-static int test_strzcpy(void)
-{
- char dest[10];
-
- strzcpy(dest, "test", 10);
- TEST_ASSERT_ARRAY_EQ("test", dest, 5);
- strzcpy(dest, "testtesttest", 10);
- TEST_ASSERT_ARRAY_EQ("testtestt", dest, 10);
- strzcpy(dest, "aaaa", -1);
- TEST_ASSERT_ARRAY_EQ("testtestt", dest, 10);
-
- return EC_SUCCESS;
-}
-
-static int test_strncpy(void)
-{
- char dest[10];
-
- strncpy(dest, "test", 10);
- TEST_ASSERT_ARRAY_EQ("test", dest, 5);
- strncpy(dest, "12345", 6);
- TEST_ASSERT_ARRAY_EQ("12345", dest, 6);
- strncpy(dest, "testtesttest", 10);
- TEST_ASSERT_ARRAY_EQ("testtestte", dest, 10);
-
- return EC_SUCCESS;
-}
-
-static int test_strncmp(void)
-{
- TEST_ASSERT(strncmp("123", "123", 8) == 0);
- TEST_ASSERT(strncmp("789", "456", 8) > 0);
- TEST_ASSERT(strncmp("abc", "abd", 4) < 0);
- TEST_ASSERT(strncmp("abc", "abd", 2) == 0);
- return EC_SUCCESS;
-}
-
-static int test_strlen(void)
-{
- TEST_CHECK(strlen("this is a string") == 16);
-}
-
-static int test_strnlen(void)
-{
- TEST_ASSERT(strnlen("this is a string", 17) == 16);
- TEST_ASSERT(strnlen("this is a string", 16) == 16);
- TEST_ASSERT(strnlen("this is a string", 5) == 5);
-
- return EC_SUCCESS;
-}
-
-static int test_strcasecmp(void)
-{
- TEST_CHECK((strcasecmp("test string", "TEST strIng") == 0) &&
- (strcasecmp("test123!@#", "TesT123!@#") == 0) &&
- (strcasecmp("lower", "UPPER") != 0));
-}
-
-static int test_strncasecmp(void)
-{
- TEST_CHECK((strncasecmp("test string", "TEST str", 4) == 0) &&
- (strncasecmp("test string", "TEST str", 8) == 0) &&
- (strncasecmp("test123!@#", "TesT321!@#", 5) != 0) &&
- (strncasecmp("test123!@#", "TesT321!@#", 4) == 0) &&
- (strncasecmp("1test123!@#", "1TesT321!@#", 5) == 0) &&
- (strncasecmp("1test123", "teststr", 0) == 0));
-}
-
-static int test_atoi(void)
-{
- TEST_CHECK((atoi(" 901") == 901) &&
- (atoi("-12c") == -12) &&
- (atoi(" 0 ") == 0) &&
- (atoi("\t111") == 111));
-}
-
static int test_uint64divmod_0(void)
{
uint64_t n = 8567106442584750ULL;
@@ -489,22 +360,10 @@ void run_test(void)
{
test_reset();
- RUN_TEST(test_isalpha);
- RUN_TEST(test_isprint);
- RUN_TEST(test_strtoi);
- RUN_TEST(test_parse_bool);
RUN_TEST(test_memmove);
RUN_TEST(test_memcpy);
RUN_TEST(test_memset);
RUN_TEST(test_memchr);
- RUN_TEST(test_strzcpy);
- RUN_TEST(test_strncpy);
- RUN_TEST(test_strncmp);
- RUN_TEST(test_strlen);
- RUN_TEST(test_strnlen);
- RUN_TEST(test_strcasecmp);
- RUN_TEST(test_strncasecmp);
- RUN_TEST(test_atoi);
RUN_TEST(test_uint64divmod_0);
RUN_TEST(test_uint64divmod_1);
RUN_TEST(test_uint64divmod_2);
diff --git a/test/utils_str.c b/test/utils_str.c
new file mode 100644
index 0000000000..23890639e2
--- /dev/null
+++ b/test/utils_str.c
@@ -0,0 +1,162 @@
+/* Copyright 2017 The Chromium OS Authors. All rights reserved.
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ *
+ * Test common utilities (string functions).
+ */
+
+#include "common.h"
+#include "console.h"
+#include "system.h"
+#include "test_util.h"
+#include "timer.h"
+#include "util.h"
+
+static int test_isalpha(void)
+{
+ TEST_CHECK(isalpha('a') && isalpha('z') && isalpha('A') &&
+ isalpha('Z') && !isalpha('0') && !isalpha('~') &&
+ !isalpha(' ') && !isalpha('\0') && !isalpha('\n'));
+}
+
+static int test_isprint(void)
+{
+ TEST_CHECK(isprint('a') && isprint('z') && isprint('A') &&
+ isprint('Z') && isprint('0') && isprint('~') &&
+ isprint(' ') && !isprint('\0') && !isprint('\n'));
+}
+
+static int test_strtoi(void)
+{
+ char *e;
+
+ TEST_ASSERT(strtoi("10", &e, 0) == 10);
+ TEST_ASSERT(e && (*e == '\0'));
+ TEST_ASSERT(strtoi("0x1f z", &e, 0) == 31);
+ TEST_ASSERT(e && (*e == ' '));
+ TEST_ASSERT(strtoi("10a", &e, 16) == 266);
+ TEST_ASSERT(e && (*e == '\0'));
+ TEST_ASSERT(strtoi("0x02C", &e, 16) == 44);
+ TEST_ASSERT(e && (*e == '\0'));
+ TEST_ASSERT(strtoi(" -12", &e, 0) == -12);
+ TEST_ASSERT(e && (*e == '\0'));
+ TEST_ASSERT(strtoi("!", &e, 0) == 0);
+ TEST_ASSERT(e && (*e == '!'));
+
+ return EC_SUCCESS;
+}
+
+static int test_parse_bool(void)
+{
+ int v;
+
+ TEST_ASSERT(parse_bool("on", &v) == 1);
+ TEST_ASSERT(v == 1);
+ TEST_ASSERT(parse_bool("off", &v) == 1);
+ TEST_ASSERT(v == 0);
+ TEST_ASSERT(parse_bool("enable", &v) == 1);
+ TEST_ASSERT(v == 1);
+ TEST_ASSERT(parse_bool("disable", &v) == 1);
+ TEST_ASSERT(v == 0);
+ TEST_ASSERT(parse_bool("di", &v) == 0);
+ TEST_ASSERT(parse_bool("en", &v) == 0);
+ TEST_ASSERT(parse_bool("of", &v) == 0);
+
+ return EC_SUCCESS;
+}
+
+static int test_strzcpy(void)
+{
+ char dest[10];
+
+ strzcpy(dest, "test", 10);
+ TEST_ASSERT_ARRAY_EQ("test", dest, 5);
+ strzcpy(dest, "testtesttest", 10);
+ TEST_ASSERT_ARRAY_EQ("testtestt", dest, 10);
+ strzcpy(dest, "aaaa", -1);
+ TEST_ASSERT_ARRAY_EQ("testtestt", dest, 10);
+
+ return EC_SUCCESS;
+}
+
+static int test_strncpy(void)
+{
+ char dest[10];
+
+ strncpy(dest, "test", 10);
+ TEST_ASSERT_ARRAY_EQ("test", dest, 5);
+ strncpy(dest, "12345", 6);
+ TEST_ASSERT_ARRAY_EQ("12345", dest, 6);
+ strncpy(dest, "testtesttest", 10);
+ TEST_ASSERT_ARRAY_EQ("testtestte", dest, 10);
+
+ return EC_SUCCESS;
+}
+
+static int test_strncmp(void)
+{
+ TEST_ASSERT(strncmp("123", "123", 8) == 0);
+ TEST_ASSERT(strncmp("789", "456", 8) > 0);
+ TEST_ASSERT(strncmp("abc", "abd", 4) < 0);
+ TEST_ASSERT(strncmp("abc", "abd", 2) == 0);
+ return EC_SUCCESS;
+}
+
+static int test_strlen(void)
+{
+ TEST_CHECK(strlen("this is a string") == 16);
+}
+
+static int test_strnlen(void)
+{
+ TEST_ASSERT(strnlen("this is a string", 17) == 16);
+ TEST_ASSERT(strnlen("this is a string", 16) == 16);
+ TEST_ASSERT(strnlen("this is a string", 5) == 5);
+
+ return EC_SUCCESS;
+}
+
+static int test_strcasecmp(void)
+{
+ TEST_CHECK((strcasecmp("test string", "TEST strIng") == 0) &&
+ (strcasecmp("test123!@#", "TesT123!@#") == 0) &&
+ (strcasecmp("lower", "UPPER") != 0));
+}
+
+static int test_strncasecmp(void)
+{
+ TEST_CHECK((strncasecmp("test string", "TEST str", 4) == 0) &&
+ (strncasecmp("test string", "TEST str", 8) == 0) &&
+ (strncasecmp("test123!@#", "TesT321!@#", 5) != 0) &&
+ (strncasecmp("test123!@#", "TesT321!@#", 4) == 0) &&
+ (strncasecmp("1test123!@#", "1TesT321!@#", 5) == 0) &&
+ (strncasecmp("1test123", "teststr", 0) == 0));
+}
+
+static int test_atoi(void)
+{
+ TEST_CHECK((atoi(" 901") == 901) &&
+ (atoi("-12c") == -12) &&
+ (atoi(" 0 ") == 0) &&
+ (atoi("\t111") == 111));
+}
+
+void run_test(void)
+{
+ test_reset();
+
+ RUN_TEST(test_isalpha);
+ RUN_TEST(test_isprint);
+ RUN_TEST(test_strtoi);
+ RUN_TEST(test_parse_bool);
+ RUN_TEST(test_strzcpy);
+ RUN_TEST(test_strncpy);
+ RUN_TEST(test_strncmp);
+ RUN_TEST(test_strlen);
+ RUN_TEST(test_strnlen);
+ RUN_TEST(test_strcasecmp);
+ RUN_TEST(test_strncasecmp);
+ RUN_TEST(test_atoi);
+
+ test_print_result();
+}
diff --git a/test/utils_str.tasklist b/test/utils_str.tasklist
new file mode 100644
index 0000000000..e241aab4bb
--- /dev/null
+++ b/test/utils_str.tasklist
@@ -0,0 +1,17 @@
+/* Copyright 2017 The Chromium OS Authors. All rights reserved.
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+/**
+ * List of enabled tasks in the priority order
+ *
+ * The first one has the lowest priority.
+ *
+ * For each task, use the macro TASK_TEST(n, r, d, s) where :
+ * 'n' in the name of the task
+ * 'r' in the main routine of the task
+ * 'd' in an opaque parameter passed to the routine at startup
+ * 's' is the stack size in bytes; must be a multiple of 8
+ */
+#define CONFIG_TEST_TASK_LIST /* No test task */