Skip to content

Commit df67b2f

Browse files
authoredJun 21, 2021
Merge pull request #271 from AkihiroSuda/dev
tests: refactor
2 parents 33eb5f7 + ef24321 commit df67b2f

16 files changed

+262
-245
lines changed
 

‎Makefile.am

+14-2
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,20 @@ AM_CFLAGS = @GLIB_CFLAGS@ @SLIRP_CFLAGS@ @LIBCAP_CFLAGS@ @LIBSECCOMP_CFLAGS@
55
noinst_LIBRARIES = libparson.a
66

77
AM_TESTS_ENVIRONMENT = PATH="$(abs_top_builddir):$(PATH)"
8-
TESTS = tests/test-slirp4netns.sh tests/test-slirp4netns-configure.sh tests/test-slirp4netns-exit-fd.sh tests/test-slirp4netns-ready-fd.sh tests/test-slirp4netns-api-socket.sh tests/test-slirp4netns-disable-host-loopback.sh tests/test-slirp4netns-cidr.sh tests/test-slirp4netns-outbound-addr.sh tests/test-slirp4netns-disable-dns.sh tests/test-slirp4netns-seccomp.sh tests/test-slirp4netns-macaddress.sh tests/test-slirp4netns-dhcp.sh
8+
TESTS = tests/test-slirp4netns-api-socket.sh \
9+
tests/test-slirp4netns-cidr.sh \
10+
tests/test-slirp4netns-configure.sh \
11+
tests/test-slirp4netns-dhcp.sh \
12+
tests/test-slirp4netns-disable-dns.sh \
13+
tests/test-slirp4netns-disable-host-loopback.sh \
14+
tests/test-slirp4netns-exit-fd.sh \
15+
tests/test-slirp4netns-macaddress.sh \
16+
tests/test-slirp4netns-nspath.sh \
17+
tests/test-slirp4netns-outbound-addr.sh \
18+
tests/test-slirp4netns-ready-fd.sh \
19+
tests/test-slirp4netns-sandbox.sh \
20+
tests/test-slirp4netns-sandbox-no-unmount.sh \
21+
tests/test-slirp4netns-seccomp.sh
922

1023
EXTRA_DIST = \
1124
slirp4netns.1.md \
@@ -18,7 +31,6 @@ EXTRA_DIST = \
1831
seccomparch.h \
1932
seccompfilter.h \
2033
seccompfilter_rules.h \
21-
tests/slirp4netns-no-unmount.sh \
2234
vendor/parson/LICENSE \
2335
vendor/parson/README.md \
2436
vendor/parson/parson.h

‎tests/common.sh

+89-89
Original file line numberDiff line numberDiff line change
@@ -4,116 +4,116 @@
44
TEST_EXIT_CODE_SKIP=77
55

66
function nsenter_flags {
7-
pid=$1
8-
flags="--target=${pid}"
9-
userns="$(readlink /proc/${pid}/ns/user)"
10-
mntns="$(readlink /proc/${pid}/ns/mnt)"
11-
netns="$(readlink /proc/${pid}/ns/net)"
7+
pid=$1
8+
flags="--target=${pid}"
9+
userns="$(readlink /proc/${pid}/ns/user)"
10+
mntns="$(readlink /proc/${pid}/ns/mnt)"
11+
netns="$(readlink /proc/${pid}/ns/net)"
1212

13-
self_userns="$(readlink /proc/self/ns/user)"
14-
self_mntns="$(readlink /proc/self/ns/mnt)"
15-
self_netns="$(readlink /proc/self/ns/net)"
13+
self_userns="$(readlink /proc/self/ns/user)"
14+
self_mntns="$(readlink /proc/self/ns/mnt)"
15+
self_netns="$(readlink /proc/self/ns/net)"
1616

17-
if [ "${userns}" != "${self_userns}" ]; then
18-
flags="$flags --preserve-credentials -U"
19-
fi
20-
if [ "${mntns}" != "${self_mntns}" ]; then
21-
flags="$flags -m"
22-
fi
23-
if [ "${netns}" != "${self_netns}" ]; then
24-
flags="$flags -n"
25-
fi
26-
echo "${flags}"
17+
if [ "${userns}" != "${self_userns}" ]; then
18+
flags="$flags --preserve-credentials -U"
19+
fi
20+
if [ "${mntns}" != "${self_mntns}" ]; then
21+
flags="$flags -m"
22+
fi
23+
if [ "${netns}" != "${self_netns}" ]; then
24+
flags="$flags -n"
25+
fi
26+
echo "${flags}"
2727
}
2828

