[PATCH v4 00/29]

Janusz Dziedzic janusz.dziedzic at tieto.com
Fri Feb 26 01:38:15 PST 2016


This patches add tests/remote directory and functionality
to run remote tests with hostapd/wpa_supplicant using:
- wpaspy.py - (UDP) for communication with hostapd,
              wpa_supplicant CTRL interface
- hostapd.py - for control hostapd
- wpasupplicant.py - for control wpa_supplicant

This three files were modified (as minimal as possible)
to be used with remote hosts.

Also wpaspy.Host class was added. This is used for run
remote shell commands and base on ssh and authorized_keys
connection.
So, each machine you would like to use in your remote test
system should have configured authorized_keys correctly.
Eg. you should be able to simple execute

ssh root@<your_ip_or_host> id

In case of wpa_supplicant and hostapd configuration you can
simply use examples from tests/hwsim and add such option to
the .config file:

CONFIG_CTRL_IFACE=udp-remote

Added files:
- remote/run-tests.py - run tc script
- remote/utils.py
- remote/test_ap_open.py

This works similar to the hwsim version and will run all
test_* from test_* modules. As a parameters each test get
t(devices, duts, setup_params, ref, dut) where:
- devices - available device table
- setup_params - environtment setup params
- ref - reference device name should be used
- dut - dut name should be tested

Devices table is table of RemoteHost. This is simple dictionary
which contais:
- hostname - remote PC IPv4, hostname or IPv4
- ifname - wifi interface should be used
- port - CTRL UDP port should be used
- name - name
- flags - eg. AP_VHT80, STA_VHT80 ...

Each test case is responsible for run/terminate wpa_supplicant
or hostapd. Because of that I added termiate support to hostapd
and wpaspy.py.

As a example of test cases I added test_ap_open.py file which
tests most of AP open setups and run iperf/iperf3 (IPv4, IPv6, tcp,
udp) tests between STATION and AP. I verify this using:
- AP - Atheros ath10k
- STA - Intel 7260

So, steps you need before setup:
- compile hostapd/wpa_supplicant with CONFIG_CTRL_IFACE=udp-remote
  on your remote PCs/devices
- setup authorized_keys correctly
- fill devices table cfg.py
- fill setup_params in cfg.py

After that you can check devices:
./run-tests.py -t devices

After that you can simply run sanity:
./run-tests.py -d <dut_name> -t all|sanity

Log system (based on hwsim and using logger):
You can find logs in logs directory. logs/current point to
last tests run.
Each failed test case get (using scp) wpa_supplicant and
hostapd logs and put them in logs directory.

In the future I can add more test cases base on this "framework".
Please review.

Example:
janusz at dell6430:~/work/hostap/tests/remote$ ./run-tests.py -d t1-ath10k -r t2-intel7260 -t sanity
DUT: t1-ath10k
REF: t2-intel7260
START - AP with open mode (no security) configuration IPv4 ping (1/24)
PASS (packet_loss: 0%, 0%) - 14.863048s
START - AP with open mode (no security) configuration IPv6 (2/24)
PASS (packet_loss: 0%, 0%) - 17.864918s
START - STA with open mode (no security) configuration IPv4 ping (3/24)
PASS (packet_loss: 0%, 0%) - 11.987938s
START - STA with open mode (no security) configuration IPv6 (4/24)
PASS (packet_loss: 0%, 0%) - 15.000189s
START - AP with CCMP configuration IPv4 ping (5/24)
PASS (packet_loss: 0%, 0%) - 17.311671s
START - AP with CCMP configuration IPv6 (6/24)
PASS (packet_loss: 0%, 0%) - 17.340123s
START - STA with CCMP configuration IPv4 ping (7/24)
PASS (packet_loss: 0%, 0%) - 13.358742s
START - STA with CCMP configuration IPv6 (8/24)
PASS (packet_loss: 0%, 0%) - 16.397097s
START - AP with mixed TKIP/CCMP configuration IPv4 ping (9/24)
PASS (packet_loss: 0%, 0%) - 17.255922s
START - AP with mixed TKIP/CCMP configuration IPv6 (10/24)
PASS (packet_loss: 0%, 0%) - 17.399922s
START - STA with mixed TKIP/CCMP configuration IPv4 ping (11/24)
PASS (packet_loss: 0%, 0%) - 13.366837s
START - STA with mixed TKIP/CCMP configuration IPv6 (12/24)
PASS (packet_loss: 0%, 0%) - 13.368448s
START - AP with TKIP configuration IPv4 ping (13/24)
PASS (packet_loss: 0%, 0%) - 17.403868s
START - AP with TKIP configuration IPv6 (14/24)
PASS (packet_loss: 0%, 0%) - 17.310886s
START - STA with TKIP configuration IPv4 ping (15/24)
PASS (packet_loss: 0%, 0%) - 13.323619s
START - STA with TKIP configuration IPv6 (16/24)
PASS (packet_loss: 0%, 0%) - 13.314537s
START - AP with WEP configuration IPv4 ping (17/24)
PASS (packet_loss: 0%, 0%) - 14.916285s
START - AP with WEP configuration IPv6 (18/24)
PASS (packet_loss: 0%, 0%) - 17.890211s
START - STA with WEP configuration IPv4 ping (19/24)
PASS (packet_loss: 0%, 0%) - 11.959147s
START - STA with WEP configuration IPv6 (20/24)
PASS (packet_loss: 0%, 0%) - 14.999853s
START - AP with WEP shared configuration IPv4 ping (21/24)
PASS (packet_loss: 0%, 0%) - 14.884378s
START - AP with WEP shared configuration IPv6 (22/24)
PASS (packet_loss: 0%, 0%) - 17.910496s
START - STA with WEP shared configuration IPv4 ping (23/24)
PASS (packet_loss: 0%, 0%) - 11.976571s
START - STA with WEP shared configuration IPv6 (24/24)
PASS (packet_loss: 0%, 0%) - 14.972161s


