blob: 5b3c74bd12ba8a79971d2e6ec3db1f8cf444a7e0 [file] [log] [blame]
Basil Eljuse4b14afb2020-09-30 13:07:23 +01001#!/usr/bin/env python3
2
3__copyright__ = """
4/*
5 * Copyright (c) 2020, Arm Limited. All rights reserved.
6 *
7 * SPDX-License-Identifier: BSD-3-Clause
8 *
9 */
10 """
11
12""" data_converter.py:
13
14 Data converter class. This class is aimed at converting the received
15 data in the format which InfluxDB understands.
16
17"""
18
19import json
20import constants
21
22
23class DataConverter:
24
25 @staticmethod
26 def convert_tfm_imagesize_data(data):
27 # Transform keys names
28 data['metadata']['DataProducer'] = data['metadata'].pop(
29 'data_producer')
30
31 data['metadata']['git_info']['CommitTitle'] = data['metadata']['git_info'].pop(
32 'commit_title')
33 data['metadata']['git_info']['CommitID'] = data['metadata']['git_info'].pop(
34 'commit_id')
35 data['metadata']['git_info']['GerritID'] = data['metadata']['git_info'].pop(
36 'gerrit_id')
37 data['metadata']['git_info']['CommitURL'] = data['metadata']['git_info'].pop(
38 'commit_url')
39 data['metadata']['git_info']['Branch'] = data['metadata']['git_info'].pop(
40 'branch')
41
42 data['metadata']['build_info']['BuildType'] = data['metadata']['build_info'].pop(
43 'build_type')
44 data['metadata']['build_info']['CmakeConfig'] = data['metadata']['build_info'].pop(
45 'cmake_config')
46 data['metadata']['build_info']['Compiler'] = data['metadata']['build_info'].pop(
47 'compiler')
48 data['metadata']['build_info']['Target'] = data['metadata']['build_info'].pop(
49 'target')
50
51 ret = {}
52 ret['tags'] = {}
53 ret['fields'] = {}
54
55 ret['measurement'] = 'TFM_ImageSize_Statistics'
56
57 for file_info in data['data']:
58 ret['fields'][file_info['file'].rsplit(
59 '.', 1)[0] + '_b'] = file_info['bss']
60 ret['fields'][file_info['file'].rsplit(
61 '.', 1)[0] + '_d'] = file_info['data']
62 ret['fields'][file_info['file'].rsplit(
63 '.', 1)[0] + '_t'] = file_info['text']
64
65 ret['tags']['DataProducer'] = str(data['metadata']['DataProducer'])
66
67 ret['time'] = str(data['metadata']['git_info']['commit_time'])
68
69 for key in data['metadata']['git_info']:
70 if key == 'commit_time':
71 continue
72 ret['tags'][key] = str(data['metadata']['git_info'][key])
73
74 for key in data['metadata']['build_info']:
75 ret['tags'][key] = str(data['metadata']['build_info'][key])
76
77 print(ret)
78
79 return [ret]
80
81 @staticmethod
82 def convert_data(data):
83 """
84 Convert data to a dictionary containing measurement
85 name, fields and tags. It is required by InfluxDB.
86
87 :param data: data to be converted to InfluxDB format
88 """
89
90 if data['metadata']['metrics'] == 'tfm_imagesize':
91 ret = DataConverter.convert_tfm_imagesize_data(data)
92 else:
93 ret = data['data']
94
95 return ret