mirror of
https://github.com/krkn-chaos/krkn.git
synced 2026-02-14 18:10:00 +00:00
added pod-network-filter funtest (#863)
Some checks failed
Functional & Unit Tests / Functional & Unit Tests (push) Failing after 9m37s
Functional & Unit Tests / Generate Coverage Badge (push) Has been skipped
Some checks failed
Functional & Unit Tests / Functional & Unit Tests (push) Failing after 9m37s
Functional & Unit Tests / Generate Coverage Badge (push) Has been skipped
* added pod-network-filter funtest Signed-off-by: Tullio Sebastiani <tsebasti@redhat.com> * updated kind settings Signed-off-by: Tullio Sebastiani <tsebasti@redhat.com> --------- Signed-off-by: Tullio Sebastiani <tsebasti@redhat.com>
This commit is contained in:
committed by
GitHub
parent
0731144a6b
commit
70c8fec705
2
.github/workflows/tests.yml
vendored
2
.github/workflows/tests.yml
vendored
@@ -89,6 +89,7 @@ jobs:
|
|||||||
echo "test_cpu_hog" >> ./CI/tests/functional_tests
|
echo "test_cpu_hog" >> ./CI/tests/functional_tests
|
||||||
echo "test_memory_hog" >> ./CI/tests/functional_tests
|
echo "test_memory_hog" >> ./CI/tests/functional_tests
|
||||||
echo "test_io_hog" >> ./CI/tests/functional_tests
|
echo "test_io_hog" >> ./CI/tests/functional_tests
|
||||||
|
echo "test_pod_network_filter" >> ./CI/tests/functional_tests
|
||||||
|
|
||||||
|
|
||||||
# Push on main only steps + all other functional to collect coverage
|
# Push on main only steps + all other functional to collect coverage
|
||||||
@@ -119,6 +120,7 @@ jobs:
|
|||||||
echo "test_cpu_hog" >> ./CI/tests/functional_tests
|
echo "test_cpu_hog" >> ./CI/tests/functional_tests
|
||||||
echo "test_memory_hog" >> ./CI/tests/functional_tests
|
echo "test_memory_hog" >> ./CI/tests/functional_tests
|
||||||
echo "test_io_hog" >> ./CI/tests/functional_tests
|
echo "test_io_hog" >> ./CI/tests/functional_tests
|
||||||
|
echo "test_pod_network_filter" >> ./CI/tests/functional_tests
|
||||||
|
|
||||||
# Final common steps
|
# Final common steps
|
||||||
- name: Run Functional tests
|
- name: Run Functional tests
|
||||||
|
|||||||
29
CI/templates/pod_network_filter.yaml
Normal file
29
CI/templates/pod_network_filter.yaml
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
apiVersion: v1
|
||||||
|
kind: Pod
|
||||||
|
metadata:
|
||||||
|
name: pod-network-filter-test
|
||||||
|
labels:
|
||||||
|
app.kubernetes.io/name: pod-network-filter
|
||||||
|
spec:
|
||||||
|
containers:
|
||||||
|
- name: nginx
|
||||||
|
image: quay.io/krkn-chaos/krkn-funtests:pod-network-filter
|
||||||
|
ports:
|
||||||
|
- containerPort: 5000
|
||||||
|
name: pod-network-prt
|
||||||
|
|
||||||
|
---
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
name: pod-network-filter-service
|
||||||
|
spec:
|
||||||
|
selector:
|
||||||
|
app.kubernetes.io/name: pod-network-filter
|
||||||
|
type: NodePort
|
||||||
|
ports:
|
||||||
|
- name: pod-network-filter-svc
|
||||||
|
protocol: TCP
|
||||||
|
port: 80
|
||||||
|
targetPort: pod-network-prt
|
||||||
|
nodePort: 30037
|
||||||
59
CI/tests/test_pod_network_filter.sh
Executable file
59
CI/tests/test_pod_network_filter.sh
Executable file
@@ -0,0 +1,59 @@
|
|||||||
|
function functional_pod_network_filter {
|
||||||
|
export SERVICE_URL="http://localhost:8889"
|
||||||
|
export scenario_type="network_chaos_ng_scenarios"
|
||||||
|
export scenario_file="scenarios/kube/pod-network-filter.yml"
|
||||||
|
export post_config=""
|
||||||
|
envsubst < CI/config/common_test_config.yaml > CI/config/pod_network_filter.yaml
|
||||||
|
yq -i '.[0].test_duration=10' scenarios/kube/pod-network-filter.yml
|
||||||
|
yq -i '.[0].label_selector=""' scenarios/kube/pod-network-filter.yml
|
||||||
|
yq -i '.[0].ingress=false' scenarios/kube/pod-network-filter.yml
|
||||||
|
yq -i '.[0].egress=true' scenarios/kube/pod-network-filter.yml
|
||||||
|
yq -i '.[0].target="pod-network-filter-test"' scenarios/kube/pod-network-filter.yml
|
||||||
|
yq -i '.[0].protocols=["tcp"]' scenarios/kube/pod-network-filter.yml
|
||||||
|
yq -i '.[0].ports=[443]' scenarios/kube/pod-network-filter.yml
|
||||||
|
|
||||||
|
|
||||||
|
## Test webservice deployment
|
||||||
|
kubectl apply -f ./CI/templates/pod_network_filter.yaml
|
||||||
|
COUNTER=0
|
||||||
|
while true
|
||||||
|
do
|
||||||
|
curl $SERVICE_URL
|
||||||
|
EXITSTATUS=$?
|
||||||
|
if [ "$EXITSTATUS" -eq "0" ]
|
||||||
|
then
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
sleep 1
|
||||||
|
COUNTER=$((COUNTER+1))
|
||||||
|
[ $COUNTER -eq "100" ] && echo "maximum number of retry reached, test failed" && exit 1
|
||||||
|
done
|
||||||
|
|
||||||
|
python3 -m coverage run -a run_kraken.py -c CI/config/pod_network_filter.yaml > /dev/null 2>&1 &
|
||||||
|
PID=$!
|
||||||
|
|
||||||
|
# wait until the dns resolution starts failing and the service returns 400
|
||||||
|
DNS_FAILURE_STATUS=0
|
||||||
|
while true
|
||||||
|
do
|
||||||
|
OUT_STATUS_CODE=$(curl -X GET -s -o /dev/null -I -w "%{http_code}" $SERVICE_URL)
|
||||||
|
if [ "$OUT_STATUS_CODE" -eq "404" ]
|
||||||
|
then
|
||||||
|
DNS_FAILURE_STATUS=404
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$DNS_FAILURE_STATUS" -eq "404" ] && [ "$OUT_STATUS_CODE" -eq "200" ]
|
||||||
|
then
|
||||||
|
echo "service restored"
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
COUNTER=$((COUNTER+1))
|
||||||
|
[ $COUNTER -eq "100" ] && echo "maximum number of retry reached, test failed" && exit 1
|
||||||
|
sleep 2
|
||||||
|
done
|
||||||
|
|
||||||
|
wait $PID
|
||||||
|
}
|
||||||
|
|
||||||
|
functional_pod_network_filter
|
||||||
|
|
||||||
@@ -5,6 +5,8 @@ nodes:
|
|||||||
extraPortMappings:
|
extraPortMappings:
|
||||||
- containerPort: 30036
|
- containerPort: 30036
|
||||||
hostPort: 8888
|
hostPort: 8888
|
||||||
|
- containerPort: 30037
|
||||||
|
hostPort: 8889
|
||||||
- role: control-plane
|
- role: control-plane
|
||||||
- role: control-plane
|
- role: control-plane
|
||||||
- role: worker
|
- role: worker
|
||||||
|
|||||||
Reference in New Issue
Block a user