2929
function wait_for_network_namespace {
30-
# Wait that the namespace is ready.
31-
COUNTER=0
32-
while [ $COUNTER -lt 40 ]; do
33-
flags=$(nsenter_flags $1)
34-
if $(echo $flags | grep -qvw -- -n); then
35-
flags="$flags -n"
36-
fi
37-
if nsenter ${flags} true >/dev/null 2>&1; then
38-
return 0
39-
else
40-
sleep 0.5
41-
fi
42-
let COUNTER=COUNTER+1
43-
done
44-
exit 1
30+
# Wait that the namespace is ready.
31+
COUNTER=0
32+
while [ $COUNTER -lt 40 ]; do
33+
flags=$(nsenter_flags $1)
34+
if $(echo $flags | grep -qvw -- -n); then
35+
flags="$flags -n"
36+
fi
37+
if nsenter ${flags} true >/dev/null 2>&1; then
38+
return 0
39+
else
40+
sleep 0.5
41+
fi
42+
let COUNTER=COUNTER+1
43+
done
44+
exit 1
4545
}
4646

4747
function wait_for_network_device {
48-
# Wait that the device appears.
49-
COUNTER=0
50-
while [ $COUNTER -lt 40 ]; do
51-
if nsenter $(nsenter_flags $1) ip addr show $2; then
52-
return 0
53-
else
54-
sleep 0.5
55-
fi
56-
let COUNTER=COUNTER+1
57-
done
58-
exit 1
48+
# Wait that the device appears.
49+
COUNTER=0
50+
while [ $COUNTER -lt 40 ]; do
51+
if nsenter $(nsenter_flags $1) ip addr show $2; then
52+
return 0
53+
else
54+
sleep 0.5
55+
fi
56+
let COUNTER=COUNTER+1
57+
done
58+
exit 1
5959
}
6060

6161
function wait_process_exits {
62-
COUNTER=0
63-
while [ $COUNTER -lt 40 ]; do
64-
if kill -0 $1; then
65-
sleep 0.5
66-
else
67-
return 0
68-
fi
69-
let COUNTER=COUNTER+1
70-
done
71-
exit 1
62+
COUNTER=0
63+
while [ $COUNTER -lt 40 ]; do
64+
if kill -0 $1; then
65+
sleep 0.5
66+
else
67+
return 0
68+
fi
69+
let COUNTER=COUNTER+1
70+
done
71+
exit 1
7272
}
7373

7474
function wait_for_ping_connectivity {
75-
COUNTER=0
76-
while [ $COUNTER -lt 40 ]; do
77-
if nsenter $(nsenter_flags $1) ping -c 1 -w 1 $2; then
78-
return 0
79-
else
80-
sleep 0.5
81-
fi
82-
let COUNTER=COUNTER+1
83-
done
84-
exit 1
75+
COUNTER=0
76+
while [ $COUNTER -lt 40 ]; do
77+
if nsenter $(nsenter_flags $1) ping -c 1 -w 1 $2; then
78+
return 0
79+
else
80+
sleep 0.5
81+
fi
82+
let COUNTER=COUNTER+1
83+
done
84+
exit 1
8585
}
8686

8787
function wait_for_connectivity {
88-
COUNTER=0
89-
while [ $COUNTER -lt 40 ]; do
90-
if echo "wait_for_connectivity" | nsenter $(nsenter_flags $1) ncat -v $2 $3; then
91-
return 0
92-
else
93-
sleep 0.5
94-
fi
95-
let COUNTER=COUNTER+1
96-
done
97-
exit 1
88+
COUNTER=0
89+
while [ $COUNTER -lt 40 ]; do
90+
if echo "wait_for_connectivity" | nsenter $(nsenter_flags $1) ncat -v $2 $3; then
91+
return 0
92+
else
93+
sleep 0.5
94+
fi
95+
let COUNTER=COUNTER+1
96+
done
97+
exit 1
9898
}
9999

