feat(crc): print warnings in crc checker script 30/39230/4
authorVratko Polak <vrpolak@cisco.com>
Mon, 17 Jul 2023 10:47:30 +0000 (12:47 +0200)
committerVratko Polak <vrpolak@cisco.com>
Mon, 17 Jul 2023 10:47:30 +0000 (12:47 +0200)
Robot already prints warnings when running tests,
but not many people are looking at robot console output.

This makes the warnings visible also in VPP API CRC job console log.

Change-Id: I9044a2970f46e132ec80ae0faa2e0adacc889447
Signed-off-by: Vratko Polak <vrpolak@cisco.com>
resources/libraries/python/VppApiCrc.py
resources/tools/integrated/check_crc.py

index 0cb8c2b..761059f 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (c) 2021 Cisco and/or its affiliates.
+# Copyright (c) 2023 Cisco and/or its affiliates.
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
 # You may obtain a copy of the License at:
@@ -380,3 +380,18 @@ class VppApiCrcChecker:
         if options:
             self._reported[api_name] = crc
             logger.console(f"{api_name} used but has options {options}")
+
+    def print_warnings(self):
+        """Call check_api_name for every API name in surviving collections.
+
+        Useful for VPP CRC checking job.
+
+        Even though there usually is only one surviving collection,
+        the implementation has to be prepared for multiple collections,
+        and it should de-duplicate api names.
+        """
+        api_name_to_crc_maps = self._expected.values()
+        api_name_sets = [set(n2c.keys()) for n2c in api_name_to_crc_maps]
+        api_names = set().union(*api_name_sets)
+        for api_name in sorted(api_names):
+            self.check_api_name(api_name)
index 6baa7a1..01a557c 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (c) 2021 Cisco and/or its affiliates.
+# Copyright (c) 2023 Cisco and/or its affiliates.
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
 # You may obtain a copy of the License at:
@@ -47,6 +47,7 @@ def main():
     checker = VppApiCrcChecker(api_dir)
     try:
         checker.report_initial_conflicts(report_missing=True)
+        checker.print_warnings()
     except RuntimeError as err:
         stderr_lines = [
             f"{err!r}",