feat(telemetry): Data compress 01/38301/3
authorpmikus <peter.mikus@protonmail.ch>
Mon, 20 Feb 2023 10:26:38 +0000 (10:26 +0000)
committerpmikus <peter.mikus@protonmail.ch>
Mon, 20 Feb 2023 10:40:40 +0000 (10:40 +0000)
Signed-off-by: pmikus <peter.mikus@protonmail.ch>
Change-Id: I652844e722e24cb49f09a3f30aabe3103e271079

docs/model/current/schema/test_case.info.schema.yaml
docs/model/current/top.rst
resources/libraries/python/Constants.py
resources/libraries/python/model/ExportJson.py

index e97cd74..5d33e0e 100644 (file)
@@ -13,7 +13,7 @@
 
 ---
 
-$id: https://fd.io/FIXME/CSIT/UTI/test_case/info/1.3.0
+$id: https://fd.io/FIXME/CSIT/UTI/test_case/info/1.4.0
 $schema: https://json-schema.org/draft/2020-12/schema
 description: >-
     Schema for output of test case.
@@ -364,7 +364,7 @@ allOf:
                 CSIT model version (semver format)
                 the exporting code adhered to.
             type: string
-            const: 1.3.0
+            const: 1.4.0
     required:
     -   duration
     -   dut_type
index 3f09710..721e6b2 100644 (file)
@@ -22,7 +22,7 @@ especially the export side (UTI), not import side (PAL).
 Version
 ~~~~~~~
 
-This document is valid for CSIT model version 1.3.0.
+This document is valid for CSIT model version 1.4.0.
 
 It is recommended to use semantic versioning: https://semver.org/
 That means, if the new model misses a field present in the old model,
index 4cf6681..01e3a01 100644 (file)
@@ -120,7 +120,7 @@ class Constants:
     """Constants used in CSIT."""
 
     # Version for CSIT data model. See docs/model/.
-    MODEL_VERSION = u"1.3.0"
+    MODEL_VERSION = u"1.4.0"
 
     # Global off-switch in case JSON export is large or slow.
     EXPORT_JSON = get_optimistic_bool_from_env(u"EXPORT_JSON")
index bd457c0..478b3ab 100644 (file)
@@ -23,9 +23,11 @@ as serialization might have introduced subtle errors.
 import datetime
 import os.path
 
+from binascii import b2a_base64
 from dateutil.parser import parse
 from robot.api import logger
 from robot.libraries.BuiltIn import BuiltIn
+from zlib import compress
 
 from resources.libraries.python.Constants import Constants
 from resources.libraries.python.jumpavg.AvgStdevStats import AvgStdevStats
@@ -357,6 +359,11 @@ class ExportJson():
         Results are used to avoid future post processing, making it more
         efficient to consume.
         """
+        if self.data["telemetry"]:
+            telemetry_encode = "\n".join(self.data["telemetry"]).encode()
+            telemetry_compress = compress(telemetry_encode, level=9)
+            telemetry_base64 = b2a_base64(telemetry_compress, newline=False)
+            self.data["telemetry"] = [telemetry_base64.decode()]
         if u"result" not in self.data:
             return
         result_node = self.data[u"result"]