100100
function wait_for_file_content {
101-
# Wait for a file to get the specified content.
102-
COUNTER=0
103-
while [ $COUNTER -lt 20 ]; do
104-
if grep $1 $2; then
105-
return 0
106-
else
107-
sleep 0.5
108-
fi
109-
let COUNTER=COUNTER+1
110-
done
111-
exit 1
101+
# Wait for a file to get the specified content.
102+
COUNTER=0
103+
while [ $COUNTER -lt 20 ]; do
104+
if grep $1 $2; then
105+
return 0
106+
else
107+
sleep 0.5
108+
fi
109+
let COUNTER=COUNTER+1
110+
done
111+
exit 1
112112
}
113113

114114
function expose_tcp() {
115-
apisock=$1 hostport=$2 guestport=$3
116-
json="{\"execute\": \"add_hostfwd\", \"arguments\": {\"proto\": \"tcp\", \"host_addr\": \"0.0.0.0\", \"host_port\": $hostport, \"guest_addr\": \"10.0.2.100\", \"guest_port\": $guestport}}"
117-
echo -n $json | ncat -U $apisock
118-
echo -n "{\"execute\": \"list_hostfwd\"}" | ncat -U $apisock
115+
apisock=$1 hostport=$2 guestport=$3
116+
json="{\"execute\": \"add_hostfwd\", \"arguments\": {\"proto\": \"tcp\", \"host_addr\": \"0.0.0.0\", \"host_port\": $hostport, \"guest_addr\": \"10.0.2.100\", \"guest_port\": $guestport}}"
117+
echo -n $json | ncat -U $apisock
118+
echo -n "{\"execute\": \"list_hostfwd\"}" | ncat -U $apisock
119119
}

‎tests/test-slirp4netns-api-socket.sh

+7-7
Original file line numberDiff line numberDiff line change
@@ -12,17 +12,17 @@ tmpdir=$(mktemp -d /tmp/slirp4netns-bench.XXXXXXXXXX)
1212
apisocket=${tmpdir}/slirp4netns.sock
1313
apisocketlongpath=${tmpdir}/slirp4netns-TOO-LONG-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA.sock
1414

15-
if slirp4netns -c $child --api-socket $apisocketlongpath tun11; then
16-
echo "expected failure with apisocket path too long" >&2
17-
kill -9 $child
18-
rm -rf $tmpdir
19-
exit 1
15+
if slirp4netns -c $child --api-socket $apisocketlongpath tap11; then
16+
echo "expected failure with apisocket path too long" >&2
17+
kill -9 $child
18+
rm -rf $tmpdir
19+
exit 1
2020
fi
2121

22-
slirp4netns -c $child --api-socket $apisocket tun11 &
22+
slirp4netns -c $child --api-socket $apisocket tap11 &
2323
slirp_pid=$!
2424

25-
wait_for_network_device $child tun11
25+
wait_for_network_device $child tap11
2626

