Skip to content

Commit 6fb04c5

Browse files
qcom-anilyadasmuppand
authored andcommitted
Adding Ethernet validation test case
This test validates the Ethernet interface (eth0) by checking its presence, bringing it up if necessary, and verifying connectivity via ping to 8.8.8.8. - Compliant with qcom-linux-testkit structure - Generates .res file for CI/CD - Uses functestlib logging and dependency checks Signed-off-by: Anil Yadav <[email protected]>
1 parent 1cacae4 commit 6fb04c5

File tree

2 files changed

+149
-0
lines changed

2 files changed

+149
-0
lines changed
Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries.
2+
SPDX-License-Identifier: BSD-3-Clause-Clear
3+
4+
# Ethernet Validation Test
5+
6+
## Overview
7+
8+
This test case validates the basic functionality of the Ethernet interface (`eth0`) on the device. It checks for:
9+
10+
- Interface presence
11+
- Interface status (UP/DOWN)
12+
- Basic connectivity via ping to `8.8.8.8`
13+
14+
## Usage
15+
16+
Instructions:
17+
18+
1. Copy repo to Target Device: Use scp to transfer the scripts from the host to the target device. The scripts should be copied to any directory on the target device.
19+
2. Verify Transfer: Ensure that the repo have been successfully copied to any directory on the target device.
20+
3. Run Scripts: Navigate to the directory where these files are copied on the target device and execute the scripts as needed.
21+
22+
Run a Connectivity Ethernet test using:
23+
---
24+
#### Quick Example
25+
```
26+
git clone <this-repo>
27+
cd <this-repo>
28+
scp -r common Runner user@target_device_ip:<Path in device>
29+
ssh user@target_device_ip
30+
cd <Path in device>/Runner && ./run-test.sh Ethernet
31+
```
32+
33+
## Prerequisites
34+
35+
- `ip` and `ping` must be available
36+
- Root access may be required for complete validation
37+
38+
## Result Format
39+
Test result will be saved in `Ethernet.res` as:
40+
#### Pass Criteria
41+
- Ethernet interface eth0 is detected
42+
- Interface is successfully brought up (if down)
43+
- Ping to 8.8.8.8 succeeds
44+
- `Ethernet connectivity verified` – if all validations pass
45+
<!-- -->
46+
#### Fail Criteria
47+
- Interface eth0 is not found
48+
- Interface cannot be brought up
49+
- Ping test fails
50+
- `Ethernet ping failed` – if any check fails
51+
52+
53+
## Output
54+
A .res file is generated in the same directory:
55+
56+
`PASS Ethernet` OR `FAIL Ethernet`
57+
Lines changed: 92 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,92 @@
1+
#!/bin/sh
2+
3+
#Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries.
4+
#SPDX-License-Identifier: BSD-3-Clause-Clear
5+
6+
# Source init_env and functestlib.sh
7+
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
8+
INIT_ENV=""
9+
SEARCH="$SCRIPT_DIR"
10+
11+
while [ "$SEARCH" != "/" ]; do
12+
if [ -f "$SEARCH/init_env" ]; then
13+
INIT_ENV="$SEARCH/init_env"
14+
break
15+
fi
16+
SEARCH=$(dirname "$SEARCH")
17+
done
18+
19+
if [ -z "$INIT_ENV" ]; then
20+
echo "[ERROR] Could not find init_env (starting at $SCRIPT_DIR)" >&2
21+
exit 1
22+
fi
23+
24+
# shellcheck disable=SC1090
25+
. "$INIT_ENV"
26+
# shellcheck disable=SC1090,SC1091
27+
. "$TOOLS/functestlib.sh"
28+
29+
TESTNAME="Ethernet"
30+
test_path=$(find_test_case_by_name "$TESTNAME") || {
31+
log_fail "$TESTNAME : Test directory not found."
32+
echo "FAIL $TESTNAME" > "./$TESTNAME.res"
33+
exit 1
34+
}
35+
36+
cd "$test_path" || exit 1
37+
res_file="./$TESTNAME.res"
38+
rm -f "$res_file"
39+
40+
log_info "--------------------------------------------------------------------------"
41+
log_info "-------------------Starting $TESTNAME Testcase----------------------------"
42+
43+
check_dependencies ip ping
44+
45+
IFACE="eth0"
46+
RETRIES=3
47+
SLEEP_SEC=3
48+
49+
# Check interface existence
50+
if ! ip link show "$IFACE" >/dev/null 2>&1; then
51+
log_fail "Ethernet interface $IFACE not found"
52+
echo "FAIL $TESTNAME" > "$res_file"
53+
exit 1
54+
fi
55+
56+
# Bring up interface with retries
57+
log_info "Ensuring $IFACE is UP..."
58+
i=0
59+
while [ $i -lt $RETRIES ]; do
60+
ip link set "$IFACE" up
61+
sleep "$SLEEP_SEC"
62+
if ip link show "$IFACE" | grep -q "state UP"; then
63+
log_info "$IFACE is UP"
64+
break
65+
fi
66+
log_warn "$IFACE is still DOWN (attempt $((i + 1))/$RETRIES)..."
67+
i=$((i + 1))
68+
done
69+
70+
if [ $i -eq $RETRIES ]; then
71+
log_fail "Failed to bring up $IFACE after $RETRIES attempts"
72+
echo "FAIL $TESTNAME" > "$res_file"
73+
exit 1
74+
fi
75+
76+
# Ping test with retries
77+
log_info "Running ping test to 8.8.8.8 via $IFACE..."
78+
i=0
79+
while [ $i -lt $RETRIES ]; do
80+
if ping -I "$IFACE" -c 4 -W 2 8.8.8.8 >/dev/null 2>&1; then
81+
log_pass "Ethernet connectivity verified via ping"
82+
echo "PASS $TESTNAME" > "$res_file"
83+
exit 0
84+
fi
85+
log_warn "Ping failed (attempt $((i + 1))/$RETRIES)... retrying"
86+
sleep "$SLEEP_SEC"
87+
i=$((i + 1))
88+
done
89+
90+
log_fail "Ping test failed after $RETRIES attempts"
91+
echo "FAIL $TESTNAME" > "$res_file"
92+
exit 1

0 commit comments

Comments
 (0)