From: Chengwen Feng <fengchengwen@huawei.com>
To: <thomas@monjalon.net>, <ferruh.yigit@amd.com>
Cc: <dev@dpdk.org>
Subject: [PATCH 2/7] app/test: extract basic token count testcase for kvargs
Date: Fri, 3 Nov 2023 09:53:20 +0000 [thread overview]
Message-ID: <20231103095325.47843-3-fengchengwen@huawei.com> (raw)
In-Reply-To: <20231103095325.47843-1-fengchengwen@huawei.com>
The test_valid_kvargs() function is too long to understand, extract
the basic token count tests as one stand-alone testcase.
Signed-off-by: Chengwen Feng <fengchengwen@huawei.com>
---
app/test/test_kvargs.c | 120 ++++++++++++++++-------------------------
1 file changed, 45 insertions(+), 75 deletions(-)
diff --git a/app/test/test_kvargs.c b/app/test/test_kvargs.c
index 9aeb9aa0aa..a27b2aabfb 100644
--- a/app/test/test_kvargs.c
+++ b/app/test/test_kvargs.c
@@ -36,25 +36,6 @@ static int check_handler(const char *key, const char *value,
return 0;
}
-/* test parsing. */
-static int test_kvargs_parsing(const char *args, unsigned int n)
-{
- struct rte_kvargs *kvlist;
-
- kvlist = rte_kvargs_parse(args, NULL);
- if (kvlist == NULL) {
- printf("rte_kvargs_parse() error: %s\n", args);
- return -1;
- }
- if (kvlist->count != n) {
- printf("invalid count value %d: %s\n", kvlist->count, args);
- rte_kvargs_free(kvlist);
- return -1;
- }
- rte_kvargs_free(kvlist);
- return 0;
-}
-
/* test a valid case */
static int test_valid_kvargs(void)
{
@@ -62,29 +43,6 @@ static int test_valid_kvargs(void)
const char *args;
const char *valid_keys_list[] = { "foo", "check", NULL };
const char **valid_keys;
- static const struct {
- unsigned int expected;
- const char *input;
- } valid_inputs[] = {
- { 2, "foo=1,foo=" },
- { 2, "foo=1,foo=" },
- { 2, "foo=1,foo" },
- { 2, "foo=1,=2" },
- { 1, "foo=[1,2" },
- { 1, ",=" },
- { 1, "foo=[" },
- };
- unsigned int i;
-
- /* empty args is valid */
- args = "";
- valid_keys = NULL;
- kvlist = rte_kvargs_parse(args, valid_keys);
- if (kvlist == NULL) {
- printf("rte_kvargs_parse() error");
- goto fail;
- }
- rte_kvargs_free(kvlist);
/* first test without valid_keys */
args = "foo=1234,check=value0,check=value1";
@@ -128,14 +86,6 @@ static int test_valid_kvargs(void)
rte_kvargs_free(kvlist);
goto fail;
}
- /* count all entries */
- count = rte_kvargs_count(kvlist, NULL);
- if (count != 3) {
- printf("invalid count value %d after rte_kvargs_count(NULL)\n",
- count);
- rte_kvargs_free(kvlist);
- goto fail;
- }
/* count all entries with key="nonexistent_key" */
count = rte_kvargs_count(kvlist, "nonexistent_key");
if (count != 0) {
@@ -190,19 +140,6 @@ static int test_valid_kvargs(void)
}
rte_kvargs_free(kvlist);
- /* test using empty string (it is valid) */
- args = "";
- kvlist = rte_kvargs_parse(args, NULL);
- if (kvlist == NULL) {
- printf("rte_kvargs_parse() error\n");
- goto fail;
- }
- if (rte_kvargs_count(kvlist, NULL) != 0) {
- printf("invalid count value\n");
- goto fail;
- }
- rte_kvargs_free(kvlist);
-
/* test using empty elements (it is valid) */
args = "foo=1,,check=value2,,";
kvlist = rte_kvargs_parse(args, NULL);
@@ -210,10 +147,6 @@ static int test_valid_kvargs(void)
printf("rte_kvargs_parse() error\n");
goto fail;
}
- if (rte_kvargs_count(kvlist, NULL) != 2) {
- printf("invalid count value\n");
- goto fail;
- }
if (rte_kvargs_count(kvlist, "foo") != 1) {
printf("invalid count value for 'foo'\n");
goto fail;
@@ -224,14 +157,6 @@ static int test_valid_kvargs(void)
}
rte_kvargs_free(kvlist);
- valid_keys = NULL;
-
- for (i = 0; i < RTE_DIM(valid_inputs); ++i) {
- args = valid_inputs[i].input;
- if (test_kvargs_parsing(args, valid_inputs[i].expected))
- goto fail;
- }
-
return 0;
fail:
@@ -246,6 +171,50 @@ static int test_valid_kvargs(void)
return -1;
}
+static int
+test_basic_token_count(void)
+{
+ static const struct {
+ unsigned int expected;
+ const char *input;
+ } valid_inputs[] = {
+ { 3, "foo=1,check=1,check=2" },
+ { 3, "foo=1,check,check=2" },
+ { 2, "foo=1,foo=" },
+ { 2, "foo=1,foo=" },
+ { 2, "foo=1,foo" },
+ { 2, "foo=1,=2" },
+ { 2, "foo=1,,foo=2,," },
+ { 1, "foo=[1,2" },
+ { 1, ",=" },
+ { 1, "foo=[" },
+ { 0, "" },
+ };
+ struct rte_kvargs *kvlist;
+ unsigned int count;
+ const char *args;
+ unsigned int i;
+
+ for (i = 0; i < RTE_DIM(valid_inputs); i++) {
+ args = valid_inputs[i].input;
+ kvlist = rte_kvargs_parse(args, NULL);
+ if (kvlist == NULL) {
+ printf("rte_kvargs_parse() error: %s\n", args);
+ return -1;
+ }
+ count = rte_kvargs_count(kvlist, NULL);
+ if (count != valid_inputs[i].expected) {
+ printf("invalid count value %u (expected %u): %s\n",
+ count, valid_inputs[i].expected, args);
+ rte_kvargs_free(kvlist);
+ return -1;
+ }
+ rte_kvargs_free(kvlist);
+ }
+
+ return 0;
+}
+
/* test several error cases */
static int test_invalid_kvargs(void)
{
@@ -287,6 +256,7 @@ static struct unit_test_suite kvargs_test_suite = {
.teardown = NULL,
.unit_test_cases = {
TEST_CASE(test_valid_kvargs),
+ TEST_CASE(test_basic_token_count),
TEST_CASE(test_invalid_kvargs),
TEST_CASES_END() /**< NULL terminate unit test array */
}
--
2.17.1
next prev parent reply other threads:[~2023-11-03 9:56 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-11-03 9:53 [PATCH 0/7] refactor kvargs test Chengwen Feng
2023-11-03 9:53 ` [PATCH 1/7] app/test: introduce UT suite framework for kvargs Chengwen Feng
2023-11-03 9:53 ` Chengwen Feng [this message]
2023-11-03 9:53 ` [PATCH 3/7] app/test: extract without keys testcase " Chengwen Feng
2023-11-03 9:53 ` [PATCH 4/7] app/test: extract with " Chengwen Feng
2023-11-03 9:53 ` [PATCH 5/7] app/test: extract parse list value " Chengwen Feng
2023-11-03 9:53 ` [PATCH 6/7] app/test: extract parse empty elements " Chengwen Feng
2023-11-03 9:53 ` [PATCH 7/7] maintainers: update for kvargs library Chengwen Feng
2023-12-05 2:55 ` [PATCH 0/7] refactor kvargs test fengchengwen
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=20231103095325.47843-3-fengchengwen@huawei.com \
--to=fengchengwen@huawei.com \
--cc=dev@dpdk.org \
--cc=ferruh.yigit@amd.com \
--cc=thomas@monjalon.net \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).