Initial commit.
- qa-tools public release which includes:
- trace-based coverage tool
- quality metrics measurement and tracking setup
- associated in-source documentation.
Signed-off-by: Basil Eljuse <basil.eljuse@arm.com>
diff --git a/quality-metrics/broker-component/data_converter.py b/quality-metrics/broker-component/data_converter.py
new file mode 100644
index 0000000..5b3c74b
--- /dev/null
+++ b/quality-metrics/broker-component/data_converter.py
@@ -0,0 +1,95 @@
+#!/usr/bin/env python3
+
+__copyright__ = """
+/*
+ * Copyright (c) 2020, Arm Limited. All rights reserved.
+ *
+ * SPDX-License-Identifier: BSD-3-Clause
+ *
+ */
+ """
+
+""" data_converter.py:
+
+ Data converter class. This class is aimed at converting the received
+ data in the format which InfluxDB understands.
+
+"""
+
+import json
+import constants
+
+
+class DataConverter:
+
+ @staticmethod
+ def convert_tfm_imagesize_data(data):
+ # Transform keys names
+ data['metadata']['DataProducer'] = data['metadata'].pop(
+ 'data_producer')
+
+ data['metadata']['git_info']['CommitTitle'] = data['metadata']['git_info'].pop(
+ 'commit_title')
+ data['metadata']['git_info']['CommitID'] = data['metadata']['git_info'].pop(
+ 'commit_id')
+ data['metadata']['git_info']['GerritID'] = data['metadata']['git_info'].pop(
+ 'gerrit_id')
+ data['metadata']['git_info']['CommitURL'] = data['metadata']['git_info'].pop(
+ 'commit_url')
+ data['metadata']['git_info']['Branch'] = data['metadata']['git_info'].pop(
+ 'branch')
+
+ data['metadata']['build_info']['BuildType'] = data['metadata']['build_info'].pop(
+ 'build_type')
+ data['metadata']['build_info']['CmakeConfig'] = data['metadata']['build_info'].pop(
+ 'cmake_config')
+ data['metadata']['build_info']['Compiler'] = data['metadata']['build_info'].pop(
+ 'compiler')
+ data['metadata']['build_info']['Target'] = data['metadata']['build_info'].pop(
+ 'target')
+
+ ret = {}
+ ret['tags'] = {}
+ ret['fields'] = {}
+
+ ret['measurement'] = 'TFM_ImageSize_Statistics'
+
+ for file_info in data['data']:
+ ret['fields'][file_info['file'].rsplit(
+ '.', 1)[0] + '_b'] = file_info['bss']
+ ret['fields'][file_info['file'].rsplit(
+ '.', 1)[0] + '_d'] = file_info['data']
+ ret['fields'][file_info['file'].rsplit(
+ '.', 1)[0] + '_t'] = file_info['text']
+
+ ret['tags']['DataProducer'] = str(data['metadata']['DataProducer'])
+
+ ret['time'] = str(data['metadata']['git_info']['commit_time'])
+
+ for key in data['metadata']['git_info']:
+ if key == 'commit_time':
+ continue
+ ret['tags'][key] = str(data['metadata']['git_info'][key])
+
+ for key in data['metadata']['build_info']:
+ ret['tags'][key] = str(data['metadata']['build_info'][key])
+
+ print(ret)
+
+ return [ret]
+
+ @staticmethod
+ def convert_data(data):
+ """
+ Convert data to a dictionary containing measurement
+ name, fields and tags. It is required by InfluxDB.
+
+ :param data: data to be converted to InfluxDB format
+ """
+
+ if data['metadata']['metrics'] == 'tfm_imagesize':
+ ret = DataConverter.convert_tfm_imagesize_data(data)
+ else:
+ ret = data['data']
+
+ return ret