Fixes in test_wanlink, fix formatting in ipv4_variable_time

Signed-off-by: Matthew Stidham <stidmatt@protonmail.com>
This commit is contained in:
Matthew Stidham
2021-03-12 11:25:39 -08:00
parent 86e9cfa63e
commit c3c2d7a6a3
3 changed files with 38 additions and 122 deletions

View File

@@ -160,7 +160,6 @@ else
"./wlan_capacity_calculator.py -sta 11abg -t Voice -p 48 -m 106 -e WEP -q Yes -b 1 2 5.5 11 -pre Long -s N/A -co G.711 -r Yes -c Yes" "./wlan_capacity_calculator.py -sta 11abg -t Voice -p 48 -m 106 -e WEP -q Yes -b 1 2 5.5 11 -pre Long -s N/A -co G.711 -r Yes -c Yes"
"./wlan_capacity_calculator.py -sta 11n -t Voice -d 17 -ch 40 -gu 800 -high 9 -e WEP -q Yes -ip 5 -mc 42 -b 6 9 12 24 -m 1538 -co G.729 -pl Greenfield -cw 15 -r Yes -c Yes" "./wlan_capacity_calculator.py -sta 11n -t Voice -d 17 -ch 40 -gu 800 -high 9 -e WEP -q Yes -ip 5 -mc 42 -b 6 9 12 24 -m 1538 -co G.729 -pl Greenfield -cw 15 -r Yes -c Yes"
"./wlan_capacity_calculator.py -sta 11ac -t Voice -d 9 -spa 3 -ch 20 -gu 800 -high 1 -e TKIP -q Yes -ip 3 -mc 0 -b 6 12 24 54 -m 1518 -co Greenfield -cw 15 -rc Yes" "./wlan_capacity_calculator.py -sta 11ac -t Voice -d 9 -spa 3 -ch 20 -gu 800 -high 1 -e TKIP -q Yes -ip 3 -mc 0 -b 6 12 24 54 -m 1518 -co Greenfield -cw 15 -rc Yes"
"./new_script.py --flags"
) )
fi fi
#declare -A name_to_num #declare -A name_to_num

View File

@@ -43,7 +43,9 @@ class IPV4VariableTime(Realm):
ap=None, ap=None,
side_a_min_rate=56, side_a_max_rate=0, side_a_min_rate=56, side_a_max_rate=0,
side_b_min_rate=56, side_b_max_rate=0, side_b_min_rate=56, side_b_max_rate=0,
number_template="00000", test_duration="5m", use_ht160=False, number_template="00000",
test_duration="5m",
use_ht160=False,
_debug_on=False, _debug_on=False,
_exit_on_error=False, _exit_on_error=False,
_exit_on_fail=False): _exit_on_fail=False):

View File

