mirror of
https://github.com/Telecominfraproject/wlan-lanforge-scripts.git
synced 2025-11-03 12:18:00 +00:00
added methods to load db and read the scenario details from the saved db
Signed-off-by: shivam <shivam.thakur@candelatech.com>
This commit is contained in:
@@ -1,12 +1,23 @@
|
|||||||
import importlib
|
import importlib
|
||||||
|
import json
|
||||||
import logging
|
import logging
|
||||||
import os
|
import os
|
||||||
import sys
|
import sys
|
||||||
|
import time
|
||||||
|
import click
|
||||||
|
import requests
|
||||||
|
import urllib3
|
||||||
|
|
||||||
sys.path.append(os.path.join(os.path.abspath(__file__ + "../../../")))
|
sys.path.append(os.path.join(os.path.abspath(__file__ + "../../../")))
|
||||||
lfcli_base = importlib.import_module("py-json.LANforge.lfcli_base")
|
lfcli_base = importlib.import_module("py-json.LANforge.lfcli_base")
|
||||||
LFCliBase = lfcli_base.LFCliBase
|
LFCliBase = lfcli_base.LFCliBase
|
||||||
realm = importlib.import_module("py-json.realm")
|
realm = importlib.import_module("py-json.realm")
|
||||||
|
cv_test_manager = importlib.import_module("py-json.cv_test_manager")
|
||||||
|
cv_test = cv_test_manager.cv_test
|
||||||
|
lf_cv_base = importlib.import_module("py-json.lf_cv_base")
|
||||||
|
ChamberViewBase = lf_cv_base.ChamberViewBase
|
||||||
|
create_chamberview_dut = importlib.import_module("py-scripts.create_chamberview_dut")
|
||||||
|
DUT = create_chamberview_dut.DUT
|
||||||
|
|
||||||
|
|
||||||
class lf_libs:
|
class lf_libs:
|
||||||
@@ -26,12 +37,18 @@ class lf_libs:
|
|||||||
"""
|
"""
|
||||||
lanforge_data = dict()
|
lanforge_data = dict()
|
||||||
manager_ip = None
|
manager_ip = None
|
||||||
|
testbed = None
|
||||||
manager_http_port = None
|
manager_http_port = None
|
||||||
manager_ssh_port = None
|
manager_ssh_port = None
|
||||||
manager_default_db = None
|
manager_default_db = None
|
||||||
wan_ports = None
|
wan_ports = None
|
||||||
lan_ports = None
|
lan_ports = None
|
||||||
uplink_nat_ports = None
|
uplink_nat_ports = None
|
||||||
|
dut_data = None
|
||||||
|
dut_objects = []
|
||||||
|
default_scenario_name = None
|
||||||
|
default_scenario_test = None
|
||||||
|
default_scenario_raw_lines = []
|
||||||
"""
|
"""
|
||||||
Scenario : dhcp-bridge / dhcp-external
|
Scenario : dhcp-bridge / dhcp-external
|
||||||
dhcp-bridge - wan_ports will act as dhcp server for AP's and it will use uplink_nat_ports for uplink NAT
|
dhcp-bridge - wan_ports will act as dhcp server for AP's and it will use uplink_nat_ports for uplink NAT
|
||||||
@@ -44,6 +61,11 @@ class lf_libs:
|
|||||||
"""
|
"""
|
||||||
scenario = None
|
scenario = None
|
||||||
"""
|
"""
|
||||||
|
Scenario in chamberview which will be read by read_cv_scenario() and stored here
|
||||||
|
This will be used to add additional stuff on scenario along with this
|
||||||
|
"""
|
||||||
|
cv_scenario = None
|
||||||
|
"""
|
||||||
Number of Resources available
|
Number of Resources available
|
||||||
"""
|
"""
|
||||||
resources = None
|
resources = None
|
||||||
@@ -96,11 +118,13 @@ class lf_libs:
|
|||||||
"""
|
"""
|
||||||
local_realm = None
|
local_realm = None
|
||||||
|
|
||||||
def __init__(self, lf_data, log_level=logging.DEBUG):
|
def __init__(self, lf_data={}, dut_data=[], log_level=logging.DEBUG):
|
||||||
logging.basicConfig(format='%(asctime)s - %(message)s', level=log_level)
|
logging.basicConfig(format='%(asctime)s - %(message)s', level=log_level)
|
||||||
lf_data = dict(lf_data)
|
lf_data = dict(lf_data)
|
||||||
|
self.dut_data = dut_data
|
||||||
try:
|
try:
|
||||||
self.lanforge_data = lf_data.get("details")
|
self.lanforge_data = lf_data.get("details")
|
||||||
|
self.testbed = lf_data.get("testbed")
|
||||||
self.setup_lf_data()
|
self.setup_lf_data()
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
logging.error("lf_data has bad values: " + str(lf_data))
|
logging.error("lf_data has bad values: " + str(lf_data))
|
||||||
@@ -119,6 +143,20 @@ class lf_libs:
|
|||||||
logging.error("lf_data has bad values: " + str(self.lanforge_data))
|
logging.error("lf_data has bad values: " + str(self.lanforge_data))
|
||||||
logging.error(e)
|
logging.error(e)
|
||||||
|
|
||||||
|
def setup_dut(self):
|
||||||
|
for index in range(0, len(self.dut_data)):
|
||||||
|
dut_obj = DUT(lfmgr=self.manager_ip,
|
||||||
|
port=self.manager_http_port,
|
||||||
|
dut_name=self.testbed + "-" + str(index),
|
||||||
|
sw_version=self.dut_data[index]["version"],
|
||||||
|
hw_version=self.dut_data[index]["mode"],
|
||||||
|
model_num=self.dut_data[index]["model"],
|
||||||
|
serial_num=self.dut_data[index]["serial"])
|
||||||
|
dut_obj.setup()
|
||||||
|
dut_obj.add_ssids()
|
||||||
|
time.sleep(5)
|
||||||
|
self.dut_objects.append(dut_obj)
|
||||||
|
|
||||||
def setup_metadata(self):
|
def setup_metadata(self):
|
||||||
data = self.json_get("/port/all")
|
data = self.json_get("/port/all")
|
||||||
all_eth_ports = []
|
all_eth_ports = []
|
||||||
@@ -208,11 +246,34 @@ class lf_libs:
|
|||||||
json_response = cli_base.json_get(_req_url=_req_url)
|
json_response = cli_base.json_get(_req_url=_req_url)
|
||||||
return json_response
|
return json_response
|
||||||
|
|
||||||
|
def json_post(self, _req_url="/"):
|
||||||
|
cli_base = LFCliBase(_lfjson_host=self.manager_ip, _lfjson_port=self.manager_http_port)
|
||||||
|
json_response = cli_base.json_post(_req_url=_req_url)
|
||||||
|
return json_response
|
||||||
|
|
||||||
|
def read_cv_scenario(self):
|
||||||
|
cv_obj = cv_test(lfclient_host=self.manager_ip, lfclient_port=self.manager_http_port)
|
||||||
|
cv_obj.show_text_blob(type="Last-Built-Scenario")
|
||||||
|
data = self.json_get("/text/Last-Built-Scenario.last_built")
|
||||||
|
data = data['record']['text'].split("\n")
|
||||||
|
for d in data:
|
||||||
|
if "scenario-name" in d:
|
||||||
|
self.default_scenario_name = d.split(":")[1][1:]
|
||||||
|
cv_obj.apply_cv_scenario(self.default_scenario_name)
|
||||||
|
time.sleep(2)
|
||||||
|
cv_obj.show_text_blob(type="Network-Connectivity")
|
||||||
|
data = self.json_get("/text/Network-Connectivity." + str(self.default_scenario_name))
|
||||||
|
data = data["record"]["text"].split("\n")
|
||||||
|
for d in data:
|
||||||
|
if "profile_link" in d:
|
||||||
|
self.default_scenario_raw_lines.append([d])
|
||||||
|
logging.info("Saved default CV Scenario details: " + str(self.default_scenario_raw_lines))
|
||||||
|
|
||||||
|
|
||||||
class lf_tests(lf_libs):
|
class lf_tests(lf_libs):
|
||||||
|
|
||||||
def __init__(self, lf_data, log_level=logging.DEBUG):
|
def __init__(self, lf_data={}, dut_data={}, log_level=logging.DEBUG):
|
||||||
super().__init__(lf_data, log_level)
|
super().__init__(lf_data, dut_data, log_level)
|
||||||
pass
|
pass
|
||||||
|
|
||||||
def client_connectivity_test(self):
|
def client_connectivity_test(self):
|
||||||
@@ -239,8 +300,8 @@ class lf_tests(lf_libs):
|
|||||||
|
|
||||||
class lf_tools(lf_libs):
|
class lf_tools(lf_libs):
|
||||||
|
|
||||||
def __init__(self, lf_data, log_level=logging.DEBUG):
|
def __init__(self, lf_data={}, dut_data={}, log_level=logging.DEBUG):
|
||||||
super().__init__(lf_data, log_level)
|
super().__init__(lf_data, dut_data, log_level)
|
||||||
pass
|
pass
|
||||||
|
|
||||||
def create_stations(self):
|
def create_stations(self):
|
||||||
@@ -270,12 +331,6 @@ class lf_tools(lf_libs):
|
|||||||
def load_scenario_db(self):
|
def load_scenario_db(self):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
def read_cv_scenario(self):
|
|
||||||
pass
|
|
||||||
|
|
||||||
def add_dut(self):
|
|
||||||
pass
|
|
||||||
|
|
||||||
def delete_dut(self):
|
def delete_dut(self):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
@@ -321,6 +376,7 @@ if __name__ == '__main__':
|
|||||||
],
|
],
|
||||||
"traffic_generator": {
|
"traffic_generator": {
|
||||||
"name": "lanforge",
|
"name": "lanforge",
|
||||||
|
"testbed": "basic",
|
||||||
"scenario": "dhcp-bridge", # dhcp-bridge / dhcp-external
|
"scenario": "dhcp-bridge", # dhcp-bridge / dhcp-external
|
||||||
"details": {
|
"details": {
|
||||||
"manager_ip": "192.168.52.89",
|
"manager_ip": "192.168.52.89",
|
||||||
@@ -334,8 +390,9 @@ if __name__ == '__main__':
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
obj = lf_tools(lf_data=basic_02["traffic_generator"])
|
obj = lf_tools(lf_data=dict(basic_02["traffic_generator"]), dut_data=list(basic_02["access_point"]))
|
||||||
obj.setup_metadata()
|
obj.setup_metadata()
|
||||||
# obj.load_scenario()
|
obj.load_scenario()
|
||||||
# obj = lf_tests(lf_data="")
|
obj.read_cv_scenario()
|
||||||
# obj.json_get(_req_url="/port/all")
|
obj.setup_dut()
|
||||||
|
|
||||||
|
|||||||
@@ -42,7 +42,8 @@ LOGGER.addHandler(stdout_handler)
|
|||||||
|
|
||||||
|
|
||||||
class ChamberView:
|
class ChamberView:
|
||||||
def __init__(self, lanforge_data=None, access_point_data=None, run_lf=False, debug=True, testbed=None, cc_1=False, ap_version=None):
|
def __init__(self, lanforge_data=None, access_point_data=None, run_lf=False, debug=True, testbed=None, cc_1=False,
|
||||||
|
ap_version=None):
|
||||||
print("lanforge data", lanforge_data)
|
print("lanforge data", lanforge_data)
|
||||||
print("access point data", access_point_data)
|
print("access point data", access_point_data)
|
||||||
self.access_point_data = access_point_data
|
self.access_point_data = access_point_data
|
||||||
@@ -337,7 +338,6 @@ class ChamberView:
|
|||||||
if band == "5G":
|
if band == "5G":
|
||||||
idx = 1
|
idx = 1
|
||||||
|
|
||||||
|
|
||||||
for i in self.dut_idx_mapping:
|
for i in self.dut_idx_mapping:
|
||||||
if self.dut_idx_mapping[i][0] == ssid_name and self.dut_idx_mapping[i][3] == band:
|
if self.dut_idx_mapping[i][0] == ssid_name and self.dut_idx_mapping[i][3] == band:
|
||||||
idx = i
|
idx = i
|
||||||
@@ -563,7 +563,8 @@ class ChamberView:
|
|||||||
result = df[column_name].values.tolist()
|
result = df[column_name].values.tolist()
|
||||||
return result
|
return result
|
||||||
|
|
||||||
def read_csv_individual_station_throughput(self, dir_name, option, individual_station_throughput=True, kpi_csv=False,
|
def read_csv_individual_station_throughput(self, dir_name, option, individual_station_throughput=True,
|
||||||
|
kpi_csv=False,
|
||||||
file_name="/csv-data/data-Combined_bps__60_second_running_average-1.csv",
|
file_name="/csv-data/data-Combined_bps__60_second_running_average-1.csv",
|
||||||
batch_size="0"):
|
batch_size="0"):
|
||||||
try:
|
try:
|
||||||
@@ -578,8 +579,8 @@ class ChamberView:
|
|||||||
if kpi_csv:
|
if kpi_csv:
|
||||||
count = 0
|
count = 0
|
||||||
dict_data = {"Down": {}, "Up": {}, "Both": {}}
|
dict_data = {"Down": {}, "Up": {}, "Both": {}}
|
||||||
csv_short_dis = df.loc[:,"short-description"]
|
csv_short_dis = df.loc[:, "short-description"]
|
||||||
csv_num_score = df.loc[:,"numeric-score"]
|
csv_num_score = df.loc[:, "numeric-score"]
|
||||||
for i in range(len(batch_size.split(","))):
|
for i in range(len(batch_size.split(","))):
|
||||||
dict_data["Down"][csv_short_dis[count + 0]] = csv_num_score[count + 0]
|
dict_data["Down"][csv_short_dis[count + 0]] = csv_num_score[count + 0]
|
||||||
dict_data["Up"][csv_short_dis[count + 1]] = csv_num_score[count + 1]
|
dict_data["Up"][csv_short_dis[count + 1]] = csv_num_score[count + 1]
|
||||||
@@ -727,7 +728,6 @@ class ChamberView:
|
|||||||
# [['ssid_idx=0 ssid=Default-SSID-2g security=WPA|WEP| password=12345678 bssid=90:3c:b3:94:48:58']]
|
# [['ssid_idx=0 ssid=Default-SSID-2g security=WPA|WEP| password=12345678 bssid=90:3c:b3:94:48:58']]
|
||||||
self.update_ssid(ssid_data=ssid_data[ssid])
|
self.update_ssid(ssid_data=ssid_data[ssid])
|
||||||
|
|
||||||
|
|
||||||
def create_non_meh_dut(self, ssid_data=[]):
|
def create_non_meh_dut(self, ssid_data=[]):
|
||||||
# print("hi")
|
# print("hi")
|
||||||
for ap, ssid in zip(self.access_point_data, range(len(ssid_data))):
|
for ap, ssid in zip(self.access_point_data, range(len(ssid_data))):
|
||||||
@@ -750,8 +750,6 @@ class ChamberView:
|
|||||||
# [['ssid_idx=0 ssid=Default-SSID-2g security=WPA|WEP| password=12345678 bssid=90:3c:b3:94:48:58']]
|
# [['ssid_idx=0 ssid=Default-SSID-2g security=WPA|WEP| password=12345678 bssid=90:3c:b3:94:48:58']]
|
||||||
self.update_ssid(ssid_data=ssid_data[ssid])
|
self.update_ssid(ssid_data=ssid_data[ssid])
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
def set_radio_antenna(self, req_url, shelf, resources, radio, antenna):
|
def set_radio_antenna(self, req_url, shelf, resources, radio, antenna):
|
||||||
data = {
|
data = {
|
||||||
"shelf": shelf,
|
"shelf": shelf,
|
||||||
|
|||||||
@@ -214,16 +214,17 @@ class cv_test(Realm):
|
|||||||
response = self.json_get(url)
|
response = self.json_get(url)
|
||||||
return response
|
return response
|
||||||
|
|
||||||
def show_text_blob(self, config_name, blob_test_name, brief):
|
def show_text_blob(self, config_name=None, blob_test_name=None, brief=False, type="Plugin-Settings"):
|
||||||
req_url = "/cli-json/show_text_blob"
|
req_url = "/cli-json/show_text_blob"
|
||||||
response_json = []
|
response_json = []
|
||||||
data = {"type": "Plugin-Settings"}
|
data = {"type": type}
|
||||||
if config_name and blob_test_name:
|
if config_name and blob_test_name:
|
||||||
data["name"] = "%s%s" % (blob_test_name, config_name) # config name
|
data["name"] = "%s%s" % (blob_test_name, config_name) # config name
|
||||||
else:
|
else:
|
||||||
data["name"] = "ALL"
|
data["name"] = "ALL"
|
||||||
if brief:
|
if brief:
|
||||||
data["brief"] = "brief"
|
data["brief"] = "brief"
|
||||||
|
print(req_url, data)
|
||||||
self.json_post(req_url, data, response_json_list_=response_json)
|
self.json_post(req_url, data, response_json_list_=response_json)
|
||||||
return response_json
|
return response_json
|
||||||
|
|
||||||
@@ -366,6 +367,9 @@ class cv_test(Realm):
|
|||||||
logger.critical("SCP failed, user %s, password %s, dest %s" % (lf_user, lf_password, lf_host))
|
logger.critical("SCP failed, user %s, password %s, dest %s" % (lf_user, lf_password, lf_host))
|
||||||
raise e # Exception("Could not find Reports")
|
raise e # Exception("Could not find Reports")
|
||||||
break
|
break
|
||||||
|
else:
|
||||||
|
logger.info('Not reporting to kpi file')
|
||||||
|
|
||||||
|
|
||||||
# Of if test stopped for some reason and could not generate report.
|
# Of if test stopped for some reason and could not generate report.
|
||||||
if not self.get_is_running(instance_name):
|
if not self.get_is_running(instance_name):
|
||||||
|
|||||||
Reference in New Issue
Block a user