Unified the acc test framework. This framework is used to run algorithm
correctness. It can helps developers with feature self-testing. Only
supports sec engine self-testing currently.
Such as:
test_sec_sva --cipher 0 --sync --optype 0 --pktlen 16 --keylen \
16 --times 1 --multi 1
after:
uadk_tool test --m sec --cipher 0 --sync --optype 0 --pktlen 16 \
--keylen 16 --times 1 --multi 1
Signed-off-by: Kai Ye <yekai13(a)huawei.com>
---
configure.ac | 1 -
test/Makefile.am | 3 +-
test/hisi_sec_test/Makefile.am | 15 ----
test/wd_mempool_test.c | 2 +-
uadk_tool/Makefile.am | 4 +-
.../test/sec_template_tv.h | 6 +-
.../test/test_sec.c | 42 ++++-----
uadk_tool/test/test_sec.h | 7 ++
uadk_tool/test/uadk_test.c | 85 +++++++++++++++++++
uadk_tool/test/uadk_test.h | 7 ++
uadk_tool/uadk_tool.c | 7 +-
11 files changed, 136 insertions(+), 43 deletions(-)
delete mode 100644 test/hisi_sec_test/Makefile.am
rename test/hisi_sec_test/test_hisi_sec.h => uadk_tool/test/sec_template_tv.h (99%)
rename test/hisi_sec_test/test_hisi_sec.c => uadk_tool/test/test_sec.c (98%)
mode change 100755 => 100644
create mode 100644 uadk_tool/test/test_sec.h
create mode 100644 uadk_tool/test/uadk_test.c
create mode 100644 uadk_tool/test/uadk_test.h
diff --git a/configure.ac b/configure.ac
index 3eb853f..7109d97 100644
--- a/configure.ac
+++ b/configure.ac
@@ -91,7 +91,6 @@ AC_CONFIG_FILES([Makefile
lib/libwd_crypto.pc lib/libwd_comp.pc lib/libwd.pc
test/Makefile
test/hisi_hpre_test/Makefile
- test/hisi_sec_test/Makefile
test/hisi_zip_test/Makefile
uadk_tool/Makefile
sample/Makefile
diff --git a/test/Makefile.am b/test/Makefile.am
index 860a103..8da1afb 100644
--- a/test/Makefile.am
+++ b/test/Makefile.am
@@ -12,8 +12,7 @@ wd_mempool_test_LDADD=-L../.libs -lwd -lwd_crypto -lnuma -lpthread
endif
wd_mempool_test_LDFLAGS=-Wl,-rpath,'/usr/local/lib'
-SUBDIRS=. hisi_sec_test
-
+SUBDIRS = .
if HAVE_CRYPTO
SUBDIRS += hisi_hpre_test
diff --git a/test/hisi_sec_test/Makefile.am b/test/hisi_sec_test/Makefile.am
deleted file mode 100644
index 9955ab1..0000000
--- a/test/hisi_sec_test/Makefile.am
+++ /dev/null
@@ -1,15 +0,0 @@
-AM_CFLAGS=-Wall -Werror -fno-strict-aliasing -I$(top_srcdir)/include -pthread
-AUTOMAKE_OPTIONS = subdir-objects
-
-bin_PROGRAMS=test_hisi_sec
-
-test_hisi_sec_SOURCES=test_hisi_sec.c
-
-if WD_STATIC_DRV
-AM_CFLAGS+=-Bstatic
-test_hisi_sec_LDADD=../../.libs/libwd.a ../../.libs/libwd_crypto.a \
- ../../.libs/libhisi_sec.a -lnuma
-else
-test_hisi_sec_LDADD=-L../../.libs -l:libwd.so.2 -l:libwd_crypto.so.2 -lnuma
-endif
-test_hisi_sec_LDFLAGS=-Wl,-rpath,'/usr/local/lib'
diff --git a/test/wd_mempool_test.c b/test/wd_mempool_test.c
index cf6be70..ad04636 100644
--- a/test/wd_mempool_test.c
+++ b/test/wd_mempool_test.c
@@ -20,7 +20,7 @@
#include <sys/mman.h>
#include <sys/time.h>
-#include "hisi_sec_test/test_hisi_sec.h"
+#include "../uadk_tool/test/sec_template_tv.h"
#include "wd.h"
#include "wd_cipher.h"
#include "wd_sched.h"
diff --git a/uadk_tool/Makefile.am b/uadk_tool/Makefile.am
index d5b125f..6d0450e 100644
--- a/uadk_tool/Makefile.am
+++ b/uadk_tool/Makefile.am
@@ -14,7 +14,9 @@ uadk_tool_SOURCES=uadk_tool.c dfx/uadk_dfx.c dfx/uadk_dfx.h \
benchmark/hpre_uadk_benchmark.c benchmark/hpre_uadk_benchmark.h \
benchmark/hpre_wd_benchmark.c hpre_wd_benchmark.h \
benchmark/zip_uadk_benchmark.c benchmark/zip_uadk_benchmark.h \
- benchmark/zip_wd_benchmark.c benchmark/zip_wd_benchmark.h
+ benchmark/zip_wd_benchmark.c benchmark/zip_wd_benchmark.h \
+ test/uadk_test.c test/uadk_test.h \
+ test/test_sec.c test/test_sec.h test/sec_template_tv.h
if WD_STATIC_DRV
AM_CFLAGS+=-Bstatic
diff --git a/test/hisi_sec_test/test_hisi_sec.h b/uadk_tool/test/sec_template_tv.h
similarity index 99%
rename from test/hisi_sec_test/test_hisi_sec.h
rename to uadk_tool/test/sec_template_tv.h
index 8e21681..1a6f960 100644
--- a/test/hisi_sec_test/test_hisi_sec.h
+++ b/uadk_tool/test/sec_template_tv.h
@@ -1,8 +1,8 @@
/* SPDX-License-Identifier: Apache-2.0 */
/* Copyright 2020-2021 Huawei Technologies Co.,Ltd. All rights reserved. */
-#ifndef TEST_HISI_SEC_H_
-#define TEST_HISI_SEC_H
+#ifndef SEC_TEMPLATE_TV_H
+#define SEC_TEMPLATE_TV_H
enum alg_class {
CIPHER_CLASS,
@@ -1840,4 +1840,4 @@ struct aead_testvec sm4_gcm_tv_template_128[] = {
}
};
-#endif /* TEST_HISI_SEC_H_ */
+#endif /* SEC_TEMPLATE_TV_H */
diff --git a/test/hisi_sec_test/test_hisi_sec.c b/uadk_tool/test/test_sec.c
old mode 100755
new mode 100644
similarity index 98%
rename from test/hisi_sec_test/test_hisi_sec.c
rename to uadk_tool/test/test_sec.c
index 7d5da7c..9fe007e
--- a/test/hisi_sec_test/test_hisi_sec.c
+++ b/uadk_tool/test/test_sec.c
@@ -12,11 +12,12 @@
#include <getopt.h>
#include <numa.h>
-#include "test_hisi_sec.h"
-#include "wd_cipher.h"
-#include "wd_digest.h"
-#include "wd_aead.h"
-#include "wd_sched.h"
+#include "sec_template_tv.h"
+#include "test_sec.h"
+#include "include/wd_cipher.h"
+#include "include/wd_digest.h"
+#include "include/wd_aead.h"
+#include "include/wd_sched.h"
#define SEC_TST_PRT printf
#define HW_CTX_SIZE (24 * 1024)
@@ -26,6 +27,7 @@
#define SVA_THREADS 64
#define USE_CTX_NUM 64
#define BYTES_TO_MB 20
+#define SEC_ARGV_OFFSET 3
#define SCHED_SINGLE "sched_single"
#define SCHED_NULL_CTX_SIZE 4
@@ -4013,13 +4015,13 @@ out_thr:
static void print_help(void)
{
SEC_TST_PRT("NAME\n");
- SEC_TST_PRT(" test_hisi_sec: test wd sec function,etc\n");
+ SEC_TST_PRT(" uadk_tool test --m sec: test wd sec function,etc\n");
SEC_TST_PRT("USAGE\n");
- SEC_TST_PRT(" test_hisi_sec [--cipher] [--digest] [--aead] [--perf]\n");
- SEC_TST_PRT(" test_hisi_sec [--optype] [--pktlen] [--keylen] [--times]\n");
- SEC_TST_PRT(" test_hisi_sec [--multi] [--sync] [--async] [--help]\n");
- SEC_TST_PRT(" test_hisi_sec [--block] [--blknum] [--ctxnum]\n");
- SEC_TST_PRT(" numactl --cpubind=0 --membind=0,1 ./test_hisi_sec xxxx\n");
+ SEC_TST_PRT(" uadk_tool test --m sec [--cipher] [--digest] [--aead] [--perf]\n");
+ SEC_TST_PRT(" uadk_tool test --m sec [--optype] [--pktlen] [--keylen] [--times]\n");
+ SEC_TST_PRT(" uadk_tool test --m sec [--multi] [--sync] [--async] [--help]\n");
+ SEC_TST_PRT(" uadk_tool test --m sec [--block] [--blknum] [--ctxnum]\n");
+ SEC_TST_PRT(" numactl --cpubind=0 --membind=0,1 ./uadk_tool test --m sec xxxx\n");
SEC_TST_PRT(" specify numa nodes for cpu and memory\n");
SEC_TST_PRT("DESCRIPTION\n");
SEC_TST_PRT(" [--cipher ]:\n");
@@ -4060,17 +4062,19 @@ static void print_help(void)
SEC_TST_PRT(" the number of QP queues used by the entire test task\n");
SEC_TST_PRT(" [--stream]:\n");
SEC_TST_PRT(" set the steam mode for digest\n");
+ SEC_TST_PRT(" [--sglnum]:\n");
+ SEC_TST_PRT(" the number of scatterlist number used by the entire test task\n");
SEC_TST_PRT(" [--help] = usage\n");
SEC_TST_PRT("Example\n");
- SEC_TST_PRT(" ./test_hisi_sec --cipher 0 --sync --optype 0\n");
+ SEC_TST_PRT(" ./uadk_tool test --m sec --cipher 0 --sync --optype 0\n");
SEC_TST_PRT("--pktlen 16 --keylen 16 --times 1 --multi 1\n");
- SEC_TST_PRT(" ./test_hisi_sec --digest 0 --sync --optype 0\n");
+ SEC_TST_PRT(" ./uadk_tool test --m sec --digest 0 --sync --optype 0\n");
SEC_TST_PRT("--pktlen 16 --keylen 16 --times 1 --multi 2 --stream\n");
- SEC_TST_PRT(" ./test_hisi_sec --digest 1 --sync --optype 0\n");
+ SEC_TST_PRT(" ./uadk_tool test --m sec --digest 1 --sync --optype 0\n");
SEC_TST_PRT("--pktlen 16 --keylen 16 --times 1 --multi 2 --stream\n");
- SEC_TST_PRT(" ./test_hisi_sec --perf --sync --pktlen 1024 --block 1024\n");
+ SEC_TST_PRT(" ./uadk_tool test --m sec --perf --sync --pktlen 1024 --block 1024\n");
SEC_TST_PRT("--blknum 100000 --times 10000 --multi 1 --ctxnum 1\n");
- SEC_TST_PRT("UPDATE:2022-06-29\n");
+ SEC_TST_PRT("UPDATE:2022-12-16\n");
}
static void test_sec_cmd_parse(int argc, char *argv[], struct test_sec_option *option)
@@ -4335,7 +4339,7 @@ static int test_sec_run(__u32 sync_mode, __u32 alg_class)
return ret;
}
-int main(int argc, char *argv[])
+int test_sec_entry(int argc, char *argv[])
{
struct test_sec_option option = {0};
int ret = 0;
@@ -4343,14 +4347,14 @@ int main(int argc, char *argv[])
SEC_TST_PRT("this is a hisi sec test.\n");
g_thread_num = 1;
- if (!argv[1]) {
+ if (!argv[1 + SEC_ARGV_OFFSET])
return test_sec_default_case();
- }
test_sec_cmd_parse(argc, argv, &option);
ret = test_sec_option_convert(&option);
if (ret)
return ret;
+
if (option.algclass == PERF_CLASS)
return sec_sva_test();
diff --git a/uadk_tool/test/test_sec.h b/uadk_tool/test/test_sec.h
new file mode 100644
index 0000000..5ac23e6
--- /dev/null
+++ b/uadk_tool/test/test_sec.h
@@ -0,0 +1,7 @@
+#ifndef TEST_SEC_H
+#define TEST_SEC_H
+
+
+int test_sec_entry(int argc, char *argv[]);
+
+#endif /* TEST_SEC_H */
\ No newline at end of file
diff --git a/uadk_tool/test/uadk_test.c b/uadk_tool/test/uadk_test.c
new file mode 100644
index 0000000..61c637b
--- /dev/null
+++ b/uadk_tool/test/uadk_test.c
@@ -0,0 +1,85 @@
+/* SPDX-License-Identifier: Apache-2.0 */
+
+#include <stdbool.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <time.h>
+#include <getopt.h>
+#include <unistd.h>
+#include <limits.h>
+#include <sys/ipc.h>
+#include <sys/shm.h>
+
+#include "test_sec.h"
+
+enum uadk_test_op_type {
+ DISPLAY_MODULE = 22,
+ DISPLAY_HELP,
+};
+
+int test_hpre_entry(int argc, char *argv[])
+{
+ return 0;
+}
+
+int test_zip_entry(int argc, char *argv[])
+{
+ return 0;
+}
+
+void print_test_help(void)
+{
+ printf("NAME\n");
+ printf(" uadk_tool test : Test the correctness of the acc algorithm, etc\n");
+ printf("USAGE\n");
+ printf(" uadk_tool test [--m] = module name\n");
+ printf(" hpre, sec, zip\n");
+ printf(" uadk_tool test [--help] = usage\n");
+ printf("Example\n");
+ printf(" uadk_tool test --m hpre --xx\n");
+ printf(" uadk_tool test --m sec --xx\n");
+ printf(" uadk_tool test --m zip --xx\n");
+}
+
+void acc_test_run(int argc, char *argv[])
+{
+ char *input_module = NULL;
+ int option_index = 0;
+ int opt;
+
+ static struct option long_options[] = {
+ {"m", required_argument, 0, 22},
+ {"help", no_argument, 0, 23},
+ {0, 0, 0, 0}
+ };
+
+ while (1) {
+ opt = getopt_long(argc, argv, "", long_options, &option_index);
+ if (opt == -1)
+ break;
+
+ switch (opt) {
+ case DISPLAY_MODULE:
+ input_module = optarg;
+ if (!strcmp(input_module, "hpre")) {
+ (void)test_hpre_entry(argc, argv);
+ } else if (!strcmp(input_module, "sec")) {
+ (void)test_sec_entry(argc, argv);
+ } else if (!strcmp(input_module, "zip")) {
+ (void)test_zip_entry(argc, argv);
+ } else {
+ print_test_help();
+ printf("failed to parse module parameter!\n");
+ }
+ break;
+ case DISPLAY_HELP:
+ print_test_help();
+ break;
+ default:
+ printf("bad input parameter, exit!\n");
+ print_test_help();
+ break;
+ }
+ }
+}
\ No newline at end of file
diff --git a/uadk_tool/test/uadk_test.h b/uadk_tool/test/uadk_test.h
new file mode 100644
index 0000000..f9fa5fa
--- /dev/null
+++ b/uadk_tool/test/uadk_test.h
@@ -0,0 +1,7 @@
+/* SPDX-License-Identifier: Apache-2.0 */
+#ifndef UADK_TEST_H
+#define UADK_TEST_H
+
+void print_test_help(void);
+void acc_test_run(int argc, char *argv[]);
+#endif
\ No newline at end of file
diff --git a/uadk_tool/uadk_tool.c b/uadk_tool/uadk_tool.c
index ce83d7a..63e6d0f 100644
--- a/uadk_tool/uadk_tool.c
+++ b/uadk_tool/uadk_tool.c
@@ -2,14 +2,16 @@
#include <stdio.h>
#include <string.h>
-#include "dfx/uadk_dfx.h"
#include "benchmark/uadk_benchmark.h"
+#include "dfx/uadk_dfx.h"
+#include "test/uadk_test.h"
static void print_tool_help(void)
{
printf("NAME\n");
printf("uadk_tool dfx : Show some information for library.\n");
printf("uadk_tool benchmark : Test UADK acc performance.\n");
+ printf("uadk_tool test : Test the correctness of the acc algorithm.\n");
}
int main(int argc, char **argv)
@@ -34,6 +36,9 @@ int main(int argc, char **argv)
if (ret)
return ret;
(void)acc_benchmark_run(&option);
+ } else if (!strcmp("test", argv[index])) {
+ printf("start UADK acc algorithm test.\n");
+ acc_test_run(argc, argv);
} else {
print_tool_help();
}
--
2.17.1