2727
function cleanup() {
2828
kill -9 $child $slirp_pid

‎tests/test-slirp4netns-cidr.sh

+9-9
Original file line numberDiff line numberDiff line change
@@ -9,39 +9,39 @@ child=$!
99
wait_for_network_namespace $child
1010

1111
set +e
12-
result=$(slirp4netns -c --cidr 24 $child tun11 2>&1)
12+
result=$(slirp4netns -c --cidr 24 $child tap11 2>&1)
1313
set -e
1414
echo $result | grep "invalid CIDR"
1515

1616
set +e
17-
result=$(slirp4netns -c --cidr foo $child tun11 2>&1)
17+
result=$(slirp4netns -c --cidr foo $child tap11 2>&1)
1818
set -e
1919
echo $result | grep "invalid CIDR"
2020

2121
set +e
22-
result=$(slirp4netns -c --cidr 10.0.2.0 $child tun11 2>&1)
22+
result=$(slirp4netns -c --cidr 10.0.2.0 $child tap11 2>&1)
2323
set -e
2424
echo $result | grep "invalid CIDR"
2525

2626
set +e
27-
result=$(slirp4netns -c --cidr 10.0.2.100/24 $child tun11 2>&1)
27+
result=$(slirp4netns -c --cidr 10.0.2.100/24 $child tap11 2>&1)
2828
set -e
2929
echo $result | grep "CIDR needs to be a network address like 10.0.2.0/24, not like 10.0.2.100/24"
3030

3131
set +e
32-
result=$(slirp4netns -c --cidr 10.0.2.100/26 $child tun11 2>&1)
32+
result=$(slirp4netns -c --cidr 10.0.2.100/26 $child tap11 2>&1)
3333
set -e
3434
echo $result | grep "prefix length needs to be 1-25"
3535

36-
slirp4netns -c $child --cidr 10.0.135.128/25 tun11 &
36+
slirp4netns -c $child --cidr 10.0.135.128/25 tap11 &
3737
slirp_pid=$!
3838

39-
wait_for_network_device $child tun11
39+
wait_for_network_device $child tap11
4040

4141
function cleanup {
42-
kill -9 $child $slirp_pid
42+
kill -9 $child $slirp_pid
4343
}
4444
trap cleanup EXIT
4545

46-
result="$(nsenter --preserve-credentials -U -n --target=$child ip a show dev tun11)"
46+
result="$(nsenter $(nsenter_flags $child) ip a show dev tap11)"
4747
echo "$result" | grep -o '^\s*inet .*/' | grep -F 10.0.135.228

‎tests/test-slirp4netns-configure.sh

+5-5
Original file line numberDiff line numberDiff line change
@@ -8,16 +8,16 @@ child=$!
88

99
wait_for_network_namespace $child
1010

11-
slirp4netns -c $child tun11 &
11+
slirp4netns -c $child tap11 &
1212
slirp_pid=$!
1313

14-
wait_for_network_device $child tun11
14+
wait_for_network_device $child tap11
1515

1616
function cleanup {
17-
kill -9 $child $slirp_pid
17+
kill -9 $child $slirp_pid
1818
}
1919
trap cleanup EXIT
2020

21-
nsenter --preserve-credentials -U -n --target=$child ip -a netconf | grep tun11
21+
nsenter $(nsenter_flags $child) ip -a netconf | grep tap11
2222

23-
nsenter --preserve-credentials -U -n --target=$child ip addr show tun11 | grep inet
23+
nsenter $(nsenter_flags $child) ip addr show tap11 | grep inet

‎tests/test-slirp4netns-disable-dns.sh

+8-8
Original file line numberDiff line numberDiff line change
@@ -1,35 +1,35 @@
11
#!/bin/bash
22
set -xeuo pipefail
33

4+
. $(dirname $0)/common.sh
5+
46
SLIRP_CONFIG_VERSION_MAX=$(slirp4netns -v | grep "SLIRP_CONFIG_VERSION_MAX: " | sed 's#SLIRP_CONFIG_VERSION_MAX: \(\)##')
57

68
if [ "${SLIRP_CONFIG_VERSION_MAX:-0}" -lt 3 ]; then
7-
printf "'--disable-dns' requires SLIRP_CONFIG_VERSION_MAX 3 or newer. Test skipped..."
8-
exit 0
9+
printf "'--disable-dns' requires SLIRP_CONFIG_VERSION_MAX 3 or newer. Test skipped..."
10+
exit "$TEST_EXIT_CODE_SKIP"
911
fi
1012

11-
. $(dirname $0)/common.sh
12-
1313
port=53
1414
unshare -r -n sleep infinity &
1515
child=$!
1616

1717
wait_for_network_namespace $child
1818

1919
mtu=${MTU:=1500}
20-
slirp4netns -c --mtu $mtu --disable-dns $child tun11 &
20+
slirp4netns -c --mtu $mtu --disable-dns $child tap11 &
2121
slirp_pid=$!
2222

23-
wait_for_network_device $child tun11
23+
wait_for_network_device $child tap11
2424
# ping to 10.0.2.2
2525
wait_for_ping_connectivity $child 10.0.2.2
2626

2727
function cleanup() {
28-
kill -9 $child $slirp_pid
28+
kill -9 $child $slirp_pid
2929
}
3030
trap cleanup EXIT
3131

3232
set +e
33-
err=$(echo "should fail" | nsenter --preserve-credentials -U -n --target=$child ncat -v 10.0.2.3 $port 2>&1)
33+
err=$(echo "should fail" | nsenter $(nsenter_flags $child) ncat -v 10.0.2.3 $port 2>&1)
3434
set -e
3535
echo $err | grep 'Connection timed out\|TIMEOUT'

‎tests/test-slirp4netns-disable-host-loopback.sh

+4-5
Original file line numberDiff line numberDiff line change
@@ -13,20 +13,19 @@ child=$!
1313
wait_for_network_namespace $child
1414

1515
mtu=${MTU:=1500}
16-
slirp4netns -c --mtu $mtu --disable-host-loopback $child tun11 &
16+
slirp4netns -c --mtu $mtu --disable-host-loopback $child tap11 &
1717
slirp_pid=$!
1818

19-
wait_for_network_device $child tun11
19+
wait_for_network_device $child tap11
2020
# ping to 10.0.2.2 is possible even with --disable-host-loopback
2121
wait_for_ping_connectivity $child 10.0.2.2
2222

2323
function cleanup {
24-
kill -9 $nc_pid $child $slirp_pid
24+
kill -9 $nc_pid $child $slirp_pid
2525
}
2626
trap cleanup EXIT
2727

2828
set +e
29-
err=$(echo "should fail" | nsenter --preserve-credentials -U -n --target=$child ncat -v 10.0.2.2 $port 2>&1)
29+
err=$(echo "should fail" | nsenter $(nsenter_flags $child) ncat -v 10.0.2.2 $port 2>&1)
3030
set -e
3131
echo $err | grep "Network is unreachable"
32-

‎tests/test-slirp4netns-exit-fd.sh

+5-5
Original file line numberDiff line numberDiff line change
@@ -10,14 +10,14 @@ wait_for_network_namespace $child
1010

1111
touch keep_alive
1212

13-
slirp4netns -e 10 $child tun11 10<(while test -e keep_alive; do sleep 0.1; done) &
13+
slirp4netns -e 10 $child tap11 10<(while test -e keep_alive; do sleep 0.1; done) &
1414

1515
slirp_pid=$!
1616

1717
function cleanup {
18-
set +xeuo pipefail
19-
kill -9 $child $slirp_pid
20-
rm -f keep_alive
18+
set +xeuo pipefail
19+
kill -9 $child $slirp_pid
20+
rm -f keep_alive
2121
}
2222
trap cleanup EXIT
2323

@@ -29,7 +29,7 @@ rm keep_alive
2929
wait_process_exits $slirp_pid
3030

3131
if kill -0 $slirp_pid; then
32-
exit 1
32+
exit 1
3333
fi
3434

3535
exit 0

‎tests/test-slirp4netns-macaddress.sh

+6-6
Original file line numberDiff line numberDiff line change
@@ -10,20 +10,20 @@ child=$!
1010
wait_for_network_namespace $child
1111

1212
function cleanup {
13-
kill -9 $child $slirp_pid
13+
kill -9 $child $slirp_pid
1414
}
1515
trap cleanup EXIT
1616

17-
slirp4netns -c --macaddress $MACADDRESS $child tun11 &
17+
slirp4netns -c --macaddress $MACADDRESS $child tap11 &
1818
slirp_pid=$!
1919

20-
wait_for_network_device $child tun11
20+
wait_for_network_device $child tap11
2121

22-
result=$(nsenter --preserve-credentials -U -n --target=$child ip addr show tun11 | grep -o "ether $MACADDRESS")
22+
result=$(nsenter $(nsenter_flags $child) ip addr show tap11 | grep -o "ether $MACADDRESS")
2323

2424
if [ -z "$result" ]; then
25-
printf "expecting %s MAC address on the interface but didn't get it" "$MACADDRESS"
26-
exit 1
25+
printf "expecting %s MAC address on the interface but didn't get it" "$MACADDRESS"
26+
exit 1
2727
fi
2828

2929
cleanup

‎tests/test-slirp4netns-nspath.sh

+39
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
#!/bin/bash
2+
set -xeuo pipefail
3+
4+
. $(dirname $0)/common.sh
5+
6+
# Test --userns-path= --netns-type=path
7+
unshare -r -n sleep infinity &
8+
child=$!
9+
10+
wait_for_network_namespace $child
11+
12+
slirp4netns --userns-path=/proc/$child/ns/user --netns-type=path /proc/$child/ns/net tap11 &
13+
slirp_pid=$!
14+
15+
function cleanup {
16+
kill -9 $child $slirp_pid
17+
}
18+
trap cleanup EXIT
19+
20+
wait_for_network_device $child tap11
21+
22+
nsenter $(nsenter_flags $child) ip -a netconf | grep tap11
23+
nsenter $(nsenter_flags $child) ip addr show tap11 | grep -v inet
24+
25+
kill -9 $child $slirp_pid
26+
27+
# Test --netns-type=path
28+
unshare -r -n sleep infinity &
29+
child=$!
30+
31+
wait_for_network_namespace $child
32+
33+
nsenter --preserve-credentials -U --target=$child slirp4netns --netns-type=path /proc/$child/ns/net tap11 &
34+
slirp_pid=$!
35+
36+
wait_for_network_device $child tap11
37+
38+
nsenter $(nsenter_flags $child) ip -a netconf | grep tap11
39+
nsenter $(nsenter_flags $child) ip addr show tap11 | grep -v inet
+22-22
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,15 @@
11
#!/bin/bash
22
set -xeuo pipefail
33

4+
. $(dirname $0)/common.sh
5+
46
SLIRP_CONFIG_VERSION_MAX=$(slirp4netns -v | grep "SLIRP_CONFIG_VERSION_MAX: " | sed 's#SLIRP_CONFIG_VERSION_MAX: \(\)##')
57

68
if [ "${SLIRP_CONFIG_VERSION_MAX:-0}" -lt 2 ]; then
7-
printf "'--disable-dns' requires SLIRP_CONFIG_VERSION_MAX 2 or newer. Test skipped..."
8-
exit 0
9+
printf "'--disable-dns' requires SLIRP_CONFIG_VERSION_MAX 2 or newer. Test skipped..."
10+
exit "$TEST_EXIT_CODE_SKIP"
911
fi
1012

11-
. $(dirname $0)/common.sh
12-
1313
IPv4_1="127.0.0.1"
1414
IPv4_2=$(ip a | sed -En 's/127.0.0.1//;s/.*inet (addr:)?(([0-9]*\.){3}[0-9]*).*/\2/p' | head -n 1)
1515

@@ -18,8 +18,8 @@ IPv4_2=$(ip a | sed -En 's/127.0.0.1//;s/.*inet (addr:)?(([0-9]*\.){3}[0-9]*).*/
1818
#IPv6_2=$(ip a | sed -En 's/::1\/128//;s/.*inet6 (addr:)?([^ ]*)\/.*$/\2/p' | head -n 1)
1919

2020
function cleanup() {
21-
rm -rf ncat.log
22-
kill -9 $child $slirp_pid || exit 0
21+
rm -rf ncat.log
22+
kill -9 $child $slirp_pid || exit 0
2323
}
2424
trap cleanup EXIT
2525

@@ -28,26 +28,26 @@ mtu=${MTU:=1500}
2828

2929
IPs=("$IPv4_1" "$IPv4_2")
3030
for ip in "${IPs[@]}"; do
31-
ncat -l $port -v >ncat.log 2>&1 &
32-
ncat1=$!
31+
ncat -l $port -v >ncat.log 2>&1 &
32+
ncat1=$!
3333

34-
unshare -r -n sleep infinity &
35-
child=$!
34+
unshare -r -n sleep infinity &
35+
child=$!
3636

37-
wait_for_network_namespace $child
37+
wait_for_network_namespace $child
3838

39-
slirp4netns -c --mtu $mtu --outbound-addr="$ip" $child tun11 &
40-
slirp_pid=$!
39+
slirp4netns -c --mtu $mtu --outbound-addr="$ip" $child tap11 &
40+
slirp_pid=$!
4141

42-
wait_for_network_device $child tun11
42+
wait_for_network_device $child tap11
4343

44-
wait_for_connectivity $child 10.0.2.2 $port
44+
wait_for_connectivity $child 10.0.2.2 $port
4545

46-
wait_process_exits $ncat1
47-
if ! grep "$ip" ncat.log; then
48-
printf "%s not found in ncat.log" "$ip"
49-
exit 1
50-
fi
51-
cleanup
52-
let port=port+1
46+
wait_process_exits $ncat1
47+
if ! grep "$ip" ncat.log; then
48+
printf "%s not found in ncat.log" "$ip"
49+
exit 1
50+
fi
51+
cleanup
52+
let port=port+1
5353
done

‎tests/test-slirp4netns-ready-fd.sh

+5-5
Original file line numberDiff line numberDiff line change
@@ -10,17 +10,17 @@ wait_for_network_namespace $child
1010

1111
touch keep_alive
1212

13-
slirp4netns -c -r 10 $child tun11 10>configured &
13+
slirp4netns -c -r 10 $child tap11 10>configured &
1414
slirp_pid=$!
1515

1616
function cleanup {
17-
set +xeuo pipefail
18-
kill -9 $child $slirp_pid
19-
rm -f configured keep_alive
17+
set +xeuo pipefail
18+
kill -9 $child $slirp_pid
19+
rm -f configured keep_alive
2020
}
2121
trap cleanup EXIT
2222

23-
wait_for_network_device $child tun11
23+
wait_for_network_device $child tap11
2424

2525
wait_for_file_content 1 configured
2626

Original file line numberDiff line numberDiff line change
@@ -1,10 +1,13 @@
11
#!/bin/bash
22
set -xeuo pipefail
33

4-
. $(dirname $0)/common.sh
4+
if [[ ! -v "CHILD" ]]; then
5+
# reexec in a new mount namespace
6+
export CHILD=1
7+
exec unshare -rm "$0" "$@"
8+
fi
59

6-
# it is a part of test-slirp4netns.sh
7-
# must run in a new mount namespace
10+
. $(dirname $0)/common.sh
811

912
mount -t tmpfs tmpfs /run
1013
mkdir /run/foo
@@ -16,14 +19,14 @@ child=$!
1619

1720
wait_for_network_namespace $child
1821

19-
slirp4netns --enable-sandbox --netns-type=path /proc/$child/ns/net tun11 &
22+
slirp4netns --enable-sandbox --netns-type=path /proc/$child/ns/net tap11 &
2023
slirp_pid=$!
2124

2225
function cleanup {
23-
kill -9 $child $slirp_pid
26+
kill -9 $child $slirp_pid
2427
}
2528
trap cleanup EXIT
2629

27-
wait_for_network_device $child tun11
30+
wait_for_network_device $child tap11
2831

2932
findmnt /run/foo

‎tests/test-slirp4netns-sandbox.sh

+35
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
#!/bin/bash
2+
set -xeuo pipefail
3+
4+
. $(dirname $0)/common.sh
5+
6+
unshare -r -n sleep infinity &
7+
child=$!
8+
9+
wait_for_network_namespace $child
10+
11+
slirp4netns --ready-fd=3 --enable-sandbox $child tap11 3>ready.file &
12+
slirp_pid=$!
13+
14+
# Wait that the sandbox is created
15+
wait_for_file_content 1 ready.file
16+
rm ready.file
17+
18+
# Check there are no capabilities left in slirp4netns
19+
getpcaps $slirp_pid 2>&1 | tail -n1 >slirp.caps
20+
grep cap_net_bind_service slirp.caps
21+
grep -v cap_sys_admin slirp.caps
22+
rm slirp.caps
23+
test -e /proc/$slirp_pid/root/etc
24+
test -e /proc/$slirp_pid/root/run
25+
test \! -e /proc/$slirp_pid/root/home
26+
test \! -e /proc/$slirp_pid/root/root
27+
test \! -e /proc/$slirp_pid/root/var
28+
29+
function cleanup {
30+
kill -9 $child $slirp_pid
31+
}
32+
trap cleanup EXIT
33+
34+
nsenter $(nsenter_flags $child) ip -a netconf | grep tap11
35+
nsenter $(nsenter_flags $child) ip addr show tap11 | grep -v inet

‎tests/test-slirp4netns-seccomp.sh

+5-5
Original file line numberDiff line numberDiff line change
@@ -8,16 +8,16 @@ child=$!
88

99
wait_for_network_namespace $child
1010

11-
slirp4netns -c --enable-seccomp --userns-path=/proc/$child/ns/user $child tun11 &
11+
slirp4netns -c --enable-seccomp --userns-path=/proc/$child/ns/user $child tap11 &
1212
slirp_pid=$!
1313

14-
wait_for_network_device $child tun11
14+
wait_for_network_device $child tap11
1515

1616
function cleanup {
17-
kill -9 $child $slirp_pid
17+
kill -9 $child $slirp_pid
1818
}
1919
trap cleanup EXIT
2020

21-
nsenter --preserve-credentials -U -n --target=$child ip -a netconf | grep tun11
21+
nsenter $(nsenter_flags $child) ip -a netconf | grep tap11
2222

23-
nsenter --preserve-credentials -U -n --target=$child ip addr show tun11 | grep inet
23+
nsenter $(nsenter_flags $child) ip addr show tap11 | grep inet

‎tests/test-slirp4netns.sh

-71
This file was deleted.

0 commit comments

Comments
 (0)
Please sign in to comment.