aboutsummaryrefslogtreecommitdiffstats
path: root/yardstick/tests/functional/benchmark/core/test_report.py
diff options
context:
space:
mode:
Diffstat (limited to 'yardstick/tests/functional/benchmark/core/test_report.py')
-rw-r--r--yardstick/tests/functional/benchmark/core/test_report.py314
1 files changed, 314 insertions, 0 deletions
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)