Janusz Dziedzic (29):
  wpa_supplicant: ctrl udp allow to set port
  wpa_supplicant: change attach/detach/send ctrl UDP functions
  wpa_supplicant: add monitor support for global ctrl UDP iface
  wpa_supplicant: add common ctrl iface files
  wpa_supplicant: ctrl unix use common functions
  hostapd: ctrl unix use common ctrl code
  ctrl unix: use sockaddr_storage
  hostap: add UDP support for ctrl iface
  hostapd: ctrl udp allow to set port
  wpa_supplicant: udp ctrl setup ctrl_interface
  wpa_supplicant: udp ctrl show when ITERFACES ctrl cmd
  hostapd: setup real ctrl_interface for UDP
  hostapd: add INTERFACES ctrl command
  hostapd: add global TERMINATE command
  wpa_cli: handle IFNAME correctly for global iface
  wpaspy: add support for UDP connection
  wpaspy: add debug support for Ctrl UDP class
  tests: wpasupplicant.py allow to use remote host
  tests: hostapd.py allow to use remote host
  wpaspy: add Host class
  tests: hostapd.py/wpasupplicant.py use host when execute
  tests: hostapd.py add get_ctrl_iface_port
  wpaspy: add terminate support
  tests: add terminate support for hostapd/wpa_supplicant
  tests: hostapd.py add params for required configurations
  tests: Adde remote directory to tests
  tests: remote add utils
  tests/remote: Add TP tests for AP STA.
  tests/remote: add test_ap_sta_tp.sh script

 hostapd/Makefile                 |   24 +-
 hostapd/ctrl_iface.c             |  529 +++++++++++++------
 hostapd/hostapd_cli.c            |    5 +
 hostapd/main.c                   |    7 +-
 src/ap/hostapd.c                 |    1 +
 src/ap/hostapd.h                 |    4 +-
 src/common/ctrl_iface_common.c   |  141 ++++++
 src/common/ctrl_iface_common.h   |   36 ++
 src/common/wpa_ctrl.c            |    2 +
 tests/hwsim/hostapd.py           |  138 ++++-
 tests/hwsim/wpasupplicant.py     |   82 ++-
 tests/remote/config.py           |   81 +++
 tests/remote/run-tests.py        |  223 ++++++++
 tests/remote/test_ap_sta_tp.py   | 1034 ++++++++++++++++++++++++++++++++++++++
 tests/remote/test_ap_sta_tp.sh   |   42 ++
 tests/remote/utils.py            |  340 +++++++++++++
 wpa_supplicant/Makefile          |    1 +
 wpa_supplicant/ctrl_iface.c      |   21 +-
 wpa_supplicant/ctrl_iface_udp.c  |  146 ++++--
 wpa_supplicant/ctrl_iface_unix.c |   96 +---
 wpaspy/test.py                   |   23 +-
 wpaspy/wpaspy.py                 |  163 +++++-
 22 files changed, 2811 insertions(+), 328 deletions(-)
 create mode 100644 src/common/ctrl_iface_common.c
 create mode 100644 src/common/ctrl_iface_common.h
 create mode 100644 tests/remote/config.py
 create mode 100755 tests/remote/run-tests.py
 create mode 100755 tests/remote/test_ap_sta_tp.py
 create mode 100755 tests/remote/test_ap_sta_tp.sh
 create mode 100644 tests/remote/utils.py

-- 
1.9.1




More information about the Hostap mailing list