From patchwork Wed Mar 30 20:29:37 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Janusz.Dziedzic@tieto.com X-Patchwork-Id: 603635 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.9]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3qZzxw1Hrvz9sDH for ; Thu, 31 Mar 2016 07:38:44 +1100 (AEDT) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=tieto.com header.i=@tieto.com header.b=ZMcuYMNr; dkim-atps=neutral Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.80.1 #2 (Red Hat Linux)) id 1alMst-0008VM-Ch; Wed, 30 Mar 2016 20:38:35 +0000 Received: from casper.infradead.org ([2001:770:15f::2]) by bombadil.infradead.org with esmtps (Exim 4.80.1 #2 (Red Hat Linux)) id 1alMlB-0007xc-QQ for hostap@bombadil.infradead.org; Wed, 30 Mar 2016 20:30:38 +0000 Received: from mail-lf0-x22d.google.com ([2a00:1450:4010:c07::22d]) by casper.infradead.org with esmtps (Exim 4.85 #2 (Red Hat Linux)) id 1alMkz-00083x-QI for hostap@lists.infradead.org; Wed, 30 Mar 2016 20:30:27 +0000 Received: by mail-lf0-x22d.google.com with SMTP id e133so44729619lfe.3 for ; Wed, 30 Mar 2016 13:30:04 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=tieto.com; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=YGgg3jcMrZitaywluPkJT7F+Gn6wbXyCzn1AA8RU/1Y=; b=ZMcuYMNrPLReBYlL89ZNMexuPo77F7Gol7G1+JAevhyFSZBNEfzQ0lMR9h5W4/WkJ/ K8DB0Ocs4mA+T6wRTlU7intz8d6iUIlxZrjkmI0wKCtHCgOTcmqc4vldvwOlJHxqXpjD /sWz/BrxkGyWqzLi3yqPGIlkCJX1KHvocfgqw= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=YGgg3jcMrZitaywluPkJT7F+Gn6wbXyCzn1AA8RU/1Y=; b=C7gHbd92dIk6Rz809qYKa5iwKwFC1rq7lgWezosZV7rRUsP6nLXfB0fU0orwFKV9w4 vlU5uVu/U4gg1XEOyA12/ozyzFii0zngg/NMglhfHVZ9RHgsykJm4O383iEO2S6/aNfp vatHKrPCVq2Ior7bb/E1x1syLS5iW19M/LUEKLUePq12mGjWLvDX/wS9Qh2xPpl0dDuh 9uZkvMwaSt9hmFcTu84K7pWGy3XSJ8RyI4bIkyv/BFME0P6yrfv1XVJKh/asJGFr6x07 rS1OuQ0jrebvB+XOslFsGOOTM3lwL/x1jBBw2Ak0/tzPZUqLuvxLlgB9jZy4JsY4W9xv +ijg== X-Gm-Message-State: AD7BkJJ8xo4AzdMgTsMA6mX298AqCUS5xrbfSXujq3cFCjqaiKakbPUbdeHqiKxOHJ6bGyTlGKZx7GxB9ZLcIz4PZ1VkG/zpc98UhMdtXS3YZz84x/ZHYioJw4w/+rdjE5SFddQvOaPDJBzke8Kf8x3DxiAoA6ZRIiNGeVcONyapQrFR4DXxrLYYpY+FEm7yQDO/ X-Received: by 10.25.26.83 with SMTP id a80mr5017622lfa.36.1459369802690; Wed, 30 Mar 2016 13:30:02 -0700 (PDT) Received: from localhost.localdomain (host-62-141-193-85.swidnica.mm.pl. [62.141.193.85]) by smtp.gmail.com with ESMTPSA id z123sm863071lfd.15.2016.03.30.13.30.01 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Wed, 30 Mar 2016 13:30:02 -0700 (PDT) From: Janusz Dziedzic To: hostap@lists.infradead.org Subject: [PATCH 4/5] tests/remote: add test_example.py Date: Wed, 30 Mar 2016 22:29:37 +0200 Message-Id: <1459369778-19522-5-git-send-email-janusz.dziedzic@tieto.com> X-Mailer: git-send-email 1.9.1 In-Reply-To: <1459369778-19522-1-git-send-email-janusz.dziedzic@tieto.com> References: <1459369778-19522-1-git-send-email-janusz.dziedzic@tieto.com> X-DomainID: tieto.com X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20160330_213026_078636_8A5B7F25 X-CRM114-Status: GOOD ( 14.18 ) X-Spam-Score: -2.7 (--) X-Spam-Report: SpamAssassin version 3.4.0 on casper.infradead.org summary: Content analysis details: (-2.7 points, 5.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- -0.7 RCVD_IN_DNSWL_LOW RBL: Sender listed at http://www.dnswl.org/, low trust [2a00:1450:4010:c07:0:0:0:22d listed in] [list.dnswl.org] -0.0 SPF_PASS SPF: sender matches SPF record -1.9 BAYES_00 BODY: Bayes spam probability is 0 to 1% [score: 0.0000] -0.1 DKIM_VALID_AU Message has a valid DKIM or DK signature from author's domain 0.1 DKIM_SIGNED Message has a DKIM or DK signature, not necessarily valid -0.1 DKIM_VALID Message has at least one valid DKIM or DK signature X-BeenThere: hostap@lists.infradead.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: j@w1.fi, Janusz Dziedzic MIME-Version: 1.0 Sender: "Hostap" Errors-To: hostap-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org This is simple example how to write simple test case. modprobe mac80211_hwsim radios=4 run example: ./run-tests.py -d hwsim0 -r hwsim1 -t example run example with monitors: ./run-tests.py -d hwsim0 -r hwsim1 -t example -m all -m hwsim2 run example with trace record: ./run-tests.py -d hwsim0 -r hwsim1 -t example -T run example with trace and perf: ./run-tests.py -d hwsim0 -r hwsim1 -t example -T -P restart hw before test case run: ./run-tests.py -d hwsim0 -r hwsim1 -t example -R run example verbose ./run-tests.py -d hwsim0 -r hwsim1 -t example -v For perf/trace you need to write own hw specyfic scripts: trace_start.sh, trace_stop.sh perf_start.sh, perf_stop.sh In any case you will find logs in logs/current/ directory. Signed-off-by: Janusz Dziedzic --- tests/remote/test_example.py | 138 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 138 insertions(+) create mode 100644 tests/remote/test_example.py diff --git a/tests/remote/test_example.py b/tests/remote/test_example.py new file mode 100644 index 0000000..4537d51 --- /dev/null +++ b/tests/remote/test_example.py @@ -0,0 +1,138 @@ +#!/usr/bin/env python +# +# 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 multiiface 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.logs.append(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.logs.append(dmesg) + ap.get_logs(local_log_dir) + ap.execute("ifconfig " + ap.ifname + " down") + raise