mirror of
https://github.com/Telecominfraproject/wlan-testing.git
synced 2026-01-07 04:41:32 +00:00
Added FMS and GW Test cases as a part of sanity
Signed-off-by: shivamcandela <shivam.thakur@candelatech.com>
This commit is contained in:
@@ -17,7 +17,6 @@ import random
|
||||
import paramiko
|
||||
from scp import SCPClient
|
||||
import os
|
||||
import allure
|
||||
|
||||
|
||||
class APNOS:
|
||||
@@ -50,12 +49,10 @@ class APNOS:
|
||||
cmd = "kill " + str(a).replace("b'", "")
|
||||
print(cmd)
|
||||
stdin, stdout, stderr = client.exec_command(cmd)
|
||||
print(stdout)
|
||||
client = self.ssh_cli_connect()
|
||||
cmd = '[ -f ~/cicd-git/ ] && echo "True" || echo "False"'
|
||||
stdin, stdout, stderr = client.exec_command(cmd)
|
||||
output = str(stdout.read())
|
||||
print(output)
|
||||
|
||||
if output.__contains__("False"):
|
||||
cmd = 'mkdir ~/cicd-git/'
|
||||
stdin, stdout, stderr = client.exec_command(cmd)
|
||||
@@ -69,6 +66,7 @@ class APNOS:
|
||||
cmd = '[ -f ~/cicd-git/openwrt_ctl.py ] && echo "True" || echo "False"'
|
||||
stdin, stdout, stderr = client.exec_command(cmd)
|
||||
var = str(stdout.read())
|
||||
client.close()
|
||||
if var.__contains__("True"):
|
||||
print("APNOS Serial Setup OK")
|
||||
else:
|
||||
@@ -109,6 +107,7 @@ class APNOS:
|
||||
client.close()
|
||||
data = str(data).replace(" ", "").split("\\r\\n")
|
||||
band_info = []
|
||||
client.close()
|
||||
for i in data:
|
||||
tmp = []
|
||||
if i.__contains__("AccessPoint"):
|
||||
@@ -323,13 +322,18 @@ class APNOS:
|
||||
f"cmd --value \"{cmd}\" "
|
||||
stdin, stdout, stderr = client.exec_command(cmd)
|
||||
output = stdout.read()
|
||||
# print(output, stderr.read())
|
||||
connected = False
|
||||
if "connected" in output.decode('utf-8').splitlines()[2]:
|
||||
connected = True
|
||||
# connected = output.decode('utf-8').splitlines()[2]
|
||||
latest = output.decode('utf-8').splitlines()[3].split(":")[1].replace(" ", "").replace(",", "")
|
||||
active = output.decode('utf-8').splitlines()[4].split(":")[1].replace(" ", "").replace(",", "")
|
||||
print(output)
|
||||
if 'latest' not in str(output):
|
||||
print("ubus call ucentral status: command has invalid output", str(output))
|
||||
connected, latest, active = "Error", "Error1", "Error2"
|
||||
return connected, latest, active
|
||||
else:
|
||||
connected = False
|
||||
if "connected" in output.decode('utf-8').splitlines()[2]:
|
||||
connected = True
|
||||
# connected = output.decode('utf-8').splitlines()[2]
|
||||
latest = output.decode('utf-8').splitlines()[3].split(":")[1].replace(" ", "").replace(",", "")
|
||||
active = output.decode('utf-8').splitlines()[4].split(":")[1].replace(" ", "").replace(",", "")
|
||||
client.close()
|
||||
except Exception as e:
|
||||
print(e)
|
||||
@@ -467,6 +471,7 @@ class APNOS:
|
||||
stdin, stdout, stderr = client.exec_command(cmd)
|
||||
output = stdout.read().replace(b":~# iwinfo", b"").decode('utf-8')
|
||||
o = output
|
||||
client.close()
|
||||
return o
|
||||
|
||||
def gettxpower(self):
|
||||
@@ -489,6 +494,7 @@ class APNOS:
|
||||
name = output.replace("\t", "").splitlines()
|
||||
name.remove('')
|
||||
name.pop(-1)
|
||||
client.close()
|
||||
return tx_power, name
|
||||
|
||||
def get_logread(self, start_ref="", stop_ref=""):
|
||||
@@ -574,20 +580,21 @@ class APNOS:
|
||||
|
||||
if __name__ == '__main__':
|
||||
obj = {
|
||||
'model': 'wf188n',
|
||||
'mode': 'wifi6',
|
||||
'serial': '0000c1018812',
|
||||
'jumphost': True,
|
||||
'ip': "10.28.3.103",
|
||||
'username': "lanforge",
|
||||
'password': "pumpkin77",
|
||||
'port': 22,
|
||||
'jumphost_tty': '/dev/ttyAP1',
|
||||
'version': "https://tip.jfrog.io/artifactory/tip-wlan-ap-firmware/uCentral/cig_wf188/20210729-cig_wf188-v2.0.0-rc2-ec3662e-upgrade.bin"
|
||||
}
|
||||
'model': 'ecw5211',
|
||||
'mode': 'wifi5',
|
||||
'serial': '68215fda456d',
|
||||
'jumphost': True,
|
||||
'ip': "localhost",
|
||||
'username': "lanforge",
|
||||
'password': "pumpkin77",
|
||||
'port': 8733,
|
||||
'jumphost_tty': "/dev/ttyAP5",
|
||||
'version': "release-latest"
|
||||
}
|
||||
var = APNOS(credentials=obj, sdk="2.x")
|
||||
a = var.run_generic_command(cmd="wifi status")
|
||||
print("".join(a))
|
||||
a, b, c = var.get_ucentral_status()
|
||||
print(a, b, c)
|
||||
|
||||
# S = 9
|
||||
# instance_name = ''.join(random.choices(string.ascii_uppercase + string.digits, k=S))
|
||||
# var.run_generic_command(cmd="logger start testcase: " + instance_name)
|
||||
|
||||
@@ -233,28 +233,30 @@ class FMSUtils:
|
||||
return {}
|
||||
|
||||
# 2c3becf
|
||||
def get_firmwares(self, limit="", model="", latestonly="", branch="", commit_id=""):
|
||||
def get_firmwares(self, limit="10000", model="", latestonly="", branch="", commit_id="", offset="3000"):
|
||||
|
||||
deviceType = self.ap_model_lookup(model=model)
|
||||
params = "limit=" + limit + "&deviceType=" + deviceType + "&latestonly=" + latestonly
|
||||
|
||||
response = self.sdk_client.request(service="fms", command="firmwares/", method="GET", params=params, payload="")
|
||||
|
||||
params = "limit=" + limit + \
|
||||
"&deviceType=" + deviceType + \
|
||||
"&latestonly=" + latestonly + \
|
||||
"offset=" + offset
|
||||
command = "firmwares/"
|
||||
response = self.sdk_client.request(service="fms", command=command, method="GET", params=params, payload="")
|
||||
allure.attach(name=command + params,
|
||||
body=str(response.status_code) + "\n" + str(response.json()),
|
||||
attachment_type=allure.attachment_type.JSON)
|
||||
if response.status_code == 200:
|
||||
data = response.json()
|
||||
newlist = sorted(data['firmwares'], key=itemgetter('created'))
|
||||
print("finding a bug", len(newlist))
|
||||
for i in newlist:
|
||||
print(i['uri'])
|
||||
print(i['revision'])
|
||||
# for i in newlist:
|
||||
# print(i['uri'])
|
||||
# print(i['revision'])
|
||||
# print(newlist)
|
||||
self.sdk_client.logout()
|
||||
pytest.exit("hey")
|
||||
|
||||
return newlist
|
||||
# print(data)
|
||||
|
||||
return "devices"
|
||||
return "error"
|
||||
|
||||
|
||||
class UProfileUtility:
|
||||
@@ -540,7 +542,8 @@ if __name__ == '__main__':
|
||||
}
|
||||
obj = Controller(controller_data=controller)
|
||||
fms = FMSUtils(sdk_client=obj)
|
||||
fms.get_firmwares()
|
||||
new = fms.get_firmwares(model='cig_wf194c', offset='3')
|
||||
print(len(new))
|
||||
# fms.get_device_set()
|
||||
# model = fms.get_latest_fw(model="eap102")
|
||||
# print(model)
|
||||
|
||||
@@ -83,7 +83,7 @@ def pytest_addoption(parser):
|
||||
parser.addini("influx_token", "Influx Token", default="TCkdATXAbHmNbn4QyNaj43WpGBYxFrzV")
|
||||
parser.addini("influx_bucket", "influx bucket", default="tip-cicd")
|
||||
parser.addini("influx_org", "influx organization", default="tip")
|
||||
parser.addini("build", "AP Firmware build URL", default="0")
|
||||
parser.addini(name="firmware", type='string', help="AP Firmware build URL", default="0")
|
||||
parser.addini("cloud_ctlr", "AP Firmware build URL", default="0")
|
||||
|
||||
parser.addini("num_stations", "Number of Stations/Clients for testing")
|
||||
@@ -224,6 +224,11 @@ def get_configuration(testbed, request):
|
||||
"""yields the selected testbed information from lab info file (configuration.py)"""
|
||||
if request.config.getini("cloud_ctlr") != "0":
|
||||
CONFIGURATION[testbed]["controller"]["url"] = request.config.getini("cloud_ctlr")
|
||||
if request.config.getini("firmware") != "0":
|
||||
version = request.config.getini("firmware")
|
||||
version_list = version.split(",")
|
||||
for i in range(len(CONFIGURATION[testbed]["access_point"])):
|
||||
CONFIGURATION[testbed]["access_point"][i]["version"] = version_list[i]
|
||||
yield CONFIGURATION[testbed]
|
||||
|
||||
|
||||
@@ -258,8 +263,9 @@ def setup_controller(request, get_configuration, test_access_point, add_env_prop
|
||||
|
||||
|
||||
@pytest.fixture(scope="session")
|
||||
def setup_firmware(fixtures_ver):
|
||||
def setup_firmware(setup_controller):
|
||||
""" Fixture to Setup Firmware with the selected sdk """
|
||||
setup_controller.instantiate_firmware()
|
||||
yield True
|
||||
|
||||
|
||||
@@ -480,53 +486,23 @@ def get_markers(request, get_security_flags):
|
||||
yield security_dict
|
||||
|
||||
|
||||
# Will be availabe as a test case
|
||||
@pytest.fixture(scope="session")
|
||||
def test_access_point(request, testbed, get_apnos, get_configuration):
|
||||
def test_access_point(fixtures_ver, request, get_configuration, get_apnos):
|
||||
"""used to check the manager status of AP, should be used as a setup to verify if ap can reach cloud"""
|
||||
mgr_status = []
|
||||
if request.config.getoption("1.x"):
|
||||
for access_point_info in get_configuration['access_point']:
|
||||
ap_ssh = get_apnos(access_point_info, sdk="1.x")
|
||||
status = ap_ssh.get_manager_state()
|
||||
if "ACTIVE" not in status:
|
||||
time.sleep(30)
|
||||
ap_ssh = APNOS(access_point_info)
|
||||
status = ap_ssh.get_manager_state()
|
||||
mgr_status.append(status)
|
||||
else:
|
||||
# forgit access_point_info in get_configuration['access_point']:
|
||||
# ap_ssh = get_apnos(access_point_info)
|
||||
# status = ap_ssh.get_manager_state()
|
||||
# if "ACTIVE" not in status:
|
||||
# time.sleep(30)
|
||||
# ap_ssh = APNOS(access_point_info)
|
||||
# status = ap_ssh.get_manager_state()
|
||||
# mgr_status.append(status)
|
||||
pass
|
||||
yield mgr_status
|
||||
status = fixtures_ver.get_ap_cloud_connectivity_status(get_configuration, get_apnos)
|
||||
|
||||
def teardown_session():
|
||||
data = []
|
||||
data.append(False)
|
||||
for s in status:
|
||||
data.append(s[0])
|
||||
print(data)
|
||||
if False not in data:
|
||||
pytest.exit("AP is Not connected to ucentral gw")
|
||||
allure.attach(name=str(status), body="")
|
||||
|
||||
# Not used anymore, needs to depreciate it
|
||||
@pytest.fixture(scope="session")
|
||||
def get_lanforge_data(get_configuration):
|
||||
"""depreciate it"""
|
||||
lanforge_data = {}
|
||||
if get_configuration['traffic_generator']['name'] == 'lanforge':
|
||||
lanforge_data = {
|
||||
"lanforge_ip": get_configuration['traffic_generator']['details']['ip'],
|
||||
"lanforge-port-number": get_configuration['traffic_generator']['details']['port'],
|
||||
"lanforge_2dot4g": get_configuration['traffic_generator']['details']['2.4G-Radio'][0],
|
||||
"lanforge_5g": get_configuration['traffic_generator']['details']['5G-Radio'][0],
|
||||
"lanforge_2dot4g_prefix": get_configuration['traffic_generator']['details']['2.4G-Station-Name'],
|
||||
"lanforge_5g_prefix": get_configuration['traffic_generator']['details']['5G-Station-Name'],
|
||||
"lanforge_2dot4g_station": get_configuration['traffic_generator']['details']['2.4G-Station-Name'],
|
||||
"lanforge_5g_station": get_configuration['traffic_generator']['details']['5G-Station-Name'],
|
||||
"lanforge_bridge_port": get_configuration['traffic_generator']['details']['upstream'],
|
||||
"lanforge_vlan_port": get_configuration['traffic_generator']['details']['upstream'] + ".100",
|
||||
"vlan": 100
|
||||
}
|
||||
yield lanforge_data
|
||||
request.addfinalizer(teardown_session)
|
||||
yield status
|
||||
|
||||
|
||||
@pytest.fixture(scope="session")
|
||||
@@ -575,14 +551,6 @@ def lf_tools(get_configuration, testbed):
|
||||
yield obj
|
||||
|
||||
|
||||
@pytest.fixture(scope="session")
|
||||
def lf_tools(get_configuration, testbed):
|
||||
""" Create a DUT on LANforge"""
|
||||
obj = ChamberView(lanforge_data=get_configuration["traffic_generator"]["details"],
|
||||
testbed=testbed, access_point_data=get_configuration["access_point"])
|
||||
yield obj
|
||||
|
||||
|
||||
@pytest.fixture(scope="session")
|
||||
def setup_influx(request, testbed, get_configuration):
|
||||
""" Setup Influx Parameters: Used in CV Automation"""
|
||||
@@ -645,8 +613,8 @@ def fixtures_ver(request, get_configuration):
|
||||
|
||||
@pytest.fixture(scope="session")
|
||||
def firmware_upgrade(fixtures_ver, get_apnos, get_configuration):
|
||||
fixtures_ver.setup_firmware(get_apnos, get_configuration)
|
||||
yield True
|
||||
upgrade_status = fixtures_ver.setup_firmware(get_apnos, get_configuration)
|
||||
yield upgrade_status
|
||||
|
||||
|
||||
"""
|
||||
|
||||
@@ -7,11 +7,12 @@ import pytest
|
||||
import json
|
||||
import allure
|
||||
|
||||
@pytest.mark.uc_sanityw
|
||||
@allure.feature("SDK REST API")
|
||||
|
||||
class TestUcentralGatewayService(object):
|
||||
"""
|
||||
"""
|
||||
|
||||
@pytest.mark.sdk_restapi
|
||||
def test_gwservice_listdevices(self, setup_controller):
|
||||
"""
|
||||
@@ -24,7 +25,7 @@ class TestUcentralGatewayService(object):
|
||||
if resp.status_code != 200:
|
||||
assert False
|
||||
devices = json.loads(resp.text)
|
||||
print (devices)
|
||||
print(devices)
|
||||
|
||||
@pytest.mark.sdk_restapi
|
||||
def test_gwservice_createdevice(self, setup_controller):
|
||||
@@ -48,7 +49,7 @@ class TestUcentralGatewayService(object):
|
||||
if resp.status_code != 200:
|
||||
assert False
|
||||
devices = json.loads(resp.text)
|
||||
print (devices)
|
||||
print(devices)
|
||||
|
||||
resp = setup_controller.request("gw", "device/DEADBEEF0011", "GET", None, None)
|
||||
body = resp.url + "," + str(resp.status_code) + ',' + resp.text
|
||||
@@ -83,7 +84,7 @@ class TestUcentralGatewayService(object):
|
||||
if resp.status_code != 200:
|
||||
assert False
|
||||
devices = json.loads(resp.text)
|
||||
print (devices)
|
||||
print(devices)
|
||||
|
||||
payload = {'serialNumber': 'DEADBEEF0011',
|
||||
'owner': 'pytest'}
|
||||
@@ -100,8 +101,7 @@ class TestUcentralGatewayService(object):
|
||||
assert False
|
||||
|
||||
device = json.loads(resp.text)
|
||||
print (device)
|
||||
|
||||
print(device)
|
||||
|
||||
resp = setup_controller.request("gw", "device/DEADBEEF0011", "DELETE", None, None)
|
||||
body = resp.url + "," + str(resp.status_code) + ',' + resp.text
|
||||
@@ -130,12 +130,10 @@ class TestUcentralGatewayService(object):
|
||||
if resp.status_code != 200:
|
||||
assert False
|
||||
devices = json.loads(resp.text)
|
||||
print (devices)
|
||||
|
||||
print(devices)
|
||||
|
||||
resp = setup_controller.request("gw", "device/DEADBEEF0011", "DELETE", None, None)
|
||||
body = resp.url + "," + str(resp.status_code) + ',' + resp.text
|
||||
allure.attach(name="gw get device", body=body)
|
||||
if resp.status_code != 200:
|
||||
assert False
|
||||
|
||||
|
||||
@@ -60,6 +60,18 @@ class Fixtures_1x:
|
||||
def setup_firmware(self):
|
||||
pass
|
||||
|
||||
def get_ap_cloud_connectivity_status(self, get_configuration, get_apnos):
|
||||
mgr_status = []
|
||||
for access_point_info in get_configuration['access_point']:
|
||||
ap_ssh = get_apnos(access_point_info, sdk="1.x")
|
||||
status = ap_ssh.get_manager_state()
|
||||
if "ACTIVE" not in status:
|
||||
time.sleep(30)
|
||||
ap_ssh = APNOS(access_point_info)
|
||||
status = ap_ssh.get_manager_state()
|
||||
mgr_status.append(status)
|
||||
return mgr_status
|
||||
|
||||
def get_ap_version(self, get_apnos, get_configuration):
|
||||
# version_list = []
|
||||
# for access_point_info in get_configuration['access_point']:
|
||||
|
||||
@@ -60,8 +60,10 @@ class Fixtures_2x:
|
||||
|
||||
def setup_firmware(self, get_apnos, get_configuration, request=""):
|
||||
# Query AP Firmware
|
||||
|
||||
upgrade_status = []
|
||||
for ap in get_configuration['access_point']:
|
||||
|
||||
ap_ssh = get_apnos(ap, pwd="../libs/apnos/", sdk="2.x")
|
||||
# If specified as URL
|
||||
try:
|
||||
response = requests.get(ap['version'])
|
||||
@@ -78,24 +80,19 @@ class Fixtures_2x:
|
||||
|
||||
items = list(range(0, 300))
|
||||
l = len(items)
|
||||
self.printProgressBar(0, l, prefix='Progress:', suffix='Complete', length=50)
|
||||
for i, item in enumerate(items):
|
||||
# Do stuff...
|
||||
time.sleep(0.8)
|
||||
# Update Progress Bar
|
||||
self.printProgressBar(i + 1, l, prefix='Progress:', suffix='Complete', length=50)
|
||||
|
||||
ap_version = ap_ssh.get_ap_version_ucentral()
|
||||
current_version_commit = str(ap_version).split("/")[1].replace(" ", "").splitlines()[0]
|
||||
if target_revision_commit in current_version_commit:
|
||||
upgrade_status.append([ap['serial'], target_revision_commit, current_version_commit])
|
||||
print("Firmware Upgraded to :", ap_version)
|
||||
else:
|
||||
print("firmware upgraded failed: ", target_revision)
|
||||
upgrade_status.append([ap['serial'],target_revision_commit, current_version_commit])
|
||||
break
|
||||
except Exception as e:
|
||||
print("URL does not exist on Internet")
|
||||
|
||||
|
||||
# else Specified as "branch-commit_id" / "branch-latest"
|
||||
firmware_url = ""
|
||||
ap_ssh = get_apnos(ap, pwd="../libs/apnos/", sdk="2.x")
|
||||
ap_version = ap_ssh.get_ap_version_ucentral()
|
||||
response = self.fw_client.get_latest_fw(model=ap["model"])
|
||||
# if the target version specified is "branch-latest"
|
||||
@@ -122,20 +119,16 @@ class Fixtures_2x:
|
||||
|
||||
# if AP is already in target Version then skip upgrade unless force upgrade is specified
|
||||
if current_version == target_revision:
|
||||
upgrade_status.append([ap['serial'], target_revision, current_version, 'skip'])
|
||||
print("Skipping Upgrade! AP is already in target version")
|
||||
allure.attach(name="Skipping Upgrade because AP is already in the target Version", body="")
|
||||
allure.attach(name="Skipping Upgrade because AP is already in the target Version",
|
||||
body="")
|
||||
break
|
||||
|
||||
self.fw_client.upgrade_firmware(serial=ap['serial'], url=str(firmware['uri']))
|
||||
# wait for 300 seconds after firmware upgrade
|
||||
items = list(range(0, 300))
|
||||
l = len(items)
|
||||
# self.printProgressBar(0, l, prefix='Progress:', suffix='Complete', length=50)
|
||||
# for i, item in enumerate(items):
|
||||
# # Do stuff...
|
||||
# time.sleep(0.8)
|
||||
# # Update Progress Bar
|
||||
# self.printProgressBar(i + 1, l, prefix='Progress:', suffix='Complete', length=50)
|
||||
print("waiting for 300 Sec for Firmware Upgrade")
|
||||
time.sleep(300)
|
||||
|
||||
# check the current AP Revision again
|
||||
ap_version = ap_ssh.get_ap_version_ucentral()
|
||||
@@ -145,8 +138,10 @@ class Fixtures_2x:
|
||||
body="current revision: " + current_version + "\ntarget revision: " + target_revision)
|
||||
print("current revision: ", current_version, "\ntarget revision: ", target_revision)
|
||||
if current_version == target_revision:
|
||||
upgrade_status.append([ap['serial'], target_revision, current_version])
|
||||
print("firmware upgraded successfully: ", target_revision)
|
||||
else:
|
||||
upgrade_status.append([ap['serial'], target_revision, current_version])
|
||||
print("firmware upgraded failed: ", target_revision)
|
||||
break
|
||||
if firmware['image'].split("-")[-2] == ap['version'].split('-')[0]:
|
||||
@@ -166,20 +161,15 @@ class Fixtures_2x:
|
||||
|
||||
# if AP is already in target Version then skip upgrade unless force upgrade is specified
|
||||
if current_version == target_revision:
|
||||
upgrade_status.append([ap['serial'], target_revision, current_version, 'skip'])
|
||||
print("Skipping Upgrade! AP is already in target version")
|
||||
allure.attach(name="Skipping Upgrade because AP is already in the target Version", body="")
|
||||
break
|
||||
|
||||
self.fw_client.upgrade_firmware(serial=ap['serial'], url=str(firmware['uri']))
|
||||
# wait for 300 seconds after firmware upgrade
|
||||
items = list(range(0, 300))
|
||||
l = len(items)
|
||||
self.printProgressBar(0, l, prefix='Progress:', suffix='Complete', length=50)
|
||||
for i, item in enumerate(items):
|
||||
# Do stuff...
|
||||
time.sleep(0.8)
|
||||
# Update Progress Bar
|
||||
self.printProgressBar(i + 1, l, prefix='Progress:', suffix='Complete', length=50)
|
||||
print("waiting for 300 Sec for Firmware Upgrade")
|
||||
time.sleep(300)
|
||||
|
||||
# check the current AP Revision again
|
||||
ap_version = ap_ssh.get_ap_version_ucentral()
|
||||
@@ -189,19 +179,20 @@ class Fixtures_2x:
|
||||
body="current revision: " + current_version + "\ntarget revision: " + target_revision)
|
||||
print("current revision: ", current_version, "\ntarget revision: ", target_revision)
|
||||
if current_version == target_revision:
|
||||
upgrade_status.append([ap['serial'], target_revision, current_version])
|
||||
print("firmware upgraded successfully: ", target_revision)
|
||||
else:
|
||||
upgrade_status.append([ap['serial'], target_revision, current_version])
|
||||
print("firmware upgraded failed: ", target_revision)
|
||||
break
|
||||
|
||||
|
||||
# if branch-commit is specified
|
||||
else:
|
||||
firmware_list = self.fw_client.get_firmwares(model=ap['model'], branch="", commit_id='')
|
||||
fw_list = []
|
||||
# getting the list of firmwares in fw_list that has the commit id specified as an input
|
||||
for firmware in firmware_list:
|
||||
if firmware['revision'].split("/")[1].replace(" ", "").split('-')[-1] == ap['version'].split('-')[1]:
|
||||
if firmware['revision'].split("/")[1].replace(" ", "").split('-')[-1] == ap['version'].split('-')[
|
||||
1]:
|
||||
fw_list.append(firmware)
|
||||
|
||||
# If there is only 1 commit ID in fw_list
|
||||
@@ -224,6 +215,7 @@ class Fixtures_2x:
|
||||
|
||||
# if AP is already in target Version then skip upgrade unless force upgrade is specified
|
||||
if current_version == target_revision:
|
||||
upgrade_status.append([ap['serial'], target_revision, current_version, 'skip'])
|
||||
print("Skipping Upgrade! AP is already in target version")
|
||||
allure.attach(name="Skipping Upgrade because AP is already in the target Version", body="")
|
||||
break
|
||||
@@ -233,14 +225,8 @@ class Fixtures_2x:
|
||||
self.fw_client.upgrade_firmware(serial=ap['serial'], url=str(url))
|
||||
|
||||
# wait for 300 seconds after firmware upgrade
|
||||
items = list(range(0, 300))
|
||||
l = len(items)
|
||||
self.printProgressBar(0, l, prefix='Progress:', suffix='Complete', length=50)
|
||||
for i, item in enumerate(items):
|
||||
# Do stuff...
|
||||
time.sleep(0.8)
|
||||
# Update Progress Bar
|
||||
self.printProgressBar(i + 1, l, prefix='Progress:', suffix='Complete', length=50)
|
||||
print("waiting for 300 Sec for Firmware Upgrade")
|
||||
time.sleep(300)
|
||||
|
||||
# check the current AP Revision again
|
||||
ap_version = ap_ssh.get_ap_version_ucentral()
|
||||
@@ -250,8 +236,10 @@ class Fixtures_2x:
|
||||
body="current revision: " + current_version + "\ntarget revision: " + target_revision)
|
||||
print("current revision: ", current_version, "\ntarget revision: ", target_revision)
|
||||
if current_version == target_revision:
|
||||
upgrade_status.append([ap['serial'], target_revision, current_version])
|
||||
print("firmware upgraded successfully: ", target_revision)
|
||||
else:
|
||||
upgrade_status.append([ap['serial'], target_revision, current_version])
|
||||
print("firmware upgraded failed: ", target_revision)
|
||||
break
|
||||
|
||||
@@ -283,6 +271,7 @@ class Fixtures_2x:
|
||||
|
||||
# if AP is already in target Version then skip upgrade unless force upgrade is specified
|
||||
if current_version == target_revision:
|
||||
upgrade_status.append([ap['serial'], target_revision, current_version, 'skip'])
|
||||
print("Skipping Upgrade! AP is already in target version")
|
||||
allure.attach(name="Skipping Upgrade because AP is already in the target Version", body="")
|
||||
break
|
||||
@@ -290,15 +279,8 @@ class Fixtures_2x:
|
||||
self.fw_client.upgrade_firmware(serial=ap['serial'], url=str(firmware['uri']))
|
||||
# wait for 300 seconds after firmware upgrade
|
||||
|
||||
# Initial call to print 0% progress
|
||||
items = list(range(0, 300))
|
||||
l = len(items)
|
||||
self.printProgressBar(0, l, prefix='Progress:', suffix='Complete', length=50)
|
||||
for i, item in enumerate(items):
|
||||
# Do stuff...
|
||||
time.sleep(0.8)
|
||||
# Update Progress Bar
|
||||
self.printProgressBar(i + 1, l, prefix='Progress:', suffix='Complete', length=50)
|
||||
print("waiting for 300 Sec for Firmware Upgrade")
|
||||
time.sleep(300)
|
||||
|
||||
# check the current AP Revision again
|
||||
ap_version = ap_ssh.get_ap_version_ucentral()
|
||||
@@ -308,13 +290,25 @@ class Fixtures_2x:
|
||||
body="current revision: " + current_version + "\ntarget revision: " + target_revision)
|
||||
print("current revision: ", current_version, "\ntarget revision: ", target_revision)
|
||||
if current_version == target_revision:
|
||||
upgrade_status.append([target_revision, current_version])
|
||||
print("firmware upgraded successfully: ", target_revision)
|
||||
else:
|
||||
upgrade_status.append([target_revision, current_version])
|
||||
print("firmware upgraded failed: ", target_revision)
|
||||
break
|
||||
return upgrade_status
|
||||
|
||||
|
||||
|
||||
def get_ap_cloud_connectivity_status(self, get_configuration, get_apnos):
|
||||
status_data = []
|
||||
self.ubus_connection = []
|
||||
for access_point_info in get_configuration['access_point']:
|
||||
ap_ssh = get_apnos(access_point_info, sdk="2.x")
|
||||
status = ap_ssh.get_ucentral_status()
|
||||
print(status)
|
||||
status_data.append(status)
|
||||
connectivity_data = ap_ssh.run_generic_command(cmd="ubus call ucentral status")
|
||||
self.ubus_connection.append(['Serial Number: ' + access_point_info['serial'], connectivity_data])
|
||||
return status_data
|
||||
|
||||
def get_ap_version(self, get_apnos, get_configuration):
|
||||
version_list = []
|
||||
@@ -579,7 +573,7 @@ class Fixtures_2x:
|
||||
pass
|
||||
ap_ssh.run_generic_command(cmd="logger stop testcase: " + instance_name)
|
||||
ap_logs = ap_ssh.get_logread(start_ref="start testcase: " + instance_name,
|
||||
stop_ref="stop testcase: " + instance_name)
|
||||
stop_ref="stop testcase: " + instance_name)
|
||||
allure.attach(body=ap_logs, name="AP Log: ")
|
||||
|
||||
try:
|
||||
@@ -620,25 +614,3 @@ class Fixtures_2x:
|
||||
|
||||
request.addfinalizer(teardown_session)
|
||||
return test_cases
|
||||
|
||||
# Print iterations progress
|
||||
def printProgressBar(self, iteration, total, prefix='', suffix='', decimals=1, length=100, fill='█', printEnd="\r"):
|
||||
"""
|
||||
Call in a loop to create terminal progress bar
|
||||
@params:
|
||||
iteration - Required : current iteration (Int)
|
||||
total - Required : total iterations (Int)
|
||||
prefix - Optional : prefix string (Str)
|
||||
suffix - Optional : suffix string (Str)
|
||||
decimals - Optional : positive number of decimals in percent complete (Int)
|
||||
length - Optional : character length of bar (Int)
|
||||
fill - Optional : bar fill character (Str)
|
||||
printEnd - Optional : end character (e.g. "\r", "\r\n") (Str)
|
||||
"""
|
||||
percent = ("{0:." + str(decimals) + "f}").format(100 * (iteration / float(total)))
|
||||
filledLength = int(length * iteration // total)
|
||||
bar = fill * filledLength + '-' * (length - filledLength)
|
||||
print(f'\r{prefix} |{bar}| {percent}% {suffix}', end=printEnd)
|
||||
# Print New Line on Complete
|
||||
if iteration == total:
|
||||
print()
|
||||
@@ -11,7 +11,7 @@ num_stations=1
|
||||
sdk-customer-id=2
|
||||
|
||||
#fIRMWARE Option
|
||||
build=0
|
||||
firmware=0
|
||||
|
||||
# Influx Params
|
||||
influx_host=influx.cicd.lab.wlan.tip.build
|
||||
|
||||
@@ -6,16 +6,10 @@ import allure
|
||||
import pytest
|
||||
import requests
|
||||
|
||||
pytestmark = [pytest.mark.test_resources, pytest.mark.sanity,
|
||||
pytestmark = [pytest.mark.test_resources, pytest.mark.sanity, pytest.mark.uc_sanity,
|
||||
pytest.mark.sanity_55]
|
||||
|
||||
|
||||
@pytest.mark.fw
|
||||
def test_firmware(firmware_upgrade):
|
||||
|
||||
assert True
|
||||
|
||||
|
||||
@allure.testcase(name="Test Resources", url="")
|
||||
class TestResources(object):
|
||||
"""Test Case Class: Test cases to cover resource Connectivity"""
|
||||
@@ -28,39 +22,133 @@ class TestResources(object):
|
||||
login_response_json = setup_controller.login_resp.json()
|
||||
response_code = setup_controller.login_resp.status_code
|
||||
allure.attach(name="Login Response Code", body=str(response_code))
|
||||
allure.attach(name="Login Response JSON", body=str(login_response_json))
|
||||
# if setup_controller.bearer:
|
||||
# allure.attach(name="Controller Connectivity Success", body="")
|
||||
# else:
|
||||
# allure.attach(name="Controller Connectivity Failed", body="")
|
||||
# pytest.exit("Controller Not Available")
|
||||
# assert setup_controller.bearer
|
||||
allure.attach(name="Login Response JSON",
|
||||
body=str(login_response_json),
|
||||
attachment_type=allure.attachment_type.JSON)
|
||||
assert response_code == 200
|
||||
|
||||
@pytest.mark.test_access_points_connectivity
|
||||
@allure.testcase(name="test_access_points_connectivity", url="")
|
||||
def test_access_points_connectivity(self, test_access_point):
|
||||
def test_access_points_connectivity(self, test_access_point, fixtures_ver):
|
||||
"""Test case to verify Access Points Connectivity"""
|
||||
flag = True
|
||||
for i in test_access_point:
|
||||
if "ACTIVE" not in i:
|
||||
flag = False
|
||||
if flag is False:
|
||||
allure.attach(name="Access Point Connectivity Success", body=str(test_access_point))
|
||||
pytest.exit("Access Point Manager state is not Active")
|
||||
else:
|
||||
allure.attach(name="Access Point Connectivity Failed", body=str(test_access_point))
|
||||
|
||||
assert flag
|
||||
data = []
|
||||
for status in test_access_point:
|
||||
data.append(status[0])
|
||||
allure.attach(name="AP - Cloud connectivity info", body=str(fixtures_ver.ubus_connection))
|
||||
assert False not in data
|
||||
|
||||
@pytest.mark.traffic_generator_connectivity
|
||||
@allure.testcase(name="test_traffic_generator_connectivity", url="")
|
||||
def test_traffic_generator_connectivity(self, traffic_generator_connectivity, update_report, test_cases):
|
||||
def test_traffic_generator_connectivity(self, traffic_generator_connectivity):
|
||||
"""Test case to verify Traffic Generator Connectivity"""
|
||||
if traffic_generator_connectivity == "5.4.4":
|
||||
allure.attach(name="LANforge-", body=str(traffic_generator_connectivity))
|
||||
|
||||
else:
|
||||
pytest.exit("LANforgeGUI-5.4.3 is not available")
|
||||
|
||||
allure.attach(name="LANforge version", body=str(traffic_generator_connectivity))
|
||||
assert traffic_generator_connectivity
|
||||
|
||||
|
||||
@allure.testcase(name="Firmware Management", url="")
|
||||
@pytest.mark.uc_firmware
|
||||
class TestFMS(object):
|
||||
|
||||
@pytest.mark.get_firmware_list
|
||||
def test_fms_version_list(self, fixtures_ver, get_configuration):
|
||||
PASS = []
|
||||
for ap in get_configuration['access_point']:
|
||||
# get the latest branch
|
||||
firmware_list = fixtures_ver.fw_client.get_firmwares(model=ap['model'],
|
||||
branch="",
|
||||
commit_id='',
|
||||
limit='10000',
|
||||
offset='3000')
|
||||
firmware_list.reverse()
|
||||
release_list_data = []
|
||||
for i in firmware_list:
|
||||
release_list_data.append(str(i['release']))
|
||||
allure.attach(name="firmware_list", body=str("\n".join(release_list_data)),
|
||||
attachment_type=allure.attachment_type.JSON)
|
||||
try:
|
||||
response = requests.get(ap['version'])
|
||||
print("URL is valid and exists on the internet")
|
||||
allure.attach(name="firmware url: ", body=str(ap['version']))
|
||||
target_revision_commit = ap['version'].split("-")[-2]
|
||||
target_revision_branch = ap['version'].split("-")[-3]
|
||||
flag = True
|
||||
for i in release_list_data:
|
||||
if target_revision_commit == i.split('-')[-1] and target_revision_branch == i.split('-')[-2]:
|
||||
print('target firmware : ' + ap['version'] + " is available in FMS : " + i)
|
||||
allure.attach(name='target firmware : ' + ap['version'] + " is available in FMS : " + i,
|
||||
body="")
|
||||
PASS.append(True)
|
||||
flag = False
|
||||
|
||||
if flag:
|
||||
print('target firmware : ' + ap['version'] + " is not available in FMS : ")
|
||||
allure.attach(name='target firmware : ' + ap['version'] + " is not available in FMS : ",
|
||||
body="")
|
||||
PASS.append(False)
|
||||
break
|
||||
except Exception as e:
|
||||
pass
|
||||
|
||||
if ap['version'].split('-')[1] == "latest":
|
||||
|
||||
for firmware in firmware_list:
|
||||
if ap['version'].split('-')[0] == 'release':
|
||||
version = firmware['revision'].split("/")[1].replace(" ", "").split('-')[1]
|
||||
if firmware['revision'].split("/")[1].replace(" ", "").split('-')[1].__contains__('v2.'):
|
||||
print("Target Firmware: \n", firmware)
|
||||
allure.attach(name="Target firmware : ", body=str(firmware['release']))
|
||||
break
|
||||
|
||||
if firmware['release'].split("-")[-2] == ap['version'].split('-')[0]:
|
||||
print("Target Firmware: \n", firmware)
|
||||
allure.attach(name="Target firmware : ", body=str(firmware['release']))
|
||||
break
|
||||
else:
|
||||
flag = True
|
||||
for firmware in firmware_list:
|
||||
if ap['version'].split('-')[0] == 'release':
|
||||
branch = firmware['revision'].split("/")[1].replace(" ", "").split('-')[1]
|
||||
commit = ap['version'].split('-')[1]
|
||||
if branch.__contains__('v2.') and commit == firmware['release'].split('-')[-1]:
|
||||
print("Target Firmware: \n", firmware)
|
||||
allure.attach(name="Target firmware : ", body=str(firmware['release']))
|
||||
PASS.append(True)
|
||||
flag = False
|
||||
break
|
||||
if ap['version'].split('-')[1] == firmware['release'].split('-')[-1] and ap['version'].split('-')[
|
||||
0] == \
|
||||
firmware['release'].split('-')[-2]:
|
||||
print('target firmware : ' + ap['version'] + " is available in FMS : " + firmware['release'])
|
||||
allure.attach(
|
||||
name='target firmware : ' + ap['version'] + " is available in FMS : " + firmware['release']
|
||||
, body="")
|
||||
PASS.append(True)
|
||||
flag = False
|
||||
|
||||
if flag:
|
||||
print('target firmware : ' + ap['version'] + " is not available in FMS : ")
|
||||
allure.attach(name='target firmware : ' + ap['version'] + " is not available in FMS : ",
|
||||
body="")
|
||||
PASS.append(False)
|
||||
assert False not in PASS
|
||||
|
||||
@pytest.mark.firmware_upgrade
|
||||
def test_firmware_upgrade_request(self, firmware_upgrade):
|
||||
assert True
|
||||
|
||||
@pytest.mark.test_firmware_ap
|
||||
def test_firmware_upgrade_status_AP(self, firmware_upgrade):
|
||||
allure.attach(name="firmware Upgrade Status:", body="")
|
||||
assert True
|
||||
|
||||
@pytest.mark.test_firmware_gw
|
||||
def test_firmware_upgrade_status_gateway(self, get_apnos, get_configuration, setup_controller):
|
||||
status = []
|
||||
for ap in get_configuration['access_point']:
|
||||
ap_ssh = get_apnos(ap, pwd="../libs/apnos/", sdk="2.x")
|
||||
ap_version = ap_ssh.get_ap_version_ucentral()
|
||||
current_version_ap = str(ap_version).split()
|
||||
data = setup_controller.get_device_by_serial_number(serial_number=ap['serial'])
|
||||
allure.attach(name=str(data['firmware']) + str(current_version_ap), body="")
|
||||
status.append(current_version_ap == data['firmware'].split())
|
||||
assert False not in status
|
||||
|
||||
Reference in New Issue
Block a user