From e03fd46de5fa349d0108272b3e2eb368bb5163dc Mon Sep 17 00:00:00 2001 From: Nikhil Malik Date: Wed, 28 Aug 2024 17:14:46 +0900 Subject: [PATCH 1/6] tcpkali longrun test case added --- cicd/tcpkali/config.sh | 46 +++++++++++++++++++++ cicd/tcpkali/pps.sh | 30 ++++++++++++++ cicd/tcpkali/rmconfig.sh | 20 +++++++++ cicd/tcpkali/validation.sh | 84 ++++++++++++++++++++++++++++++++++++++ 4 files changed, 180 insertions(+) create mode 100755 cicd/tcpkali/config.sh create mode 100755 cicd/tcpkali/pps.sh create mode 100755 cicd/tcpkali/rmconfig.sh create mode 100755 cicd/tcpkali/validation.sh diff --git a/cicd/tcpkali/config.sh b/cicd/tcpkali/config.sh new file mode 100755 index 00000000..3b24ef11 --- /dev/null +++ b/cicd/tcpkali/config.sh @@ -0,0 +1,46 @@ +#!/bin/bash + +source ../common.sh + +echo "#########################################" +echo "Spawning all hosts" +echo "#########################################" + +spawn_docker_host --dock-type loxilb --dock-name llb1 +spawn_docker_host --dock-type host --dock-name l3h1 +spawn_docker_host --dock-type host --dock-name l3h2 +spawn_docker_host --dock-type host --dock-name l3ep1 +spawn_docker_host --dock-type host --dock-name l3ep2 +spawn_docker_host --dock-type host --dock-name l3ep3 + +echo "#########################################" +echo "Connecting and configuring hosts" +echo "#########################################" + + +connect_docker_hosts l3h1 llb1 +connect_docker_hosts l3h2 llb1 +connect_docker_hosts l3ep1 llb1 +connect_docker_hosts l3ep2 llb1 +connect_docker_hosts l3ep3 llb1 + +sleep 5 + +#L3 config +config_docker_host --host1 l3h1 --host2 llb1 --ptype phy --addr 10.10.10.1/24 --gw 10.10.10.254 +config_docker_host --host1 l3h2 --host2 llb1 --ptype phy --addr 10.10.11.1/24 --gw 10.10.11.254 +config_docker_host --host1 l3ep1 --host2 llb1 --ptype phy --addr 31.31.31.1/24 --gw 31.31.31.254 +config_docker_host --host1 l3ep2 --host2 llb1 --ptype phy --addr 32.32.32.1/24 --gw 32.32.32.254 +config_docker_host --host1 l3ep3 --host2 llb1 --ptype phy --addr 33.33.33.1/24 --gw 33.33.33.254 +config_docker_host --host1 llb1 --host2 l3h1 --ptype phy --addr 10.10.10.254/24 +config_docker_host --host1 llb1 --host2 l3h2 --ptype phy --addr 10.10.11.254/24 +config_docker_host --host1 llb1 --host2 l3ep1 --ptype phy --addr 31.31.31.254/24 +config_docker_host --host1 llb1 --host2 l3ep2 --ptype phy --addr 32.32.32.254/24 +config_docker_host --host1 llb1 --host2 l3ep3 --ptype phy --addr 33.33.33.254/24 + +$dexec llb1 ip addr add 10.10.10.3/32 dev lo + +sleep 5 +create_lb_rule llb1 20.20.20.1 --tcp=2020:8080 --endpoints=31.31.31.1:1,32.32.32.1:1,33.33.33.1:1 +create_lb_rule llb1 10.10.10.254 --tcp=2020:8080 --endpoints=31.31.31.1:1,32.32.32.1:1,33.33.33.1:1 +create_lb_rule llb1 10.10.10.3 --tcp=2020:8080 --endpoints=31.31.31.1:1,32.32.32.1:1,33.33.33.1:1 diff --git a/cicd/tcpkali/pps.sh b/cicd/tcpkali/pps.sh new file mode 100755 index 00000000..d1651534 --- /dev/null +++ b/cicd/tcpkali/pps.sh @@ -0,0 +1,30 @@ +#!/bin/bash + +i="1" # one second +time=$1 +int1=$2 # network interface +int2=$3 # network interface + +end=$((SECONDS + $time)) + +while [ $SECONDS -lt $end ]; do + txpkts_old1="`cat /sys/class/net/$int1/statistics/tx_packets`" # sent packets + rxpkts_old1="`cat /sys/class/net/$int1/statistics/rx_packets`" # recv packets + txpkts_old2="`cat /sys/class/net/$int2/statistics/tx_packets`" # sent packets + rxpkts_old2="`cat /sys/class/net/$int2/statistics/rx_packets`" # recv packets + txpkts_old="`expr $txpkts_old1 + $txpkts_old2`" + rxpkts_old="`expr $rxpkts_old1 + $rxpkts_old2`" + sleep $i + txpkts_new1="`cat /sys/class/net/$int1/statistics/tx_packets`" # sent packets + rxpkts_new1="`cat /sys/class/net/$int1/statistics/rx_packets`" # recv packets + txpkts_new2="`cat /sys/class/net/$int2/statistics/tx_packets`" # sent packets + rxpkts_new2="`cat /sys/class/net/$int2/statistics/rx_packets`" # recv packets + + txpkts_new="`expr $txpkts_new1 + $txpkts_new2`" + rxpkts_new="`expr $rxpkts_new1 + $rxpkts_new2`" + + txpkts="`expr $txpkts_new - $txpkts_old`" # evaluate expressions for sent packets + rxpkts="`expr $rxpkts_new - $rxpkts_old`" # evaluate expressions for recv packets + echo "tx $txpkts pkts/s - rx $rxpkts pkts/ on interface $int1 and $int2" +done + diff --git a/cicd/tcpkali/rmconfig.sh b/cicd/tcpkali/rmconfig.sh new file mode 100755 index 00000000..1d5243a0 --- /dev/null +++ b/cicd/tcpkali/rmconfig.sh @@ -0,0 +1,20 @@ +#!/bin/bash + +source ../common.sh + +disconnect_docker_hosts l3h1 llb1 +disconnect_docker_hosts l3h2 llb1 +disconnect_docker_hosts l3ep1 llb1 +disconnect_docker_hosts l3ep2 llb1 +disconnect_docker_hosts l3ep3 llb1 + +delete_docker_host llb1 +delete_docker_host l3h1 +delete_docker_host l3h2 +delete_docker_host l3ep1 +delete_docker_host l3ep2 +delete_docker_host l3ep3 + +echo "#########################################" +echo "Deleted testbed" +echo "#########################################" diff --git a/cicd/tcpkali/validation.sh b/cicd/tcpkali/validation.sh new file mode 100755 index 00000000..3c5e34ef --- /dev/null +++ b/cicd/tcpkali/validation.sh @@ -0,0 +1,84 @@ +#!/bin/bash +source ../common.sh +echo SCENARIO-tcpkali +$hexec l3ep1 node ../common/tcp_server.js server1 & +$hexec l3ep2 node ../common/tcp_server.js server2 & +$hexec l3ep3 node ../common/tcp_server.js server3 & + +conn=400 +time=100 + +stime=$(( $time + 10 )) +sleep 2 +code=0 +servIP="20.20.20.1" +servArr=( "server1" "server2" "server3" ) +ep=( "31.31.31.1" "32.32.32.1" "33.33.33.1" ) +host=( "l3h1" "l3h2" ) +i=0 +waitCount=0 +while [ $i -le 1 ] +do +j=0 +echo "Check connectivity from ${host[i]}" +while [ $j -le 2 ] +do + res=$($hexec ${host[i]} curl --max-time 10 -s ${ep[j]}:8080) + #echo $res + if [[ $res == "${servArr[j]}" ]] + then + echo "$res UP" + j=$(( $j + 1 )) + else + echo "Waiting for ${servArr[j]}(${ep[j]})" + waitCount=$(( $waitCount + 1 )) + if [[ $waitCount == 10 ]]; + then + echo "All Servers are not UP" + echo SCENARIO-tcpkali [FAILED] + sudo killall -9 node 2>&1 > /dev/null + exit 1 + fi + fi + sleep 1 +done +i=$(( $i + 1 )) +done + +sudo killall -9 node 2>&1 > /dev/null + +$hexec l3ep1 tcpkali -l 8080 -T $stime 2>&1> /dev/null & +$hexec l3ep2 tcpkali -l 8080 -T $stime 2>&1> /dev/null & +$hexec l3ep3 tcpkali -l 8080 -T $stime 2>&1> /dev/null & + +sleep 2 + +for k in {0..1} +do + echo "${host[k]}: Testing Service IP: $servIP" + lcode=0 + $hexec ${host[k]} stdbuf -oL tcpkali -c $conn -T $time -w 8 -m "message" -r 2000 $servIP:2020 2> ${host[k]}.log & +done + +#sleep $stime +$hexec llb1 ./pps.sh $time ellb1l3h1 ellb1l3h2 + +conn1=$( tail -n 2 l3h1.log | xargs | cut -d ' ' -f 11 | cut -d ')' -f 1 ) +conn2=$( tail -n 2 l3h2.log | xargs | cut -d ' ' -f 11 | cut -d ')' -f 1 ) + +if [[ $conn1 == $conn && $conn2 == $conn ]] +then + echo SCENARIO-tcpkali with ${servIP[k]} [OK] +else + echo SCENARIO-tcpkali with ${servIP[k]} [FAILED] + echo "l3h1 tcpkali" + tail -n 2 l3h1.log + echo "l3h2 tcpkali" + tail -n 2 l3h2.log + code=1 +fi + +rm l3h1.log l3h2.log + +#sudo killall -9 tcpkali 2>&1 > /dev/null +exit $code From c028fd58eb35c8f78eef8d0af673f51b78fd5394 Mon Sep 17 00:00:00 2001 From: Nikhil Malik Date: Wed, 28 Aug 2024 17:20:14 +0900 Subject: [PATCH 2/6] workflow file for tcpkali longrun --- .github/workflows/tcpkali-longrun.yml | 36 +++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 .github/workflows/tcpkali-longrun.yml diff --git a/.github/workflows/tcpkali-longrun.yml b/.github/workflows/tcpkali-longrun.yml new file mode 100644 index 00000000..155bf8a9 --- /dev/null +++ b/.github/workflows/tcpkali-longrun.yml @@ -0,0 +1,36 @@ +name: TCPKALI-Longrun-CI +on: + #schedule: + # Runs "At 13:00 UTC every day-of-week" + #- cron: '0 13 * * *' + workflow_dispatch: + inputs: + testName: + description: 'Test Run-Name' + required: true + default: 'tcpkali-longrun' +jobs: + test-runner: + name: tcpkali-longrun + runs-on: [self-hosted, nd4] + #if: github.repository == 'loxilb-io/loxilb' + # && github.event.inputs.tagName == '' + steps: + - name: Checkout + uses: actions/checkout@v2 + with: + submodules: recursive + + - name: Run the test + run: | + cd cicd/tcpkali + ./config.sh + ./validation.sh + cd - + + - name: Clean test-bed + if: success() || failure() + run: | + cd cicd/tcpkali || true + ./rmconfig.sh + cd - From 12f1f2263d26ba7ea0508ad804e9ae049e79eba7 Mon Sep 17 00:00:00 2001 From: Nikhil Malik <66406124+nik-netlox@users.noreply.github.com> Date: Wed, 28 Aug 2024 17:34:35 +0900 Subject: [PATCH 3/6] Update tcpkali-longrun.yml --- .github/workflows/tcpkali-longrun.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/tcpkali-longrun.yml b/.github/workflows/tcpkali-longrun.yml index 155bf8a9..b4bc6fea 100644 --- a/.github/workflows/tcpkali-longrun.yml +++ b/.github/workflows/tcpkali-longrun.yml @@ -12,7 +12,7 @@ on: jobs: test-runner: name: tcpkali-longrun - runs-on: [self-hosted, nd4] + runs-on: [self-hosted] #if: github.repository == 'loxilb-io/loxilb' # && github.event.inputs.tagName == '' steps: From 875261b193150c2dee754c84c30eee41cf1e75d9 Mon Sep 17 00:00:00 2001 From: Nikhil Malik Date: Wed, 28 Aug 2024 17:52:28 +0900 Subject: [PATCH 4/6] Workflow file updated for tcpkali longrun --- .github/workflows/tcpkali-longrun.yml | 6 +++--- cicd/tcpkali/validation.sh | 3 ++- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/.github/workflows/tcpkali-longrun.yml b/.github/workflows/tcpkali-longrun.yml index b4bc6fea..f0594871 100644 --- a/.github/workflows/tcpkali-longrun.yml +++ b/.github/workflows/tcpkali-longrun.yml @@ -12,9 +12,9 @@ on: jobs: test-runner: name: tcpkali-longrun - runs-on: [self-hosted] - #if: github.repository == 'loxilb-io/loxilb' - # && github.event.inputs.tagName == '' + runs-on: [self-hosted, sb] + if: github.repository == 'loxilb-io/loxilb' + && github.event.inputs.tagName == '' steps: - name: Checkout uses: actions/checkout@v2 diff --git a/cicd/tcpkali/validation.sh b/cicd/tcpkali/validation.sh index 3c5e34ef..ac286abb 100755 --- a/cicd/tcpkali/validation.sh +++ b/cicd/tcpkali/validation.sh @@ -6,7 +6,8 @@ $hexec l3ep2 node ../common/tcp_server.js server2 & $hexec l3ep3 node ../common/tcp_server.js server3 & conn=400 -time=100 + +time=14400 #4hrs stime=$(( $time + 10 )) sleep 2 From bdede42ba67d15493148149347fe3b27ee6e7331 Mon Sep 17 00:00:00 2001 From: Nikhil Malik Date: Wed, 28 Aug 2024 17:54:47 +0900 Subject: [PATCH 5/6] Changed display info --- cicd/tcpkali/validation.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cicd/tcpkali/validation.sh b/cicd/tcpkali/validation.sh index ac286abb..447b4e66 100755 --- a/cicd/tcpkali/validation.sh +++ b/cicd/tcpkali/validation.sh @@ -56,7 +56,7 @@ sleep 2 for k in {0..1} do - echo "${host[k]}: Testing Service IP: $servIP" + echo "${host[k]}: Testing Service IP: $servIP - connections: $conn duration: $time secs" lcode=0 $hexec ${host[k]} stdbuf -oL tcpkali -c $conn -T $time -w 8 -m "message" -r 2000 $servIP:2020 2> ${host[k]}.log & done From 1d4e3fe4baf1e52ce3ab0a30a35345de2d01787f Mon Sep 17 00:00:00 2001 From: Nikhil Malik <66406124+nik-netlox@users.noreply.github.com> Date: Thu, 29 Aug 2024 12:10:06 +0900 Subject: [PATCH 6/6] Update tcpkali-longrun.yml --- .github/workflows/tcpkali-longrun.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/tcpkali-longrun.yml b/.github/workflows/tcpkali-longrun.yml index f0594871..ff9eacc1 100644 --- a/.github/workflows/tcpkali-longrun.yml +++ b/.github/workflows/tcpkali-longrun.yml @@ -1,8 +1,8 @@ name: TCPKALI-Longrun-CI on: - #schedule: - # Runs "At 13:00 UTC every day-of-week" - #- cron: '0 13 * * *' + schedule: + # Runs "At 13:00 UTC every day-of-week" + - cron: '0 13 * * *' workflow_dispatch: inputs: testName: