Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
235 changes: 127 additions & 108 deletions modules/test/conn/python/src/connection_module.py
Original file line number Diff line number Diff line change
Expand Up @@ -397,66 +397,75 @@ def _connection_dhcp_disconnect(self):
result = None
description = ''
dev_iface = os.getenv('DEV_IFACE')
iface_status = self.host_client.check_interface_status(dev_iface)
if iface_status.code == 200:
LOGGER.info('Successfully resolved iface status')
if iface_status.status:
lease = self._dhcp_util.get_cur_lease(mac_address=self._device_mac,
timeout=self._lease_wait_time_sec)
if lease is not None:
LOGGER.info('Current device lease resolved')
if self._dhcp_util.is_lease_active(lease):

# Disable the device interface
iface_down = self.host_client.set_iface_down(dev_iface)
if iface_down:
LOGGER.info('Device interface set to down state')
try:
iface_status = self.host_client.check_interface_status(dev_iface)
if iface_status.code == 200:
LOGGER.info('Successfully resolved iface status')
if iface_status.status:
lease = self._dhcp_util.get_cur_lease(mac_address=self._device_mac,
timeout=self._lease_wait_time_sec)
if lease is not None:
LOGGER.info('Current device lease resolved')
if self._dhcp_util.is_lease_active(lease):

# Wait for the lease to expire
self._dhcp_util.wait_for_lease_expire(lease,
self._lease_wait_time_sec)
# Disable the device interface
iface_down = self.host_client.set_iface_down(dev_iface)
if iface_down:
LOGGER.info('Device interface set to down state')

# Wait an additonal 10 seconds to better test a true disconnect
# state
LOGGER.info('Waiting 10 seconds before bringing iface back up')
time.sleep(10)

# Enable the device interface
iface_up = self.host_client.set_iface_up(dev_iface)
if iface_up:
LOGGER.info('Device interface set to up state')

# Confirm device receives a new lease
if self._dhcp_util.get_cur_lease(
mac_address=self._device_mac,
timeout=self._lease_wait_time_sec):
if self._dhcp_util.is_lease_active(lease):
result = True
description = (
'Device received a DHCP lease after disconnect')
# Wait for the lease to expire
self._dhcp_util.wait_for_lease_expire(lease,
self._lease_wait_time_sec)

# Wait an additonal 10 seconds to better test a true disconnect
# state
LOGGER.info('Waiting 10 seconds before bringing iface back up')
time.sleep(10)

# Enable the device interface
iface_up = self.host_client.set_iface_up(dev_iface)
if iface_up:
LOGGER.info('Device interface set to up state')

# Confirm device receives a new lease
if self._dhcp_util.get_cur_lease(
mac_address=self._device_mac,
timeout=self._lease_wait_time_sec):
if self._dhcp_util.is_lease_active(lease):
result = True
description = (
'Device received a DHCP lease after disconnect')
else:
result = False
description = (
'Could not confirm DHCP lease active after disconnect')
else:
result = False
description = (
'Could not confirm DHCP lease active after disconnect')
else:
result = False
description = (
'Device did not recieve a DHCP lease after disconnect')
else:
result = 'Error'
description = 'Failed to set device interface to up state'
else:
result = 'Error'
description = 'Failed to set device interface to up state'
else:
result = 'Error'
description = 'Failed to set device interface to down state'
description = 'Failed to set device interface to down state'
else:
result = 'Error'
description = 'No active lease available for device'
else:
result = 'Error'
description = 'No active lease available for device'
description = 'Device interface is down'
else:
result = 'Error'
description = 'Device interface is down'
else:
description = 'Device interface could not be resolved'

except Exception:
LOGGER.error('Unable to connect to gRPC server')
result = 'Error'
description = 'Device interface could not be resolved'
description = (
'Unable to connect to gRPC server'
)
return result, description

def _connection_dhcp_disconnect_ip_change(self):
Expand All @@ -466,86 +475,96 @@ def _connection_dhcp_disconnect_ip_change(self):
reserved_lease = None
dev_iface = os.getenv('DEV_IFACE')
if self._dhcp_util.setup_single_dhcp_server():
iface_status = self.host_client.check_interface_status(dev_iface)
if iface_status.code == 200:
LOGGER.info('Successfully resolved iface status')
if iface_status.status:
lease = self._dhcp_util.get_cur_lease(
mac_address=self._device_mac, timeout=self._lease_wait_time_sec)
if lease is not None:
LOGGER.info('Current device lease resolved')
if self._dhcp_util.is_lease_active(lease):
try:
iface_status = self.host_client.check_interface_status(dev_iface)
if iface_status.code == 200:
LOGGER.info('Successfully resolved iface status')
if iface_status.status:
lease = self._dhcp_util.get_cur_lease(
mac_address=self._device_mac, timeout=self._lease_wait_time_sec)
if lease is not None:
LOGGER.info('Current device lease resolved')
if self._dhcp_util.is_lease_active(lease):

