-
Notifications
You must be signed in to change notification settings - Fork 3
/
tests.inc
executable file
·86 lines (74 loc) · 1.71 KB
/
tests.inc
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
export USER=`whoami`
export HOST=`hostname -f`
export SHOST=`hostname -s`
export BCRON_SOCKET=$tmp/spool-sock
export BCRON_SPOOL=$tmp/spool
export BCRON_USER=$USER
export BCRONTAB_SOCKET=$tmp/socket
export CRONTABS=$BCRON_SPOOL/crontabs
mkdir $BCRON_SPOOL
mkdir $CRONTABS
mkdir $BCRON_SPOOL/tmp
mkfifo $BCRON_SPOOL/trigger
netstring() {
len=$( printf "$@" | wc -c )
fmt="$1"
shift
printf "%d:${fmt}," $len "$@"
}
spoolsockcmd() {
unixclient $BCRONTAB_SOCKET sh -c "
perl -e '
\$string = join(\"\", <>);
printf \"%d:%s,\", length(\$string), \$string;
' >&7; cat <&6; echo"
}
spoolcmd() {
perl -e '
$string = join("", <>);
printf "%d:%s,", length($string), $string;
' | env PROTO=UNIX UNIXREMOTEEUID=`id -u` $src/bcron-spool "$@" 2>/dev/null
echo
}
sched() {
MSG_DEBUG=0 $src/test-sched "$@" 2>&1
}
startsched() {
sched_pid=$( $src/bcron-sched >$tmp/sched-log 2>&1 & echo $! )
sleep 1
}
stopsched() {
sleep 1
kill $sched_pid
sed -e '
s/next:....-..-.. ..:..:.. [^ ]*/next:####-##-## ##:##:## #TZ/;
' <$tmp/sched-log
}
startspool() {
spool_pid=$( unixserver $BCRON_SOCKET $src/bcron-spool > $tmp/spool-log 2>&1 & echo $! )
sleep 1
}
stopspool() {
kill $spool_pid
cat $tmp/spool-log | sed -e 's/\[[0-9]*\]:/[#]:/'
}
catsub() {
cat -v "$@" \
| sed -e "
s/($USER)/(USER)/g
s/<$USER>/<USER>/g
s/<$USER@/<USER@/g
s/@$HOST>/@HOST>/g
s/@$SHOST>/@HOST>/g
"
}
doexec() {
num=1
for cmd in "$@"
do
netstring "${num}\\0${USER}\\0${cmd}"
num=$(($num+1))
done | MSG_DEBUG=0 TESTMODE=1 $src/bcron-exec >$tmp/exec.out 2>$tmp/exec.err
catsub $tmp/exec.out; echo
catsub $tmp/exec.err
}