mirror of
				https://github.com/Telecominfraproject/wlan-lanforge-scripts.git
				synced 2025-10-31 18:58:01 +00:00 
			
		
		
		
	test_l3_longevity.py : adding reading the AP using pexpect
Signed-off-by: Chuck SmileyRekiere <chuck.smileyrekiere@candelatech.com>
This commit is contained in:
		| @@ -28,6 +28,9 @@ import os | |||||||
| from pprint import pprint | from pprint import pprint | ||||||
| from csv_to_influx import * | from csv_to_influx import * | ||||||
| import re | import re | ||||||
|  | import serial | ||||||
|  | import pexpect | ||||||
|  | from pexpect_serial import SerialSpawn | ||||||
|  |  | ||||||
| if sys.version_info[0] != 3: | if sys.version_info[0] != 3: | ||||||
|     print("This script requires Python 3") |     print("This script requires Python 3") | ||||||
| @@ -44,7 +47,6 @@ from realm import Realm | |||||||
| import time | import time | ||||||
| import datetime | import datetime | ||||||
| import subprocess | import subprocess | ||||||
| import re |  | ||||||
| import csv | import csv | ||||||
| import random | import random | ||||||
|  |  | ||||||
| @@ -129,6 +131,7 @@ class L3VariableTime(Realm): | |||||||
|         self.mconn = mconn |         self.mconn = mconn | ||||||
|         self.user_tags = user_tags |         self.user_tags = user_tags | ||||||
|          |          | ||||||
|  |  | ||||||
|         self.side_a_min_rate = side_a_min_rate |         self.side_a_min_rate = side_a_min_rate | ||||||
|         self.side_a_max_rate = side_a_max_rate |         self.side_a_max_rate = side_a_max_rate | ||||||
|         self.side_b_min_rate = side_b_min_rate |         self.side_b_min_rate = side_b_min_rate | ||||||
| @@ -623,6 +626,29 @@ class L3VariableTime(Realm): | |||||||
|  |  | ||||||
|         self._pass("PASS: Stations & CX build finished: created/updated: %s stations and %s connections."%(self.station_count, self.cx_count))         |         self._pass("PASS: Stations & CX build finished: created/updated: %s stations and %s connections."%(self.station_count, self.cx_count))         | ||||||
|  |  | ||||||
|  |     def read_ap_stats(self,band): | ||||||
|  |         #  5ghz:  wl -i wl1 bs_data  2.4ghz# wl -i wl0 bs_data | ||||||
|  |         stats_5ghz  = "wl -i wl1 bs_data" | ||||||
|  |         stats_24ghz = "w1 -i wl0 bs_data" | ||||||
|  |         ap_data = "" | ||||||
|  |         command = stats_5ghz | ||||||
|  |         '''if band == "5ghz": | ||||||
|  |             command = stats_5ghz | ||||||
|  |         else: | ||||||
|  |             command = stats_24ghz''' | ||||||
|  |      | ||||||
|  |         try: | ||||||
|  |             # configure the serial interface | ||||||
|  |             ser = serial.Serial(self.args.tty, int(self.args.baud), timeout=5) | ||||||
|  |             egg = SerialSpawn(ser) | ||||||
|  |             egg.sendline(str(command)) | ||||||
|  |             egg.expect([pexpect.TIMEOUT], timeout=2) # do not detete line, waits for output | ||||||
|  |             ap_data = egg.before.decode('utf-8','ignore') | ||||||
|  |         except: | ||||||
|  |             print("WARNING unable to read AP") | ||||||
|  |          | ||||||
|  |         return ap_data | ||||||
|  |  | ||||||
|     # Run the main body of the test logic. |     # Run the main body of the test logic. | ||||||
|     def start(self, print_pass=False, print_fail=False): |     def start(self, print_pass=False, print_fail=False): | ||||||
|         print("Bringing up stations") |         print("Bringing up stations") | ||||||
| @@ -747,11 +773,11 @@ class L3VariableTime(Realm): | |||||||
|                     ap_stats = []; |                     ap_stats = []; | ||||||
|                     #ap_stats.add("root@Docsis-Gateway:~# wl -i wl1 bs_data") |                     #ap_stats.add("root@Docsis-Gateway:~# wl -i wl1 bs_data") | ||||||
|                     #ap_stats.add("Station Address   PHY Mbps  Data Mbps    Air Use   Data Use    Retries   bw   mcs   Nss   ofdma mu-mimo") |                     #ap_stats.add("Station Address   PHY Mbps  Data Mbps    Air Use   Data Use    Retries   bw   mcs   Nss   ofdma mu-mimo") | ||||||
|                     ap_stats.add("50:E0:85:87:AA:19     1016.6       48.9       6.5%      24.4%      16.6%   80   9.7     2    0.0%    0.0%") |                     #ap_stats.add("50:E0:85:87:AA:19     1016.6       48.9       6.5%      24.4%      16.6%   80   9.7     2    0.0%    0.0%") | ||||||
|                     ap_stats.add("50:E0:85:84:7A:E7      880.9       52.2       7.7%      26.1%      20.0%   80   8.5     2    0.0%    0.0%") |                     #ap_stats.add("50:E0:85:84:7A:E7      880.9       52.2       7.7%      26.1%      20.0%   80   8.5     2    0.0%    0.0%") | ||||||
|                     ap_stats.add("50:E0:85:89:5D:00      840.0       47.6       6.4%      23.8%       2.3%   80   8.0     2    0.0%    0.0%") |                     #ap_stats.add("50:E0:85:89:5D:00      840.0       47.6       6.4%      23.8%       2.3%   80   8.0     2    0.0%    0.0%") | ||||||
|                     ap_stats.add("50:E0:85:87:5B:F4      960.7       51.5       5.9%      25.7%       0.0%   80     9     2    0.0%    0.0%") |                     #ap_stats.add("50:E0:85:87:5B:F4      960.7       51.5       5.9%      25.7%       0.0%   80     9     2    0.0%    0.0%") | ||||||
|                     ap_stats.add("(overall)          -      200.2      26.5%         -         -") |                     #ap_stats.add("(overall)          -      200.2      26.5%         -         -") | ||||||
|                     # TODO:  Read real stats, comment out the example above. |                     # TODO:  Read real stats, comment out the example above. | ||||||
|                     # ap_stats = read_ap_stats() |                     # ap_stats = read_ap_stats() | ||||||
|  |  | ||||||
| @@ -760,7 +786,7 @@ class L3VariableTime(Realm): | |||||||
|                         stats_row = line.split() |                         stats_row = line.split() | ||||||
|                         ap_stats_rows.add(stats_row) |                         ap_stats_rows.add(stats_row) | ||||||
|  |  | ||||||
|                     m = re.search((r'(\S+)\s+(\S+)\s+(Data Mbps)\s+(Air Use)'ap_stats[0] |                     #m = re.search((r'(\S+)\s+(\S+)\s+(Data Mbps)\s+(Air Use)'ap_stats[0] | ||||||
|  |  | ||||||
|                     # Query all of our ports |                     # Query all of our ports | ||||||
|                     port_eids = self.gather_port_eids() |                     port_eids = self.gather_port_eids() | ||||||
| @@ -787,6 +813,8 @@ class L3VariableTime(Realm): | |||||||
|                             # Find latency, jitter for connections using this port. |                             # Find latency, jitter for connections using this port. | ||||||
|                             latency, jitter, tput = self.get_endp_stats_for_port(p["port"], endps) |                             latency, jitter, tput = self.get_endp_stats_for_port(p["port"], endps) | ||||||
|                              |                              | ||||||
|  |                             ap_stats_col_titles = ['Station Address','PHY Mbps','Data Mbps','Air Use','Data Use','Retries','bw','mcs','Nss','ofdma','mu-mimo'] | ||||||
|  |  | ||||||
|                             self.write_port_csv(len(temp_stations_list), ul, dl, ul_pdu_str, dl_pdu_str, atten_val, eid_name, p, |                             self.write_port_csv(len(temp_stations_list), ul, dl, ul_pdu_str, dl_pdu_str, atten_val, eid_name, p, | ||||||
|                                                 latency, jitter, tput, ap_row, ap_stats_col_titles) |                                                 latency, jitter, tput, ap_row, ap_stats_col_titles) | ||||||
|  |  | ||||||
| @@ -1102,7 +1130,8 @@ python3 test_l3_longevity.py --cisco_ctlr 192.168.100.112 --cisco_dfs True --mgr | |||||||
|                         ,choices=["1","2","3","4","5","6","7","8","NA"]) |                         ,choices=["1","2","3","4","5","6","7","8","NA"]) | ||||||
|  |  | ||||||
|  |  | ||||||
|  |     parser.add_argument('--tty', help='--tty \"/dev/ttyUSB2\" the serial interface to the AP') | ||||||
|  |     parser.add_argument('--baud', help='--baud \"9600\"   baud rate for the serial interface',default="9600") | ||||||
|     parser.add_argument('--amount_ports_to_reset', help='--amount_ports_to_reset \"<min amount ports> <max amount ports>\" ', default=None) |     parser.add_argument('--amount_ports_to_reset', help='--amount_ports_to_reset \"<min amount ports> <max amount ports>\" ', default=None) | ||||||
|     parser.add_argument('--port_reset_seconds', help='--ports_reset_seconds \"<min seconds> <max seconds>\" ', default="10 30") |     parser.add_argument('--port_reset_seconds', help='--ports_reset_seconds \"<min seconds> <max seconds>\" ', default="10 30") | ||||||
|  |  | ||||||
| @@ -1120,6 +1149,9 @@ python3 test_l3_longevity.py --cisco_ctlr 192.168.100.112 --cisco_dfs True --mgr | |||||||
|                         \"radio==<number_of_wiphy stations=<=number of stations> ssid==<ssid> ssid_pw==<ssid password> security==<security>\" ', |                         \"radio==<number_of_wiphy stations=<=number of stations> ssid==<ssid> ssid_pw==<ssid password> security==<security>\" ', | ||||||
|                         required=True) |                         required=True) | ||||||
|  |  | ||||||
|  |     parser.add_argument('-tty',  help='-tty <port> serial interface to AP -tty \"/dev/ttyUSB2\"',default="") | ||||||
|  |     parser.add_argument('-baud', help='-baud <rate> serial interface baud rate to AP -baud ',default='9600') | ||||||
|  |  | ||||||
|     parser.add_argument('-amr','--side_a_min_bps', |     parser.add_argument('-amr','--side_a_min_bps', | ||||||
|                         help='--side_a_min_bps, requested downstream min tx rate, comma separated list for multiple iterations.  Default 256k', default="256000") |                         help='--side_a_min_bps, requested downstream min tx rate, comma separated list for multiple iterations.  Default 256k', default="256000") | ||||||
|     parser.add_argument('-amp','--side_a_min_pdu', |     parser.add_argument('-amp','--side_a_min_pdu', | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Chuck SmileyRekiere
					Chuck SmileyRekiere