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)
|
||||
self.dbg(available=len(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,
|
||||
self.count(kind) + 1,
|
||||
(' matching %r' % specifics) if specifics else '')
|
||||
)
|
||||
pick = available[0]
|
||||
|
@ -496,5 +497,13 @@ class ReservedResources(log.Origin):
|
|||
self.resources_pool.free(self.origin, self.reserved)
|
||||
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
|
||||
|
|
|
@ -22,6 +22,7 @@ import sys
|
|||
import time
|
||||
import copy
|
||||
import traceback
|
||||
import pprint
|
||||
from . import config, log, template, util, resource, schema, ofono_client, osmo_nitb, event_loop
|
||||
from . import test
|
||||
|
||||
|
@ -130,7 +131,8 @@ class Test(log.Origin):
|
|||
ftype = type(e).__name__
|
||||
fmsg = repr(e) + '\n' + traceback.format_exc().rstrip()
|
||||
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)
|
||||
|
||||
finally:
|
||||
|
@ -314,6 +316,13 @@ class SuiteRun(log.Origin):
|
|||
self.log('prompt entered:', repr(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 = {}
|
||||
|
||||
def load(suite_name):
|
||||
|
|
Loading…
Reference in New Issue