diff options
Diffstat (limited to 'yardstick/tests/functional/benchmark/core')
-rw-r--r-- | yardstick/tests/functional/benchmark/core/__init__.py | 0 | ||||
-rw-r--r-- | yardstick/tests/functional/benchmark/core/test_report.py | 314 |
2 files changed, 314 insertions, 0 deletions
diff --git a/yardstick/tests/functional/benchmark/core/__init__.py b/yardstick/tests/functional/benchmark/core/__init__.py new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/yardstick/tests/functional/benchmark/core/__init__.py diff --git a/yardstick/tests/functional/benchmark/core/test_report.py b/yardstick/tests/functional/benchmark/core/test_report.py new file mode 100644 index 000000000..832d3b3e1 --- /dev/null +++ b/yardstick/tests/functional/benchmark/core/test_report.py @@ -0,0 +1,314 @@ +############################################################################## +# Copyright (c) 2018-2019 Intel Corporation. +# +# All rights reserved. This program and the accompanying materials +# are made available under the terms of the Apache License, Version 2.0 +# which accompanies this distribution, and is available at +# http://www.apache.org/licenses/LICENSE-2.0 +############################################################################## + +import ast +import tempfile +import unittest + +import mock +from six.moves import configparser + +from yardstick.benchmark import core +from yardstick.benchmark.core import report +from yardstick.cmd.commands import change_osloobj_to_paras + + +GOOD_YAML_NAME = 'fake_name' +GOOD_TASK_ID = "9cbe74b6-df09-4535-8bdc-dc3a43b8a4e2" +GOOD_DB_FIELDKEYS = [ + {u'fieldKey': u'metric1', u'fieldType': u'integer'}, + {u'fieldKey': u'metric4', u'fieldType': u'integer'}, + {u'fieldKey': u'metric2', u'fieldType': u'integer'}, + {u'fieldKey': u'metric3', u'fieldType': u'integer'}, +] +GOOD_DB_METRICS = [ + {u'time': u'2018-08-20T16:49:26.372662016Z', + u'metric1': 1, u'metric2': 0, u'metric3': 8, u'metric4': 5}, + {u'time': u'2018-08-20T16:49:27.374208000Z', + u'metric1': 1, u'metric2': 1, u'metric3': 5, u'metric4': 4}, + {u'time': u'2018-08-20T16:49:28.375742976Z', + u'metric1': 2, u'metric2': 2, u'metric3': 3, u'metric4': 3}, + {u'time': u'2018-08-20T16:49:29.377299968Z', + u'metric1': 3, u'metric2': 3, u'metric3': 2, u'metric4': 2}, + {u'time': u'2018-08-20T16:49:30.378252032Z', + u'metric1': 5, u'metric2': 4, u'metric3': 1, u'metric4': 1}, + {u'time': u'2018-08-20T16:49:30.379359421Z', + u'metric1': 8, u'metric2': 5, u'metric3': 1, u'metric4': 0}, +] +GOOD_DB_BARO_METRICS = [ + {u'value': 324050, u'instance': u'0', u'host': u'myhostname', + u'time': u'2018-08-20T16:49:27.383698038Z', + u'type_instance': u'user', u'type': u'cpu'}, + { + u'value': 193798, u'instance': u'0', u'host': u'myhostname', + u'time': u'2018-12-19T16:49:27.383712594Z', + u'type_instance': u'system', u'type': u'cpu'}, + { + u'value': 324051, u'instance': u'0', u'host': u'myhostname', + u'time': u'2018-08-20T16:49:28.383696624Z', + u'type_instance': u'user', u'type': u'cpu'}, + { + u'value': 193800, u'instance': u'0', u'host': u'myhostname', + u'time': u'2018-08-20T16:49:28.383713481Z', + u'type_instance': u'system', u'type': u'cpu'}, + { + u'value': 324054, u'instance': u'0', u'host': u'myhostname', + u'time': u'2018-08-20T16:49:29.3836966789Z', + u'type_instance': u'user', u'type': u'cpu'}, + { + u'value': 193801, u'instance': u'0', u'host': u'myhostname', + u'time': u'2018-08-20T16:49:29.383716296Z', + u'type_instance': u'system', u'type': u'cpu'} +] +TIMESTAMP_START = '2018-08-20T16:49:26.372662016Z' +TIMESTAMP_END = '2018-08-20T16:49:30.379359421Z' + +yardstick_config = """ +[DEFAULT] +dispatcher = influxdb +""" + + +def my_query(query_sql, db=None): + get_fieldkeys_cmd = 'show field keys' + get_metrics_cmd = 'select * from' + get_start_time_cmd = 'ORDER ASC limit 1' + get_end_time_cmd = 'ORDER DESC limit 1' + if db: + if get_start_time_cmd in query_sql: + return TIMESTAMP_START + elif get_end_time_cmd in query_sql: + return TIMESTAMP_END + else: + return GOOD_DB_BARO_METRICS + elif get_fieldkeys_cmd in query_sql: + return GOOD_DB_FIELDKEYS + elif get_metrics_cmd in query_sql: + return GOOD_DB_METRICS + return [] + + +class ReportTestCase(unittest.TestCase): + + @mock.patch.object(report.influx, 'query', new=my_query) + @mock.patch.object(configparser.ConfigParser, + 'read', side_effect=mock.mock_open(read_data=yardstick_config)) + def test_report_generate_nsb_simple(self, *args): + tmpfile = tempfile.NamedTemporaryFile(delete=True) + + args = core.Param({"task_id": [GOOD_TASK_ID], "yaml_name": [GOOD_YAML_NAME]}) + params = change_osloobj_to_paras(args) + + with mock.patch.object(report.consts, 'DEFAULT_HTML_FILE', tmpfile.name): + report.Report().generate_nsb(params) + + data_act = None + time_act = None + keys_act = None + tree_act = None + with open(tmpfile.name) as f: + for l in f.readlines(): + if "var report_data = {" in l: + data_act = ast.literal_eval(l.strip()[18:-1]) + elif "var report_time = [" in l: + time_act = ast.literal_eval(l.strip()[18:-1]) + elif "var report_keys = [" in l: + keys_act = ast.literal_eval(l.strip()[18:-1]) + elif "var report_tree = [" in l: + tree_act = ast.literal_eval(l.strip()[18:-1]) + data_exp = { + 'metric1': [ + {'x': '16:49:26.372662', 'y': 1}, + {'x': '16:49:27.374208', 'y': 1}, + {'x': '16:49:28.375742', 'y': 2}, + {'x': '16:49:29.377299', 'y': 3}, + {'x': '16:49:30.378252', 'y': 5}, + {'x': '16:49:30.379359', 'y': 8}], + 'metric2': [ + {'x': '16:49:26.372662', 'y': 0}, + {'x': '16:49:27.374208', 'y': 1}, + {'x': '16:49:28.375742', 'y': 2}, + {'x': '16:49:29.377299', 'y': 3}, + {'x': '16:49:30.378252', 'y': 4}, + {'x': '16:49:30.379359', 'y': 5}], + 'metric3': [ + {'x': '16:49:26.372662', 'y': 8}, + {'x': '16:49:27.374208', 'y': 5}, + {'x': '16:49:28.375742', 'y': 3}, + {'x': '16:49:29.377299', 'y': 2}, + {'x': '16:49:30.378252', 'y': 1}, + {'x': '16:49:30.379359', 'y': 1}], + 'metric4': [ + {'x': '16:49:26.372662', 'y': 5}, + {'x': '16:49:27.374208', 'y': 4}, + {'x': '16:49:28.375742', 'y': 3}, + {'x': '16:49:29.377299', 'y': 2}, + {'x': '16:49:30.378252', 'y': 1}, + {'x': '16:49:30.379359', 'y': 0}], + 'myhostname.cpu_value.cpu.system.0': [ + {'x': '16:49:27.3837', 'y': 193798}, + {'x': '16:49:28.3837', 'y': 193800}, + {'x': '16:49:29.3837', 'y': 193801}], + 'myhostname.cpu_value.cpu.user.0': [ + {'x': '16:49:27.3836', 'y': 324050}, + {'x': '16:49:28.3836', 'y': 324051}, + {'x': '16:49:29.3836', 'y': 324054}], + 'myhostname.cpufreq_value.cpu.system.0': [ + {'x': '16:49:27.3837', 'y': 193798}, + {'x': '16:49:28.3837', 'y': 193800}, + {'x': '16:49:29.3837', 'y': 193801}], + 'myhostname.cpufreq_value.cpu.user.0': [ + {'x': '16:49:27.3836', 'y': 324050}, + {'x': '16:49:28.3836', 'y': 324051}, + {'x': '16:49:29.3836', 'y': 324054}], + 'myhostname.intel_pmu_value.cpu.system.0': [ + {'x': '16:49:27.3837', 'y': 193798}, + {'x': '16:49:28.3837', 'y': 193800}, + {'x': '16:49:29.3837', 'y': 193801}], + 'myhostname.intel_pmu_value.cpu.user.0': [ + {'x': '16:49:27.3836', 'y': 324050}, + {'x': '16:49:28.3836', 'y': 324051}, + {'x': '16:49:29.3836', 'y': 324054}], + 'myhostname.virt_value.cpu.system.0': [ + {'x': '16:49:27.3837', 'y': 193798}, + {'x': '16:49:28.3837', 'y': 193800}, + {'x': '16:49:29.3837', 'y': 193801}], + 'myhostname.virt_value.cpu.user.0': [ + {'x': '16:49:27.3836', 'y': 324050}, + {'x': '16:49:28.3836', 'y': 324051}, + {'x': '16:49:29.3836', 'y': 324054}], + 'myhostname.memory_value.cpu.system.0': [ + {'x': '16:49:27.3837', 'y': 193798}, + {'x': '16:49:28.3837', 'y': 193800}, + {'x': '16:49:29.3837', 'y': 193801}], + 'myhostname.memory_value.cpu.user.0': [ + {'x': '16:49:27.3836', 'y': 324050}, + {'x': '16:49:28.3836', 'y': 324051}, + {'x': '16:49:29.3836', 'y': 324054}] + } + time_exp = [ + '16:49:26.372662', '16:49:27.374208', '16:49:27.3836', + '16:49:27.3837', '16:49:28.375742', '16:49:28.3836', + '16:49:28.3837', '16:49:29.377299', '16:49:29.3836', + '16:49:29.3837', '16:49:30.378252', '16:49:30.379359', + ] + keys_exp = sorted([ + 'metric1', 'metric2', 'metric3', 'metric4', + 'myhostname.cpu_value.cpu.system.0', + 'myhostname.cpu_value.cpu.user.0', + 'myhostname.cpufreq_value.cpu.system.0', + 'myhostname.cpufreq_value.cpu.user.0', + 'myhostname.intel_pmu_value.cpu.system.0', + 'myhostname.intel_pmu_value.cpu.user.0', + 'myhostname.virt_value.cpu.system.0', + 'myhostname.virt_value.cpu.user.0', + 'myhostname.memory_value.cpu.system.0', + 'myhostname.memory_value.cpu.user.0', + ]) + tree_exp = [ + {'parent': '#', 'text': 'metric1', 'id': 'metric1'}, + {'parent': '#', 'text': 'metric2', 'id': 'metric2'}, + {'parent': '#', 'text': 'metric3', 'id': 'metric3'}, + {'parent': '#', 'text': 'metric4', 'id': 'metric4'}, + {'id': 'myhostname', 'parent': '#', 'text': 'myhostname'}, + {'id': 'myhostname.cpu_value', + 'parent': 'myhostname', + 'text': 'cpu_value'}, + {'id': 'myhostname.cpu_value.cpu', + 'parent': 'myhostname.cpu_value', + 'text': 'cpu'}, + {'id': 'myhostname.cpu_value.cpu.system', + 'parent': 'myhostname.cpu_value.cpu', + 'text': 'system'}, + {'id': 'myhostname.cpu_value.cpu.system.0', + 'parent': 'myhostname.cpu_value.cpu.system', + 'text': '0'}, + {'id': 'myhostname.cpu_value.cpu.user', + 'parent': 'myhostname.cpu_value.cpu', + 'text': 'user'}, + {'id': 'myhostname.cpu_value.cpu.user.0', + 'parent': 'myhostname.cpu_value.cpu.user', + 'text': '0'}, + {'id': 'myhostname.cpufreq_value', + 'parent': 'myhostname', + 'text': 'cpufreq_value'}, + {'id': 'myhostname.cpufreq_value.cpu', + 'parent': 'myhostname.cpufreq_value', + 'text': 'cpu'}, + {'id': 'myhostname.cpufreq_value.cpu.system', + 'parent': 'myhostname.cpufreq_value.cpu', + 'text': 'system'}, + {'id': 'myhostname.cpufreq_value.cpu.system.0', + 'parent': 'myhostname.cpufreq_value.cpu.system', + 'text': '0'}, + {'id': 'myhostname.cpufreq_value.cpu.user', + 'parent': 'myhostname.cpufreq_value.cpu', + 'text': 'user'}, + {'id': 'myhostname.cpufreq_value.cpu.user.0', + 'parent': 'myhostname.cpufreq_value.cpu.user', + 'text': '0'}, + {'id': 'myhostname.intel_pmu_value', + 'parent': 'myhostname', + 'text': 'intel_pmu_value'}, + {'id': 'myhostname.intel_pmu_value.cpu', + 'parent': 'myhostname.intel_pmu_value', + 'text': 'cpu'}, + {'id': 'myhostname.intel_pmu_value.cpu.system', + 'parent': 'myhostname.intel_pmu_value.cpu', + 'text': 'system'}, + {'id': 'myhostname.intel_pmu_value.cpu.system.0', + 'parent': 'myhostname.intel_pmu_value.cpu.system', + 'text': '0'}, + {'id': 'myhostname.intel_pmu_value.cpu.user', + 'parent': 'myhostname.intel_pmu_value.cpu', + 'text': 'user'}, + {'id': 'myhostname.intel_pmu_value.cpu.user.0', + 'parent': 'myhostname.intel_pmu_value.cpu.user', + 'text': '0'}, + {'id': 'myhostname.memory_value', + 'parent': 'myhostname', + 'text': 'memory_value'}, + {'id': 'myhostname.memory_value.cpu', + 'parent': 'myhostname.memory_value', + 'text': 'cpu'}, + {'id': 'myhostname.memory_value.cpu.system', + 'parent': 'myhostname.memory_value.cpu', + 'text': 'system'}, + {'id': 'myhostname.memory_value.cpu.system.0', + 'parent': 'myhostname.memory_value.cpu.system', + 'text': '0'}, + {'id': 'myhostname.memory_value.cpu.user', + 'parent': 'myhostname.memory_value.cpu', + 'text': 'user'}, + {'id': 'myhostname.memory_value.cpu.user.0', + 'parent': 'myhostname.memory_value.cpu.user', + 'text': '0'}, + {'id': 'myhostname.virt_value', 'parent': 'myhostname', + 'text': 'virt_value'}, + {'id': 'myhostname.virt_value.cpu', + 'parent': 'myhostname.virt_value', + 'text': 'cpu'}, + {'id': 'myhostname.virt_value.cpu.system', + 'parent': 'myhostname.virt_value.cpu', + 'text': 'system'}, + {'id': 'myhostname.virt_value.cpu.system.0', + 'parent': 'myhostname.virt_value.cpu.system', + 'text': '0'}, + {'id': 'myhostname.virt_value.cpu.user', + 'parent': 'myhostname.virt_value.cpu', + 'text': 'user'}, + {'id': 'myhostname.virt_value.cpu.user.0', + 'parent': 'myhostname.virt_value.cpu.user', + 'text': '0'} + ] + + self.assertEqual(data_exp, data_act) + self.assertEqual(time_exp, time_act) + self.assertEqual(keys_exp, keys_act) + self.assertEqual(tree_exp, tree_act) |