fix: free resources when a suite run is done
Add missing code to free resources, not upon program exit, but when a suite is done. This allows running more than one suite in a row. Also add a check to not attempt to free if there is nothing to be freed, to avoid a regression test failure triggered when a suite exits without reserving anything. Change-Id: Ic017a1cf07052f5e48812c8553fba6f972d280f0 Related: OS#2301
This commit is contained in:
parent
2a1a1fa8f9
commit
ed4e528693
|
@ -494,7 +494,8 @@ class ReservedResources(log.Origin):
|
||||||
my_item.pop(USED_KEY)
|
my_item.pop(USED_KEY)
|
||||||
|
|
||||||
def free(self):
|
def free(self):
|
||||||
self.resources_pool.free(self.origin, self.reserved)
|
if self.reserved:
|
||||||
|
self.resources_pool.free(self.origin, self.reserved)
|
||||||
self.reserved = None
|
self.reserved = None
|
||||||
|
|
||||||
def counts(self):
|
def counts(self):
|
||||||
|
|
|
@ -248,6 +248,7 @@ class SuiteRun(log.Origin):
|
||||||
# base exception is raised. Make sure to stop processes in this
|
# base exception is raised. Make sure to stop processes in this
|
||||||
# finally section. Resources are automatically freed with 'atexit'.
|
# finally section. Resources are automatically freed with 'atexit'.
|
||||||
self.stop_processes()
|
self.stop_processes()
|
||||||
|
self.free_resources()
|
||||||
event_loop.unregister_poll_func(self.poll)
|
event_loop.unregister_poll_func(self.poll)
|
||||||
self.duration = time.time() - self.start_timestamp
|
self.duration = time.time() - self.start_timestamp
|
||||||
if self.test_failed_ctr:
|
if self.test_failed_ctr:
|
||||||
|
@ -268,6 +269,11 @@ class SuiteRun(log.Origin):
|
||||||
for process in self._processes:
|
for process in self._processes:
|
||||||
process.terminate()
|
process.terminate()
|
||||||
|
|
||||||
|
def free_resources(self):
|
||||||
|
if self.reserved_resources is None:
|
||||||
|
return
|
||||||
|
self.reserved_resources.free()
|
||||||
|
|
||||||
def ip_address(self):
|
def ip_address(self):
|
||||||
return self.reserved_resources.get(resource.R_IP_ADDRESS)
|
return self.reserved_resources.get(resource.R_IP_ADDRESS)
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue