stats: python: handle when pattern is not list in ls 17/31817/3
authorOle Troan <ot@cisco.com>
Mon, 29 Mar 2021 19:12:53 +0000 (21:12 +0200)
committerDave Wallace <dwallacelf@gmail.com>
Tue, 30 Mar 2021 14:27:53 +0000 (14:27 +0000)
The reimplementation of python stats module mishandled the case
where pattern to ls was not a list.

Type: fix
Signed-off-by: Ole Troan <ot@cisco.com>
Change-Id: I9ba189423a76f2fd4298c4c4b19a0875f705d719

src/vpp-api/python/vpp_papi/vpp_stats.py

index 30bf930..18f13e9 100755 (executable)
@@ -247,6 +247,8 @@ class VPPStats():
         # pylint: disable=invalid-name
         if not self.connected:
             self.connect()
+        if not isinstance(patterns, list):
+            patterns = [patterns]
         regex = [re.compile(i) for i in patterns]
         return [k for k, v in self.directory.items()
                 if any(re.match(pattern, k) for pattern in regex)]
@@ -499,6 +501,13 @@ class TestStats(unittest.TestCase):
         data = self.stat.dump(directory)
         print(data)
 
+    def test_sys_nodes(self):
+        '''Test /sys/nodes'''
+        counters = self.stat.ls('^/sys/node')
+        print('COUNTERS:', counters)
+        print('/sys/node', self.stat.dump(counters))
+        print('/net/route/to', self.stat['/net/route/to'])
+
 if __name__ == '__main__':
     import cProfile
     from pstats import Stats