mirror of
https://github.com/Telecominfraproject/wlan-lanforge-scripts.git
synced 2025-11-01 19:28:00 +00:00
realm: Fix problem with waiting for IP address.
Something I broke earlier. longevity works fairly well now it seems.
This commit is contained in:
@@ -370,7 +370,7 @@ class Realm(LFCliBase):
|
|||||||
|
|
||||||
def wait_for_ip(self, station_list=None, ipv4=True, ipv6=False, timeout_sec=60):
|
def wait_for_ip(self, station_list=None, ipv4=True, ipv6=False, timeout_sec=60):
|
||||||
print("Waiting for ips...")
|
print("Waiting for ips...")
|
||||||
print(station_list)
|
#print(station_list)
|
||||||
|
|
||||||
if (station_list is None) or (len(station_list) < 1):
|
if (station_list is None) or (len(station_list) < 1):
|
||||||
raise ValueError("wait_for_ip: expects non-empty list of ports")
|
raise ValueError("wait_for_ip: expects non-empty list of ports")
|
||||||
@@ -380,28 +380,31 @@ class Realm(LFCliBase):
|
|||||||
wait_more = False
|
wait_more = False
|
||||||
|
|
||||||
for sta_eid in station_list:
|
for sta_eid in station_list:
|
||||||
print("sta-eid: %s"%(sta_eid))
|
print("checking sta-eid: %s"%(sta_eid))
|
||||||
eid = self.name_to_eid(sta_eid)
|
eid = self.name_to_eid(sta_eid)
|
||||||
|
|
||||||
response = super().json_get("/port/%s/%s/%s?fields=alias,ip,port+type,ipv6+address" %
|
response = super().json_get("/port/%s/%s/%s?fields=alias,ip,port+type,ipv6+address" %
|
||||||
(eid[0], eid[1], eid[2]))
|
(eid[0], eid[1], eid[2]))
|
||||||
|
#pprint(response)
|
||||||
|
|
||||||
if (response is None) or ("interface" not in response):
|
if (response is None) or ("interface" not in response):
|
||||||
print("station_list: incomplete response:")
|
print("station_list: incomplete response:")
|
||||||
pprint(response)
|
pprint(response)
|
||||||
|
wait_more = True
|
||||||
|
break
|
||||||
|
|
||||||
|
if ipv4:
|
||||||
|
v = response['interface']
|
||||||
|
if v['ip'] == '0.0.0.0':
|
||||||
|
wait_more = True
|
||||||
|
print("Waiting for port %s to get IPv4 Address."%(sta_eid))
|
||||||
|
if ipv6:
|
||||||
|
v = response['interface']
|
||||||
|
if v['ipv6 address'] != 'DELETED' and not v['ipv6 address'].startswith('fe80') \
|
||||||
|
and v['ipv6 address'] != 'AUTO':
|
||||||
|
wait_more = True
|
||||||
|
print("Waiting for port %s to get IPv6 Address."%(sta_eid))
|
||||||
|
|
||||||
if ipv4:
|
|
||||||
for x in range(len(response['interface'])):
|
|
||||||
for k, v in response['interface'][x].items():
|
|
||||||
if v['ip'] == '0.0.0.0':
|
|
||||||
wait_more = True
|
|
||||||
print("Waiting for port %s to get IPv4 Address."%(sta_eid))
|
|
||||||
if ipv6:
|
|
||||||
for x in range(len(response['interface'])):
|
|
||||||
for k, v in response['interface'][x].items():
|
|
||||||
if v['ipv6 address'] != 'DELETED' and not v['ipv6 address'].startswith('fe80') \
|
|
||||||
and v['ipv6 address'] != 'AUTO':
|
|
||||||
wait_more = True
|
|
||||||
print("Waiting for port %s to get IPv6 Address."%(sta_eid))
|
|
||||||
if wait_more:
|
if wait_more:
|
||||||
time.sleep(1)
|
time.sleep(1)
|
||||||
timeout_sec -= 1
|
timeout_sec -= 1
|
||||||
@@ -577,7 +580,7 @@ class MULTICASTProfile(LFCliBase):
|
|||||||
|
|
||||||
pass
|
pass
|
||||||
|
|
||||||
def stop_mc(self):
|
def stop_mc(self, suppress_related_commands=None, debug_ = False):
|
||||||
if self.debug:
|
if self.debug:
|
||||||
debug_=True
|
debug_=True
|
||||||
|
|
||||||
@@ -590,7 +593,10 @@ class MULTICASTProfile(LFCliBase):
|
|||||||
|
|
||||||
pass
|
pass
|
||||||
|
|
||||||
def cleanup(self):
|
def cleanup(self, suppress_related_commands=None, debug_ = False):
|
||||||
|
if self.debug:
|
||||||
|
debug_=True
|
||||||
|
|
||||||
for endp_name in self.get_mc_names():
|
for endp_name in self.get_mc_names():
|
||||||
json_data = {
|
json_data = {
|
||||||
"endp_name":endp_name
|
"endp_name":endp_name
|
||||||
@@ -606,7 +612,7 @@ class MULTICASTProfile(LFCliBase):
|
|||||||
side_tx_shelf = side_tx_info[0]
|
side_tx_shelf = side_tx_info[0]
|
||||||
side_tx_resource = side_tx_info[1]
|
side_tx_resource = side_tx_info[1]
|
||||||
side_tx_port = side_tx_info[2]
|
side_tx_port = side_tx_info[2]
|
||||||
side_tx_name = "mtx-%s-%i-"%(side_tx_port, len(self.created_mc))
|
side_tx_name = "mtx-%s-%i"%(side_tx_port, len(self.created_mc))
|
||||||
|
|
||||||
json_data = []
|
json_data = []
|
||||||
|
|
||||||
@@ -619,7 +625,7 @@ class MULTICASTProfile(LFCliBase):
|
|||||||
'type':endp_type,
|
'type':endp_type,
|
||||||
'ip_port':-1,
|
'ip_port':-1,
|
||||||
'is_rate_bursty':
|
'is_rate_bursty':
|
||||||
'NO','min_rate':4000000,
|
'NO','min_rate':256000,
|
||||||
'max_rate':0,
|
'max_rate':0,
|
||||||
'is_pkt_sz_random':'NO',
|
'is_pkt_sz_random':'NO',
|
||||||
'min_pkt':1472,
|
'min_pkt':1472,
|
||||||
@@ -663,7 +669,7 @@ class MULTICASTProfile(LFCliBase):
|
|||||||
side_rx_shelf = side_rx_info[0]
|
side_rx_shelf = side_rx_info[0]
|
||||||
side_rx_resource = side_rx_info[1]
|
side_rx_resource = side_rx_info[1]
|
||||||
side_rx_port = side_rx_info[2]
|
side_rx_port = side_rx_info[2]
|
||||||
side_rx_name = "mrx-%s-%i-"%(side_rx_port, len(self.created_mc))
|
side_rx_name = "mrx-%s-%i"%(side_rx_port, len(self.created_mc))
|
||||||
# add_endp mcast-rcv-sta-001 1 1 sta0002 mc_udp 9999 NO 0 0 NO 1472 0 INCREASING NO 32 0 0
|
# add_endp mcast-rcv-sta-001 1 1 sta0002 mc_udp 9999 NO 0 0 NO 1472 0 INCREASING NO 32 0 0
|
||||||
json_data = {
|
json_data = {
|
||||||
'alias':side_rx_name,
|
'alias':side_rx_name,
|
||||||
|
|||||||
@@ -19,14 +19,13 @@ import datetime
|
|||||||
|
|
||||||
class L3VariableTimeLongevity(LFCliBase):
|
class L3VariableTimeLongevity(LFCliBase):
|
||||||
def __init__(self, host, port, endp_types, side_b, radios, radio_name_list, number_of_stations_per_radio_list,
|
def __init__(self, host, port, endp_types, side_b, radios, radio_name_list, number_of_stations_per_radio_list,
|
||||||
ssid_list, ssid_password_list, ssid_security_list, station_lists, name_prefix,
|
ssid_list, ssid_password_list, ssid_security_list, station_lists, name_prefix, debug_on,
|
||||||
side_a_min_rate=56000, side_a_max_rate=0,
|
side_a_min_rate=56000, side_a_max_rate=0,
|
||||||
side_b_min_rate=56000, side_b_max_rate=0,
|
side_b_min_rate=56000, side_b_max_rate=0,
|
||||||
number_template="00", test_duration="256s",
|
number_template="00", test_duration="256s",
|
||||||
_debug_on=True,
|
|
||||||
_exit_on_error=False,
|
_exit_on_error=False,
|
||||||
_exit_on_fail=False):
|
_exit_on_fail=False):
|
||||||
super().__init__(host, port, _debug=_debug_on, _halt_on_error=_exit_on_error, _exit_on_fail=_exit_on_fail)
|
super().__init__(host, port, _debug=debug_on, _halt_on_error=_exit_on_error, _exit_on_fail=_exit_on_fail)
|
||||||
self.host = host
|
self.host = host
|
||||||
self.port = port
|
self.port = port
|
||||||
self.endp_types = endp_types.split()
|
self.endp_types = endp_types.split()
|
||||||
@@ -41,7 +40,7 @@ class L3VariableTimeLongevity(LFCliBase):
|
|||||||
self.radios = radios # from the command line
|
self.radios = radios # from the command line
|
||||||
self.radio_list = radio_name_list
|
self.radio_list = radio_name_list
|
||||||
self.number_of_stations_per_radio_list = number_of_stations_per_radio_list
|
self.number_of_stations_per_radio_list = number_of_stations_per_radio_list
|
||||||
self.local_realm = realm.Realm(lfclient_host=self.host, lfclient_port=self.port)
|
self.local_realm = realm.Realm(lfclient_host=self.host, lfclient_port=self.port, debug_=debug_on)
|
||||||
self.cx_profile = self.local_realm.new_l3_cx_profile()
|
self.cx_profile = self.local_realm.new_l3_cx_profile()
|
||||||
self.multicast_profile = self.local_realm.new_multicast_profile()
|
self.multicast_profile = self.local_realm.new_multicast_profile()
|
||||||
self.station_profiles = []
|
self.station_profiles = []
|
||||||
@@ -89,7 +88,7 @@ class L3VariableTimeLongevity(LFCliBase):
|
|||||||
expected_passes = 0
|
expected_passes = 0
|
||||||
if len(old_list) == len(new_list):
|
if len(old_list) == len(new_list):
|
||||||
for item, value in old_list.items():
|
for item, value in old_list.items():
|
||||||
expected_passes += 1
|
expected_passes +=1
|
||||||
if item.startswith("mtx"):
|
if item.startswith("mtx"):
|
||||||
# We ignore the mcast transmitter.
|
# We ignore the mcast transmitter.
|
||||||
# This is a hack based on naming and could be improved.
|
# This is a hack based on naming and could be improved.
|
||||||
@@ -97,13 +96,18 @@ class L3VariableTimeLongevity(LFCliBase):
|
|||||||
else:
|
else:
|
||||||
if new_list[item] > old_list[item]:
|
if new_list[item] > old_list[item]:
|
||||||
passes += 1
|
passes += 1
|
||||||
print(item, new_list[item], old_list[item], passes, expected_passes)
|
print(item, new_list[item], old_list[item], " Difference: ", new_list[item] - old_list[item])
|
||||||
|
else:
|
||||||
|
print("Failed to increase rx data: ", item, new_list[item], old_list[item])
|
||||||
|
|
||||||
if passes == expected_passes:
|
if passes == expected_passes:
|
||||||
return True
|
return True
|
||||||
else:
|
else:
|
||||||
return False
|
return False
|
||||||
else:
|
else:
|
||||||
|
print("Old-list length: %i new: %i does not match in compare-vals."%(len(old_list), len(new_list)))
|
||||||
|
print("old-list:",old_list)
|
||||||
|
print("new-list:",old_list)
|
||||||
return False
|
return False
|
||||||
|
|
||||||
def start(self, print_pass=False, print_fail=False):
|
def start(self, print_pass=False, print_fail=False):
|
||||||
@@ -120,7 +124,7 @@ class L3VariableTimeLongevity(LFCliBase):
|
|||||||
temp_stations_list.extend(station_profile.station_names.copy())
|
temp_stations_list.extend(station_profile.station_names.copy())
|
||||||
|
|
||||||
if self.local_realm.wait_for_ip(temp_stations_list, timeout_sec=120):
|
if self.local_realm.wait_for_ip(temp_stations_list, timeout_sec=120):
|
||||||
print("ip's aquired")
|
print("ip's acquired")
|
||||||
else:
|
else:
|
||||||
print("print failed to get IP's")
|
print("print failed to get IP's")
|
||||||
|
|
||||||
@@ -190,7 +194,7 @@ class L3VariableTimeLongevity(LFCliBase):
|
|||||||
|
|
||||||
index = 0
|
index = 0
|
||||||
for station_list in self.station_lists:
|
for station_list in self.station_lists:
|
||||||
station_profile.create(radio=self.radio_list[index], sta_names_=station_list, debug=True, sleep_time=0)
|
station_profile.create(radio=self.radio_list[index], sta_names_=station_list, debug=self.debug, sleep_time=0)
|
||||||
index += 1
|
index += 1
|
||||||
|
|
||||||
for etype in self.endp_types:
|
for etype in self.endp_types:
|
||||||
@@ -216,6 +220,7 @@ def main():
|
|||||||
lfjson_host = "localhost"
|
lfjson_host = "localhost"
|
||||||
lfjson_port = 8080
|
lfjson_port = 8080
|
||||||
endp_types = "lf_udp"
|
endp_types = "lf_udp"
|
||||||
|
debug_on = False
|
||||||
|
|
||||||
parser = argparse.ArgumentParser(
|
parser = argparse.ArgumentParser(
|
||||||
prog='test_l3_longevity.py',
|
prog='test_l3_longevity.py',
|
||||||
@@ -243,7 +248,7 @@ Basic Idea: create stations, create traffic between upstream port and stations,
|
|||||||
Stations start counting from zero, thus stations count from zero - number of las
|
Stations start counting from zero, thus stations count from zero - number of las
|
||||||
|
|
||||||
Generic command layout:
|
Generic command layout:
|
||||||
python .\\test_l3_longevity.py --test_duration <duration> --endp_type <traffic types> --upstream_port <port> --radio <radio 0> <stations> <ssid> <ssid password> <security type: wpa2, open, wpa3>
|
python .\\test_l3_longevity.py --test_duration <duration> --endp_type <traffic types> --upstream_port <port> --radio <radio 0> <stations> <ssid> <ssid password> <security type: wpa2, open, wpa3> --debug
|
||||||
|
|
||||||
Note: multiple --radio switches may be entered up to the number of radios available:
|
Note: multiple --radio switches may be entered up to the number of radios available:
|
||||||
--radio <radio 0> <stations> <ssid> <ssid password> --radio <radio 01> <number of last station> <ssid> <ssid password>
|
--radio <radio 0> <stations> <ssid> <ssid password> --radio <radio 01> <number of last station> <ssid> <ssid password>
|
||||||
@@ -278,6 +283,7 @@ Note: multiple --radio switches may be entered up to the number of radios avai
|
|||||||
|
|
||||||
parser.add_argument('--mgr', help='--mgr <hostname for where LANforge GUI is running>',default='localhost')
|
parser.add_argument('--mgr', help='--mgr <hostname for where LANforge GUI is running>',default='localhost')
|
||||||
parser.add_argument('-d','--test_duration', help='--test_duration <how long to run> example --time 5d (5 days) default: 3m options: number followed by d, h, m or s',default='3m')
|
parser.add_argument('-d','--test_duration', help='--test_duration <how long to run> example --time 5d (5 days) default: 3m options: number followed by d, h, m or s',default='3m')
|
||||||
|
parser.add_argument('--debug', help='--debug: Enable debugging',default=False)
|
||||||
parser.add_argument('-t', '--endp_type', help='--endp_type <types of traffic> example --endp_type \"lf_udp lf_tcp mc_udp\" Default: lf_udp , options: lf_udp, lf_udp6, lf_tcp, lf_tcp6, mc_udp, mc_udp6',
|
parser.add_argument('-t', '--endp_type', help='--endp_type <types of traffic> example --endp_type \"lf_udp lf_tcp mc_udp\" Default: lf_udp , options: lf_udp, lf_udp6, lf_tcp, lf_tcp6, mc_udp, mc_udp6',
|
||||||
default='lf_udp', type=valid_endp_types)
|
default='lf_udp', type=valid_endp_types)
|
||||||
parser.add_argument('-u', '--upstream_port', help='--upstream_port <cross connect upstream_port> example: --upstream_port eth1',default='eth1')
|
parser.add_argument('-u', '--upstream_port', help='--upstream_port <cross connect upstream_port> example: --upstream_port eth1',default='eth1')
|
||||||
@@ -287,6 +293,8 @@ Note: multiple --radio switches may be entered up to the number of radios avai
|
|||||||
help ='--radio <number_of_wiphy> <number of last station> <ssid> <ssid password> <security>', required=True)
|
help ='--radio <number_of_wiphy> <number of last station> <ssid> <ssid password> <security>', required=True)
|
||||||
args = parser.parse_args()
|
args = parser.parse_args()
|
||||||
|
|
||||||
|
debug_on = args.debug
|
||||||
|
|
||||||
if args.test_duration:
|
if args.test_duration:
|
||||||
test_duration = args.test_duration
|
test_duration = args.test_duration
|
||||||
|
|
||||||
@@ -356,7 +364,7 @@ Note: multiple --radio switches may be entered up to the number of radios avai
|
|||||||
ssid_list=ssid_list,
|
ssid_list=ssid_list,
|
||||||
ssid_password_list=ssid_password_list,
|
ssid_password_list=ssid_password_list,
|
||||||
ssid_security_list=ssid_security_list, test_duration=test_duration,
|
ssid_security_list=ssid_security_list, test_duration=test_duration,
|
||||||
side_a_min_rate=256000, side_b_min_rate=256000)
|
side_a_min_rate=256000, side_b_min_rate=256000, debug_on=debug_on)
|
||||||
|
|
||||||
# This cleanup does not work because objects in the profiles are not yet created.
|
# This cleanup does not work because objects in the profiles are not yet created.
|
||||||
# Not sure the best way to resolve this currently. --Ben
|
# Not sure the best way to resolve this currently. --Ben
|
||||||
|
|||||||
Reference in New Issue
Block a user