add strace test cases and test result
This commit is contained in:
@ -27,7 +27,6 @@
|
|||||||
../../../../mic/mcexec ./946
|
../../../../mic/mcexec ./946
|
||||||
#946 start
|
#946 start
|
||||||
#946-1 exit after wait OK
|
#946-1 exit after wait OK
|
||||||
#946-1 exit after wait OK
|
|
||||||
#946-2 exit before wait OK
|
#946-2 exit before wait OK
|
||||||
#946 terminated ok=2 ng=0
|
#946 terminated ok=2 ng=0
|
||||||
../../../../mic/mcexec ./960
|
../../../../mic/mcexec ./960
|
||||||
|
|||||||
11
test/strace/strace/result.txt
Normal file
11
test/strace/strace/result.txt
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
*** test1 start
|
||||||
|
test1-1 gettid OK
|
||||||
|
test1-2 syscal_9999 OK
|
||||||
|
*** test1 end ok=2 ng=0
|
||||||
|
*** test2 start
|
||||||
|
test2-1 execve OK
|
||||||
|
test2-2 fork OK
|
||||||
|
test2-3 execve OK
|
||||||
|
test2-4 SIGCHLD OK
|
||||||
|
test2-5 wait OK
|
||||||
|
*** test2 end ok=5 ng=0
|
||||||
4
test/strace/strace/test.sh
Executable file
4
test/strace/strace/test.sh
Executable file
@ -0,0 +1,4 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
export MCEXEC=../../../../mic/mcexec
|
||||||
|
./test1.sh
|
||||||
|
./test2.sh
|
||||||
20
test/strace/strace/test1.c
Normal file
20
test/strace/strace/test1.c
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
#define __BSD_SOURCE
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <string.h>
|
||||||
|
#include <unistd.h>
|
||||||
|
#include <sys/types.h>
|
||||||
|
#include <sys/wait.h>
|
||||||
|
#include <sys/user.h>
|
||||||
|
#include <sys/syscall.h>
|
||||||
|
#include <fcntl.h>
|
||||||
|
#include <errno.h>
|
||||||
|
|
||||||
|
int
|
||||||
|
main(int argc, char **argv)
|
||||||
|
{
|
||||||
|
syscall(SYS_gettid);
|
||||||
|
open("/", O_WRONLY);
|
||||||
|
syscall(9999);
|
||||||
|
exit(15);
|
||||||
|
}
|
||||||
46
test/strace/strace/test1.sh
Executable file
46
test/strace/strace/test1.sh
Executable file
@ -0,0 +1,46 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
if [ ! -f test1 ]; then
|
||||||
|
gcc -o test1 test1.c
|
||||||
|
fi
|
||||||
|
|
||||||
|
rm -f check.log
|
||||||
|
$MCEXEC strace -o check.log ./test1
|
||||||
|
|
||||||
|
awk 'BEGIN{ng=0; ok=0; print "*** test1 start"}
|
||||||
|
/^gettid/{
|
||||||
|
if ($0 ~/errno/) {
|
||||||
|
print "test1-1 gettid NG"
|
||||||
|
ng++
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
print "test1-1 gettid OK"
|
||||||
|
ok++
|
||||||
|
}
|
||||||
|
test1=1
|
||||||
|
}
|
||||||
|
/^syscall_9999/{
|
||||||
|
if ($0 ~/errno 38/) {
|
||||||
|
print "test1-2 syscal_9999 OK"
|
||||||
|
ok++
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
print "test1-2 syscall_9999 NG"
|
||||||
|
ng++
|
||||||
|
}
|
||||||
|
test2=1
|
||||||
|
}
|
||||||
|
END {
|
||||||
|
if (test1 != 1) {
|
||||||
|
print "test1-1 gettid NG"
|
||||||
|
ng++
|
||||||
|
}
|
||||||
|
if (test2 != 1) {
|
||||||
|
print "test1-2 syscall_9999 NG"
|
||||||
|
ng++
|
||||||
|
}
|
||||||
|
printf("*** test1 end ok=%d ng=%d\n", ok, ng)
|
||||||
|
exit(ng)
|
||||||
|
}' check.log
|
||||||
|
|
||||||
|
rm -f check.log test1
|
||||||
33
test/strace/strace/test2.c
Normal file
33
test/strace/strace/test2.c
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
#include <stdlib.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <string.h>
|
||||||
|
#include <unistd.h>
|
||||||
|
#include <sys/types.h>
|
||||||
|
#include <sys/wait.h>
|
||||||
|
#include <errno.h>
|
||||||
|
|
||||||
|
int
|
||||||
|
main(int argc, char **argv)
|
||||||
|
{
|
||||||
|
pid_t pid;
|
||||||
|
int rc;
|
||||||
|
int st;
|
||||||
|
|
||||||
|
if (argv[1] && !strcmp(argv[1], "exec")) {
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
pid = fork();
|
||||||
|
if (pid == 0) {
|
||||||
|
sleep(1);
|
||||||
|
execl("test2", "test2", "exec", NULL);
|
||||||
|
exit(99);
|
||||||
|
}
|
||||||
|
sleep(2);
|
||||||
|
rc = wait(&st);
|
||||||
|
if (rc != pid) {
|
||||||
|
printf("test2 NG\n");
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
exit(0);
|
||||||
|
}
|
||||||
60
test/strace/strace/test2.sh
Executable file
60
test/strace/strace/test2.sh
Executable file
@ -0,0 +1,60 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
if [ ! -f test2 ]; then
|
||||||
|
gcc -o test2 test2.c
|
||||||
|
fi
|
||||||
|
|
||||||
|
rm -f check.log
|
||||||
|
$MCEXEC strace -e trace=process -f -o check.log ./test2
|
||||||
|
|
||||||
|
awk 'BEGIN{st=0;ng=0; ok=0; print "*** test2 start"}
|
||||||
|
/execve/{
|
||||||
|
st++
|
||||||
|
if ($0 ~/ = 0$/) {
|
||||||
|
print "test2-" st " execve OK"
|
||||||
|
ok++
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
print "test2-" st " execve NG"
|
||||||
|
ng++
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/clone/{
|
||||||
|
st++
|
||||||
|
if ($0 ~/ = [1-9][0-9]*$/) {
|
||||||
|
print "test2-" st " fork OK"
|
||||||
|
ok++
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
print "test2-" st " fork NG"
|
||||||
|
ng++
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/wait4/{
|
||||||
|
st++
|
||||||
|
if ($0 ~/ = [1-9][0-9]*$/) {
|
||||||
|
print "test2-" st " wait OK"
|
||||||
|
ok++
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
print "test2-" st " wait NG"
|
||||||
|
ng++
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/SIGCHLD {/{
|
||||||
|
st++
|
||||||
|
print "test2-" st " SIGCHLD OK"
|
||||||
|
ok++
|
||||||
|
sigchld = 1
|
||||||
|
}
|
||||||
|
END {
|
||||||
|
if (sigchld != 1) {
|
||||||
|
st++
|
||||||
|
print "test2-" st " SIGCHLD NG"
|
||||||
|
ng++
|
||||||
|
}
|
||||||
|
printf("*** test2 end ok=%d ng=%d\n", ok, ng)
|
||||||
|
exit(ng)
|
||||||
|
}' check.log
|
||||||
|
|
||||||
|
rm -f check.log test2
|
||||||
Reference in New Issue
Block a user