passt/test/pasta_options/log_to_file
Stefano Brivio 946206437a test: Speed up by cutting on eye candy and performance test duration
We have a number of delays when we switch to new layouts that were
added to make the tests visually easier to follow, together with
blinking status bars. Shorten the delays and avoid blinking the
status bar if $FAST is set to 1 (no demo mode).

Shorten delays in busy loops to 10ms, instead of 100ms, and skip the
one-second fixed delay when we wait for the status of a command.

Cut the duration of throughput and latency tests to one second, down
from ten. Somewhat surprisingly, the results we get are rather
consistent, and not significantly different from what we'd get with
10 seconds.

This, together with Podman's commit 20f3e8909e3a ("test/system:
pasta_test_do add explicit port check"), cuts the time needed on my
setup for full test run from approximately 37 minutes to...:

  $ time ./run
  [exited]
  PASS: 165, FAIL: 0
  Log at /home/sbrivio/passt/test/test_logs/test.log

  real	15m34.253s
  user	0m0.011s
  sys	0m0.011s

Signed-off-by: Stefano Brivio <sbrivio@redhat.com>
Reviewed-by: David Gibson <david@gibson.dropbear.id.au>
Tested-by: David Gibson <david@gibson.dropbear.id.au>
2024-08-15 09:13:15 +02:00

90 lines
2.3 KiB
Text

# SPDX-License-Identifier: GPL-2.0-or-later
#
# PASST - Plug A Simple Socket Transport
# for qemu/UNIX domain socket mode
#
# PASTA - Pack A Subtle Tap Abstraction
# for network namespace/tap device mode
#
# test/pasta_options/log_to_file - Check log creation, rotations and consistency
#
# Copyright (c) 2022 Red Hat GmbH
# Author: Stefano Brivio <sbrivio@redhat.com>
htools wc tcp_rr tail cut tr sort
def flood_log_server
passtb tcp_crr --nolog -P 10001 -C 10002 -6
sleep 1
endef
def flood_log_client
host tcp_crr --nolog -l1 -P 10001 -C 10002 -6 -c -H ::1
endef
def check_log_size_mountns
pout SIZE cat __LOG_FILE__ | wc -c
check [ __SIZE__ -gt $((50 * 1024)) ]
check [ __SIZE__ -lt $((100 * 1024)) ]
endef
test Log creation
set PORTS -t 10001,10002 -u 10001,10002
set LOG_FILE __STATEDIR__/pasta.log
passt ./pasta -l __LOG_FILE__ -- /bin/true
check [ -s __LOG_FILE__ ]
test Log truncated on creation
passt ./pasta -l __LOG_FILE__ -- /bin/true & wait
pout PID2 echo $!
check head -1 __LOG_FILE__ | grep '^pasta .* [(]__PID2__[)]$'
test Maximum log size
passtb ./pasta --config-net -d -f -l __LOG_FILE__ --log-size $((100 * 1024)) -- sh -c 'while true; do tcp_crr --nolog -l1 -P 10001 -C 10002 -6; done'
sleep 1
flood_log_client
check [ $(cat __LOG_FILE__ | wc -c) -gt $((50 * 1024)) ]
check [ $(cat __LOG_FILE__ | wc -c) -lt $((100 * 1024)) ]
flood_log_client
check [ $(cat __LOG_FILE__ | wc -c) -gt $((50 * 1024)) ]
check [ $(cat __LOG_FILE__ | wc -c) -lt $((100 * 1024)) ]
flood_log_client
check [ $(cat __LOG_FILE__ | wc -c) -gt $((50 * 1024)) ]
check [ $(cat __LOG_FILE__ | wc -c) -lt $((100 * 1024)) ]
pint
test Timestamp consistency after rotations
check tail -n +2 __LOG_FILE__ | cut -f1 -d' ' | tr -d [.:] | sort -c
test Maximum log size on tmpfs (no FALLOC_FL_COLLAPSE_RANGE)
passt unshare -rUm
passt mkdir __STATEDIR__/t
passt mount -t tmpfs none __STATEDIR__/t
set LOG_FILE __STATEDIR__/t/log
passt ./pasta --config-net -d -l __LOG_FILE__ --log-size $((100 * 1024))
flood_log_server
flood_log_client
check_log_size_mountns
flood_log_server
flood_log_client
check_log_size_mountns
flood_log_server
flood_log_client
check_log_size_mountns
test Timestamp consistency after rotations (no FALLOC_FL_COLLAPSE_RANGE)
check tail -n +2 __LOG_FILE__ | cut -f1 -d' ' | tr -d [.:] | sort -c
passtb exit
sleep 1
passt umount __STATEDIR__/t
passt exit