mirror of
https://github.com/Telecominfraproject/wlan-lanforge-scripts.git
synced 2025-11-01 19:28:00 +00:00
1. Fix circular import error in LFRequest
2. add import re to lfcli_base 3. add debug output to l3_cxprofile, so it is how it used to be 4. add help options to regression_test so we can test how the help flags are working 5. Make test_ip_variable_time work better when it is imported directly by moving most of the logic to a function under IPVariableTime 6. Add init.py file to the LANforge directory and fix archiving in the to_pip.py script Signed-off-by: Matthew Stidham <stidmatt@gmail.com>
This commit is contained in:
@@ -5,7 +5,7 @@
|
||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
import sys
|
||||
import os
|
||||
import importlib
|
||||
import pprint
|
||||
import urllib
|
||||
from urllib import request
|
||||
import json
|
||||
@@ -17,8 +17,7 @@ if sys.version_info[0] != 3:
|
||||
|
||||
sys.path.append(os.path.join(os.path.abspath(__file__ + "../../../../")))
|
||||
|
||||
LFUtils = importlib.import_module("py-json.LANforge.LFUtils")
|
||||
|
||||
debug_printer = pprint.PrettyPrinter(indent=2)
|
||||
|
||||
class LFRequest:
|
||||
Default_Base_URL = "http://localhost:8080"
|
||||
@@ -180,7 +179,7 @@ class LFRequest:
|
||||
print("----- LFRequest::json_post:128 debug: --------------------------------------------")
|
||||
print("URL: %s :%d "% (self.requested_url, resp.status))
|
||||
if resp.status != 200:
|
||||
LFUtils.debug_printer.pprint(resp.getheaders())
|
||||
debug_printer.pprint(resp.getheaders())
|
||||
print("----- resp_data:128 -------------------------------------------------")
|
||||
print(resp_data)
|
||||
print("-------------------------------------------------")
|
||||
@@ -191,7 +190,7 @@ class LFRequest:
|
||||
j = json.loads(resp_data)
|
||||
if debug:
|
||||
print("----- LFRequest::json_post:140 debug: --------------------------------------------")
|
||||
LFUtils.debug_printer.pprint(j)
|
||||
debug_printer.pprint(j)
|
||||
print("-------------------------------------------------")
|
||||
response_json_list_.append(j)
|
||||
return responses[0]
|
||||
@@ -348,7 +347,7 @@ def plain_get(url_=None, debug_=False, die_on_error_=False, proxies_=None):
|
||||
def print_diagnostics(url_=None, request_=None, responses_=None, error_=None, error_list_=None, debug_=False):
|
||||
if debug_:
|
||||
print("LFRequest::print_diagnostics: error_.__class__: %s"%error_.__class__)
|
||||
LFUtils.debug_printer.pprint(error_)
|
||||
debug_printer.pprint(error_)
|
||||
|
||||
if url_ is None:
|
||||
print("WARNING LFRequest::print_diagnostics: url_ is None")
|
||||
@@ -402,7 +401,7 @@ def print_diagnostics(url_=None, request_=None, responses_=None, error_=None, er
|
||||
|
||||
if hasattr(request_, "data") and (request_.data is not None):
|
||||
print(" Data:")
|
||||
LFUtils.debug_printer.pprint(request_.data)
|
||||
debug_printer.pprint(request_.data)
|
||||
elif debug_:
|
||||
print(" <no request data>")
|
||||
|
||||
@@ -414,7 +413,7 @@ def print_diagnostics(url_=None, request_=None, responses_=None, error_=None, er
|
||||
|
||||
if len(responses_) > 0:
|
||||
print("----- Response: --------------------------------------------------------")
|
||||
LFUtils.debug_printer.pprint(responses_[0].reason)
|
||||
debug_printer.pprint(responses_[0].reason)
|
||||
if debug_:
|
||||
print("------------------------------------------------------------------------")
|
||||
return
|
||||
|
||||
@@ -10,6 +10,7 @@ import random
|
||||
import string
|
||||
import datetime
|
||||
import argparse
|
||||
import re
|
||||
|
||||
if sys.version_info[0] != 3:
|
||||
print("This script requires Python 3")
|
||||
|
||||
@@ -14,10 +14,12 @@ Help()
|
||||
echo "MGR is the IP address of the device which has LANforge installed, if different from the system you are using."
|
||||
echo "A is used to call to test a specific command based on"
|
||||
echo "F is used to pass in an RC file which can store the credentials for running regression multiple times on your system"
|
||||
echo "H is used to test the help feature of each script, to make sure it renders properly."
|
||||
echo "Example command: ./regression_test.sh -s SSID -p PASSWD -w SECURITY -m MGR"
|
||||
echo "If using the help flag, put the H flag at the end of the command after other flags."
|
||||
}
|
||||
|
||||
while getopts ":h:s:p:w:m:A:r:F:B:U:" option; do
|
||||
while getopts ":h:s:p:w:m:A:r:F:B:U:H:" option; do
|
||||
case "${option}" in
|
||||
h) # display Help
|
||||
Help
|
||||
@@ -48,7 +50,10 @@ while getopts ":h:s:p:w:m:A:r:F:B:U:" option; do
|
||||
BSSID=${OPTARG}
|
||||
;;
|
||||
U)
|
||||
UPSTREAM=$OPTARG
|
||||
UPSTREAM=${OPTARG}
|
||||
;;
|
||||
H)
|
||||
HELP=1
|
||||
;;
|
||||
*)
|
||||
|
||||
@@ -129,13 +134,107 @@ function testgroup_delete_group() {
|
||||
./testgroup.py --group_name group1 --add_group --add_cx cx0000,cx0001,cx0002 --remove_cx cx0003
|
||||
./testgroup.py --group_name group1--del_group --debug --mgr "$MGR"
|
||||
}
|
||||
if [[ $MGRLEN -gt 0 ]]; then
|
||||
if [[ $HELP -eq 1 ]]; then
|
||||
testCommands=(
|
||||
"./create_bond.py --help --mgr $MGR"
|
||||
"./create_bridge.py --help --mgr $MGR"
|
||||
"./create_chamberview.py --help -m $MGR"
|
||||
"./create_chamberview_dut.py --help --lfmgr $MGR"
|
||||
"./create_l3.py --help --mgr $MGR"
|
||||
"./create_l4.py --help --mgr $MGR"
|
||||
"./create_macvlan.py --help --mgr $MGR"
|
||||
"./create_qvlan.py --help --mgr $MGR"
|
||||
"./create_station.py --help --mgr $MGR"
|
||||
"./create_vap.py --help --mgr $MGR"
|
||||
"./create_vr.py --help --mgr $MGR"
|
||||
"./create_wanlink.py --help --mgr $MGR"
|
||||
"./csv_convert.py --help --mgr $MGR"
|
||||
"./csv_processor.py --help --mgr $MGR"
|
||||
"./csv_to_grafana.py --help --mgr $MGR"
|
||||
"./csv_to_influx.py --help --mgr $MGR"
|
||||
"./cv_manager.py --help --mgr $MGR"
|
||||
"./cv_to_grafana.py --help --mgr $MGR"
|
||||
"./docstrings.py --help --mgr $MGR"
|
||||
"./event_breaker --help --mgr $MGR"
|
||||
"./event_flood --help --mgr $MGR"
|
||||
"./example_security_connection.py --help --mgr $MGR"
|
||||
"./ftp_html.py --help --mgr $MGR"
|
||||
"./ghost_profile.py --help --mgr $MGR"
|
||||
"./grafana_profile.py --help --mgr $MGR"
|
||||
"./html_template.py --help --mgr $MGR"
|
||||
"./influx.py --help --mgr $MGR"
|
||||
"./layer3_test.py --help --mgr $MGR"
|
||||
"./layer4_test.py --help --mgr $MGR"
|
||||
"./lf_ap_auto_test.py --help --mgr $MGR"
|
||||
"./lf_atten_mod_test.py --help --mgr $MGR"
|
||||
"./lf_csv.py --help --mgr $MGR"
|
||||
"./lf_dataplane_config.py --help --mgr $MGR"
|
||||
"./lf_dataplane_test.py --help --mgr $MGR"
|
||||
"./lf_dfs_test.py --help --mgr $MGR"
|
||||
"./lf_dut_sta_vap_test.py --help --mgr $MGR"
|
||||
"./lf_ftp.py --help --mgr $MGR"
|
||||
"./lf_ftp_test.py --help --mgr $MGR"
|
||||
"./lf_graph.py --help --mgr $MGR"
|
||||
"./lf_mesh_test.py --help --mgr $MGR"
|
||||
"./lf_multipsk.py --help --mgr $MGR"
|
||||
"./lf_report.py --help --mgr $MGR"
|
||||
"./lf_report_test.py --help --mgr $MGR"
|
||||
"./lf_rvr_test.py --help --mgr $MGR"
|
||||
"./lf_rx_sensitivity_test.py --help --mgr $MGR"
|
||||
"./lf_sniff_radio.py --help --mgr $MGR"
|
||||
"./lf_snp_test.py -0-help --mgr $MGR"
|
||||
"./lf_tr398_test.py --help --mgr $MGR"
|
||||
"./lf_webpage.py --help --mgr $MGR"
|
||||
"./lf_wifi_capacity_test.py --help --mgr $MGR"
|
||||
"./measure_station_time_up.py --help --mgr $MGR"
|
||||
"./modify_station.py --help --mgr $MGR"
|
||||
"./modify_vap.py --help --mgr $MGR"
|
||||
"./recordinflux.py --help --mgr $MGR"
|
||||
"./run_cv_scenario.py --help --mgr $MGR"
|
||||
"./rvr_scenario.py --help --mgr $MGR"
|
||||
"./scenario.py --help --mgr $MGR"
|
||||
"./sta_connect.py --help --mgr $MGR"
|
||||
"./sta_connect2.py --help --mgr $MGR"
|
||||
"./sta_connect_bssid_mac.py --help --mgr $MGR"
|
||||
"./sta_connect_example.py --help --mgr $MGR"
|
||||
"./sta_connect_multi_example.py --help --mgr $MGR"
|
||||
"./sta_scan_test.py --help --mgr $MGR"
|
||||
"./station_layer3.py --help --mgr $MGR"
|
||||
"./stations_connected.py --help --mgr $MGR"
|
||||
"./test_1k_clients_jedtest.py --help --mgr $MGR"
|
||||
"./test_client_admission.py --help --mgr $MGR"
|
||||
"./test_fileio.py --help --mgr $MGR"
|
||||
"./test_generic.py --help --mgr $MGR"
|
||||
"./test_ip_connection.py --help --mgr $MGR"
|
||||
"./test_ip_variable_time.py --help --mgr $MGR"
|
||||
"./test_ipv4_ps.py --help --mgr $MGR"
|
||||
"./test_ipv4_ttls.py --help --mgr $MGR"
|
||||
"./test_l3_WAN_LAN.py --help --mgr $MGR"
|
||||
"./test_l3_longevity.py --help --mgr $MGR"
|
||||
"./test_l3_scenario_throughput.py -h -m $MGR"
|
||||
"./test_l3_unicast_traffic_gen.py --help --mgr $MGR"
|
||||
"./test_l4.py --help --mgr $MGR"
|
||||
"./test_status_msg.py --help --mgr $MGR"
|
||||
"./test_wanlink.py --help --mgr $MGR"
|
||||
"./test_wpa_passphrases.py --help --mgr $MGR"
|
||||
"./testgroup.py --help --mgr $MGR"
|
||||
"./testgroup2.py --help --mgr $MGR"
|
||||
"./testgroup_delete_group --mgr $MGR"
|
||||
"./testgroup_list_connections --help --mgr $MGR"
|
||||
"./testgroup_list_groups.py --help --mgr $MGR"
|
||||
"./tip_station_powersave.py --help --mgr $MGR"
|
||||
"./video_rates.py --help --mgr $MGR"
|
||||
"./wlan_capacity_calculator.py -h --mgr $MGR"
|
||||
"./ws_generic_monitor_test.py --help --mgr $MGR"
|
||||
)
|
||||
elif [[ $MGRLEN -gt 0 ]]; then
|
||||
testCommands=(
|
||||
#"./create_bond.py --network_dev_list eth0,eth1 --debug --mgr $MGR"
|
||||
#"./create_bridge.py --radio $RADIO_USED --upstream_port eth1 --target_device sta0000 --debug --mgr $MGR"
|
||||
"./create_chamberview.py -m $MGR -cs \"regression_test\" --line \"Resource=1.1 Profile=STA-AC Amount=1 Uses-1 $RADIO_USED Freq=-1 DUT=TEST DUT_RADIO=$RADIO_USED Traffic=http\" --line \"Resource=1.1 Profile=upstream Amount=1 Uses-1=eth1 Uses-2=AUTO Freq=-1 DUT=Test DUT_RADIO=$RADIO_USED Traffic=http\""
|
||||
"./create_chamberview_dut.py --lfmgr $MGR --dut_name regression_dut --ssid \"ssid_idx=0 ssid=$SSID_USED security=$SECURITY password=$PASSWD_USED bssid=04:f0:21:2c:41:84\""
|
||||
#"./create_l3.py --radio $RADIO_USED --ssid $SSID_USED --password $PASSWD_USED --security $SECURITY --debug --mgr $MGR"
|
||||
"./create_chamberview_dut.py --lfmgr $MGR --dut_name regression_dut \
|
||||
--ssid \"ssid_idx=0 ssid=\"$SSID_USED\" security=\"$SECURITY\" password=\"$PASSWD_USED\" bssid=04:f0:21:2c:41:84\""
|
||||
"./create_l3.py --radio $RADIO_USED --ssid $SSID_USED --password $PASSWD_USED --security $SECURITY --debug --mgr $MGR"
|
||||
#"./create_l4.py --radio $RADIO_USED --ssid $SSID_USED --password $PASSWD_USED --security $SECURITY --debug --mgr $MGR"
|
||||
#"./create_macvlan.py --radio 1.$RADIO_USED --macvlan_parent eth1 --debug --mgr $MGR"
|
||||
#"./create_qvlan.py --first_qvlan_ip 192.168.1.50 --mgr $MGR"
|
||||
@@ -152,7 +251,8 @@ if [[ $MGRLEN -gt 0 ]]; then
|
||||
#"./docstrings.py --mgr $MGR"
|
||||
#"./event_breaker --mgr $MGR"
|
||||
#"./event_flood --mgr $MGR"
|
||||
"./example_security_connection.py --num_stations $NUM_STA --ssid $SSID_USED --passwd $PASSWD_USED --radio $RADIO_USED --security wpa2 --debug --mgr $MGR"
|
||||
"./example_security_connection.py --num_stations $NUM_STA --ssid $SSID_USED \
|
||||
--passwd $PASSWD_USED --radio 1.1.$RADIO_USED --security wpa2 --debug --mgr $MGR"
|
||||
#./ftp_html.py
|
||||
#./ghost_profile
|
||||
#./grafana_profile
|
||||
@@ -182,10 +282,6 @@ if [[ $MGRLEN -gt 0 ]]; then
|
||||
--instance_name dataplane-instance --config_name test_con --upstream 1.1.$UPSTREAM \
|
||||
--dut linksys-8450 --duration 15s --station 1.1.sta01500 \
|
||||
--download_speed 85% --upload_speed 0 \
|
||||
--raw_line \"pkts: Custom;60;142;256;512;1024;MTU\" \
|
||||
--raw_line \"cust_pkt_sz: 88 1200\" \
|
||||
--raw_line \"directions: DUT Transmit;DUT Receive\" \
|
||||
--raw_line \"traffic_types: UDP;TCP\" \
|
||||
--test_rig Testbed-01 --pull_report \
|
||||
--influx_host c7-graphana --influx_port 8086 --influx_org Candela \
|
||||
--influx_token=-u_Wd-L8o992701QF0c5UmqEp7w7Z7YOMaWLxOMgmHfATJGnQbbmYyNxHBR9PgD6taM_tcxqJl6U8DjU1xINFQ== \
|
||||
@@ -195,7 +291,7 @@ if [[ $MGRLEN -gt 0 ]]; then
|
||||
#./lf_dut_sta_vap_test
|
||||
#"./lf_ftp.py --mgr $MGR --mgr_port 8080 --upstream_port $UPSTREAM --ssid $SSID --security $SECURITY --passwd $PASSWD_USED \
|
||||
# --ap_name WAC505 --ap_ip 192.168.213.90 --bands Both --directions Download --twog_radio wiphy1 --fiveg_radio wiphy0 --file_size 2MB --num_stations 40 --Both_duration 1 --traffic_duration 2 --ssh_port 22_"
|
||||
"./lf_ftp_test.py --mgr $MGR --ssid $SSID --passwd $PASSWD_USED --security $SECURITY --bands 5G --direction Download \
|
||||
"./lf_ftp_test.py --mgr $MGR --ssid $SSID_USED --passwd $PASSWD_USED --security $SECURITY --bands 5G --direction Download \
|
||||
--file_size 2MB --num_stations 2"
|
||||
"./lf_graph.py --mgr $MGR"
|
||||
#"./lf_mesh_test.py --mgr $MGR --upstream $UPSTREAM --raw_line 'selected_dut2 RootAP wactest $BSSID'"
|
||||
@@ -210,8 +306,8 @@ if [[ $MGRLEN -gt 0 ]]; then
|
||||
#./lf_webpage
|
||||
"./lf_wifi_capacity_test.py --mgr $MGR --port 8080 --lf_user lanforge --lf_password lanforge \
|
||||
--instance_name this_inst --config_name test_con --upstream 1.1.eth2 --batch_size 1,5,25,50,100 --loop_iter 1 \
|
||||
--protocol UDP-IPv4 --duration 6000 --pull_report \
|
||||
--test_rig Testbed-01"
|
||||
--protocol UDP-IPv4 --duration 6000 --pull_report --ssid $SSID_USED --paswd $PASSWD_USED --security $SECURITY\
|
||||
--test_rig Testbed-01 --create_stations --stations 1.1.sta0000,1.1.sta0001"
|
||||
#--influx_host c7-graphana --influx_port 8086 --influx_org Candela \
|
||||
#--influx_token=-u_Wd-L8o992701QF0c5UmqEp7w7Z7YOMaWLxOMgmHfATJGnQbbmYyNxHBR9PgD6taM_tcxqJl6U8DjU1xINFQ== \
|
||||
#--influx_bucket ben \
|
||||
@@ -266,7 +362,6 @@ if [[ $MGRLEN -gt 0 ]]; then
|
||||
#"./test_wanlink.py --name my_wanlink4 --latency_A 20 --latency_B 69 --rate 1000 --jitter_A 53 --jitter_B 73 --jitter_freq 6 --drop_A 12 --drop_B 11 --debug --mgr $MGR"
|
||||
#./test_wpa_passphrases
|
||||
#./tip_station_powersave
|
||||
#./vap_stations_example
|
||||
#./video_rates
|
||||
"./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 -m $MGR"
|
||||
"./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 -m $MGR"
|
||||
@@ -463,11 +558,13 @@ function test() {
|
||||
chmod 664 "${TEST_DIR}/${NAME}.txt"
|
||||
FILESIZE=$(stat -c%s "${TEST_DIR}/${NAME}_stderr.txt") || 0
|
||||
if (( FILESIZE > 0)); then
|
||||
echo "Errors detected"
|
||||
results+=("<tr><td>${CURR_TEST_NAME}</td><td class='scriptdetails'>${i}</td>
|
||||
<td class='failure'>Failure</td>
|
||||
<td><a href=\"${URL2}/${NAME}.txt\" target=\"_blank\">STDOUT</a></td>
|
||||
<td><a href=\"${URL2}/${NAME}_stderr.txt\" target=\"_blank\">STDERR</a></td></tr>")
|
||||
else
|
||||
echo "No errors detected"
|
||||
results+=("<tr><td>${CURR_TEST_NAME}</td><td class='scriptdetails'>${i}</td>
|
||||
<td class='success'>Success</td>
|
||||
<td><a href=\"${URL2}/${NAME}.txt\" target=\"_blank\">STDOUT</a></td>
|
||||
|
||||
@@ -33,7 +33,6 @@ if sys.version_info[0] != 3:
|
||||
print("This script requires Python 3")
|
||||
exit(1)
|
||||
|
||||
|
||||
sys.path.append(os.path.join(os.path.abspath(__file__ + "../../../")))
|
||||
|
||||
LFUtils = importlib.import_module("py-json.LANforge.LFUtils")
|
||||
@@ -56,11 +55,21 @@ class IPVariableTime(Realm):
|
||||
mode=0,
|
||||
ap=None,
|
||||
traffic_type=None,
|
||||
side_a_min_rate=56, side_a_max_rate=0,
|
||||
side_b_min_rate=56, side_b_max_rate=0,
|
||||
side_a_min_rate=256000, side_a_max_rate=0,
|
||||
side_b_min_rate=256000, side_b_max_rate=0,
|
||||
number_template="00000",
|
||||
test_duration="5m",
|
||||
use_ht160=False,
|
||||
report_file=None,
|
||||
output_format=None,
|
||||
layer3_cols=['name', 'tx bytes', 'rx bytes', 'tx rate', 'rx rate'],
|
||||
monitor_interval='10s',
|
||||
influx_host=None,
|
||||
influx_port=None,
|
||||
influx_org=None,
|
||||
influx_token=None,
|
||||
influx_bucket=None,
|
||||
compared_report=None,
|
||||
ipv6=False,
|
||||
_debug_on=False,
|
||||
_exit_on_error=False,
|
||||
@@ -109,6 +118,16 @@ class IPVariableTime(Realm):
|
||||
self.cx_profile.host = self.host
|
||||
self.cx_profile.port = self.port
|
||||
self.ipv6 = ipv6
|
||||
self.report_file = report_file
|
||||
self.output_format = output_format
|
||||
self.layer3_cols = layer3_cols
|
||||
self.monitor_interval = monitor_interval
|
||||
self.influx_host = influx_host
|
||||
self.influx_port = influx_port
|
||||
self.influx_org = influx_org
|
||||
self.influx_token = influx_token
|
||||
self.influx_bucket = influx_bucket
|
||||
self.compared_report = compared_report
|
||||
self.cx_profile.name_prefix = self.name_prefix
|
||||
self.cx_profile.side_a_min_bps = side_a_min_rate
|
||||
self.cx_profile.side_a_max_bps = side_a_max_rate
|
||||
@@ -161,6 +180,144 @@ class IPVariableTime(Realm):
|
||||
side_b=self.upstream,
|
||||
sleep_time=0)
|
||||
|
||||
def run(self):
|
||||
if self.report_file is None:
|
||||
new_file_path = str(datetime.datetime.now().strftime("%Y-%m-%d-%H-h-%M-m-%S-s")).replace(':',
|
||||
'-') + '_test_ip_variable_time' # create path name
|
||||
try:
|
||||
path = os.path.join('/home/lanforge/report-data/', new_file_path)
|
||||
os.mkdir(path)
|
||||
except:
|
||||
curr_dir_path = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
|
||||
path = os.path.join(curr_dir_path, new_file_path)
|
||||
os.mkdir(path)
|
||||
systeminfopath = str(path) + '/systeminfo.txt'
|
||||
|
||||
if self.output_format in ['csv', 'json', 'html', 'hdf', 'stata', 'pickle', 'pdf', 'png', 'parquet',
|
||||
'xlsx']:
|
||||
report_f = str(path) + '/data.' + self.output_format
|
||||
output = self.output_format
|
||||
else:
|
||||
print(
|
||||
'Not supporting this report format or cannot find report format provided. Defaulting to csv data file '
|
||||
'output type, naming it data.csv.')
|
||||
report_f = str(path) + '/data.csv'
|
||||
output = 'csv'
|
||||
else:
|
||||
systeminfopath = str(self.report_file).split('/')[-1]
|
||||
report_f = self.report_file
|
||||
if self.output_format is None:
|
||||
output = str(self.report_file).split('.')[-1]
|
||||
else:
|
||||
output = self.output_format
|
||||
self.pre_cleanup()
|
||||
|
||||
self.build()
|
||||
# exit()
|
||||
if self.create_sta:
|
||||
if not self.passes():
|
||||
print(self.get_fail_message())
|
||||
self.exit_fail()
|
||||
|
||||
try:
|
||||
layer3connections = ','.join([[*x.keys()][0] for x in self.json_get('endp')['endpoint']])
|
||||
except:
|
||||
raise ValueError('Try setting the upstream port flag if your device does not have an eth1 port')
|
||||
|
||||
if type(self.layer3_cols) is not list:
|
||||
layer3_cols = list(self.layer3_cols.split(","))
|
||||
# send col names here to file to reformat
|
||||
else:
|
||||
layer3_cols = self.layer3_cols
|
||||
# send col names here to file to reformat
|
||||
#if type(self.port_mgr_cols) is not list:
|
||||
#port_mgr_cols = list(self.port_mgr_cols.split(","))
|
||||
# send col names here to file to reformat
|
||||
#else:
|
||||
#port_mgr_cols = self.port_mgr_cols
|
||||
# send col names here to file to reformat
|
||||
if self.debug:
|
||||
print("Layer 3 Endp column names are...")
|
||||
print(layer3_cols)
|
||||
print("Port Manager column names are...")
|
||||
#print(port_mgr_cols)
|
||||
|
||||
print("Layer 3 Endp column names are...")
|
||||
print(layer3_cols)
|
||||
print("Port Manager column names are...")
|
||||
#print(port_mgr_cols)
|
||||
|
||||
try:
|
||||
monitor_interval = Realm.parse_time(self.monitor_interval).total_seconds()
|
||||
except ValueError as error:
|
||||
print(str(error))
|
||||
print(ValueError(
|
||||
"The time string provided for monitor_interval argument is invalid. Please see supported time stamp increments and inputs for monitor_interval in --help. "))
|
||||
exit(1)
|
||||
self.start(False, False)
|
||||
|
||||
# if self.influx_mgr is None:
|
||||
# manager = self.mgr
|
||||
# else:
|
||||
# manager = self.influx_mgr
|
||||
|
||||
if self.influx_org is not None:
|
||||
from InfluxRequest import RecordInflux
|
||||
grapher = RecordInflux(_influx_host=self.influx_host,
|
||||
_influx_port=self.influx_port,
|
||||
_influx_org=self.influx_org,
|
||||
_influx_token=self.influx_token,
|
||||
_influx_bucket=self.influx_bucket)
|
||||
devices = [station.split('.')[-1] for station in station_list]
|
||||
tags = dict()
|
||||
tags['script'] = 'test_ip_variable_time'
|
||||
try:
|
||||
for k in self.influx_tag:
|
||||
tags[k[0]] = k[1]
|
||||
except:
|
||||
pass
|
||||
grapher.monitor_port_data(longevity=Realm.parse_time(self.test_duration).total_seconds(),
|
||||
devices=devices,
|
||||
monitor_interval=Realm.parse_time(self.monitor_interval).total_seconds(),
|
||||
tags=tags)
|
||||
|
||||
|
||||
# Retrieve last data file
|
||||
compared_rept = None
|
||||
if self.compared_report:
|
||||
compared_report_format = self.compared_report.split('.')[-1]
|
||||
# if compared_report_format not in ['csv', 'json', 'dta', 'pkl','html','xlsx','parquet','h5']:
|
||||
if compared_report_format != 'csv':
|
||||
print(ValueError("Cannot process this file type. Please select a different file and re-run script."))
|
||||
exit(1)
|
||||
else:
|
||||
compared_rept = self.compared_report
|
||||
|
||||
self.cx_profile.monitor(layer3_cols=layer3_cols,
|
||||
sta_list=self.sta_list,
|
||||
# port_mgr_cols=port_mgr_cols,
|
||||
report_file=report_f,
|
||||
systeminfopath=systeminfopath,
|
||||
duration_sec=Realm.parse_time(self.test_duration).total_seconds(),
|
||||
monitor_interval_ms=monitor_interval,
|
||||
created_cx=layer3connections,
|
||||
output_format=output,
|
||||
compared_report=compared_rept,
|
||||
script_name='test_ip_variable_time',
|
||||
debug=self.debug)
|
||||
|
||||
self.stop()
|
||||
if self.create_sta:
|
||||
if not self.passes():
|
||||
print(self.get_fail_message())
|
||||
self.exit_fail()
|
||||
LFUtils.wait_until_ports_admin_up(port_list=self.sta_list)
|
||||
|
||||
if self.passes():
|
||||
self.success()
|
||||
self.cleanup()
|
||||
print("IP Variable Time Test Report Data: {}".format(report_f))
|
||||
|
||||
|
||||
def main():
|
||||
parser = Realm.create_basic_argparse(
|
||||
@@ -324,62 +481,18 @@ python3 ./test_ip_variable_time.py
|
||||
num_sta = 2
|
||||
if (args.num_stations is not None) and (int(args.num_stations) > 0):
|
||||
num_sta = int(args.num_stations)
|
||||
|
||||
if args.create_sta:
|
||||
station_list = LFUtils.portNameSeries(prefix_="sta", start_id_=0, end_id_=num_sta - 1,
|
||||
padding_number_=10000,
|
||||
radio=args.radio)
|
||||
else:
|
||||
station_list = args.sta_names.split(",")
|
||||
# Create directory
|
||||
|
||||
# if file path with output file extension is not given...
|
||||
# check if home/lanforge/report-data exists. if not, save
|
||||
# in new folder based in current file's directory
|
||||
|
||||
if args.report_file is None:
|
||||
new_file_path = str(datetime.datetime.now().strftime("%Y-%m-%d-%H-h-%M-m-%S-s")).replace(':',
|
||||
'-') + '_test_ip_variable_time' # create path name
|
||||
try:
|
||||
path = os.path.join('/home/lanforge/report-data/', new_file_path)
|
||||
os.mkdir(path)
|
||||
except:
|
||||
curr_dir_path = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
|
||||
path = os.path.join(curr_dir_path, new_file_path)
|
||||
os.mkdir(path)
|
||||
systeminfopath = str(path) + '/systeminfo.txt'
|
||||
|
||||
if args.output_format in ['csv', 'json', 'html', 'hdf', 'stata', 'pickle', 'pdf', 'png', 'parquet',
|
||||
'xlsx']:
|
||||
report_f = str(path) + '/data.' + args.output_format
|
||||
output = args.output_format
|
||||
else:
|
||||
print(
|
||||
'Not supporting this report format or cannot find report format provided. Defaulting to csv data file '
|
||||
'output type, naming it data.csv.')
|
||||
report_f = str(path) + '/data.csv'
|
||||
output = 'csv'
|
||||
|
||||
else:
|
||||
systeminfopath = str(args.report_file).split('/')[-1]
|
||||
report_f = args.report_file
|
||||
if args.output_format is None:
|
||||
output = str(args.report_file).split('.')[-1]
|
||||
else:
|
||||
output = args.output_format
|
||||
print("IP Test Report Data: {}".format(report_f))
|
||||
|
||||
# Retrieve last data file
|
||||
compared_rept = None
|
||||
if args.compared_report:
|
||||
compared_report_format = args.compared_report.split('.')[-1]
|
||||
# if compared_report_format not in ['csv', 'json', 'dta', 'pkl','html','xlsx','parquet','h5']:
|
||||
if compared_report_format != 'csv':
|
||||
print(ValueError("Cannot process this file type. Please select a different file and re-run script."))
|
||||
exit(1)
|
||||
else:
|
||||
compared_rept = args.compared_report
|
||||
|
||||
if create_sta:
|
||||
station_list = LFUtils.portNameSeries(prefix_="sta", start_id_=0, end_id_=num_sta - 1, padding_number_=10000,
|
||||
radio=args.radio)
|
||||
else:
|
||||
station_list = args.sta_names.split(",")
|
||||
|
||||
CX_TYPES = ("tcp", "udp", "lf_tcp", "lf_udp")
|
||||
|
||||
if (args.traffic_type is None) or (args.traffic_type not in CX_TYPES):
|
||||
@@ -414,106 +527,21 @@ python3 ./test_ip_variable_time.py
|
||||
side_b_min_rate=args.b_min,
|
||||
mode=args.mode,
|
||||
ap=args.ap,
|
||||
report_file=args.report_file,
|
||||
output_format=args.output_format,
|
||||
layer3_cols=args.layer3_cols,
|
||||
monitor_interval=args.monitor_interval,
|
||||
influx_host=args.influx_host,
|
||||
influx_port=args.influx_port,
|
||||
influx_org=args.influx_org,
|
||||
influx_token=args.influx_token,
|
||||
influx_bucket=args.influx_bucket,
|
||||
compared_report=args.compared_report,
|
||||
ipv6=args.ipv6,
|
||||
traffic_type=args.traffic_type,
|
||||
_debug_on=args.debug)
|
||||
|
||||
ip_var_test.pre_cleanup()
|
||||
|
||||
ip_var_test.build()
|
||||
# exit()
|
||||
if create_sta:
|
||||
if not ip_var_test.passes():
|
||||
print(ip_var_test.get_fail_message())
|
||||
ip_var_test.exit_fail()
|
||||
|
||||
try:
|
||||
layer3connections = ','.join([[*x.keys()][0] for x in ip_var_test.json_get('endp')['endpoint']])
|
||||
except:
|
||||
raise ValueError('Try setting the upstream port flag if your device does not have an eth1 port')
|
||||
|
||||
if type(args.layer3_cols) is not list:
|
||||
layer3_cols = list(args.layer3_cols.split(","))
|
||||
# send col names here to file to reformat
|
||||
else:
|
||||
layer3_cols = args.layer3_cols
|
||||
# send col names here to file to reformat
|
||||
if type(args.port_mgr_cols) is not list:
|
||||
port_mgr_cols = list(args.port_mgr_cols.split(","))
|
||||
# send col names here to file to reformat
|
||||
else:
|
||||
port_mgr_cols = args.port_mgr_cols
|
||||
# send col names here to file to reformat
|
||||
if args.debug:
|
||||
print("Layer 3 Endp column names are...")
|
||||
print(layer3_cols)
|
||||
print("Port Manager column names are...")
|
||||
print(port_mgr_cols)
|
||||
|
||||
print("Layer 3 Endp column names are...")
|
||||
print(layer3_cols)
|
||||
print("Port Manager column names are...")
|
||||
print(port_mgr_cols)
|
||||
|
||||
try:
|
||||
monitor_interval = Realm.parse_time(args.monitor_interval).total_seconds()
|
||||
except ValueError as error:
|
||||
print(str(error))
|
||||
print(ValueError(
|
||||
"The time string provided for monitor_interval argument is invalid. Please see supported time stamp increments and inputs for monitor_interval in --help. "))
|
||||
exit(1)
|
||||
ip_var_test.start(False, False)
|
||||
|
||||
# if args.influx_mgr is None:
|
||||
# manager = args.mgr
|
||||
# else:
|
||||
# manager = args.influx_mgr
|
||||
|
||||
if args.influx_org is not None:
|
||||
from InfluxRequest import RecordInflux
|
||||
grapher = RecordInflux(_influx_host=args.influx_host,
|
||||
_influx_port=args.influx_port,
|
||||
_influx_org=args.influx_org,
|
||||
_influx_token=args.influx_token,
|
||||
_influx_bucket=args.influx_bucket)
|
||||
devices = [station.split('.')[-1] for station in station_list]
|
||||
tags = dict()
|
||||
tags['script'] = 'test_ip_variable_time'
|
||||
try:
|
||||
for k in args.influx_tag:
|
||||
tags[k[0]] = k[1]
|
||||
except:
|
||||
pass
|
||||
grapher.monitor_port_data(longevity=Realm.parse_time(args.test_duration).total_seconds(),
|
||||
devices=devices,
|
||||
monitor_interval=Realm.parse_time(args.monitor_interval).total_seconds(),
|
||||
tags=tags)
|
||||
|
||||
ip_var_test.cx_profile.monitor(layer3_cols=layer3_cols,
|
||||
sta_list=station_list,
|
||||
# port_mgr_cols=port_mgr_cols,
|
||||
report_file=report_f,
|
||||
systeminfopath=systeminfopath,
|
||||
duration_sec=Realm.parse_time(args.test_duration).total_seconds(),
|
||||
monitor_interval_ms=monitor_interval,
|
||||
created_cx=layer3connections,
|
||||
output_format=output,
|
||||
compared_report=compared_rept,
|
||||
script_name='test_ip_variable_time',
|
||||
arguments=args,
|
||||
debug=args.debug)
|
||||
|
||||
ip_var_test.stop()
|
||||
if create_sta:
|
||||
if not ip_var_test.passes():
|
||||
print(ip_var_test.get_fail_message())
|
||||
ip_var_test.exit_fail()
|
||||
LFUtils.wait_until_ports_admin_up(port_list=station_list)
|
||||
|
||||
if ip_var_test.passes():
|
||||
ip_var_test.success()
|
||||
ip_var_test.cleanup()
|
||||
print("IP Variable Time Test Report Data: {}".format(report_f))
|
||||
ip_var_test.run()
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
|
||||
30
to_pip.sh
30
to_pip.sh
@@ -8,8 +8,15 @@ Help()
|
||||
echo "ip_var=lanforge_scripts.IPVariableTime(host='192.168.1.239',port='8080',radio='wiphy0',sta_list=['1.1.sta0000','1.1.sta0001'],ssid='lanforge',password='password',security='wpa2',upstream='eth1',name_prefix='VT',traffic_type='lf_udp',_debug_on=True)"
|
||||
echo "ip_var.build()"
|
||||
echo "ip_var.start(False,False)"
|
||||
echo ""
|
||||
echo "EXPORT TO TAR FILE"
|
||||
echo "./to_pip.sh -a -t TARGET_DIR"
|
||||
echo "The 't' flag tells to_pip where to store the tar file, -a tells it to make a tar file."
|
||||
}
|
||||
|
||||
ARCHIVE=0
|
||||
TARGET_DIR='..'
|
||||
|
||||
while getopts ":h:a:t:" option; do
|
||||
case "${option}" in
|
||||
h) #display help
|
||||
@@ -357,6 +364,14 @@ sed -i -- 's/from create_station/from ..py_scripts.create_station/g' *.py
|
||||
sed -i -- 's/from cv_test_reports/from .cv_test_reports/g' *.py
|
||||
|
||||
cd LANforge
|
||||
echo "
|
||||
from .add_dut import dut_params, dut_flags
|
||||
from .add_file_endp import fe_fstype, fe_payload_list, fe_fio_flags, fe_base_endpoint_types
|
||||
from .lf_json_autogen import LFJsonGet, LFJsonPost
|
||||
from .lfcli_base import LFCliBase
|
||||
from .LFRequest import LFRequest
|
||||
from .LFUtils import *
|
||||
from .pandas_extensions import pandas_extensions" > __init__.py
|
||||
sed -i -- 's/from LFRequest import LFRequest/from .LFRequest import LFRequest/g' *.py
|
||||
sed -i -- 's/from LFRequest/from .LFRequest/g' *.py
|
||||
sed -i -- 's/from LANforge import LFRequest/import .LFRequest/g' LFUtils.py
|
||||
@@ -382,11 +397,12 @@ sed -i -- 's/GrafanaRequest = importlib.import_module("py-dashboard.GrafanaReque
|
||||
sed -i -- 's/InfluxRequest = importlib.import_module("py-dashboard.InfluxRequest")/from .InfluxRequest import RecordInflux/g' *.py
|
||||
sed -i -- 's/RecordInflux = InfluxRequest.RecordInflux/ /g' *.py
|
||||
|
||||
if [[ ${ARCHIVE} -eq 0 ]]; then
|
||||
Archive()
|
||||
{
|
||||
cd ../..
|
||||
tar cvzf lanforge_scripts.tar.gz ${TARGET_DIR}
|
||||
zip lanforge_scripts.zip ${TARGET_DIR}
|
||||
}
|
||||
echo "${ARCHIVE}"
|
||||
if [[ $ARCHIVE -eq 1 ]]; then
|
||||
echo "Saving archive to ${TARGET_DIR}"
|
||||
cd ../
|
||||
tar cvzf ${TARGET_DIR}/lanforge_scripts.tar.gz .
|
||||
zip ${TARGET_DIR}/lanforge_scripts.zip .
|
||||
else
|
||||
echo "Not saving archive"
|
||||
fi
|
||||
Reference in New Issue
Block a user