Files

26 lines
1.5 KiB
Bash

# mbits: throughput from the peer to an iperf3 server on this VM, in Mbit/s.
mbits() {
local srv=''
if ! listening 5201 tcp; then iperf3 -s -1 -p 5201 >/dev/null 2>&1 & srv=$!; sleep 1; fi
in_peer timeout 15 iperf3 -c 10.99.0.1 -t 2 -J 2>/dev/null |
python3 -c 'import json, sys; print(int(json.load(sys.stdin)["end"]["sum_received"]["bits_per_second"] / 1e6))'
[ -n "$srv" ] && kill $srv 2>/dev/null
true
}
num() { answer "$1" | grep -oE '[0-9]+(\.[0-9]+)?' | head -1 | cut -d. -f1; }
task 1 "The disk writer's service named and stopped"
need "/root/lab-answers/1 names the service" 'answer 1 | grep -q log-shipper'
need "log-shipper is stopped and disabled" '! active log-shipper && ! enabled log-shipper'
task 2 "Latency to the peer measured, and the delay removed"
need "/root/lab-answers/2 has the average RTT you measured (70 to 150 ms)" 'n=$(num 2); [ -n "$n" ] && [ "$n" -ge 70 ] && [ "$n" -le 150 ]'
need "le-host has no delay (netem) any more" '! tc qdisc show dev le-host | grep -q netem'
need "ping to the peer takes under 20 ms" 'ping -c3 -i 0.2 -W2 10.99.0.2 | awk -F/ "/^rtt|^round-trip/ {exit !(\$5 < 20)}"'
task 3 "Throughput measured, and the limit removed"
need "/root/lab-answers/3 has the throughput you measured (20 to 60 Mbit/s)" 'n=$(num 3); [ -n "$n" ] && [ "$n" -ge 20 ] && [ "$n" -le 60 ]'
need "iperf3 is installed" 'command -v iperf3'
need "the peer's le-peer has no rate limit (tbf) any more" '! in_peer tc qdisc show dev le-peer | grep -q tbf'
need "iperf3 from the peer gets over 200 Mbit/s" 'n=$(mbits); [ -n "$n" ] && [ "$n" -gt 200 ]'