From 754207e6231d57a52b8066541bc1902bb0ae74bb Mon Sep 17 00:00:00 2001 From: Matthew Stidham Date: Mon, 10 May 2021 22:43:28 -0700 Subject: [PATCH] run dataplane_to_grafana from remote machine Signed-off-by: Matthew Stidham --- py-json/cv_test_manager.py | 37 +++++++++++++++--------------- py-scripts/dataplane_to_grafana.sh | 19 +++++++++------ py-scripts/update_dependencies.py | 2 +- py-scripts/wifi_cap_to_grafana.sh | 33 +++++++++++++++++--------- 4 files changed, 54 insertions(+), 37 deletions(-) diff --git a/py-json/cv_test_manager.py b/py-json/cv_test_manager.py index c62bc9ae..febce52d 100644 --- a/py-json/cv_test_manager.py +++ b/py-json/cv_test_manager.py @@ -336,9 +336,10 @@ class cv_test(Realm): location = location.replace('\"Report Location:::', '') location = location.replace('\"', '') report = lf_rpt() - if graphgroupsfile: - filelocation=open(graphgroupsfile, 'w') - filelocation.write(location) + print(graphgroupsfile) + if graphgroupsfile is not None: + filelocation = open(graphgroupsfile, 'a') + filelocation.write(location + '/kpi.csv\n') filelocation.close() print(location) self.report_dir = location @@ -347,8 +348,9 @@ class cv_test(Realm): print(lf_host) report.pull_reports(hostname=lf_host, username=lf_user, password=lf_password, report_location=location) - except: - raise Exception("Could not find Reports") + except Exception as e: + print("SCP failed, user %s, password %s, dest %s", (lf_user, lf_password, lf_host)) + raise e#Exception("Could not find Reports") break # Of if test stopped for some reason and could not generate report. @@ -372,7 +374,6 @@ class cv_test(Realm): else: break - # Takes cmd-line args struct or something that looks like it. # See csv_to_influx.py::influx_add_parser_args for options, or --help. def check_influx_kpi(self, args): @@ -389,19 +390,20 @@ class cv_test(Realm): print("Creating influxdb connection.\n") # lfjson_host would be if we are reading out of LANforge or some other REST # source, which we are not. So dummy those out. - influxdb = RecordInflux(_lfjson_host = "", - _lfjson_port = "", - _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) + influxdb = RecordInflux(_lfjson_host="", + _lfjson_port="", + _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) + + path = "%s/kpi.csv" % (self.report_dir) - path = "%s/kpi.csv"%(self.report_dir) print("Attempt to submit kpi: ", path) - csvtoinflux = CSVtoInflux(influxdb = influxdb, - target_csv = path, - _influx_tag = args.influx_tag) + csvtoinflux = CSVtoInflux(influxdb=influxdb, + target_csv=path, + _influx_tag=args.influx_tag) print("Posting to influx...\n") csvtoinflux.post_to_influx() @@ -483,4 +485,3 @@ class cv_test(Realm): if dialog[0]["LAST"]["response"] != "NO-DIALOG": print("Popup Dialog:\n") print(dialog[0]["LAST"]["response"]) - diff --git a/py-scripts/dataplane_to_grafana.sh b/py-scripts/dataplane_to_grafana.sh index a037b080..c13a0cad 100755 --- a/py-scripts/dataplane_to_grafana.sh +++ b/py-scripts/dataplane_to_grafana.sh @@ -6,11 +6,16 @@ Help() { echo "This bash script creates a DUT, loads a scenario, runs a WiFi Capacity test, and saves it to Influx" } -MGR=192.168.1.7 -INFLUXTOKEN=Tdxwq5KRbj1oNbZ_ErPL5tw_HUH2wJ1VR4dwZNugJ-APz__mEFIwnqHZdoobmQpt2fa1VdWMlHQClR8XNotwbg== -GRAFANATOKEN=eyJrIjoiZTJwZkZlemhLQVNpY3hiemRjUkNBZ3k2RWc3bWpQWEkiLCJuIjoibWFzdGVyIiwiaWQiOjF9 +MGR=192.168.1.6 +#INFLUXTOKEN=Tdxwq5KRbj1oNbZ_ErPL5tw_HUH2wJ1VR4dwZNugJ-APz__mEFIwnqHZdoobmQpt2fa1VdWMlHQClR8XNotwbg== +#GRAFANATOKEN=eyJrIjoiZTJwZkZlemhLQVNpY3hiemRjUkNBZ3k2RWc3bWpQWEkiLCJuIjoibWFzdGVyIiwiaWQiOjF9 +INFLUXTOKEN=31N9QDhjJHBu4eMUlMBwbK3sOjXLRAhZuCzZGeO8WVCj-xvR8gZWWvRHOcuw-5RHeB7xBFnLs7ZV023k4koR1A== +GRAFANATOKEN=eyJrIjoiS1NGRU8xcTVBQW9lUmlTM2dNRFpqNjFqV05MZkM0dzciLCJuIjoibWF0dGhldyIsImlkIjoxfQ== TESTBED=Stidmatt-01 GROUPS=/tmp/lf_cv_rpt_filelocation.txt +INFLUXBUCKET=stidmatt +INFLUX_MGR=192.168.100.201 + #Replace my arguments with your setup. Separate your ssid arguments with spaces and ensure the names are lowercase echo "Make new DUT" ./create_chamberview_dut.py --lfmgr ${MGR} --dut_name DUT_TO_GRAFANA_DUT --ssid "ssid_idx=0 ssid=lanforge security=WPA2 password=password bssid=04:f0:21:2c:41:84 traffic=wiphy1" @@ -23,9 +28,9 @@ echo "Build Chamber View Scenario" #change the lfmgr to your system, set the rad #config_name doesn't matter, change the influx_host to your LANforge device, echo "run Dataplane test" ./lf_dataplane_test.py --mgr ${MGR} --instance_name dataplane-instance --config_name test_config --upstream 1.1.eth1 \ ---station 1.1.14 --dut linksys-8450 --influx_host ${MGR} --influx_port 8086 --influx_org Candela --influx_token ${INFLUXTOKEN} \ ---influx_bucket lanforge --influx_tag testbed ${TESTBED} --graphgroups ${GROUPS} +--station 1.1.14 --dut linksys-8450 --influx_host ${INFLUX_MGR} --influx_port 8086 --influx_org Candela --influx_token ${INFLUXTOKEN} \ +--influx_bucket ${INFLUXBUCKET} --influx_tag testbed ${TESTBED} --graphgroups ${GROUPS} -./grafana_profile.py --create_custom --title ${TESTBED} --influx_bucket lanforge --mgr 192.168.1.7 --grafana_token ${GRAFANATOKEN} \ ---grafana_host 192.168.1.7 --testbed ${TESTBED} --graph-groups ${GROUPS} \ +./grafana_profile.py --create_custom --title ${TESTBED} --influx_bucket ${INFLUXBUCKET} --mgr ${MGR} --grafana_token ${GRAFANATOKEN} \ +--grafana_host ${INFLUX_MGR} --testbed ${TESTBED} --graph-groups ${GROUPS} \ --scripts Dataplane --scripts 'WiFi Capacity' diff --git a/py-scripts/update_dependencies.py b/py-scripts/update_dependencies.py index c6ade50d..65dff65e 100755 --- a/py-scripts/update_dependencies.py +++ b/py-scripts/update_dependencies.py @@ -3,7 +3,7 @@ import subprocess def main(): print("Installing Script Python3 Dependencies") packages = ['pandas', 'plotly', 'numpy', 'cryptography', 'paramiko', 'bokeh','pyarrow', 'websocket-client', 'xlsxwriter',\ - 'pyshark', 'influxdb', 'influxdb-client', 'matplotlib', 'pdfkit', 'pip-search', 'pyserial', 'pexpect-serial' ] + 'pyshark', 'influxdb', 'influxdb-client', 'matplotlib', 'pdfkit', 'pip-search', 'pyserial', 'pexpect-serial' ,'scp'] packages_installed = [] packages_failed =[] for package in packages: diff --git a/py-scripts/wifi_cap_to_grafana.sh b/py-scripts/wifi_cap_to_grafana.sh index d7dcadf1..f0a60481 100755 --- a/py-scripts/wifi_cap_to_grafana.sh +++ b/py-scripts/wifi_cap_to_grafana.sh @@ -5,11 +5,15 @@ # into influxdb. As final step, it builds a grafana dashboard for the KPI information. # Define some common variables. This will need to be changed to match your own testbed. -MGR=192.168.1.7 -INFLUXTOKEN=Tdxwq5KRbj1oNbZ_ErPL5tw_HUH2wJ1VR4dwZNugJ-APz__mEFIwnqHZdoobmQpt2fa1VdWMlHQClR8XNotwbg== +MGR=192.168.1.6 +INFLUX_MGR=192.168.100.201 +#INFLUXTOKEN=Tdxwq5KRbj1oNbZ_ErPL5tw_HUH2wJ1VR4dwZNugJ-APz__mEFIwnqHZdoobmQpt2fa1VdWMlHQClR8XNotwbg== +INFLUXTOKEN=31N9QDhjJHBu4eMUlMBwbK3sOjXLRAhZuCzZGeO8WVCj-xvR8gZWWvRHOcuw-5RHeB7xBFnLs7ZV023k4koR1A== TESTBED=Stidmatt-01 -GRAFANATOKEN=eyJrIjoiZTJwZkZlemhLQVNpY3hiemRjUkNBZ3k2RWc3bWpQWEkiLCJuIjoibWFzdGVyIiwiaWQiOjF9 -GROUPS=/tmp/lf_cv_rpt_filelocation.txt +INFLUXBUCKET=stidmatt +#GRAFANATOKEN=eyJrIjoiZTJwZkZlemhLQVNpY3hiemRjUkNBZ3k2RWc3bWpQWEkiLCJuIjoibWFzdGVyIiwiaWQiOjF9 +GRAFANATOKEN=eyJrIjoiS1NGRU8xcTVBQW9lUmlTM2dNRFpqNjFqV05MZkM0dzciLCJuIjoibWF0dGhldyIsImlkIjoxfQ== +GROUPS=lf_cv_rpt_filelocation.txt # Create/update new DUT. #Replace my arguments with your setup. Separate your ssid arguments with spaces and ensure the names are lowercase @@ -21,19 +25,26 @@ echo "Make new DUT" echo "Build Chamber View Scenario" #change the lfmgr to your system, set the radio to a working radio on your LANforge system, same with the ethernet port. ./create_chamberview.py --lfmgr ${MGR} --create_scenario DUT_TO_GRAFANA_SCENARIO \ ---line "Resource=1.1 Profile=default Amount=32 Uses-1=wiphy1 DUT=DUT_TO_GRAFANA_DUT Traffic=wiphy1 Freq=-1" \ +--line "Resource=1.1 Profile=default Amount=4 Uses-1=wiphy1 DUT=DUT_TO_GRAFANA_DUT Traffic=wiphy1 Freq=-1" \ --line "Resource=1.1 Profile=upstream Amount=1 Uses-1=eth1 DUT=DUT_TO_GRAFANA_DUT Traffic=eth1 Freq=-1" # Run capacity test on the stations created by the chamber view scenario. # Submit the KPI data into the influxdb. #config_name doesn't matter, change the influx_host to your LANforge device, echo "run wifi capacity test" -./lf_wifi_capacity_test.py --config_name Custom --create_stations --radio wiphy1 --pull_report --influx_host ${MGR} \ ---influx_port 8086 --influx_org Candela --influx_token ${INFLUXTOKEN} --influx_bucket lanforge --mgr ${MGR} \ ---instance_name testing --upstream eth1 --test_rig ${TESTBED} --graphgroups ${GROUPS} +./lf_wifi_capacity_test.py --config_name Custom --create_stations --radio wiphy1 --pull_report --influx_host ${INFLUX_MGR} \ +--influx_port 8086 --influx_org Candela --influx_token ${INFLUXTOKEN} --influx_bucket ${INFLUXBUCKET} --mgr ${MGR} \ +--instance_name testing --upstream eth1 --test_rig ${TESTBED} --graphgroups lf_cv_rpt_filelocation.txt --lf_password lanforgepassword + + +#config_name doesn't matter, change the influx_host to your LANforge device, +echo "run Dataplane test" +./lf_dataplane_test.py --mgr ${MGR} --instance_name dataplane-instance --config_name test_config --upstream 1.1.eth1 \ +--station 1.1.06 --dut linksys-8450 --influx_host ${INFLUX_MGR} --influx_port 8086 --influx_org Candela --influx_token ${INFLUXTOKEN} \ +--influx_bucket ${INFLUXBUCKET} --influx_tag testbed ${TESTBED} --graphgroups lf_cv_rpt_filelocation.txt # Build grafana dashboard and graphs view for the KPI in the capacity test. -./grafana_profile.py --create_custom --title ${TESTBED} --influx_bucket lanforge --mgr 192.168.1.7 --grafana_token ${GRAFANATOKEN} \ ---grafana_host 192.168.1.7 --testbed ${TESTBED} --graph-groups ${GROUPS} --scripts Dataplane --scripts 'WiFi Capacity' +./grafana_profile.py --create_custom --title ${TESTBED} --influx_bucket ${INFLUXBUCKET} --mgr ${MGR} --grafana_token ${GRAFANATOKEN} \ +--grafana_host ${INFLUX_MGR} --testbed ${TESTBED} --graph-groups lf_cv_rpt_filelocation.txt --scripts Dataplane --scripts 'WiFi Capacity' -rm ${GROUPS} +#rm ${GROUPS}