This was found during smoketesting as thoase started to repeadingly fail in the last weeks
out: DEBUG - ====================================================================== out: DEBUG - FAIL: test_wireless_security_station_address (__main__.WirelessInterfaceTest.test_wireless_security_station_address) out: DEBUG - ---------------------------------------------------------------------- out: DEBUG - Traceback (most recent call last): out: DEBUG - File "/usr/libexec/vyos/tests/smoke/cli/test_interfaces_wireless.py", line 534, in test_wireless_security_station_address out: DEBUG - self.assertTrue(process_named_running('hostapd')) out: DEBUG - AssertionError: None is not true out: DEBUG - out: DEBUG - ---------------------------------------------------------------------- out: DEBUG - Ran 31 tests in 219.465s
Digging into this revealed that this is NOT related to the smoketest coding but to hostapd/systemd instead.
With a configured WIFI interface and calling sudo systemctl reload-or-restart hostapd@wlan1 multiple times in a short period caused systemd to report: Jul 18 16:15:32 systemd[1]: hostapd@wlan1.service: Deactivated successfully.
According to the internal systemd logic used in our version this is explained by:
/* If there's a stop job queued before we enter the DEAD state, we shouldn't act on Restart=, in order to not * undo what has already been enqueued. */ if (unit_stop_pending(UNIT(s))) allow_restart = false; if (s->result == SERVICE_SUCCESS) s->result = f; if (s->result == SERVICE_SUCCESS) { unit_log_success(UNIT(s)); end_state = SERVICE_DEAD;`
Where unit_log_success() generates the log message in question.
Solution
Improve the restart login in the wireless interface script and an upgrade to hostapd solved the issue.
The Wireless smoketests ran continously for 10 hours without an issue.
Test script:
#!/bin/sh for ii in `seq 1 1000` do /usr/libexec/vyos/tests/smoke/cli/test_interfaces_wireless.py if [[ $? == 0 ]]; then echo "pass" else echo "fail" exit 1 fi done