qa_server 3.0.0 → 3.0.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +8 -0
- data/app/presenters/concerns/qa_server/monitor_status/performance_datatable_behavior.rb +3 -1
- data/app/services/qa_server/performance_calculator_service.rb +13 -6
- data/app/services/qa_server/performance_graphing_service.rb +14 -1
- data/app/views/qa_server/monitor_status/_performance.html.erb +1 -1
- data/config/locales/qa_server.en.yml +2 -1
- data/lib/qa_server/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 07b0fa2f20f5bb153db7ad23e9b220acac6c6207
|
4
|
+
data.tar.gz: 26780210f6c2e80b2be8964ec0bfa31fd24f962b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a32e34c94603bc1fa5cda525882ba8a60a1d7feb1afa190f081bfad7fc919895931f530c7847db6dace78d8639f4aa307d84fab1ff9d93ae525055a4cda1f4fb
|
7
|
+
data.tar.gz: 7eb0925bf1f3fc0cc4ee5a8afec876fa6a8fa8cbbd27417c3e844f3e9ab82f2516d95caf88fe93c9fc41188a78019e1e6c0a98d504237119f6fb4e47265275b6
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,11 @@
|
|
1
|
+
### 3.0.1 (2019-10-09)
|
2
|
+
|
3
|
+
* use old :load data when split :retrieve and :graph_load are not available
|
4
|
+
* bug fix - make sure count is counting based on the current set of times
|
5
|
+
* bug fix - add in missing translations
|
6
|
+
* bug fix - fix performance data table data style for retrieve
|
7
|
+
* bug fix - unsupported_action? for performance datatable handles all 0 stats
|
8
|
+
|
1
9
|
### 3.0.0 (2019-10-09)
|
2
10
|
|
3
11
|
* refactor performance data and graphs to include stats by action as well as by authority and time period
|
@@ -105,7 +105,9 @@ module QaServer::MonitorStatus
|
|
105
105
|
end
|
106
106
|
|
107
107
|
def unsupported_action?(stats)
|
108
|
-
stats
|
108
|
+
values = stats.values
|
109
|
+
return true if values.all? &:zero?
|
110
|
+
values.any? { |v| v.respond_to?(:nan?) && v.nan? }
|
109
111
|
end
|
110
112
|
|
111
113
|
def format_stat(stats, idx)
|
@@ -21,6 +21,7 @@ module QaServer
|
|
21
21
|
# retrieve_10th_ms: 12.3, graph_load_10th_ms: 12.3, normalization_10th_ms: 4.2, full_request_10th_ms: 16.5,
|
22
22
|
# retrieve_90th_ms: 12.3, graph_load_90th_ms: 12.3, normalization_90th_ms: 4.2, full_request_90th_ms: 16.5 }
|
23
23
|
def calculate_stats(avg: false, low: false, high: false, load: true, norm: true, full: true) # rubocop:disable Metrics/ParameterLists
|
24
|
+
calculate_load_stats(avg, low, high) if load
|
24
25
|
calculate_retrieve_stats(avg, low, high) if load
|
25
26
|
calculate_graph_load_stats(avg, low, high) if load
|
26
27
|
calculate_normalization_stats(avg, low, high) if norm
|
@@ -30,6 +31,12 @@ module QaServer
|
|
30
31
|
|
31
32
|
private
|
32
33
|
|
34
|
+
def calculate_load_stats(avg, low, high)
|
35
|
+
stats[AVG_LOAD] = calculate_average(full_load_times) if avg
|
36
|
+
stats[LOW_LOAD] = calculate_10th_percentile(full_load_times) if low
|
37
|
+
stats[HIGH_LOAD] = calculate_90th_percentile(full_load_times) if high
|
38
|
+
end
|
39
|
+
|
33
40
|
def calculate_retrieve_stats(avg, low, high)
|
34
41
|
stats[AVG_RETR] = calculate_average(retrieve_times) if avg
|
35
42
|
stats[LOW_RETR] = calculate_10th_percentile(retrieve_times) if low
|
@@ -54,10 +61,6 @@ module QaServer
|
|
54
61
|
stats[HIGH_ACTN] = calculate_90th_percentile(action_times) if high
|
55
62
|
end
|
56
63
|
|
57
|
-
def count
|
58
|
-
@count ||= records.count
|
59
|
-
end
|
60
|
-
|
61
64
|
def tenth_percentile_count(times)
|
62
65
|
percentile_count = (times.count * 0.1).round
|
63
66
|
percentile_count = 1 if percentile_count.zero? && count > 1
|
@@ -69,6 +72,10 @@ module QaServer
|
|
69
72
|
records.where(where_clause).where.not(column => nil).order(column).pluck(column)
|
70
73
|
end
|
71
74
|
|
75
|
+
def full_load_times
|
76
|
+
@full_load_times ||= times(:retrieve_plus_graph_load_time_ms)
|
77
|
+
end
|
78
|
+
|
72
79
|
def retrieve_times
|
73
80
|
@retrieve_times ||= times(:retrieve_time_ms)
|
74
81
|
end
|
@@ -86,8 +93,8 @@ module QaServer
|
|
86
93
|
end
|
87
94
|
|
88
95
|
def calculate_average(times)
|
89
|
-
return 0 if count.zero?
|
90
|
-
return times[0] if count == 1
|
96
|
+
return 0 if times.count.zero?
|
97
|
+
return times[0] if times.count == 1
|
91
98
|
times.inject(0.0) { |sum, el| sum + el } / times.count
|
92
99
|
end
|
93
100
|
|
@@ -82,18 +82,31 @@ module QaServer
|
|
82
82
|
|
83
83
|
def rework_performance_data_for_gruff(performance_data, label_key)
|
84
84
|
labels = {}
|
85
|
+
full_load_data = []
|
85
86
|
retrieve_data = []
|
86
87
|
graph_load_data = []
|
87
88
|
normalization_data = []
|
88
89
|
performance_data.each do |i, data|
|
89
90
|
labels[i] = data[label_key]
|
90
91
|
retrieve_data << data[STATS][AVG_RETR]
|
91
|
-
graph_load_data << data
|
92
|
+
graph_load_data << graph_load_time(data)
|
92
93
|
normalization_data << data[STATS][AVG_NORM]
|
93
94
|
end
|
94
95
|
[labels, normalization_data, graph_load_data, retrieve_data]
|
95
96
|
end
|
96
97
|
|
98
|
+
def graph_load_time(data)
|
99
|
+
# For some sense of backward compatibility and to avoid losing the usefulness of previously collected data,
|
100
|
+
# create the graph using the old :load stat when both :retrieve and :graph_load are 0. If the value truly
|
101
|
+
# is 0, then :load will also be 0.
|
102
|
+
# NOTE: It's ok to use AVG_RETR for the retrieve data point because it is 0.
|
103
|
+
(data[STATS][AVG_RETR].zero? && data[STATS][AVG_GRPH].zero?) ? data[STATS][AVG_LOAD] : data[STATS][AVG_GRPH]
|
104
|
+
end
|
105
|
+
|
106
|
+
def empty(stat_data)
|
107
|
+
!stat_data.any? { |f| f > 0 }
|
108
|
+
end
|
109
|
+
|
97
110
|
def performance_graph_theme(g, x_axis_label)
|
98
111
|
g.theme_pastel
|
99
112
|
g.colors = [QaServer.config.performance_normalization_color,
|
@@ -112,7 +112,7 @@
|
|
112
112
|
</tr>
|
113
113
|
<tr>
|
114
114
|
<th><%= t('qa_server.monitor_status.performance.retrieve_times') %></th>
|
115
|
-
<td class="<%= @presenter.
|
115
|
+
<td class="<%= @presenter.datatable_data_style(search_stats) %>"><%= @presenter.high_retrieve(search_stats) %></td>
|
116
116
|
<td class="<%= @presenter.datatable_data_style(search_stats) %>"><%= @presenter.avg_retrieve(search_stats) %></td>
|
117
117
|
<td class="<%= @presenter.datatable_data_style(search_stats) %>"><%= @presenter.low_retrieve(search_stats) %></td>
|
118
118
|
<td class="<%= @presenter.datatable_data_style(fetch_stats) %>"><%= @presenter.high_retrieve(fetch_stats) %></td>
|
@@ -103,7 +103,8 @@ en:
|
|
103
103
|
average_times: Average (ms)
|
104
104
|
fastest_times: 10th percentile (ms)
|
105
105
|
slowest_times: 90th percentile (ms)
|
106
|
-
|
106
|
+
retrieve_times: Retrieve
|
107
|
+
graph_load_times: Graph Load
|
107
108
|
normalization_times: Normalization
|
108
109
|
full_request_times: Total
|
109
110
|
usage:
|
data/lib/qa_server/version.rb
CHANGED