create matrices-groups according to group jobs for support user-defined
template compare mode
background:
before compare, create job-groups for all jobs that query from ES with user's filter
then, create matrices-groups according job-groups
finally, compare each group matrices
Signed-off-by: Lu Weitao <luweitaobe(a)163.com>
---
lib/matrix2.rb | 24 ++++++++++++++++++++++++
1 file changed, 24 insertions(+)
diff --git a/lib/matrix2.rb b/lib/matrix2.rb
index 05f96dc..8d4c989 100644
--- a/lib/matrix2.rb
+++ b/lib/matrix2.rb
@@ -120,3 +120,27 @@ def combine_group_query_data(query_data, dims)
end
groups
end
+
+# input:
+# 1. query results from es_query
+# 2. params from template include:
+# groups_params(x_params):
+# eg: ['block_size', 'package_size']
+# dimensions:
+# eg: [
+# {'os' => 'openeuler', 'os_version' => '20.03'},
+# {'os' => 'centos', 'os_version' => '7.6'}
+# ]
+# metrics:
+# eg: ['fio.read_iops', 'fio_write_iops']
+# return: group_matrix of Hash(String, Hash(String, matrix))
+def combine_group_query_data(query_data, groups_params, dimensions, metrics)
+ job_list = query_data['hits']['hits']
+ groups = auto_group_by_template(job_list, groups_params, dimensions, metrics)
+ groups.each do |group_key, dimensions|
+ dimensions.each do |dimension_key, jobs|
+ groups[group_key][dimension_key] = create_matrix(jobs)
+ end
+ end
+ groups
+end
--
2.23.0