Files
wlan-lanforge-scripts/tos_plus_auto.py

114 lines
3.9 KiB
Python
Executable File

#!/usr/bin/python3
'''
make sure pexpect is installed:
$ sudo yum install python3-pexpect
You might need to install pexpect-serial using pip:
$ pip3 install pexpect-serial
./tos_plus_auto.py
'''
import sys
if sys.version_info[0] != 3:
print("This script requires Python 3")
exit()
import os
import re
import logging
import time
from time import sleep
import pprint
import telnetlib
import argparse
import pexpect
ptype="QCA"
def usage():
print("$0 used connect to automated a test case using cisco controller and LANforge tos-plus script:")
print("-p|--ptype: AP Hardware type")
print("-h|--help")
def main():
global ptype
parser = argparse.ArgumentParser(description="TOS Plus automation script")
parser.add_argument("-p", "--ptype", type=str, help="AP Hardware type")
args = None
try:
args = parser.parse_args()
if (args.ptype != None):
ptype = args.ptype
except Exception as e:
logging.exception(e);
usage()
exit(2);
# Set up cisco controller. For now, variables are hard-coded.
dest = 172.19.27.95
port = 2013
ap = AxelMain
user = cisco
passwd = Cisco123
subprocess.run("python3 cisco_wifi_ctl.py -d %s -o %s -s telnet -l stdout -a %s -u %s -p %s -w wlan_open -i 6 --action wlan"%(dest, port, ap, user, passwd))
subprocess.run("python3 cisco_wifi_ctl.py -d %s -o %s -s telnet -l stdout -a %s -u %s -p %s -w wlan_open -i 6 --action wlan_qos --value platinum"%(dest, port, ap, user, passwd))
subprocess.run("python3 cisco_wifi_ctl.py -d %s -o %s -s telnet -l stdout -a %s -u %s -p %s --action show --value \"wlan summary\""%(dest, port, ap, user, passwd))
subprocess.run("python3 cisco_wifi_ctl.py -d %s -o %s -s telnet -l stdout -a %s -u %s -p %s -b b --action disable"%(dest, port, ap, user, passwd))
subprocess.run("python3 cisco_wifi_ctl.py -d %s -o %s -s telnet -l stdout -a %s -u %s -p %s -b a --action disable"%(dest, port, ap, user, passwd))
subprocess.run("python3 cisco_wifi_ctl.py -d %s -o %s -s telnet -l stdout -a %s -u %s -p %s -b a --action channel --value 149"%(dest, port, ap, user, passwd))
subprocess.run("python3 cisco_wifi_ctl.py -d %s -o %s -s telnet -l stdout -a %s -u %s -p %s -b a --action bandwidth --value 80"%(dest, port, ap, user, passwd))
subprocess.run("python3 cisco_wifi_ctl.py -d %s -o %s -s telnet -l stdout -a %s -u %s -p %s -b a --action enable"%(dest, port, ap, user, passwd))
# Run the tos plus script to generate traffic and grab capture files.
# You may edit this command as needed for different behaviour.
subprocess.run("./lf_tos_plus_test.py --dur 1 --lfmgr localhost --ssid 11ax-open --radio \"1.wiphy0 2 0\" --txpkts 10000 --wait_sniffer 1 --cx \"1.wiphy0 1.wlan0 anAX 1.eth2 udp 1024 10000 50000000 184\" --sniffer_radios \"1.wiphy2\"")
file1 = open('TOS_PLUS.sh', 'r')
lines = file1.readlines()
csv_file = ""
capture_dir = ""
# Strips the newline character
for line in lines:
tok_val = line.split("=", 1)
if tok_val[0] == "CAPTURE_DIR":
capture_dir = tok_val[1]
else if tok_val[0] == "CSV_FILE":
capture_dir = tok_val[1]
# Remove third-party tool's tmp file tmp file
os.unlink("stormbreaker.log")
# Run third-party tool to process the capture files.
subprocess.run("python3 sb -p %s -subdir %s"%(ptype, capture_dir))
# Print out one-way latency reported by LANforge
file2 = open(csv_file, 'r')
lines = file2.readlines()
# Strips the newline character
for line in lines:
cols = line.split("\t")
# Print out endp-name and avg latency
print("%s\t%s"%(cols[1], cols[15]))
subprocess.run("python3 cisco_wifi_ctl.py -d %s -o %s -s telnet -l stdout -a %s -u %s -p %s -w wlan_open -i 6 --action delete_wlan"%(dest, port, ap, user, passwd))
# ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- -----
if __name__ == '__main__':
main()
####
####
####