Skip to content

Commit

Permalink
port forward range test: fix many oopses
Browse files Browse the repository at this point in the history
Wrong variable. And, wrong index range. And, wrong bash
syntax for extracting end_port. And, add explicit check
for valid range, because die() inside 'foo=$(...)' will not
actually die. And, refactor some confusing code. And,
reformat/clean up a confusing and too-wide comment.

Fixes: #14854

Signed-off-by: Ed Santiago <[email protected]>
  • Loading branch information
edsantiago committed Jul 7, 2022
1 parent dd0418a commit e8d2d70
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 10 deletions.
12 changes: 8 additions & 4 deletions test/system/500-networking.bats
Original file line number Diff line number Diff line change
Expand Up @@ -677,16 +677,20 @@ EOF
@test "podman run port forward range" {
for netmode in bridge slirp4netns:port_handler=slirp4netns slirp4netns:port_handler=rootlesskit; do
local range=$(random_free_port_range 3)
local port="${test%-*}"
local end_port="${test#-*}"
# die() inside $(...) does not actually stop us.
assert "$range" != "" "Could not find free port range"

local port="${range%-*}"
local end_port="${range#*-}"
local random=$(random_string)

run_podman run --network $netmode -p "$range:$range" -d $IMAGE sleep inf
cid="$output"
for port in $(seq $port $end_port); do
run_podman exec -d $cid nc -l -p $port -e /bin/cat
# -w 1 adds a 1 second timeout, for some reason ubuntus ncat doesn't close the connection on EOF,
# other options to change this are not portable across distros but -w seems to work
# -w 1 adds a 1 second timeout. For some reason, ubuntu's ncat
# doesn't close the connection on EOF, and other options to
# change this are not portable across distros. -w seems to work.
run nc -w 1 127.0.0.1 $port <<<$random
is "$output" "$random" "ncat got data back (netmode=$netmode port=$port)"
done
Expand Down
14 changes: 8 additions & 6 deletions test/system/helpers.bash
Original file line number Diff line number Diff line change
Expand Up @@ -299,15 +299,17 @@ function random_free_port_range() {
local maxtries=10
while [[ $maxtries -gt 0 ]]; do
local firstport=$(random_free_port)
local all_ports_free=1
for i in $(seq 2 $size); do
if ! port_is_free $((firstport + $i)); then
all_ports_free=
local lastport=
for i in $(seq 1 $((size - 1))); do
lastport=$((firstport + i))
if ! port_is_free $lastport; then
echo "# port $lastport is in use; trying another." >&3
lastport=
break
fi
done
if [[ -n "$all_ports_free" ]]; then
echo "$firstport-$((firstport + $size - 1))"
if [[ -n "$lastport" ]]; then
echo "$firstport-$lastport"
return
fi

Expand Down

0 comments on commit e8d2d70

Please sign in to comment.