| #Test a bunch of positive cases to verify basic functionality |
| for prog in "--txmsg_redir --txmsg_skb" "--txmsg_redir --txmsg_ingress" "--txmsg" "--txmsg_redir" "--txmsg_redir --txmsg_ingress" "--txmsg_drop"; do |
| for t in "sendmsg" "sendpage"; do |
| for r in 1 10 100; do |
| for i in 1 10 100; do |
| for l in 1 10 100; do |
| TEST="./sockmap --cgroup /mnt/cgroup2/ -t $t -r $r -i $i -l $l $prog" |
| echo $TEST |
| $TEST |
| sleep 2 |
| done |
| done |
| done |
| done |
| done |
| |
| #Test max iov |
| t="sendmsg" |
| r=1 |
| i=1024 |
| l=1 |
| prog="--txmsg" |
| |
| TEST="./sockmap --cgroup /mnt/cgroup2/ -t $t -r $r -i $i -l $l $prog" |
| echo $TEST |
| $TEST |
| sleep 2 |
| prog="--txmsg_redir" |
| TEST="./sockmap --cgroup /mnt/cgroup2/ -t $t -r $r -i $i -l $l $prog" |
| echo $TEST |
| $TEST |
| |
| # Test max iov with 1k send |
| |
| t="sendmsg" |
| r=1 |
| i=1024 |
| l=1024 |
| prog="--txmsg" |
| |
| TEST="./sockmap --cgroup /mnt/cgroup2/ -t $t -r $r -i $i -l $l $prog" |
| echo $TEST |
| $TEST |
| sleep 2 |
| prog="--txmsg_redir" |
| TEST="./sockmap --cgroup /mnt/cgroup2/ -t $t -r $r -i $i -l $l $prog" |
| echo $TEST |
| $TEST |
| sleep 2 |
| |
| # Test apply with 1B |
| r=1 |
| i=1024 |
| l=1024 |
| prog="--txmsg_apply 1" |
| |
| for t in "sendmsg" "sendpage"; do |
| TEST="./sockmap --cgroup /mnt/cgroup2/ -t $t -r $r -i $i -l $l $prog" |
| echo $TEST |
| $TEST |
| sleep 2 |
| done |
| |
| # Test apply with larger value than send |
| r=1 |
| i=8 |
| l=1024 |
| prog="--txmsg_apply 2048" |
| |
| for t in "sendmsg" "sendpage"; do |
| TEST="./sockmap --cgroup /mnt/cgroup2/ -t $t -r $r -i $i -l $l $prog" |
| echo $TEST |
| $TEST |
| sleep 2 |
| done |
| |
| # Test apply with apply that never reaches limit |
| r=1024 |
| i=1 |
| l=1 |
| prog="--txmsg_apply 2048" |
| |
| for t in "sendmsg" "sendpage"; do |
| TEST="./sockmap --cgroup /mnt/cgroup2/ -t $t -r $r -i $i -l $l $prog" |
| echo $TEST |
| $TEST |
| sleep 2 |
| done |
| |
| # Test apply and redirect with 1B |
| r=1 |
| i=1024 |
| l=1024 |
| prog="--txmsg_redir --txmsg_apply 1" |
| |
| for t in "sendmsg" "sendpage"; do |
| TEST="./sockmap --cgroup /mnt/cgroup2/ -t $t -r $r -i $i -l $l $prog" |
| echo $TEST |
| $TEST |
| sleep 2 |
| done |
| |
| prog="--txmsg_redir --txmsg_apply 1 --txmsg_ingress" |
| |
| for t in "sendmsg" "sendpage"; do |
| TEST="./sockmap --cgroup /mnt/cgroup2/ -t $t -r $r -i $i -l $l $prog" |
| echo $TEST |
| $TEST |
| sleep 2 |
| done |
| |
| prog="--txmsg_redir --txmsg_apply 1 --txmsg_skb" |
| |
| for t in "sendmsg" "sendpage"; do |
| TEST="./sockmap --cgroup /mnt/cgroup2/ -t $t -r $r -i $i -l $l $prog" |
| echo $TEST |
| $TEST |
| sleep 2 |
| done |
| |
| |
| # Test apply and redirect with larger value than send |
| r=1 |
| i=8 |
| l=1024 |
| prog="--txmsg_redir --txmsg_apply 2048" |
| |
| for t in "sendmsg" "sendpage"; do |
| TEST="./sockmap --cgroup /mnt/cgroup2/ -t $t -r $r -i $i -l $l $prog" |
| echo $TEST |
| $TEST |
| sleep 2 |
| done |
| |
| prog="--txmsg_redir --txmsg_apply 2048 --txmsg_ingress" |
| |
| for t in "sendmsg" "sendpage"; do |
| TEST="./sockmap --cgroup /mnt/cgroup2/ -t $t -r $r -i $i -l $l $prog" |
| echo $TEST |
| $TEST |
| sleep 2 |
| done |
| |
| prog="--txmsg_redir --txmsg_apply 2048 --txmsg_skb" |
| |
| for t in "sendmsg" "sendpage"; do |
| TEST="./sockmap --cgroup /mnt/cgroup2/ -t $t -r $r -i $i -l $l $prog" |
| echo $TEST |
| $TEST |
| sleep 2 |
| done |
| |
| |
| # Test apply and redirect with apply that never reaches limit |
| r=1024 |
| i=1 |
| l=1 |
| prog="--txmsg_apply 2048" |
| |
| for t in "sendmsg" "sendpage"; do |
| TEST="./sockmap --cgroup /mnt/cgroup2/ -t $t -r $r -i $i -l $l $prog" |
| echo $TEST |
| $TEST |
| sleep 2 |
| done |
| |
| # Test cork with 1B not really useful but test it anyways |
| r=1 |
| i=1024 |
| l=1024 |
| prog="--txmsg_cork 1" |
| |
| for t in "sendpage" "sendmsg"; do |
| TEST="./sockmap --cgroup /mnt/cgroup2/ -t $t -r $r -i $i -l $l $prog" |
| echo $TEST |
| $TEST |
| sleep 2 |
| done |
| |
| # Test cork with a more reasonable 100B |
| r=1 |
| i=1000 |
| l=1000 |
| prog="--txmsg_cork 100" |
| |
| for t in "sendpage" "sendmsg"; do |
| TEST="./sockmap --cgroup /mnt/cgroup2/ -t $t -r $r -i $i -l $l $prog" |
| echo $TEST |
| $TEST |
| sleep 2 |
| done |
| |
| # Test cork with larger value than send |
| r=1 |
| i=8 |
| l=1024 |
| prog="--txmsg_cork 2048" |
| |
| for t in "sendpage" "sendmsg"; do |
| TEST="./sockmap --cgroup /mnt/cgroup2/ -t $t -r $r -i $i -l $l $prog" |
| echo $TEST |
| $TEST |
| sleep 2 |
| done |
| |
| # Test cork with cork that never reaches limit |
| r=1024 |
| i=1 |
| l=1 |
| prog="--txmsg_cork 2048" |
| |
| for t in "sendpage" "sendmsg"; do |
| TEST="./sockmap --cgroup /mnt/cgroup2/ -t $t -r $r -i $i -l $l $prog" |
| echo $TEST |
| $TEST |
| sleep 2 |
| done |
| |
| r=1 |
| i=1024 |
| l=1024 |
| prog="--txmsg_redir --txmsg_cork 1" |
| |
| for t in "sendpage" "sendmsg"; do |
| TEST="./sockmap --cgroup /mnt/cgroup2/ -t $t -r $r -i $i -l $l $prog" |
| echo $TEST |
| $TEST |
| sleep 2 |
| done |
| |
| # Test cork with a more reasonable 100B |
| r=1 |
| i=1000 |
| l=1000 |
| prog="--txmsg_redir --txmsg_cork 100" |
| |
| for t in "sendpage" "sendmsg"; do |
| TEST="./sockmap --cgroup /mnt/cgroup2/ -t $t -r $r -i $i -l $l $prog" |
| echo $TEST |
| $TEST |
| sleep 2 |
| done |
| |
| # Test cork with larger value than send |
| r=1 |
| i=8 |
| l=1024 |
| prog="--txmsg_redir --txmsg_cork 2048" |
| |
| for t in "sendpage" "sendmsg"; do |
| TEST="./sockmap --cgroup /mnt/cgroup2/ -t $t -r $r -i $i -l $l $prog" |
| echo $TEST |
| $TEST |
| sleep 2 |
| done |
| |
| # Test cork with cork that never reaches limit |
| r=1024 |
| i=1 |
| l=1 |
| prog="--txmsg_cork 2048" |
| |
| for t in "sendpage" "sendmsg"; do |
| TEST="./sockmap --cgroup /mnt/cgroup2/ -t $t -r $r -i $i -l $l $prog" |
| echo $TEST |
| $TEST |
| sleep 2 |
| done |
| |
| |
| # mix and match cork and apply not really useful but valid programs |
| |
| # Test apply < cork |
| r=100 |
| i=1 |
| l=5 |
| prog="--txmsg_apply 10 --txmsg_cork 100" |
| for t in "sendpage" "sendmsg"; do |
| TEST="./sockmap --cgroup /mnt/cgroup2/ -t $t -r $r -i $i -l $l $prog" |
| echo $TEST |
| $TEST |
| sleep 2 |
| done |
| |
| # Try again with larger sizes so we hit overflow case |
| r=100 |
| i=1000 |
| l=2048 |
| prog="--txmsg_apply 4096 --txmsg_cork 8096" |
| for t in "sendpage" "sendmsg"; do |
| TEST="./sockmap --cgroup /mnt/cgroup2/ -t $t -r $r -i $i -l $l $prog" |
| echo $TEST |
| $TEST |
| sleep 2 |
| done |
| |
| # Test apply > cork |
| r=100 |
| i=1 |
| l=5 |
| prog="--txmsg_apply 100 --txmsg_cork 10" |
| for t in "sendpage" "sendmsg"; do |
| TEST="./sockmap --cgroup /mnt/cgroup2/ -t $t -r $r -i $i -l $l $prog" |
| echo $TEST |
| $TEST |
| sleep 2 |
| done |
| |
| # Again with larger sizes so we hit overflow cases |
| r=100 |
| i=1000 |
| l=2048 |
| prog="--txmsg_apply 8096 --txmsg_cork 4096" |
| for t in "sendpage" "sendmsg"; do |
| TEST="./sockmap --cgroup /mnt/cgroup2/ -t $t -r $r -i $i -l $l $prog" |
| echo $TEST |
| $TEST |
| sleep 2 |
| done |
| |
| |
| # Test apply = cork |
| r=100 |
| i=1 |
| l=5 |
| prog="--txmsg_apply 10 --txmsg_cork 10" |
| for t in "sendpage" "sendmsg"; do |
| TEST="./sockmap --cgroup /mnt/cgroup2/ -t $t -r $r -i $i -l $l $prog" |
| echo $TEST |
| $TEST |
| sleep 2 |
| done |
| |
| r=100 |
| i=1000 |
| l=2048 |
| prog="--txmsg_apply 4096 --txmsg_cork 4096" |
| for t in "sendpage" "sendmsg"; do |
| TEST="./sockmap --cgroup /mnt/cgroup2/ -t $t -r $r -i $i -l $l $prog" |
| echo $TEST |
| $TEST |
| sleep 2 |
| done |
| |
| # Test apply < cork |
| r=100 |
| i=1 |
| l=5 |
| prog="--txmsg_redir --txmsg_apply 10 --txmsg_cork 100" |
| for t in "sendpage" "sendmsg"; do |
| TEST="./sockmap --cgroup /mnt/cgroup2/ -t $t -r $r -i $i -l $l $prog" |
| echo $TEST |
| $TEST |
| sleep 2 |
| done |
| |
| # Try again with larger sizes so we hit overflow case |
| r=100 |
| i=1000 |
| l=2048 |
| prog="--txmsg_redir --txmsg_apply 4096 --txmsg_cork 8096" |
| for t in "sendpage" "sendmsg"; do |
| TEST="./sockmap --cgroup /mnt/cgroup2/ -t $t -r $r -i $i -l $l $prog" |
| echo $TEST |
| $TEST |
| sleep 2 |
| done |
| |
| # Test apply > cork |
| r=100 |
| i=1 |
| l=5 |
| prog="--txmsg_redir --txmsg_apply 100 --txmsg_cork 10" |
| for t in "sendpage" "sendmsg"; do |
| TEST="./sockmap --cgroup /mnt/cgroup2/ -t $t -r $r -i $i -l $l $prog" |
| echo $TEST |
| $TEST |
| sleep 2 |
| done |
| |
| # Again with larger sizes so we hit overflow cases |
| r=100 |
| i=1000 |
| l=2048 |
| prog="--txmsg_redir --txmsg_apply 8096 --txmsg_cork 4096" |
| for t in "sendpage" "sendmsg"; do |
| TEST="./sockmap --cgroup /mnt/cgroup2/ -t $t -r $r -i $i -l $l $prog" |
| echo $TEST |
| $TEST |
| sleep 2 |
| done |
| |
| |
| # Test apply = cork |
| r=100 |
| i=1 |
| l=5 |
| prog="--txmsg_redir --txmsg_apply 10 --txmsg_cork 10" |
| for t in "sendpage" "sendmsg"; do |
| TEST="./sockmap --cgroup /mnt/cgroup2/ -t $t -r $r -i $i -l $l $prog" |
| echo $TEST |
| $TEST |
| sleep 2 |
| done |
| |
| r=100 |
| i=1000 |
| l=2048 |
| prog="--txmsg_redir --txmsg_apply 4096 --txmsg_cork 4096" |
| for t in "sendpage" "sendmsg"; do |
| TEST="./sockmap --cgroup /mnt/cgroup2/ -t $t -r $r -i $i -l $l $prog" |
| echo $TEST |
| $TEST |
| sleep 2 |
| done |
| |
| # Tests for bpf_msg_pull_data() |
| for i in `seq 99 100 1600`; do |
| TEST="./sockmap --cgroup /mnt/cgroup2/ -t sendpage -r 16 -i 1 -l 100 \ |
| --txmsg --txmsg_start 0 --txmsg_end $i --txmsg_cork 1600" |
| echo $TEST |
| $TEST |
| sleep 2 |
| done |
| |
| for i in `seq 199 100 1600`; do |
| TEST="./sockmap --cgroup /mnt/cgroup2/ -t sendpage -r 16 -i 1 -l 100 \ |
| --txmsg --txmsg_start 100 --txmsg_end $i --txmsg_cork 1600" |
| echo $TEST |
| $TEST |
| sleep 2 |
| done |
| |
| TEST="./sockmap --cgroup /mnt/cgroup2/ -t sendpage -r 16 -i 1 -l 100 \ |
| --txmsg --txmsg_start 1500 --txmsg_end 1600 --txmsg_cork 1600" |
| echo $TEST |
| $TEST |
| sleep 2 |
| |
| TEST="./sockmap --cgroup /mnt/cgroup2/ -t sendpage -r 16 -i 1 -l 100 \ |
| --txmsg --txmsg_start 1111 --txmsg_end 1112 --txmsg_cork 1600" |
| echo $TEST |
| $TEST |
| sleep 2 |
| |
| TEST="./sockmap --cgroup /mnt/cgroup2/ -t sendpage -r 16 -i 1 -l 100 \ |
| --txmsg --txmsg_start 1111 --txmsg_end 0 --txmsg_cork 1600" |
| echo $TEST |
| $TEST |
| sleep 2 |
| |
| TEST="./sockmap --cgroup /mnt/cgroup2/ -t sendpage -r 16 -i 1 -l 100 \ |
| --txmsg --txmsg_start 0 --txmsg_end 1601 --txmsg_cork 1600" |
| echo $TEST |
| $TEST |
| sleep 2 |
| |
| TEST="./sockmap --cgroup /mnt/cgroup2/ -t sendpage -r 16 -i 1 -l 100 \ |
| --txmsg --txmsg_start 0 --txmsg_end 1601 --txmsg_cork 1602" |
| echo $TEST |
| $TEST |
| sleep 2 |
| |
| # Run through gamut again with start and end |
| for prog in "--txmsg" "--txmsg_redir" "--txmsg_drop"; do |
| for t in "sendmsg" "sendpage"; do |
| for r in 1 10 100; do |
| for i in 1 10 100; do |
| for l in 1 10 100; do |
| TEST="./sockmap --cgroup /mnt/cgroup2/ -t $t -r $r -i $i -l $l $prog --txmsg_start 1 --txmsg_end 2" |
| echo $TEST |
| $TEST |
| sleep 2 |
| done |
| done |
| done |
| done |
| done |
| |
| # Some specific tests to cover specific code paths |
| ./sockmap --cgroup /mnt/cgroup2/ -t sendpage \ |
| -r 5 -i 1 -l 1 --txmsg_redir --txmsg_cork 5 --txmsg_apply 3 |
| ./sockmap --cgroup /mnt/cgroup2/ -t sendmsg \ |
| -r 5 -i 1 -l 1 --txmsg_redir --txmsg_cork 5 --txmsg_apply 3 |
| ./sockmap --cgroup /mnt/cgroup2/ -t sendpage \ |
| -r 5 -i 1 -l 1 --txmsg_redir --txmsg_cork 5 --txmsg_apply 5 |
| ./sockmap --cgroup /mnt/cgroup2/ -t sendmsg \ |
| -r 5 -i 1 -l 1 --txmsg_redir --txmsg_cork 5 --txmsg_apply 5 |