From e5fe737c0365447ea7cd66d398948d25271fbf42 Mon Sep 17 00:00:00 2001 From: Chuck SmileyRekiere Date: Tue, 13 Oct 2020 10:40:18 -0600 Subject: [PATCH] lf_cisco_snp.py : cisco updates from scaling and performance emails --- py-scripts/lf_cisco_snp.py | 111 ++++++++++++++++++++++++++++++++----- 1 file changed, 97 insertions(+), 14 deletions(-) diff --git a/py-scripts/lf_cisco_snp.py b/py-scripts/lf_cisco_snp.py index d7a98ed5..9c712c13 100755 --- a/py-scripts/lf_cisco_snp.py +++ b/py-scripts/lf_cisco_snp.py @@ -27,8 +27,8 @@ class L3VariableTime(LFCliBase): reset_port_enable_list, reset_port_time_min_list, reset_port_time_max_list, - side_a_min_rate=56000, side_a_max_rate=0, - side_b_min_rate=56000, side_b_max_rate=0, + side_a_min_rate=560000, side_a_max_rate=0, + side_b_min_rate=560000, side_b_max_rate=0, number_template="00", test_duration="256s", polling_interval="60s", _exit_on_error=False, @@ -1008,7 +1008,7 @@ def main(): debug_on = False parser = argparse.ArgumentParser( - prog='test_l3_longevity.py', + prog='lf_cisco_snp.py', #formatter_class=argparse.RawDescriptionHelpFormatter, formatter_class=argparse.RawTextHelpFormatter, epilog='''\ @@ -1020,7 +1020,7 @@ def main(): ''', description='''\ -test_l3_longevity.py: +lf_cisco_snp.py: -------------------- Summary : @@ -1031,12 +1031,12 @@ and recieved. Generic command layout: ----------------------- -python .\\test_l3_longevity.py --test_duration --endp_type --upstream_port +python .\\lf_cisco_snp.py --test_duration --endp_type --upstream_port --radio "radio== stations== ssid== ssid_pw== security==" --debug Multiple radios may be entered with individual --radio switches generiic command with controller setting channel and channel width test duration 5 min -python3 test_l3_longevity.py --cisco_ctlr --cisco_dfs True/False --mgr +python3 lf_cisco_snp.py --cisco_ctlr --cisco_dfs True/False --mgr --cisco_channel --cisco_chan_width <20,40,80,120> --endp_type 'lf_udp lf_tcp mc_udp' --upstream_port <1.ethX> --radio "radio== stations== ssid== ssid_pw== security==" --radio "radio== stations== ssid== ssid_pw== security==" @@ -1095,7 +1095,7 @@ Example #1 running traffic with two radios 6. Create connections with TOS of BK and VI Command: (remove carriage returns) -python3 .\\test_l3_longevity.py --test_duration 4m --endp_type \"lf_tcp lf_udp mc_udp\" --tos \"BK VI\" --upstream_port eth1 +python3 .\\lf_cisco_snp.py --test_duration 4m --endp_type \"lf_tcp lf_udp mc_udp\" --tos \"BK VI\" --upstream_port eth1 --radio "radio==wiphy0 stations==32 ssid==candelaTech-wpa2-x2048-4-1 ssid_pw==candelaTech-wpa2-x2048-4-1 security==wpa2" --radio "radio==wiphy1 stations==64 ssid==candelaTech-wpa2-x2048-5-3 ssid_pw==candelaTech-wpa2-x2048-5-3 security==wpa2" @@ -1112,21 +1112,96 @@ Example #2 using cisco controller 10. duration 5m Command: -python3 test_l3_longevity.py --cisco_ctlr 192.168.100.112 --cisco_dfs True --mgr 192.168.100.178 +python3 lf_cisco_snp.py --cisco_ctlr 192.168.100.112 --cisco_dfs True --mgr 192.168.100.178 --cisco_channel 52 --cisco_chan_width 20 --endp_type 'lf_udp lf_tcp mc_udp' --upstream_port 1.eth3 --radio "radio==1.wiphy0 stations==3 ssid==test_candela ssid_pw==[BLANK] security==open" --radio "radio==1.wiphy1 stations==16 ssid==test_candela ssid_pw==[BLANK] security==open" --test_duration 5m +TODO: +our %wifi_modes = ( + "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", + "anAX" => "14" +); + +TODO: +############################################################################## +Detailed test loop description 10/9/2020 - Karthik Recommendation +############################################################################## +Script logic loops: + +AP {Axel, Vanc} Dynamic + frequency {24ghz, 5ghz} Common + wifimode{11ax, 11ac, 11n, 11bg} Common + Bandwidth {20, 40, 80, 160} + data-encryption {enable/disable} Common + AP-mode {local/flexconnect} Common + client-density {1, 10, 20, 50, 100, 200} Dynamic + Packet-type {TCP, UDP} Common + Direction {Downstream, Upstream} + Packet-size { 88, 512, 1370, 1518} Common + Time (4 iterations of 30 sec and get the best average TP out of it) + +TODO: Radio descriptions in realm , the 1. refers to the chassi hopefully corresponds to the shelf + +1.wiphy0 802.11abgn-ax iwlwifi(AX200) 523 +1.wiphy1 802.11abgn-ax iwlwifi(AX200) 523 +1.wiphy2 802.11abgn-ax iwlwifi(AX200) 523 +1.wiphy3 802.11abgn-ax iwlwifi(AX200) 523 +1.wiphy4 802.11abgn-ax iwlwifi(AX200) 523 +1.wiphy5 802.11abgn-ax iwlwifi(AX200) 523 +1.wiphy6 802.11abgn-ax iwlwifi(AX200) 523 +1.wiphy7 802.11abgn-ax iwlwifi(AX200) 523 +1.wiphy8 802.11an-AC ath10k(9984) 523 +1.wiphy9 802.11an-AC ath10k(9984) 523 + +2.wiphy0 802.11abgn-ax iwlwifi(AX200) 521 +2.wiphy1 802.11abgn-ax iwlwifi(AX200) 521 + +3.wiphy0 802.11abgn-ax iwlwifi(AX200) 521 +3.wiphy1 802.11abgn-ax iwlwifi(AX200) 521 + +4.wiphy0 802.11abgn-ax iwlwifi(AX200) 521 +4.wiphy1 802.11abgn-ax iwlwifi(AX200) 521 + +5.wiphy0 802.11abgn-ax iwlwifi(AX200) 521 +5.wiphy1 802.11abgn-ax iwlwifi(AX200) 521 + +6.wiphy0 802.11abgn-ax iwlwifi(AX200) 523 +6.wiphy1 802.11abgn-ax iwlwifi(AX200) 523 +6.wiphy2 802.11abgn-ax iwlwifi(AX200) 523 +6.wiphy3 802.11abgn-ax iwlwifi(AX200) 523 +6.wiphy4 802.11abgn-ax iwlwifi(AX200) 523 +6.wiphy5 802.11abgn-ax iwlwifi(AX200) 523 +6.wiphy6 802.11abgn-ax iwlwifi(AX200) 523 +6.wiphy7 802.11abgn-ax iwlwifi(AX200) 523 +6.wiphy8 802.11an-AC ath10k(9984) 523 +6.wiphy9 802.11an-AC ath10k(9984) 523 + ''') + parser.add_argument('-ca','--cisco_ap', help='List of APs to test default: Axel',default="Axel") + parser.add_argument('-cf','--cisco_frequency', help='List of frequency to test default: 24ghz 5ghz',default="24ghz 5ghz") + + parser.add_argument('--cisco_ctlr', help='--cisco_ctlr ',default=None) parser.add_argument('--cisco_user', help='--cisco_user ',default="admin") parser.add_argument('--cisco_passwd', help='--cisco_passwd ',default="Cisco123") parser.add_argument('--cisco_prompt', help='--cisco_prompt ',default="\(Cisco Controller\) >") - parser.add_argument('--cisco_ap', help='--cisco_ap ',default="APA453.0E7B.CF9C") parser.add_argument('--cisco_dfs', help='--cisco_dfs ',default=False) @@ -1140,6 +1215,8 @@ python3 test_l3_longevity.py --cisco_ctlr 192.168.100.112 --cisco_dfs True --mgr parser.add_argument('--cisco_wlanID', help='--cisco_wlanID default: NA , NA means not change',default="NA") parser.add_argument('--cisco_tx_power', help='--cisco_tx_power <1 | 2 | 3 | 4 | 5 | 6 | 7 | 8> 1 is highest power default NA NA means no change',default="NA" ,choices=["1","2","3","4","5","6","7","8","NA"]) + parser.add_argument("--cap_ctl_out", help="--cap_ctl_out , switch the cisco controller output will be captured", action='store_true') + @@ -1155,17 +1232,23 @@ python3 test_l3_longevity.py --cisco_ctlr 192.168.100.112 --cisco_dfs True --mgr parser.add_argument('-u', '--upstream_port', help='--upstream_port example: --upstream_port eth1',default='eth1') parser.add_argument('-o','--csv_outfile', help="--csv_outfile ", default='longevity_results') parser.add_argument('--polling_interval', help="--polling_interval ", default='60s') - #parser.add_argument('-c','--csv_output', help="Generate csv output", default=False) + parser.add_argument('-c','--csv_output', help="Generate csv output", default=False) parser.add_argument('-r','--radio', action='append', nargs=1, help='--radio \ \"radio== ssid== ssid_pw== security==\" '\ , required=True) - parser.add_argument("--cap_ctl_out", help="--cap_ctl_out , switch the cisco controller output will be captured", action='store_true') + parser.add_argument("--side_a_min_rate", help="--side_a_min_rate, station transfer rate default 256000", default=256000) + parser.add_argument("--side_b_min_rate", help="--side_b_min_rate , upstream min tx rate default 256000 ", default=256000) args = parser.parse_args() #print("args: {}".format(args)) debug_on = args.debug + + ################################################################## + # Gather Test Data + ################################################################# + if args.test_duration: test_duration = args.test_duration @@ -1274,13 +1357,13 @@ python3 test_l3_longevity.py --cisco_ctlr 192.168.100.112 --cisco_dfs True --mgr reset_port_enable_list=reset_port_enable_list, reset_port_time_min_list=reset_port_time_min_list, reset_port_time_max_list=reset_port_time_max_list, - side_a_min_rate=256000, - side_b_min_rate=256000, + side_a_min_rate=args.side_a_min_rate, + side_b_min_rate=args.side_b_min_rate, debug_on=debug_on, outfile=csv_outfile) - ip_var_test.pre_cleanup() + ip_var_test.pre_cleanup() ip_var_test.build() if not ip_var_test.passes(): print("build step failed.")