Commit 410345a9 authored by Andrey Vagin's avatar Andrey Vagin Committed by Pavel Emelyanov

zdtm: add ability to create an external tasks

It will be used for checking tcp connections, external unix sockets, etc
Signed-off-by: 's avatarAndrey Vagin <avagin@openvz.org>
Signed-off-by: 's avatarPavel Emelyanov <xemul@parallels.com>
parent c238e99b
...@@ -231,11 +231,19 @@ EOF ...@@ -231,11 +231,19 @@ EOF
diff_fds $ddump/dump.fd $ddump/dump.fd.after || return 1 diff_fds $ddump/dump.fd $ddump/dump.fd.after || return 1
killall -CONT $tname killall -CONT $tname
else else
# Wait while tasks are dying, otherwise PIDs would be busy.
for i in $ddump/core-*.img; do
local pid
[ -n "$PIDNS" ] && break;
pid=`expr "$i" : '.*/core-\([0-9]*\).img'`
while :; do while :; do
killall -9 $tname &> /dev/null || break kill -0 $pid &> /dev/null || break;
echo Waiting... echo Waiting the process $pid
sleep 0.1 sleep 0.1
done done
done
echo Restore $PID echo Restore $PID
setsid $CRTOOLS restore --log-pid -D $ddump -o restore.log -v 4 -d -t $PID $args || return 2 setsid $CRTOOLS restore --log-pid -D $ddump -o restore.log -v 4 -d -t $PID $args || return 2
......
...@@ -89,10 +89,15 @@ static void redir_stdfds() ...@@ -89,10 +89,15 @@ static void redir_stdfds()
close(nullfd); close(nullfd);
} }
void test_init(int argc, char **argv) void test_ext_init(int argc, char **argv)
{ {
extern void parseargs(int, char **); parseargs(argc, argv);
if (test_log_init(outfile, ".external"))
exit(1);
}
void test_init(int argc, char **argv)
{
pid_t pid; pid_t pid;
static FILE *pidf; static FILE *pidf;
char *val; char *val;
......
...@@ -4,6 +4,7 @@ ...@@ -4,6 +4,7 @@
#include <sys/types.h> #include <sys/types.h>
/* set up test */ /* set up test */
extern void test_ext_init(int argc, char **argv);
extern void test_init(int argc, char **argv); extern void test_init(int argc, char **argv);
extern void test_init_ns(int argc, char **argv, unsigned long clone_flags, int (*fn)(int , char **)); extern void test_init_ns(int argc, char **argv, unsigned long clone_flags, int (*fn)(int , char **));
...@@ -62,6 +63,7 @@ extern void __push_opt(struct long_opt *opt); ...@@ -62,6 +63,7 @@ extern void __push_opt(struct long_opt *opt);
#define __param_check(name, p, type) \ #define __param_check(name, p, type) \
static inline type *__check_##name(void) { return(p); } static inline type *__check_##name(void) { return(p); }
extern void parseargs(int, char **);
extern int parse_opt_bool(char *param, void *arg); extern int parse_opt_bool(char *param, void *arg);
#define param_check_bool(name, p) __param_check(name, p, int) #define param_check_bool(name, p) __param_check(name, p, int)
extern int parse_opt_int(char *param, void *arg); extern int parse_opt_int(char *param, void *arg);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment