Add linux ltp demo
Signed-off-by: Zheng, Qi <huaiqing.zq@antgroup.com>
This commit is contained in:
parent
59986df1a5
commit
4354148ecf
104
demos/linux-ltp/0001-Make-it-work-on-Occlum.patch
Normal file
104
demos/linux-ltp/0001-Make-it-work-on-Occlum.patch
Normal file
@ -0,0 +1,104 @@
|
||||
From a8b88e78b863d54135436a866d375c67aaaec905 Mon Sep 17 00:00:00 2001
|
||||
From: "Zheng, Qi" <huaiqing.zq@antgroup.com>
|
||||
Date: Tue, 19 Oct 2021 10:53:08 +0800
|
||||
Subject: [PATCH] Make it work on Occlum
|
||||
|
||||
Signed-off-by: Zheng, Qi <huaiqing.zq@antgroup.com>
|
||||
---
|
||||
lib/tst_kvercmp.c | 4 +++-
|
||||
lib/tst_test.c | 21 +++++++++++----------
|
||||
2 files changed, 14 insertions(+), 11 deletions(-)
|
||||
|
||||
diff --git a/lib/tst_kvercmp.c b/lib/tst_kvercmp.c
|
||||
index 8bf65d309..d299c4cb5 100644
|
||||
--- a/lib/tst_kvercmp.c
|
||||
+++ b/lib/tst_kvercmp.c
|
||||
@@ -102,7 +102,9 @@ int tst_kvercmp(int r1, int r2, int r3)
|
||||
{
|
||||
struct utsname uval;
|
||||
|
||||
- uname(&uval);
|
||||
+ //uname(&uval);
|
||||
+ /* Hack the uname kernel version to 4.19.1 to make it work on Occlum */
|
||||
+ strcpy(uval.release, "4.19.1");
|
||||
|
||||
return tst_kvcmp(uval.release, r1, r2, r3);
|
||||
}
|
||||
diff --git a/lib/tst_test.c b/lib/tst_test.c
|
||||
index ec80e17a6..a8c414ac8 100644
|
||||
--- a/lib/tst_test.c
|
||||
+++ b/lib/tst_test.c
|
||||
@@ -1163,7 +1163,7 @@ static void run_tests(void)
|
||||
tst_test->test_all();
|
||||
|
||||
if (getpid() != main_pid) {
|
||||
- exit(0);
|
||||
+ _exit(0);
|
||||
}
|
||||
|
||||
tst_reap_children();
|
||||
@@ -1178,7 +1178,7 @@ static void run_tests(void)
|
||||
tst_test->test(i);
|
||||
|
||||
if (getpid() != main_pid) {
|
||||
- exit(0);
|
||||
+ _exit(0);
|
||||
}
|
||||
|
||||
tst_reap_children();
|
||||
@@ -1230,7 +1230,7 @@ static void heartbeat(void)
|
||||
exit(TBROK);
|
||||
}
|
||||
|
||||
- kill(getppid(), SIGUSR1);
|
||||
+ //kill(getppid(), SIGUSR1);
|
||||
}
|
||||
|
||||
static void testrun(void)
|
||||
@@ -1265,7 +1265,7 @@ static void testrun(void)
|
||||
}
|
||||
|
||||
do_test_cleanup();
|
||||
- exit(0);
|
||||
+ _exit(0);
|
||||
}
|
||||
|
||||
static pid_t test_pid;
|
||||
@@ -1374,27 +1374,28 @@ static int fork_testrun(void)
|
||||
{
|
||||
int status;
|
||||
|
||||
- if (tst_test->timeout)
|
||||
+ /*if (tst_test->timeout)
|
||||
tst_set_timeout(tst_test->timeout);
|
||||
else
|
||||
- tst_set_timeout(300);
|
||||
+ tst_set_timeout(300);*/
|
||||
|
||||
SAFE_SIGNAL(SIGINT, sigint_handler);
|
||||
|
||||
- test_pid = fork();
|
||||
+ test_pid = vfork();
|
||||
if (test_pid < 0)
|
||||
tst_brk(TBROK | TERRNO, "fork()");
|
||||
|
||||
if (!test_pid) {
|
||||
- SAFE_SIGNAL(SIGALRM, SIG_DFL);
|
||||
+ tst_res(TINFO, "In Child process ...\n");
|
||||
+ //SAFE_SIGNAL(SIGALRM, SIG_DFL);
|
||||
SAFE_SIGNAL(SIGUSR1, SIG_DFL);
|
||||
SAFE_SIGNAL(SIGINT, SIG_DFL);
|
||||
SAFE_SETPGID(0, 0);
|
||||
testrun();
|
||||
}
|
||||
|
||||
- SAFE_WAITPID(test_pid, &status, 0);
|
||||
- alarm(0);
|
||||
+ waitpid(test_pid, &status, 0);
|
||||
+ //alarm(0);
|
||||
SAFE_SIGNAL(SIGINT, SIG_DFL);
|
||||
|
||||
if (tst_test->taint_check && tst_taint_check()) {
|
||||
--
|
||||
2.25.1
|
||||
|
@ -0,0 +1,261 @@
|
||||
From 93d9429fa9b0b3856258422894697621c5c093b9 Mon Sep 17 00:00:00 2001
|
||||
From: "Zheng, Qi" <huaiqing.zq@antgroup.com>
|
||||
Date: Tue, 19 Oct 2021 17:17:03 +0800
|
||||
Subject: [PATCH] Ignore some test cases which crash the Occlum
|
||||
|
||||
Signed-off-by: Zheng, Qi <huaiqing.zq@antgroup.com>
|
||||
---
|
||||
runtest/syscalls | 80 ++++++++++++++++++++++++------------------------
|
||||
1 file changed, 40 insertions(+), 40 deletions(-)
|
||||
|
||||
diff --git a/runtest/syscalls b/runtest/syscalls
|
||||
index 29d7752c7..0d2f9dc67 100644
|
||||
--- a/runtest/syscalls
|
||||
+++ b/runtest/syscalls
|
||||
@@ -93,7 +93,7 @@ clock_nanosleep02 clock_nanosleep02
|
||||
clock_nanosleep03 clock_nanosleep03
|
||||
clock_nanosleep04 clock_nanosleep04
|
||||
|
||||
-clock_gettime01 clock_gettime01
|
||||
+#clock_gettime01 clock_gettime01
|
||||
clock_gettime02 clock_gettime02
|
||||
clock_gettime03 clock_gettime03
|
||||
clock_gettime04 clock_gettime04
|
||||
@@ -124,7 +124,7 @@ close_range02 close_range02
|
||||
|
||||
confstr01 confstr01
|
||||
|
||||
-connect01 connect01
|
||||
+#connect01 connect01
|
||||
connect02 connect02
|
||||
|
||||
creat01 creat01
|
||||
@@ -148,14 +148,14 @@ dup05 dup05
|
||||
dup06 dup06
|
||||
dup07 dup07
|
||||
|
||||
-dup201 dup201
|
||||
+#dup201 dup201
|
||||
dup202 dup202
|
||||
dup203 dup203
|
||||
dup204 dup204
|
||||
dup205 dup205
|
||||
|
||||
dup3_01 dup3_01
|
||||
-dup3_02 dup3_02
|
||||
+#dup3_02 dup3_02
|
||||
|
||||
epoll_create01 epoll_create01
|
||||
epoll_create02 epoll_create02
|
||||
@@ -165,7 +165,7 @@ epoll01 epoll-ltp
|
||||
epoll_ctl01 epoll_ctl01
|
||||
epoll_ctl02 epoll_ctl02
|
||||
epoll_ctl03 epoll_ctl03
|
||||
-epoll_ctl04 epoll_ctl04
|
||||
+#epoll_ctl04 epoll_ctl04
|
||||
epoll_ctl05 epoll_ctl05
|
||||
epoll_wait01 epoll_wait01
|
||||
epoll_wait02 epoll_wait02
|
||||
@@ -407,8 +407,8 @@ fsync04 fsync04
|
||||
|
||||
ftruncate01 ftruncate01
|
||||
ftruncate01_64 ftruncate01_64
|
||||
-ftruncate03 ftruncate03
|
||||
-ftruncate03_64 ftruncate03_64
|
||||
+#ftruncate03 ftruncate03
|
||||
+#ftruncate03_64 ftruncate03_64
|
||||
ftruncate04 ftruncate04
|
||||
ftruncate04_64 ftruncate04_64
|
||||
|
||||
@@ -486,17 +486,17 @@ getrandom04 getrandom04
|
||||
|
||||
getresgid01 getresgid01
|
||||
getresgid01_16 getresgid01_16
|
||||
-getresgid02 getresgid02
|
||||
-getresgid02_16 getresgid02_16
|
||||
-getresgid03 getresgid03
|
||||
-getresgid03_16 getresgid03_16
|
||||
+#getresgid02 getresgid02
|
||||
+#getresgid02_16 getresgid02_16
|
||||
+#getresgid03 getresgid03
|
||||
+#getresgid03_16 getresgid03_16
|
||||
|
||||
getresuid01 getresuid01
|
||||
getresuid01_16 getresuid01_16
|
||||
-getresuid02 getresuid02
|
||||
-getresuid02_16 getresuid02_16
|
||||
-getresuid03 getresuid03
|
||||
-getresuid03_16 getresuid03_16
|
||||
+#getresuid02 getresuid02
|
||||
+#getresuid02_16 getresuid02_16
|
||||
+#getresuid03 getresuid03
|
||||
+#getresuid03_16 getresuid03_16
|
||||
|
||||
getrlimit01 getrlimit01
|
||||
getrlimit02 getrlimit02
|
||||
@@ -522,7 +522,7 @@ getsockopt02 getsockopt02
|
||||
gettid01 gettid01
|
||||
|
||||
gettimeofday01 gettimeofday01
|
||||
-gettimeofday02 gettimeofday02
|
||||
+#gettimeofday02 gettimeofday02
|
||||
|
||||
getuid01 getuid01
|
||||
getuid01_16 getuid01_16
|
||||
@@ -651,7 +651,7 @@ kill06 kill06
|
||||
kill07 kill07
|
||||
kill08 kill08
|
||||
kill09 kill09
|
||||
-kill10 kill10
|
||||
+#kill10 kill10
|
||||
kill11 kill11
|
||||
kill12 kill12
|
||||
kill13 kill13
|
||||
@@ -742,13 +742,13 @@ mkdirat01 mkdirat01
|
||||
mkdirat02 mkdirat02
|
||||
|
||||
mknod01 mknod01
|
||||
-mknod02 mknod02
|
||||
-mknod03 mknod03
|
||||
-mknod04 mknod04
|
||||
+#mknod02 mknod02
|
||||
+#mknod03 mknod03
|
||||
+#mknod04 mknod04
|
||||
mknod05 mknod05
|
||||
mknod06 mknod06
|
||||
mknod07 mknod07
|
||||
-mknod08 mknod08
|
||||
+#mknod08 mknod08
|
||||
mknod09 mknod09
|
||||
|
||||
#mknodat test cases
|
||||
@@ -767,11 +767,11 @@ mlock203 mlock203
|
||||
qmm01 mmap001 -m 1
|
||||
mmap01 mmap01
|
||||
mmap02 mmap02
|
||||
-mmap03 mmap03
|
||||
+#mmap03 mmap03
|
||||
mmap04 mmap04
|
||||
mmap05 mmap05
|
||||
-mmap06 mmap06
|
||||
-mmap07 mmap07
|
||||
+#mmap06 mmap06
|
||||
+#mmap07 mmap07
|
||||
mmap08 mmap08
|
||||
mmap09 mmap09
|
||||
mmap12 mmap12
|
||||
@@ -961,7 +961,7 @@ pipe03 pipe03
|
||||
pipe04 pipe04
|
||||
pipe05 pipe05
|
||||
pipe06 pipe06
|
||||
-pipe07 pipe07
|
||||
+#pipe07 pipe07
|
||||
pipe08 pipe08
|
||||
pipe09 pipe09
|
||||
pipe10 pipe10
|
||||
@@ -1073,7 +1073,7 @@ quotactl06 quotactl06
|
||||
quotactl07 quotactl07
|
||||
|
||||
read01 read01
|
||||
-read02 read02
|
||||
+#read02 read02
|
||||
read03 read03
|
||||
read04 read04
|
||||
|
||||
@@ -1099,9 +1099,9 @@ realpath01 realpath01
|
||||
reboot01 reboot01
|
||||
reboot02 reboot02
|
||||
|
||||
-recv01 recv01
|
||||
+#recv01 recv01
|
||||
|
||||
-recvfrom01 recvfrom01
|
||||
+#recvfrom01 recvfrom01
|
||||
|
||||
recvmsg01 recvmsg01
|
||||
recvmsg02 recvmsg02
|
||||
@@ -1121,7 +1121,7 @@ rename02 rename02
|
||||
rename03 rename03
|
||||
rename04 rename04
|
||||
rename05 rename05
|
||||
-rename06 rename06
|
||||
+#rename06 rename06
|
||||
rename07 rename07
|
||||
rename08 rename08
|
||||
rename09 rename09
|
||||
@@ -1222,7 +1222,7 @@ semop01 semop01
|
||||
semop02 semop02
|
||||
semop03 semop03
|
||||
|
||||
-send01 send01
|
||||
+#send01 send01
|
||||
send02 send02
|
||||
|
||||
sendfile02 sendfile02
|
||||
@@ -1250,7 +1250,7 @@ sendmsg03 sendmsg03
|
||||
sendmmsg01 sendmmsg01
|
||||
sendmmsg02 sendmmsg02
|
||||
|
||||
-sendto01 sendto01
|
||||
+#sendto01 sendto01
|
||||
sendto02 sendto02
|
||||
sendto03 sendto03
|
||||
|
||||
@@ -1437,7 +1437,7 @@ signal02 signal02
|
||||
signal03 signal03
|
||||
signal04 signal04
|
||||
signal05 signal05
|
||||
-signal06 signal06
|
||||
+#signal06 signal06
|
||||
|
||||
signalfd01 signalfd01
|
||||
|
||||
@@ -1516,7 +1516,7 @@ switch01 endian_switch01
|
||||
|
||||
symlink01 symlink01
|
||||
symlink02 symlink02
|
||||
-symlink03 symlink03
|
||||
+#symlink03 symlink03
|
||||
symlink04 symlink04
|
||||
symlink05 symlink05
|
||||
|
||||
@@ -1696,14 +1696,14 @@ waitid02 waitid02
|
||||
|
||||
write01 write01
|
||||
write02 write02
|
||||
-write03 write03
|
||||
+#write03 write03
|
||||
write04 write04
|
||||
-write05 write05
|
||||
+#write05 write05
|
||||
|
||||
-writev01 writev01
|
||||
-writev02 writev02
|
||||
+#writev01 writev01
|
||||
+#writev02 writev02
|
||||
writev03 writev03
|
||||
-writev05 writev05
|
||||
+#writev05 writev05
|
||||
writev06 writev06
|
||||
writev07 writev07
|
||||
|
||||
@@ -1714,14 +1714,14 @@ futex_cmp_requeue01 futex_cmp_requeue01
|
||||
futex_cmp_requeue02 futex_cmp_requeue02
|
||||
futex_wait01 futex_wait01
|
||||
futex_wait02 futex_wait02
|
||||
-futex_wait03 futex_wait03
|
||||
+#futex_wait03 futex_wait03
|
||||
futex_wait04 futex_wait04
|
||||
futex_wait05 futex_wait05
|
||||
futex_wake01 futex_wake01
|
||||
futex_wake02 futex_wake02
|
||||
futex_wake03 futex_wake03
|
||||
futex_wake04 futex_wake04
|
||||
-futex_wait_bitset01 futex_wait_bitset01
|
||||
+#futex_wait_bitset01 futex_wait_bitset01
|
||||
|
||||
memfd_create01 memfd_create01
|
||||
memfd_create02 memfd_create02
|
||||
--
|
||||
2.25.1
|
||||
|
45
demos/linux-ltp/README.md
Normal file
45
demos/linux-ltp/README.md
Normal file
@ -0,0 +1,45 @@
|
||||
# Run Linux LTP on Occlum
|
||||
|
||||
In this demo, we will show how to run the Linux LTP inside Occlum.
|
||||
|
||||
Linux [`LTP`](https://github.com/linux-test-project/ltp) is the most popular test suite for Linux.
|
||||
Occlum could also apply the LTP to verify the stability and compatibility to Linux app.
|
||||
|
||||
Because Occlum doesn't support `fork`, `vfork` has to be used instead in the LTP test.
|
||||
And a light weight [`test script`](./run-ltp.sh) running in Occlum is provided to be used in this demo.
|
||||
|
||||
## Download and build the Linux LTP from source code
|
||||
```
|
||||
./dl_and_build_ltp.sh
|
||||
```
|
||||
|
||||
Two patches are applied to make it work on Occlum.
|
||||
Many test cases are failed due to multiple reasons, such as syscall is not implemented or not completely implemented in Occlum.
|
||||
|
||||
* Some test cases may make the Occlum crash or hang (Only checked the cases in syscalls), they are ignored by applying the [`patch`](./0002-Ignore-some-test-cases-which-crash-the-Occlum.patch)
|
||||
|
||||
It may be updated with Occlum development.
|
||||
|
||||
## Prepare the Occlum instance for LTP demo
|
||||
```
|
||||
./prepare_ltp.sh
|
||||
```
|
||||
|
||||
## Run the LTP demo
|
||||
|
||||
The script `run-ltp.sh` supports two optional arguments as below.
|
||||
```
|
||||
usage: run-ltp.sh [options]
|
||||
|
||||
options:
|
||||
-f CMDFILES Execute user defined list of testcases
|
||||
-s PATTERN Only run test cases which match PATTERN.
|
||||
|
||||
example: run-ltp.sh -f syscalls -s timerfd
|
||||
```
|
||||
|
||||
If no options provided, all the test cases in syscalls will be run one by one.
|
||||
|
||||
Note:
|
||||
|
||||
* The `CMDFILES` are defined in the LTP install path, such as `ltp_instance/image/opt/ltp/runtest/` in this demo.
|
21
demos/linux-ltp/dl_and_build_ltp.sh
Executable file
21
demos/linux-ltp/dl_and_build_ltp.sh
Executable file
@ -0,0 +1,21 @@
|
||||
#! /bin/bash
|
||||
set -e
|
||||
|
||||
SCRIPT_DIR=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )
|
||||
|
||||
TAG=20210927
|
||||
LTP_INSTALL_DIR=${SCRIPT_DIR}/ltp_install/ltp
|
||||
|
||||
rm -rf ltp
|
||||
rm -rf $LTP_INSTALL_DIR && mkdir -p ${LTP_INSTALL_DIR}
|
||||
git clone -b $TAG https://github.com/linux-test-project/ltp.git
|
||||
|
||||
pushd ltp
|
||||
# Apply patch to support running ltp in Occlum
|
||||
git apply ../0001-Make-it-work-on-Occlum.patch
|
||||
git apply ../0002-Ignore-some-test-cases-which-crash-the-Occlum.patch
|
||||
make autotools
|
||||
./configure --prefix=${LTP_INSTALL_DIR}
|
||||
make -j && make install
|
||||
|
||||
popd
|
63
demos/linux-ltp/ltp.yaml
Normal file
63
demos/linux-ltp/ltp.yaml
Normal file
@ -0,0 +1,63 @@
|
||||
includes:
|
||||
- base.yaml
|
||||
# bash
|
||||
targets:
|
||||
# copy LTP
|
||||
- target: /opt
|
||||
copy:
|
||||
- dirs:
|
||||
- ../ltp_install/ltp
|
||||
# copy bash and busybox
|
||||
- target: /bin
|
||||
copy:
|
||||
- files:
|
||||
- /opt/occlum/toolchains/bash/glibc/bash
|
||||
- /opt/occlum/toolchains/busybox/glibc/busybox
|
||||
# copy test script
|
||||
- target: /opt/ltp
|
||||
copy:
|
||||
- files:
|
||||
- ../run-ltp.sh
|
||||
- target: /bin
|
||||
# build a symlink: ln -s $linksrc $target/linkname
|
||||
createlinks:
|
||||
- src: /bin/bash
|
||||
linkname: sh
|
||||
- src: /bin/busybox
|
||||
linkname: basename
|
||||
- src: /bin/busybox
|
||||
linkname: echo
|
||||
- src: /bin/busybox
|
||||
linkname: sed
|
||||
- src: /bin/busybox
|
||||
linkname: grep
|
||||
- src: /bin/busybox
|
||||
linkname: cp
|
||||
- src: /bin/busybox
|
||||
linkname: mkdir
|
||||
- src: /bin/busybox
|
||||
linkname: cat
|
||||
- src: /bin/busybox
|
||||
linkname: dirname
|
||||
- src: /bin/busybox
|
||||
linkname: date
|
||||
- src: /bin/busybox
|
||||
linkname: pwd
|
||||
- src: /bin/busybox
|
||||
linkname: mktemp
|
||||
- src: /bin/busybox
|
||||
linkname: chmod
|
||||
- src: /bin/busybox
|
||||
linkname: rm
|
||||
- src: /bin/busybox
|
||||
linkname: awk
|
||||
- src: /bin/busybox
|
||||
linkname: cut
|
||||
- src: /bin/busybox
|
||||
linkname: tr
|
||||
- src: /bin/busybox
|
||||
linkname: id
|
||||
- src: /bin/busybox
|
||||
linkname: mv
|
||||
- src: /bin/busybox
|
||||
linkname: uname
|
20
demos/linux-ltp/prepare_ltp.sh
Executable file
20
demos/linux-ltp/prepare_ltp.sh
Executable file
@ -0,0 +1,20 @@
|
||||
#! /bin/bash
|
||||
set -e
|
||||
|
||||
rm -rf ltp_instance
|
||||
occlum new ltp_instance
|
||||
|
||||
cd ltp_instance
|
||||
rm -rf image
|
||||
copy_bom -f ../ltp.yaml --root image --include-dir /opt/occlum/etc/template
|
||||
|
||||
new_json="$(jq '.resource_limits.user_space_size = "3000MB" |
|
||||
.resource_limits.kernel_space_heap_size ="512MB" |
|
||||
.resource_limits.kernel_space_stack_size ="4MB" |
|
||||
.resource_limits.max_num_of_threads = 96 |
|
||||
.entry_points = [ "/opt/ltp" ] |
|
||||
.env.default = [ "OCCLUM=yes", "LTPROOT=/opt/ltp", "TMP=/tmp", "HOME=/root" ]' Occlum.json)" && \
|
||||
echo "${new_json}" > Occlum.json
|
||||
|
||||
occlum build
|
||||
|
109
demos/linux-ltp/run-ltp.sh
Executable file
109
demos/linux-ltp/run-ltp.sh
Executable file
@ -0,0 +1,109 @@
|
||||
#!/bin/sh
|
||||
|
||||
setup()
|
||||
{
|
||||
export LTPROOT=${LTPROOT:-/opt/ltp}
|
||||
export TMP="/tmp"
|
||||
export PATH="${PATH}:${LTPROOT}/testcases/bin:${LTPROOT}/bin"
|
||||
|
||||
[ -d "$LTPROOT/testcases/bin" ] ||
|
||||
{
|
||||
echo "FATAL: LTP not installed correctly"
|
||||
echo "INFO: Follow directions in INSTALL!"
|
||||
exit 1
|
||||
}
|
||||
|
||||
rm -rf ${TMP}/alltests*
|
||||
}
|
||||
|
||||
usage()
|
||||
{
|
||||
cat <<-EOF >&2
|
||||
|
||||
usage: ${0##*/} [options]
|
||||
|
||||
options:
|
||||
-f CMDFILES Execute user defined list of testcases
|
||||
-h Help. Prints all available options.
|
||||
-s PATTERN Only run test cases which match PATTERN.
|
||||
|
||||
example: ${0##*/} -f syscalls -s timerfd
|
||||
|
||||
|
||||
EOF
|
||||
exit 0
|
||||
}
|
||||
|
||||
main()
|
||||
{
|
||||
local CMDFILES='syscalls'
|
||||
local TAG_RESTRICT_STRING=
|
||||
|
||||
version_date=$(cat "$LTPROOT/Version")
|
||||
|
||||
echo "$version_date"
|
||||
|
||||
while getopts f:hs: arg
|
||||
do case $arg in
|
||||
f) # Execute user defined set of testcases.
|
||||
CMDFILES=$OPTARG;;
|
||||
h) usage;;
|
||||
s) TAG_RESTRICT_STRING=$OPTARG;;
|
||||
\?) usage;;
|
||||
esac
|
||||
done
|
||||
|
||||
echo "INFO: Test on files $CMDFILES"
|
||||
|
||||
[ -n "$CMDFILES" ] && \
|
||||
{
|
||||
#for scenfile in `echo "$CMDFILES" | tr ',' ' '`
|
||||
for scenfile in `echo "$CMDFILES"`
|
||||
do
|
||||
[ -f "$scenfile" ] || scenfile="$LTPROOT/runtest/$scenfile"
|
||||
cat "$scenfile" >> ${TMP}/alltests.tmp || \
|
||||
{
|
||||
echo "FATAL: unable to create command file"
|
||||
rm -Rf "$TMP"
|
||||
exit 1
|
||||
}
|
||||
done
|
||||
}
|
||||
|
||||
# Skip the lines start with #
|
||||
grep -v "^#" ${TMP}/alltests.tmp > ${TMP}/alltests
|
||||
|
||||
# If enabled, execute only test cases that match the PATTERN
|
||||
if [ -n "$TAG_RESTRICT_STRING" ]
|
||||
then
|
||||
mv -f ${TMP}/alltests ${TMP}/alltests.orig
|
||||
grep $TAG_RESTRICT_STRING ${TMP}/alltests.orig > ${TMP}/alltests
|
||||
echo "INFO: Restricted to $TAG_RESTRICT_STRING"
|
||||
fi
|
||||
|
||||
#grep -v "^#" "${TMP}/alltests" | while read -r line
|
||||
while read -r line
|
||||
do
|
||||
# ignore empty lines
|
||||
[ "x$line" = x ] && continue
|
||||
|
||||
line_array=($line)
|
||||
name=${line_array[0]}
|
||||
bin=${line_array[1]}
|
||||
len=${#line_array[@]}
|
||||
idx=2
|
||||
args=()
|
||||
|
||||
echo "INFO: Test case: $name"
|
||||
if [ $len -gt 2 ]
|
||||
then
|
||||
args=${line_array[@]:$idx:$((len - idx))}
|
||||
fi
|
||||
echo "INFO: ... Commands: $bin $args"
|
||||
|
||||
$LTPROOT/testcases/bin/$bin
|
||||
done < "${TMP}/alltests"
|
||||
}
|
||||
|
||||
setup
|
||||
main "$@"
|
Loading…
Reference in New Issue
Block a user