From 28dc464d05d62c22ec6b3dee01fafffcd0ab754d Mon Sep 17 00:00:00 2001 From: pmikus Date: Mon, 20 Feb 2023 10:26:38 +0000 Subject: [PATCH] feat(telemetry): Data compress Signed-off-by: pmikus Change-Id: I652844e722e24cb49f09a3f30aabe3103e271079 --- docs/model/current/schema/test_case.info.schema.yaml | 4 ++-- docs/model/current/top.rst | 2 +- resources/libraries/python/Constants.py | 2 +- resources/libraries/python/model/ExportJson.py | 7 +++++++ 4 files changed, 11 insertions(+), 4 deletions(-) diff --git a/docs/model/current/schema/test_case.info.schema.yaml b/docs/model/current/schema/test_case.info.schema.yaml index e97cd74955..5d33e0e149 100644 --- a/docs/model/current/schema/test_case.info.schema.yaml +++ b/docs/model/current/schema/test_case.info.schema.yaml @@ -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 diff --git a/docs/model/current/top.rst b/docs/model/current/top.rst index 3f09710ceb..721e6b2ff0 100644 --- a/docs/model/current/top.rst +++ b/docs/model/current/top.rst @@ -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, diff --git a/resources/libraries/python/Constants.py b/resources/libraries/python/Constants.py index 4cf6681324..01e3a0154a 100644 --- a/resources/libraries/python/Constants.py +++ b/resources/libraries/python/Constants.py @@ -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") diff --git a/resources/libraries/python/model/ExportJson.py b/resources/libraries/python/model/ExportJson.py index bd457c00f6..478b3abb60 100644 --- a/resources/libraries/python/model/ExportJson.py +++ b/resources/libraries/python/model/ExportJson.py @@ -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"] -- 2.16.6