|
1 | 1 | #!/bin/sh |
2 | | - |
3 | 2 | # Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. |
4 | 3 | # SPDX-License-Identifier: BSD-3-Clause-Clear |
5 | 4 |
|
@@ -33,42 +32,106 @@ TESTNAME="WiFi_Dynamic_IP" |
33 | 32 | test_path=$(find_test_case_by_name "$TESTNAME") |
34 | 33 | cd "$test_path" || exit 1 |
35 | 34 |
|
| 35 | +# ---------------- CLI (SSID/PASSWORD) ---------------- |
| 36 | +SSID="" |
| 37 | +PASSWORD="" |
| 38 | + |
| 39 | +while [ $# -gt 0 ]; do |
| 40 | + case "$1" in |
| 41 | + --ssid) |
| 42 | + shift |
| 43 | + if [ -n "${1:-}" ]; then |
| 44 | + SSID="$1" |
| 45 | + fi |
| 46 | + ;; |
| 47 | + --password) |
| 48 | + shift |
| 49 | + if [ -n "${1:-}" ]; then |
| 50 | + PASSWORD="$1" |
| 51 | + fi |
| 52 | + ;; |
| 53 | + --help|-h) |
| 54 | + echo "Usage: $0 [--ssid SSID] [--password PASS]" |
| 55 | + exit 0 |
| 56 | + ;; |
| 57 | + *) |
| 58 | + log_warn "Unknown argument: $1" |
| 59 | + ;; |
| 60 | + esac |
| 61 | + shift |
| 62 | +done |
| 63 | + |
36 | 64 | log_info "-------------------------------------------------------------" |
37 | 65 | log_info "------------------- Starting $TESTNAME Test -----------------" |
| 66 | +log_info "Host: $(hostname 2>/dev/null || printf 'unknown')" |
| 67 | +log_info "Kernel: $(uname -r 2>/dev/null || printf 'unknown')" |
| 68 | +log_info "Date: $(date -u 2>/dev/null || printf 'unknown')" |
38 | 69 |
|
39 | 70 | # Credential extraction |
40 | | -creds=$(get_wifi_credentials "$1" "$2") || log_skip_exit "$TESTNAME" "WiFi: SSID and/or password missing. Skipping test." wifi_cleanup "" |
| 71 | +creds=$(get_wifi_credentials "$SSID" "$PASSWORD") || \ |
| 72 | + log_skip_exit "$TESTNAME" "WiFi: SSID and/or password missing. Skipping test." wifi_cleanup "" |
| 73 | + |
41 | 74 | SSID=$(echo "$creds" | awk '{print $1}') |
42 | 75 | PASSWORD=$(echo "$creds" | awk '{print $2}') |
| 76 | + |
43 | 77 | log_info "Using SSID='$SSID' and PASSWORD='[hidden]'" |
44 | 78 |
|
45 | 79 | check_dependencies iw ping |
46 | 80 |
|
47 | 81 | # If not a kernel-only/minimal build, systemd is checked, else skipped automatically |
48 | | -check_systemd_services systemd-networkd.service || log_fail_exit "$TESTNAME" "Network services check failed" wifi_cleanup "" |
| 82 | +log_info "Checking network service: systemd-networkd.service" |
| 83 | +check_systemd_services systemd-networkd.service || \ |
| 84 | + log_fail_exit "$TESTNAME" "Network services check failed" wifi_cleanup "" |
| 85 | + |
| 86 | +WIFI_IFACE=$(get_wifi_interface) || \ |
| 87 | + log_fail_exit "$TESTNAME" "No WiFi interface found" wifi_cleanup "" |
49 | 88 |
|
50 | | -WIFI_IFACE=$(get_wifi_interface) || log_fail_exit "$TESTNAME" "No WiFi interface found" wifi_cleanup "" |
51 | 89 | log_info "Using WiFi interface: $WIFI_IFACE" |
52 | 90 |
|
| 91 | +# Prepare a ping log file for command output (appended across retries) |
| 92 | +PING_LOG="./wifi_ping_${WIFI_IFACE}.log" |
| 93 | +: > "$PING_LOG" |
| 94 | +log_info "Ping output will be logged to: $PING_LOG" |
| 95 | + |
53 | 96 | # nmcli with retry |
| 97 | +log_info "Attempting connection via nmcli…" |
54 | 98 | if wifi_connect_nmcli "$WIFI_IFACE" "$SSID" "$PASSWORD"; then |
55 | 99 | IP=$(wifi_get_ip "$WIFI_IFACE") |
56 | | - [ -z "$IP" ] && log_fail_exit "$TESTNAME" "No IP after nmcli" wifi_cleanup "$WIFI_IFACE" |
57 | | - if retry_command "ping -I \"$WIFI_IFACE\" -c 3 -W 2 8.8.8.8 >/dev/null 2>&1" 3 3; then |
58 | | - log_pass_exit "$TESTNAME" "Internet connectivity verified via ping" wifi_cleanup "$WIFI_IFACE" |
| 100 | + |
| 101 | + if [ -z "$IP" ]; then |
| 102 | + log_fail_exit "$TESTNAME" "No IP after nmcli" wifi_cleanup "$WIFI_IFACE" |
| 103 | + fi |
| 104 | + |
| 105 | + log_info "Acquired IP via nmcli: $IP" |
| 106 | + |
| 107 | + PING_CMD="ping -I \"$WIFI_IFACE\" -c 3 -W 2 8.8.8.8 2>&1 | tee -a \"$PING_LOG\"" |
| 108 | + log_info "Connectivity check command: $PING_CMD" |
| 109 | + |
| 110 | + if retry_command "$PING_CMD" 3 3; then |
| 111 | + log_pass_exit "$TESTNAME" "Internet connectivity verified via ping (iface=$WIFI_IFACE ip=$IP)" wifi_cleanup "$WIFI_IFACE" |
59 | 112 | else |
60 | | - log_fail_exit "$TESTNAME" "Ping test failed after nmcli connection" wifi_cleanup "$WIFI_IFACE" |
| 113 | + log_fail_exit "$TESTNAME" "Ping test failed after nmcli connection (iface=$WIFI_IFACE ip=$IP). See $PING_LOG" wifi_cleanup "$WIFI_IFACE" |
61 | 114 | fi |
62 | 115 | fi |
63 | 116 |
|
64 | 117 | # wpa_supplicant+udhcpc with retry |
| 118 | +log_info "Attempting connection via wpa_supplicant + udhcpc…" |
65 | 119 | if wifi_connect_wpa_supplicant "$WIFI_IFACE" "$SSID" "$PASSWORD"; then |
66 | 120 | IP=$(wifi_get_ip "$WIFI_IFACE") |
67 | | - [ -z "$IP" ] && log_fail_exit "$TESTNAME" "No IP after wpa_supplicant" wifi_cleanup "$WIFI_IFACE" |
68 | | - if retry_command "ping -I \"$WIFI_IFACE\" -c 3 -W 2 8.8.8.8 >/dev/null 2>&1" 3 3; then |
69 | | - log_pass_exit "$TESTNAME" "Internet connectivity verified via ping" wifi_cleanup "$WIFI_IFACE" |
| 121 | + |
| 122 | + if [ -z "$IP" ]; then |
| 123 | + log_fail_exit "$TESTNAME" "No IP after wpa_supplicant" wifi_cleanup "$WIFI_IFACE" |
| 124 | + fi |
| 125 | + |
| 126 | + log_info "Acquired IP via wpa_supplicant: $IP" |
| 127 | + |
| 128 | + PING_CMD="ping -I \"$WIFI_IFACE\" -c 3 -W 2 8.8.8.8 2>&1 | tee -a \"$PING_LOG\"" |
| 129 | + log_info "Connectivity check command: $PING_CMD" |
| 130 | + |
| 131 | + if retry_command "$PING_CMD" 3 3; then |
| 132 | + log_pass_exit "$TESTNAME" "Internet connectivity verified via ping (iface=$WIFI_IFACE ip=$IP)" wifi_cleanup "$WIFI_IFACE" |
70 | 133 | else |
71 | | - log_fail_exit "$TESTNAME" "Ping test failed after wpa_supplicant connection" wifi_cleanup "$WIFI_IFACE" |
| 134 | + log_fail_exit "$TESTNAME" "Ping test failed after wpa_supplicant connection (iface=$WIFI_IFACE ip=$IP). See $PING_LOG" wifi_cleanup "$WIFI_IFACE" |
72 | 135 | fi |
73 | 136 | fi |
74 | 137 |
|
|
0 commit comments