123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141 |
- # Example test case
- # Copyright (c) 2016, Tieto Corporation
- #
- # This software may be distributed under the terms of the BSD license.
- # See README for more details.
- import remotehost
- from wpasupplicant import WpaSupplicant
- import hostapd
- import config
- import rutils
- import monitor
- import logging
- logger = logging.getLogger()
- def test_example(devices, setup_params, refs, duts, monitors):
- """TC example - simple connect and ping test"""
- try:
- sta = None
- ap = None
- hapd = None
- wpas = None
- mon = None
- # get hosts based on name
- sta = rutils.get_host(devices, duts[0])
- ap = rutils.get_host(devices, refs[0])
- # setup log dir
- local_log_dir = setup_params['local_log_dir']
- # setup hw before test
- rutils.setup_hw([sta, ap], setup_params)
- # run traces if requested
- rutils.trace_start([sta], setup_params)
- # run perf if requested
- rutils.perf_start([sta], setup_params)
- # run hostapd/wpa_supplicant
- rutils.run_wpasupplicant(sta, setup_params)
- rutils.run_hostapd(ap, setup_params)
- # get ap_params
- ap_params = rutils.get_ap_params(channel="1", bw="HT20", country="US",
- security="open")
- # Add monitors if requested
- monitor_hosts = monitor.create(devices, setup_params, refs, duts,
- monitors)
- if len(monitor_hosts) > 0:
- mon = monitor_hosts[0]
- monitor.add(sta, monitors)
- monitor.add(ap, monitors)
- # connect to hostapd/wpa_supplicant UDP CTRL iface
- hapd = hostapd.add_ap(ap.dev, ap_params)
- freq = hapd.get_status_field("freq")
- wpas = WpaSupplicant(hostname = sta.host, global_iface="udp",
- global_port = sta.port)
- wpas.interface_add(sta.ifname)
- # setup standalone monitor based on hapd; could be multi interface
- # monitor
- monitor_param = monitor.get_monitor_params(hapd)
- monitor.setup(mon, [monitor_param])
- # run monitors
- monitor.run(sta, setup_params)
- monitor.run(ap, setup_params)
- monitor.run(mon, setup_params)
- # connect wpa_supplicant to hostapd
- wpas.connect(ap_params['ssid'], key_mgmt="NONE", scan_freq=freq)
- # run ping test
- ap_sta, sta_ap = rutils.check_connectivity(ap, sta, "ipv6")
- # remove/destroy monitors
- monitor.remove(sta)
- monitor.remove(ap)
- monitor.destroy(devices, monitor_hosts)
- # hostapd/wpa_supplicant cleanup
- wpas.interface_remove(sta.ifname)
- wpas.terminate()
- hapd.close_ctrl()
- hostapd.remove_bss(ap.dev)
- hostapd.terminate(ap.dev)
- # stop perf
- rutils.perf_stop([sta], setup_params)
- # stop traces
- rutils.trace_stop([sta], setup_params)
- # get wpa_supplicant/hostapd/tshark logs
- sta.get_logs(local_log_dir)
- ap.get_logs(local_log_dir)
- if mon:
- mon.get_logs(local_log_dir)
- return "packet_loss: " + ap_sta + ", " + sta_ap
- except:
- rutils.perf_stop([sta], setup_params)
- rutils.trace_stop([sta], setup_params)
- if wpas:
- try:
- wpas.interface_remove(sta.ifname)
- wpas.terminate()
- except:
- pass
- if hapd:
- try:
- hapd.close_ctrl()
- hostapd.remove_bss(ap.dev)
- hostapd.terminate(ap.dev)
- except:
- pass
- if mon:
- monitor.destroy(devices, monitor_hosts)
- mon.get_logs(local_log_dir)
- if sta:
- monitor.remove(sta)
- dmesg = setup_params['log_dir'] + setup_params['tc_name'] + "_" + sta.name + "_" + sta.ifname + ".dmesg"
- sta.execute(["dmesg", "-c", ">", dmesg])
- sta.add_log(dmesg)
- sta.get_logs(local_log_dir)
- sta.execute(["ifconfig", sta.ifname, "down"])
- if ap:
- monitor.remove(ap)
- dmesg = setup_params['log_dir'] + setup_params['tc_name'] + "_" + ap.name + "_" + ap.ifname + ".dmesg"
- ap.execute(["dmesg", "-c", ">", dmesg])
- ap.add_log(dmesg)
- ap.get_logs(local_log_dir)
- ap.execute(["ifconfig", ap.ifname, " down"])
- raise
|