[MERGED] osmo-gsm-tester[master]: resource error logging that is easier to understand

This is merely a historical archive of years 2008-2021, before the migration to mailman3.

A maintained and still updated list archive can be found at https://lists.osmocom.org/hyperkitty/list/gerrit-log@lists.osmocom.org/.

Neels Hofmeyr gerrit-no-reply at lists.osmocom.org
Sun May 28 22:24:37 UTC 2017


Neels Hofmeyr has submitted this change and it was merged.

Change subject: resource error logging that is easier to understand
......................................................................


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
---
M src/osmo_gsm_tester/resource.py
M src/osmo_gsm_tester/suite.py
2 files changed, 20 insertions(+), 2 deletions(-)

Approvals:
  Neels Hofmeyr: Looks good to me, approved
  Jenkins Builder: Verified



diff --git a/src/osmo_gsm_tester/resource.py b/src/osmo_gsm_tester/resource.py
index e660066..ebc9457 100644
--- a/src/osmo_gsm_tester/resource.py
+++ b/src/osmo_gsm_tester/resource.py
@@ -463,8 +463,9 @@
         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 @@
         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
diff --git a/src/osmo_gsm_tester/suite.py b/src/osmo_gsm_tester/suite.py
index d55ee92..5d03b95 100644
--- a/src/osmo_gsm_tester/suite.py
+++ b/src/osmo_gsm_tester/suite.py
@@ -22,6 +22,7 @@
 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 @@
                 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 @@
         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):

-- 
To view, visit https://gerrit.osmocom.org/2705
To unsubscribe, visit https://gerrit.osmocom.org/settings

Gerrit-MessageType: merged
Gerrit-Change-Id: Ic6887bbe5fe74a73f0e344cd4078dd7ed989cc15
Gerrit-PatchSet: 3
Gerrit-Project: osmo-gsm-tester
Gerrit-Branch: master
Gerrit-Owner: Neels Hofmeyr <nhofmeyr at sysmocom.de>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: Neels Hofmeyr <nhofmeyr at sysmocom.de>
Gerrit-Reviewer: Pau Espin Pedrol <pespin at sysmocom.de>



More information about the gerrit-log mailing list