# Add a reserved lease with a different IP
ip_address = '10.10.10.30'
reserved_lease = self._dhcp_util.add_reserved_lease(
lease['hostname'], self._device_mac, ip_address)
# Add a reserved lease with a different IP
ip_address = '10.10.10.30'
reserved_lease = self._dhcp_util.add_reserved_lease(
lease['hostname'], self._device_mac, ip_address)

# Disable the device interface
iface_down = self.host_client.set_iface_down(dev_iface)
if iface_down:
LOGGER.info('Device interface set to down state')
# Disable the device interface
iface_down = self.host_client.set_iface_down(dev_iface)
if iface_down:
LOGGER.info('Device interface set to down state')

# Wait for the lease to expire
self._dhcp_util.wait_for_lease_expire(lease,
self._lease_wait_time_sec)
# Wait for the lease to expire
self._dhcp_util.wait_for_lease_expire(lease,
self._lease_wait_time_sec)

if reserved_lease:
# Wait an additonal 10 seconds to better test a true
# disconnect state
LOGGER.info(
'Waiting 10 seconds before bringing iface back up')
time.sleep(10)

# Enable the device interface
iface_up = self.host_client.set_iface_up(dev_iface)
if iface_up:
LOGGER.info('Device interface set to up state')
# Confirm device receives a new lease
reserved_lease_accepted = False
LOGGER.info('Checking device accepted new ip')
for _ in range(5):
LOGGER.info('Pinging device at IP: ' + ip_address)
if self._ping(ip_address):
LOGGER.debug('Ping success')
LOGGER.debug(
'Reserved lease confirmed active in device')
reserved_lease_accepted = True
break
if reserved_lease:
# Wait an additonal 10 seconds to better test a true
# disconnect state
LOGGER.info(
'Waiting 10 seconds before bringing iface back up')
time.sleep(10)

# Enable the device interface
iface_up = self.host_client.set_iface_up(dev_iface)
if iface_up:
LOGGER.info('Device interface set to up state')
# Confirm device receives a new lease
reserved_lease_accepted = False
LOGGER.info('Checking device accepted new ip')
for _ in range(5):
LOGGER.info('Pinging device at IP: ' + ip_address)
if self._ping(ip_address):
LOGGER.debug('Ping success')
LOGGER.debug(
'Reserved lease confirmed active in device')
reserved_lease_accepted = True
break
else:
LOGGER.info('Device did not respond to ping')
time.sleep(5) # Wait 5 seconds before trying again

if reserved_lease_accepted:
result = True
description = ('Device received expected IP address '
'after disconnect')
else:
LOGGER.info('Device did not respond to ping')
time.sleep(5) # Wait 5 seconds before trying again

if reserved_lease_accepted:
result = True
description = ('Device received expected IP address '
'after disconnect')
else:
result = False
description = (
result = False
description = (
'Could not confirm DHCP lease active after disconnect'
)
)
else:
result = 'Error'
description = 'Failed to set device interface to up state'
else:
result = 'Error'
description = 'Failed to set device interface to up state'
description = (
'Failed to set reserved address in DHCP server'
)
else:
result = 'Error'
description = 'Failed to set reserved address in DHCP server'
else:
result = 'Error'
description = 'Failed to set device interface to down state'
description = 'Failed to set device interface to down state'
else:
result = 'Error'
description = 'No active lease available for device'
else:
result = 'Error'
description = 'No active lease available for device'
description = 'Device interface is down'
else:
result = 'Error'
description = 'Device interface is down'
else:
description = 'Device interface could not be resolved'
except Exception:
LOGGER.error('Unable to connect to gRPC server')
result = 'Error'
description = 'Device interface could not be resolved'
description = (
'Unable to connect to gRPC server'
)
else:
result = 'Error'
description = 'Failed to configure network for test'

if reserved_lease:
self._dhcp_util.delete_reserved_lease(self._device_mac)

Expand Down