Skip to content

Commit 3cadc86

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 1e62cf8 commit 3cadc86

File tree

2 files changed

+139
-0
lines changed

2 files changed

+139
-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: 82 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,82 @@
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 "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+
log_info "Checking if dependency: ip and ping is available"
44+
check_dependencies ip ping
45+
46+
log_info "Starting Ethernet test..."
47+
48+
IFACE="eth0"
49+
50+
# Check interface existence
51+
if ! ip link show "$IFACE" >/dev/null 2>&1; then
52+
log_fail "Ethernet interface $IFACE not found"
53+
echo "FAIL $TESTNAME" > "$res_file"
54+
exit 1
55+
fi
56+
57+
# Check if interface is up
58+
if ! ip link show "$IFACE" | grep -q "state UP"; then
59+
log_warn "Interface $IFACE is down, attempting to bring it up..."
60+
ip link set "$IFACE" up
61+
sleep 3
62+
if ! ip link show "$IFACE" | grep -q "state UP"; then
63+
log_fail "Failed to bring up $IFACE"
64+
echo "FAIL $TESTNAME" > "$res_file"
65+
exit 1
66+
fi
67+
fi
68+
69+
# Ping test
70+
log_info "Running ping test to 8.8.8.8..."
71+
if ping -I "$IFACE" -c 4 -W 2 8.8.8.8 >/dev/null 2>&1; then
72+
log_pass "Ethernet connectivity verified"
73+
echo "PASS $TESTNAME" > "$res_file"
74+
else
75+
log_fail "Ethernet ping failed"
76+
echo "FAIL $TESTNAME" > "$res_file"
77+
exit 1
78+
fi
79+
80+
log_info "-------------------Completed $TESTNAME Testcase----------------------------"
81+
82+

0 commit comments

Comments
 (0)