@@ -12,29 +12,45 @@ if 'py-json' not in sys.path:
import argparse import argparse
from LANforge.lfcli_base import LFCliBase from LANforge.lfcli_base import LFCliBase
from LANforge.LFUtils import * from LANforge.LFUtils import *
import realm from realm import Realm
import time import time
class LANtoWAN(LFCliBase): class LANtoWAN(Realm):
def __init__(self, host, port, ssid, security, password, lan_port="eth2", wan_port="eth3", _debug_on=False, def __init__(self, host, port, ssid, security, password,
lan_port="eth2",
wan_port="eth3",
prefix='sta',
number_template="00000",
radio="wiphy0",
sta_list = [],
side_a_min_rate=56, side_a_max_rate=0,
side_b_min_rate=56, side_b_max_rate=0,
upstream = None,
_debug_on=False,
_exit_on_error=False, _exit_on_error=False,
_exit_on_fail=False): _exit_on_fail=False):
super().__init__(host, port, _debug=_debug_on, _halt_on_error=_exit_on_error, _exit_on_fail=_exit_on_fail) super().__init__(host, port)
self.upstream = upstream
self.host = host self.host = host
self.port = port self.port = port
self.ssid = ssid self.ssid = ssid
self.radio = radio
self.sta_list = sta_list
self.security = security self.security = security
self.password = password self.password = password
self.timeout = 120 self.timeout = 120
self.lan_port = lan_port self.lan_port = lan_port
self.wan_port = wan_port self.wan_port = wan_port
self.local_realm = realm.Realm(lfclient_host=self.host, lfclient_port=self.port) self.prefix = prefix
self.profile = realm.StationProfile(self.lfclient_url, ssid=self.ssid, ssid_pass=self.password, self.number_template = number_template
security=self.security, number_template_=self.prefix, mode=0, up=True, dhcp=True, self.station_profile = self.new_station_profile()
debug_=False) self.cx_profile = self.new_l3_cx_profile()
self.cxProfile = realm.new_l3_cx_profile()
def run_test(self): pass
self.cx_profile.side_a_min_bps = side_a_min_rate
self.cx_profile.side_a_max_bps = side_a_max_rate
self.cx_profile.side_b_min_bps = side_b_min_rate
self.cx_profile.side_b_max_bps = side_b_max_rate
def create_wanlinks(self, shelf=1, resource=1, latency=20, max_rate=1544000): def create_wanlinks(self, shelf=1, resource=1, latency=20, max_rate=1544000):
print("Creating wanlinks") print("Creating wanlinks")
@@ -83,121 +99,16 @@ class LANtoWAN(LFCliBase):
time.sleep(.05) time.sleep(.05)
def run(self): def run(self):
self.profile.use_wpa2(True, self.ssid, self.password) self.cx_profile.use_wpa2(True, self.ssid, self.password)
self.profile.create(resource=1, radio="wiphy0", num_stations=3, debug=False) self.station_profile.create(radio="wiphy0", num_stations=3, debug=False)
def cleanup(self): pass def cleanup(self): pass
def main(): def main():
parser = LFCliBase.create_basic_argparse( parser = LFCliBase.create_basic_argparse(
prog='test_ipv4_variable_time.py', prog='test_wanlink.py',
formatter_class=argparse.RawTextHelpFormatter, formatter_class=argparse.RawTextHelpFormatter)
epilog='''\
Create stations to test connection and traffic on VAPs of varying security types (WEP, WPA, WPA2, WPA3, Open)
''',
description='''\
test_ipv4_variable_time.py:
--------------------
Generic command layout:
python3 ./test_ipv4_variable_time.py
--upstream_port eth1
--radio wiphy0
--num_stations 32
--security {open|wep|wpa|wpa2|wpa3}
--mode 1
{"auto" : "0",
"a" : "1",
"b" : "2",
"g" : "3",
"abg" : "4",
"abgn" : "5",
"bgn" : "6",
"bg" : "7",
"abgnAC" : "8",
"anAC" : "9",
"an" : "10",
"bgnAC" : "11",
"abgnAX" : "12",
"bgnAX" : "13"}
--ssid netgear
--password admin123
--test_duration 2m (default)
--a_min 3000
--b_min 1000
--ap "00:0e:8e:78:e1:76"
--output_format csv
--report_file ~/Documents/results.csv (Example of csv file output - please use another extension for other file formats)
--compared_report ~/Documents/results_prev.csv (Example of csv file retrieval - please use another extension for other file formats) - UNDER CONSTRUCTION
--col_names 'name','tx bytes','rx bytes','dropped' (column names from the GUI to print on report - please read below to know what to put here according to preferences)
--debug
===============================================================================
** FURTHER INFORMATION **
Using the col_names flag:
Currently the output function does not support inputting the columns in col_names the way they are displayed in the GUI. This quirk is under construction. To output
certain columns in the GUI in your final report, please match the according GUI column display to it's counterpart to have the columns correctly displayed in
your report.
GUI Column Display Col_names argument to type in (to print in report)
Name | 'name'
EID | 'eid'
Run | 'run'
Mng | 'mng'
Script | 'script'
Tx Rate | 'tx rate'
Tx Rate (1 min) | 'tx rate (1&nbsp;min)'
Tx Rate (last) | 'tx rate (last)'
Tx Rate LL | 'tx rate ll'
Rx Rate | 'rx rate'
Rx Rate (1 min) | 'rx rate (1&nbsp;min)'
Rx Rate (last) | 'rx rate (last)'
Rx Rate LL | 'rx rate ll'
Rx Drop % | 'rx drop %'
Tx PDUs | 'tx pdus'
Tx Pkts LL | 'tx pkts ll'
PDU/s TX | 'pdu/s tx'
Pps TX LL | 'pps tx ll'
Rx PDUs | 'rx pdus'
Rx Pkts LL | 'pps rx ll'
PDU/s RX | 'pdu/s tx'
Pps RX LL | 'pps rx ll'
Delay | 'delay'
Dropped | 'dropped'
Jitter | 'jitter'
Tx Bytes | 'tx bytes'
Rx Bytes | 'rx bytes'
Replays | 'replays'
TCP Rtx | 'tcp rtx'
Dup Pkts | 'dup pkts'
Rx Dup % | 'rx dup %'
OOO Pkts | 'ooo pkts'
Rx OOO % | 'rx ooo %'
RX Wrong Dev | 'rx wrong dev'
CRC Fail | 'crc fail'
RX BER | 'rx ber'
CX Active | 'cx active'
CX Estab/s | 'cx estab/s'
1st RX | '1st rx'
CX TO | 'cx to'
Pattern | 'pattern'
Min PDU | 'min pdu'
Max PDU | 'max pdu'
Min Rate | 'min rate'
Max Rate | 'max rate'
Send Buf | 'send buf'
Rcv Buf | 'rcv buf'
CWND | 'cwnd'
TCP MSS | 'tcp mss'
Bursty | 'bursty'
A/B | 'a/b'
Elapsed | 'elapsed'
Destination Addr | 'destination addr'
Source Addr | 'source addr'
''')
for group in parser._action_groups: for group in parser._action_groups:
if group.title == "required arguments": if group.title == "required arguments":
required_args=group required_args=group
@@ -218,13 +129,17 @@ python3 ./test_ipv4_variable_time.py
break break
#if optional_args is not None: #if optional_args is not None:
args = parser.parse_args() args = parser.parse_args()
num_sta=4
station_list = portNameSeries(prefix_="sta", start_id_=0, end_id_=num_sta - 1, padding_number_=10000,
radio=args.radio)
ltw=LANtoWAN(host=args.mgr, ltw=LANtoWAN(host=args.mgr,
port=args.mgr_port, port=args.mgr_port,
ssid=args.ssid, ssid=args.ssid,
sta_list=station_list,
security=args.security, security=args.security,
password=args.passwd, password=args.passwd,
lan_port=args.lanport, lan_port=args.lanport,
wan_port=args.wanport,) wan_port=args.wanport)
ltw.create_wanlinks() ltw.create_wanlinks()
ltw.run() ltw.run()
ltw.cleanup() ltw.cleanup()