resource error logging that is easier to understand
Log what a suite requested, what it has reserved and the complete resource state. Change-Id: Ic6887bbe5fe74a73f0e344cd4078dd7ed989cc15
This commit is contained in:
parent
927344b4dc
commit
2d1d561eeb
|
@ -463,8 +463,9 @@ class ReservedResources(log.Origin):
|
||||||
available = available_dict.get(kind)
|
available = available_dict.get(kind)
|
||||||
self.dbg(available=len(available))
|
self.dbg(available=len(available))
|
||||||
if not available:
|
if not available:
|
||||||
raise NoResourceExn('No unused resource found: %r%s' %
|
raise NoResourceExn('When trying to reserve %r nr %d: No unused resource found%s' %
|
||||||
(kind,
|
(kind,
|
||||||
|
self.count(kind) + 1,
|
||||||
(' matching %r' % specifics) if specifics else '')
|
(' matching %r' % specifics) if specifics else '')
|
||||||
)
|
)
|
||||||
pick = available[0]
|
pick = available[0]
|
||||||
|
@ -496,5 +497,13 @@ class ReservedResources(log.Origin):
|
||||||
self.resources_pool.free(self.origin, self.reserved)
|
self.resources_pool.free(self.origin, self.reserved)
|
||||||
self.reserved = None
|
self.reserved = None
|
||||||
|
|
||||||
|
def counts(self):
|
||||||
|
counts = {}
|
||||||
|
for key in self.reserved.keys():
|
||||||
|
counts[key] = self.count(key)
|
||||||
|
return counts
|
||||||
|
|
||||||
|
def count(self, key):
|
||||||
|
return len(self.reserved.get(key) or [])
|
||||||
|
|
||||||
# vim: expandtab tabstop=4 shiftwidth=4
|
# vim: expandtab tabstop=4 shiftwidth=4
|
||||||
|
|
|
@ -22,6 +22,7 @@ import sys
|
||||||
import time
|
import time
|
||||||
import copy
|
import copy
|
||||||
import traceback
|
import traceback
|
||||||
|
import pprint
|
||||||
from . import config, log, template, util, resource, schema, ofono_client, osmo_nitb, event_loop
|
from . import config, log, template, util, resource, schema, ofono_client, osmo_nitb, event_loop
|
||||||
from . import test
|
from . import test
|
||||||
|
|
||||||
|
@ -130,7 +131,8 @@ class Test(log.Origin):
|
||||||
ftype = type(e).__name__
|
ftype = type(e).__name__
|
||||||
fmsg = repr(e) + '\n' + traceback.format_exc().rstrip()
|
fmsg = repr(e) + '\n' + traceback.format_exc().rstrip()
|
||||||
if isinstance(e, resource.NoResourceExn):
|
if isinstance(e, resource.NoResourceExn):
|
||||||
fmsg += '\n' + 'Current resource state:\n' + repr(suite_run.reserved_resources)
|
fmsg += suite_run.resource_status_str()
|
||||||
|
|
||||||
self.set_fail(ftype, fmsg, False)
|
self.set_fail(ftype, fmsg, False)
|
||||||
|
|
||||||
finally:
|
finally:
|
||||||
|
@ -314,6 +316,13 @@ class SuiteRun(log.Origin):
|
||||||
self.log('prompt entered:', repr(entered))
|
self.log('prompt entered:', repr(entered))
|
||||||
return entered
|
return entered
|
||||||
|
|
||||||
|
def resource_status_str(self):
|
||||||
|
return '\n'.join(('',
|
||||||
|
'SUITE RUN: %s' % self.origin_id(),
|
||||||
|
'ASKED FOR:', pprint.pformat(self._resource_requirements),
|
||||||
|
'RESERVED COUNT:', pprint.pformat(self.reserved_resources.counts()),
|
||||||
|
'RESOURCES STATE:', repr(self.reserved_resources)))
|
||||||
|
|
||||||
loaded_suite_definitions = {}
|
loaded_suite_definitions = {}
|
||||||
|
|
||||||
def load(suite_name):
|
def load(suite_name):
|
||||||
|
|
Loading…
Reference in New Issue