Skip to content

Commit 11665e9

Browse files
committed
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 3bd98cd commit 11665e9

File tree

2 files changed

+144
-0
lines changed

2 files changed

+144
-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: 87 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,87 @@
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+
while [ "$SEARCH" != "/" ]; do
11+
if [ -f "$SEARCH/init_env" ]; then
12+
INIT_ENV="$SEARCH/init_env"
13+
break
14+
fi
15+
SEARCH=$(dirname "$SEARCH")
16+
done
17+
18+
if [ -z "$INIT_ENV" ]; then
19+
echo "[ERROR] Could not find init_env (starting at $SCRIPT_DIR)" >&2
20+
exit 1
21+
fi
22+
23+
# shellcheck disable=SC1090
24+
. "$INIT_ENV"
25+
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 "$TESTNAME FAIL" > "./$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+
log_info "Checking dependencies: ip, ping"
43+
check_dependencies ip ping
44+
45+
IFACE="eth0"
46+
MAX_RETRIES=3
47+
RETRY_DELAY=3
48+
49+
log_info "Validating interface $IFACE..."
50+
51+
# Check if interface exists
52+
if ! ip link show "$IFACE" >/dev/null 2>&1; then
53+
log_fail "Interface $IFACE not found"
54+
echo "$TESTNAME FAIL" > "$res_file"
55+
exit 1
56+
fi
57+
58+
# Try to bring interface up if not up
59+
if ! ip link show "$IFACE" | grep -q "state UP"; then
60+
log_warn "$IFACE is down, attempting to bring it up..."
61+
ip link set "$IFACE" up
62+
sleep "$RETRY_DELAY"
63+
if ! ip link show "$IFACE" | grep -q "state UP"; then
64+
log_fail "Failed to bring up $IFACE"
65+
echo "$TESTNAME FAIL" > "$res_file"
66+
exit 1
67+
fi
68+
fi
69+
70+
# Optional: Check if IP is assigned
71+
ip_addr=$(ip -4 addr show "$IFACE" | awk '/inet / {print $2}' | cut -d/ -f1)
72+
if [ -z "$ip_addr" ]; then
73+
log_warn "$IFACE has no IPv4 address assigned"
74+
fi
75+
76+
# Run ping test
77+
log_info "Pinging 8.8.8.8 from $IFACE..."
78+
if ping -I "$IFACE" -c 4 -W 2 8.8.8.8 >/dev/null 2>&1; then
79+
log_pass "Ethernet ping test succeeded"
80+
echo "$TESTNAME PASS" > "$res_file"
81+
exit 0
82+
else
83+
log_fail "Ethernet ping test failed"
84+
echo "$TESTNAME FAIL" > "$res_file"
85+
exit 1
86+
fi
87+

0 commit comments

Comments
 (0)