Skip to content
This repository was archived by the owner on May 6, 2026. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .github/workflows/e2e.yml
Original file line number Diff line number Diff line change
Expand Up @@ -137,8 +137,8 @@ jobs:
- name: Run smoke test
run: |
cat examples/add_dummy_iface.sh | docker exec -i kind-worker bash
/usr/local/bin/kubectl apply -f examples/deviceclass.yaml
/usr/local/bin/kubectl apply -f examples/resourceclaim.yaml
/usr/local/bin/kubectl apply -f tests/manifests/deviceclass.yaml
/usr/local/bin/kubectl apply -f tests/manifests/resourceclaim.yaml
/usr/local/bin/kubectl wait --timeout=2m --for=condition=ready pods -l app=pod
/usr/local/bin/kubectl exec -it pod1 -- ip link show eth99

Expand Down
66 changes: 33 additions & 33 deletions tests/e2e.bats
Original file line number Diff line number Diff line change
Expand Up @@ -31,8 +31,8 @@ setup_tcx_filter() {
docker exec "$CLUSTER_NAME"-worker bash -c "ip link add dummy0 type dummy"
docker exec "$CLUSTER_NAME"-worker bash -c "ip link set up dev dummy0"

kubectl apply -f "$BATS_TEST_DIRNAME"/../examples/deviceclass.yaml
kubectl apply -f "$BATS_TEST_DIRNAME"/../examples/resourceclaim.yaml
kubectl apply -f "$BATS_TEST_DIRNAME"/../tests/manifests/deviceclass.yaml
kubectl apply -f "$BATS_TEST_DIRNAME"/../tests/manifests/resourceclaim.yaml
kubectl wait --timeout=30s --for=condition=ready pods -l app=pod
run kubectl exec pod1 -- ip addr show eth99
assert_success
Expand All @@ -41,17 +41,17 @@ setup_tcx_filter() {
assert_success
assert_output --partial "169.254.169.13"

kubectl delete -f "$BATS_TEST_DIRNAME"/../examples/deviceclass.yaml
kubectl delete -f "$BATS_TEST_DIRNAME"/../examples/resourceclaim.yaml
kubectl delete -f "$BATS_TEST_DIRNAME"/../tests/manifests/deviceclass.yaml
kubectl delete -f "$BATS_TEST_DIRNAME"/../tests/manifests/resourceclaim.yaml
}


@test "dummy interface with IP addresses ResourceClaim and normalized name" {
docker exec "$CLUSTER_NAME"-worker bash -c "ip link add mlx5_6 type dummy"
docker exec "$CLUSTER_NAME"-worker bash -c "ip link set up dev mlx5_6"

kubectl apply -f "$BATS_TEST_DIRNAME"/../examples/deviceclass.yaml
kubectl apply -f "$BATS_TEST_DIRNAME"/../examples/resourceclaim.yaml
kubectl apply -f "$BATS_TEST_DIRNAME"/../tests/manifests/deviceclass.yaml
kubectl apply -f "$BATS_TEST_DIRNAME"/../tests/manifests/resourceclaim.yaml
kubectl wait --timeout=30s --for=condition=ready pods -l app=pod
run kubectl exec pod1 -- ip addr show eth99
assert_success
Expand All @@ -60,15 +60,15 @@ setup_tcx_filter() {
assert_success
assert_output --partial "169.254.169.13"

kubectl delete -f "$BATS_TEST_DIRNAME"/../examples/deviceclass.yaml
kubectl delete -f "$BATS_TEST_DIRNAME"/../examples/resourceclaim.yaml
kubectl delete -f "$BATS_TEST_DIRNAME"/../tests/manifests/deviceclass.yaml
kubectl delete -f "$BATS_TEST_DIRNAME"/../tests/manifests/resourceclaim.yaml
}

@test "dummy interface with IP addresses ResourceClaimTemplate" {
docker exec "$CLUSTER_NAME"-worker2 bash -c "ip link add dummy0 type dummy"
docker exec "$CLUSTER_NAME"-worker2 bash -c "ip addr add 169.254.169.14/32 dev dummy0"

kubectl apply -f "$BATS_TEST_DIRNAME"/../examples/resourceclaimtemplate.yaml
kubectl apply -f "$BATS_TEST_DIRNAME"/../tests/manifests/resourceclaimtemplate.yaml
kubectl wait --timeout=30s --for=condition=ready pods -l app=MyApp
POD_NAME=$(kubectl get pods -l app=MyApp -o name)
run kubectl exec $POD_NAME -- ip addr show dummy0
Expand All @@ -79,15 +79,15 @@ setup_tcx_filter() {
assert_success
assert_output --partial "169.254.169.14"

kubectl delete -f "$BATS_TEST_DIRNAME"/../examples/resourceclaimtemplate.yaml
kubectl delete -f "$BATS_TEST_DIRNAME"/../tests/manifests/resourceclaimtemplate.yaml
}

@test "dummy interface with IP addresses ResourceClaim and routes" {
docker exec "$CLUSTER_NAME"-worker bash -c "ip link add dummy0 type dummy"
docker exec "$CLUSTER_NAME"-worker bash -c "ip link set up dev dummy0"

kubectl apply -f "$BATS_TEST_DIRNAME"/../examples/deviceclass.yaml
kubectl apply -f "$BATS_TEST_DIRNAME"/../examples/resourceclaim_route.yaml
kubectl apply -f "$BATS_TEST_DIRNAME"/../tests/manifests/deviceclass.yaml
kubectl apply -f "$BATS_TEST_DIRNAME"/../tests/manifests/resourceclaim_route.yaml
kubectl wait --timeout=30s --for=condition=ready pods -l app=pod
run kubectl exec pod3 -- ip addr show eth99
assert_success
Expand All @@ -101,8 +101,8 @@ setup_tcx_filter() {
assert_success
assert_output --partial "169.254.169.1"

kubectl delete -f "$BATS_TEST_DIRNAME"/../examples/deviceclass.yaml
kubectl delete -f "$BATS_TEST_DIRNAME"/../examples/resourceclaim_route.yaml
kubectl delete -f "$BATS_TEST_DIRNAME"/../tests/manifests/deviceclass.yaml
kubectl delete -f "$BATS_TEST_DIRNAME"/../tests/manifests/resourceclaim_route.yaml
}


Expand All @@ -122,8 +122,8 @@ setup_tcx_filter() {
docker exec "$CLUSTER_NAME"-worker bash -c "ip link add dummy0 type dummy"
docker exec "$CLUSTER_NAME"-worker bash -c "ip link set up dev dummy0"

kubectl apply -f "$BATS_TEST_DIRNAME"/../examples/deviceclass.yaml
kubectl apply -f "$BATS_TEST_DIRNAME"/../examples/resourceclaim_advanced.yaml
kubectl apply -f "$BATS_TEST_DIRNAME"/../tests/manifests/deviceclass.yaml
kubectl apply -f "$BATS_TEST_DIRNAME"/../tests/manifests/resourceclaim_advanced.yaml

# Wait for the pod to become ready
kubectl wait --for=condition=ready pod/pod-advanced-cfg --timeout=30s
Expand All @@ -143,17 +143,17 @@ setup_tcx_filter() {
assert_output --partial "large-receive-offload: off"

# Cleanup the resources for this test
kubectl delete -f "$BATS_TEST_DIRNAME"/../examples/resourceclaim_advanced.yaml
kubectl delete -f "$BATS_TEST_DIRNAME"/../examples/deviceclass.yaml
kubectl delete -f "$BATS_TEST_DIRNAME"/../tests/manifests/resourceclaim_advanced.yaml
kubectl delete -f "$BATS_TEST_DIRNAME"/../tests/manifests/deviceclass.yaml
}

# Test case for validating Big TCP configurations.
@test "validate big tcp network configurations on dummy interface" {
docker exec "$CLUSTER_NAME"-worker2 bash -c "ip link add dummy0 type dummy"
docker exec "$CLUSTER_NAME"-worker2 bash -c "ip link set up dev dummy0"

kubectl apply -f "$BATS_TEST_DIRNAME"/../examples/deviceclass.yaml
kubectl apply -f "$BATS_TEST_DIRNAME"/../examples/resourceclaim_bigtcp.yaml
kubectl apply -f "$BATS_TEST_DIRNAME"/../tests/manifests/deviceclass.yaml
kubectl apply -f "$BATS_TEST_DIRNAME"/../tests/manifests/resourceclaim_bigtcp.yaml
kubectl wait --for=condition=ready pod/pod-bigtcp-test --timeout=300s

run kubectl exec pod-bigtcp-test -- ip -d link show dranet1
Expand All @@ -172,8 +172,8 @@ setup_tcx_filter() {
assert_output --partial "large-receive-offload: off"

# Cleanup the resources for this test
kubectl delete -f "$BATS_TEST_DIRNAME"/../examples/resourceclaim_bigtcp.yaml
kubectl delete -f "$BATS_TEST_DIRNAME"/../examples/deviceclass.yaml
kubectl delete -f "$BATS_TEST_DIRNAME"/../tests/manifests/resourceclaim_bigtcp.yaml
kubectl delete -f "$BATS_TEST_DIRNAME"/../tests/manifests/deviceclass.yaml
}


Expand Down Expand Up @@ -234,8 +234,8 @@ setup_tcx_filter() {

setup_tcx_filter

kubectl apply -f "$BATS_TEST_DIRNAME"/../examples/deviceclass.yaml
kubectl apply -f "$BATS_TEST_DIRNAME"/../examples/resourceclaim_disable_ebpf.yaml
kubectl apply -f "$BATS_TEST_DIRNAME"/../tests/manifests/deviceclass.yaml
kubectl apply -f "$BATS_TEST_DIRNAME"/../tests/manifests/resourceclaim_disable_ebpf.yaml
kubectl wait --for=condition=ready pod/pod-ebpf --timeout=300s

run kubectl exec pod-ebpf -- ash -c "curl --connect-timeout 5 --retry 3 -L https://github.com/libbpf/bpftool/releases/download/v7.5.0/bpftool-v7.5.0-amd64.tar.gz | tar -xz && chmod +x bpftool"
Expand All @@ -246,8 +246,8 @@ setup_tcx_filter() {
refute_output --partial "tcx/ingress handle_ingress prog_id"
refute_output --partial "dummy_bpf.o:[classifier]"

kubectl delete -f "$BATS_TEST_DIRNAME"/../examples/resourceclaim_disable_ebpf.yaml
kubectl delete -f "$BATS_TEST_DIRNAME"/../examples/deviceclass.yaml
kubectl delete -f "$BATS_TEST_DIRNAME"/../tests/manifests/resourceclaim_disable_ebpf.yaml
kubectl delete -f "$BATS_TEST_DIRNAME"/../tests/manifests/deviceclass.yaml
# Unpin the bpf program
docker exec "$CLUSTER_NAME"-worker2 bash -c "rm -Rf /sys/fs/bpf/dummy_prog_tcx"
}
Expand All @@ -262,8 +262,8 @@ setup_tcx_filter() {
docker exec "$CLUSTER_NAME"-worker bash -c "ip link set up dev dummy1"
docker exec "$CLUSTER_NAME"-worker bash -c "ip addr add 169.254.169.14/32 dev dummy1"

kubectl apply -f "$BATS_TEST_DIRNAME"/../examples/deviceclass.yaml
kubectl apply -f "$BATS_TEST_DIRNAME"/../examples/resourceclaimtemplate_double.yaml
kubectl apply -f "$BATS_TEST_DIRNAME"/../tests/manifests/deviceclass.yaml
kubectl apply -f "$BATS_TEST_DIRNAME"/../tests/manifests/resourceclaimtemplate_double.yaml
kubectl wait --timeout=30s --for=condition=ready pods -l app=MyApp
POD_NAME=$(kubectl get pods -l app=MyApp -o name)
run kubectl exec $POD_NAME -- ip addr show dummy0
Expand All @@ -277,8 +277,8 @@ setup_tcx_filter() {
assert_output --partial "169.254.169.13"
assert_output --partial "169.254.169.14"

kubectl delete -f "$BATS_TEST_DIRNAME"/../examples/deviceclass.yaml
kubectl delete -f "$BATS_TEST_DIRNAME"/../examples/resourceclaimtemplate_double.yaml
kubectl delete -f "$BATS_TEST_DIRNAME"/../tests/manifests/deviceclass.yaml
kubectl delete -f "$BATS_TEST_DIRNAME"/../tests/manifests/resourceclaimtemplate_double.yaml
}

@test "reapply pod with dummy resource claim" {
Expand All @@ -287,7 +287,7 @@ setup_tcx_filter() {
docker exec "$CLUSTER_NAME"-worker bash -c "ip addr add 169.254.169.14/32 dev dummy8"

# Apply the resource claim template and deployment
kubectl apply -f "$BATS_TEST_DIRNAME"/../examples/repeatresourceclaimtemplate.yaml
kubectl apply -f "$BATS_TEST_DIRNAME"/../tests/manifests/repeatresourceclaimtemplate.yaml
kubectl wait --timeout=30s --for=condition=ready pods -l app=reapplyApp
POD_NAME=$(kubectl get pods -l app=reapplyApp -o name)
run kubectl exec $POD_NAME -- ip addr show dummy8
Expand All @@ -307,7 +307,7 @@ setup_tcx_filter() {
docker exec "$CLUSTER_NAME"-worker bash -c "ip addr add 169.254.169.14/32 dev dummy8"

# Reapply the deployment, should reclaim the device
kubectl apply -f "$BATS_TEST_DIRNAME"/../examples/repeatresourceclaimtemplate.yaml
kubectl apply -f "$BATS_TEST_DIRNAME"/../tests/manifests/repeatresourceclaimtemplate.yaml
kubectl wait --timeout=30s --for=condition=ready pods -l app=reapplyApp
POD_NAME=$(kubectl get pods -l app=reapplyApp -o name)
run kubectl exec $POD_NAME -- ip addr show dummy8
Expand All @@ -318,7 +318,7 @@ setup_tcx_filter() {
assert_success
assert_output --partial "169.254.169.14"

kubectl delete -f "$BATS_TEST_DIRNAME"/../examples/repeatresourceclaimtemplate.yaml
kubectl delete -f "$BATS_TEST_DIRNAME"/../tests/manifests/repeatresourceclaimtemplate.yaml
}

@test "driver should gracefully shutdown when terminated" {
Expand Down
Loading