qa_server 7.3.0 → 7.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +5 -5
- data/.rubocop_fixme.yml +3 -0
- data/.travis.yml +4 -5
- data/CHANGELOG.md +45 -0
- data/Rakefile +1 -1
- data/app/assets/stylesheets/qa_server/_check-status.scss +36 -0
- data/app/cache_processors/qa_server/cache_expiry_service.rb +8 -8
- data/app/cache_processors/qa_server/job_id_cache.rb +4 -4
- data/app/cache_processors/qa_server/performance_cache.rb +34 -34
- data/app/cache_processors/qa_server/performance_day_graph_cache.rb +7 -7
- data/app/cache_processors/qa_server/performance_month_graph_cache.rb +7 -7
- data/app/cache_processors/qa_server/performance_year_graph_cache.rb +7 -7
- data/app/cache_processors/qa_server/scenario_history_cache.rb +7 -7
- data/app/cache_processors/qa_server/scenario_history_graph_cache.rb +7 -7
- data/app/cache_processors/qa_server/scenario_run_cache.rb +7 -7
- data/app/cache_processors/qa_server/scenario_run_failures_cache.rb +7 -7
- data/app/cache_processors/qa_server/scenario_run_summary_cache.rb +7 -7
- data/app/controllers/concerns/qa_server/authority_validation_behavior.rb +49 -44
- data/app/controllers/qa_server/check_status_controller.rb +92 -22
- data/app/controllers/qa_server/fetch_controller.rb +36 -36
- data/app/controllers/qa_server/monitor_status_controller.rb +106 -84
- data/app/jobs/qa_server/history_graph_job.rb +10 -10
- data/app/jobs/qa_server/monitor_tests_job.rb +17 -17
- data/app/jobs/qa_server/performance_day_graph_job.rb +21 -21
- data/app/jobs/qa_server/performance_month_graph_job.rb +21 -21
- data/app/jobs/qa_server/performance_per_byte_job.rb +85 -0
- data/app/jobs/qa_server/performance_year_graph_job.rb +21 -21
- data/app/loggers/qa_server/scenario_logger.rb +74 -4
- data/app/models/concerns/qa_server/performance_history_data_keys.rb +8 -0
- data/app/models/qa_server/authority_scenario.rb +4 -4
- data/app/models/qa_server/authority_status.rb +2 -2
- data/app/models/qa_server/authority_status_failure.rb +1 -1
- data/app/models/qa_server/performance_history.rb +2 -2
- data/app/models/qa_server/scenario_run_history.rb +63 -54
- data/app/models/qa_server/scenario_run_registry.rb +2 -2
- data/app/models/qa_server/scenarios.rb +26 -26
- data/app/models/qa_server/search_scenario.rb +24 -13
- data/app/models/qa_server/term_scenario.rb +29 -29
- data/app/prepends/prepended_linked_data/find_term.rb +40 -40
- data/app/prepends/prepended_linked_data/search_query.rb +36 -36
- data/app/prepends/prepended_rdf/rdf_graph.rb +7 -7
- data/app/presenters/concerns/qa_server/monitor_status/performance_datatable_behavior.rb +32 -32
- data/app/presenters/concerns/qa_server/monitor_status/performance_graph_behavior.rb +64 -64
- data/app/presenters/qa_server/check_status_presenter.rb +63 -7
- data/app/presenters/qa_server/monitor_status/current_status_presenter.rb +9 -8
- data/app/presenters/qa_server/monitor_status/history_presenter.rb +5 -2
- data/app/services/concerns/qa_server/gruff_graph.rb +16 -16
- data/app/services/qa_server/authority_loader_service.rb +14 -14
- data/app/services/qa_server/authority_validator_service.rb +1 -0
- data/app/services/qa_server/database_migrator.rb +14 -14
- data/app/services/qa_server/history_graphing_service.rb +30 -30
- data/app/services/qa_server/performance_calculator_service.rb +80 -80
- data/app/services/qa_server/performance_datatable_service.rb +35 -35
- data/app/services/qa_server/performance_graph_data_service.rb +27 -27
- data/app/services/qa_server/performance_graphing_service.rb +55 -55
- data/app/services/qa_server/performance_per_byte_calculator_service.rb +88 -0
- data/app/services/qa_server/performance_per_byte_data_service.rb +41 -0
- data/app/services/qa_server/scenarios_loader_service.rb +1 -1
- data/app/services/qa_server/time_period_service.rb +21 -21
- data/app/validators/qa_server/scenario_validator.rb +99 -87
- data/app/validators/qa_server/search_scenario_validator.rb +67 -61
- data/app/validators/qa_server/term_scenario_validator.rb +20 -15
- data/app/views/qa_server/check_status/index.html.erb +120 -24
- data/app/views/qa_server/monitor_status/_test_summary.html.erb +1 -1
- data/config/i18n-tasks.yml +133 -0
- data/config/locales/qa_server.en.yml +21 -5
- data/lib/generators/qa_server/assets_generator.rb +4 -4
- data/lib/generators/qa_server/templates/config/authorities/linked_data/cerl_ld4l_cache.json +2 -2
- data/lib/generators/qa_server/templates/config/authorities/linked_data/getty_aat_ld4l_cache.json +62 -1
- data/lib/generators/qa_server/templates/config/authorities/linked_data/getty_tgn_ld4l_cache.json +45 -11
- data/lib/generators/qa_server/templates/config/authorities/linked_data/getty_ulan_ld4l_cache.json +104 -8
- data/lib/generators/qa_server/templates/config/authorities/linked_data/isni_ld4l_cache.json +90 -0
- data/lib/generators/qa_server/templates/config/authorities/linked_data/ligatus_ld4l_cache.json +133 -0
- data/lib/generators/qa_server/templates/config/authorities/linked_data/locnames_rwo2_ld4l_cache.json +248 -0
- data/lib/generators/qa_server/templates/config/authorities/linked_data/locnames_rwo3_ld4l_cache.json +248 -0
- data/lib/generators/qa_server/templates/config/authorities/linked_data/locnames_rwo_ld4l_cache.json +4 -4
- data/lib/generators/qa_server/templates/config/authorities/linked_data/locvocabs_ld4l_cache.json +117 -0
- data/lib/generators/qa_server/templates/config/authorities/linked_data/mesh_nlm_ld4l_cache.json +135 -3
- data/lib/generators/qa_server/templates/config/authorities/linked_data/oclcfast_direct.json +5 -0
- data/lib/generators/qa_server/templates/config/authorities/linked_data/oclcfast_ld4l_cache.json +2 -4
- data/lib/generators/qa_server/templates/config/authorities/linked_data/scenarios/agrovoc_direct_validation.yml +31 -0
- data/lib/generators/qa_server/templates/config/authorities/linked_data/scenarios/agrovoc_ld4l_cache_validation.yml +31 -0
- data/lib/generators/qa_server/templates/config/authorities/linked_data/scenarios/cerl_ld4l_cache_validation.yml +24 -12
- data/lib/generators/qa_server/templates/config/authorities/linked_data/scenarios/dbpedia_ld4l_cache_validation.yml +33 -0
- data/lib/generators/qa_server/templates/config/authorities/linked_data/scenarios/geonames_direct_validation.yml +35 -0
- data/lib/generators/qa_server/templates/config/authorities/linked_data/scenarios/geonames_ld4l_cache_validation.yml +55 -5
- data/lib/generators/qa_server/templates/config/authorities/linked_data/scenarios/getty_aat_ld4l_cache_validation.yml +253 -0
- data/lib/generators/qa_server/templates/config/authorities/linked_data/scenarios/getty_tgn_ld4l_cache_validation.yml +31 -1
- data/lib/generators/qa_server/templates/config/authorities/linked_data/scenarios/getty_ulan_ld4l_cache_validation.yml +38 -1
- data/lib/generators/qa_server/templates/config/authorities/linked_data/scenarios/isni_ld4l_cache_validation.yml +10 -0
- data/lib/generators/qa_server/templates/config/authorities/linked_data/scenarios/ligatus_ld4l_cache_validation.yml +36 -0
- data/lib/generators/qa_server/templates/config/authorities/linked_data/scenarios/locdemographics_ld4l_cache_validation.yml +69 -44
- data/lib/generators/qa_server/templates/config/authorities/linked_data/scenarios/locgenres_ld4l_cache_validation.yml +22 -0
- data/lib/generators/qa_server/templates/config/authorities/linked_data/scenarios/locnames_ld4l_cache_validation.yml +65 -0
- data/lib/generators/qa_server/templates/config/authorities/linked_data/scenarios/locnames_rwo2_ld4l_cache_validation.yml +78 -0
- data/lib/generators/qa_server/templates/config/authorities/linked_data/scenarios/locnames_rwo3_ld4l_cache_validation.yml +73 -0
- data/lib/generators/qa_server/templates/config/authorities/linked_data/scenarios/locnames_rwo_ld4l_cache_validation.yml +71 -3
- data/lib/generators/qa_server/templates/config/authorities/linked_data/scenarios/locperformance_ld4l_cache_validation.yml +6 -0
- data/lib/generators/qa_server/templates/config/authorities/linked_data/scenarios/locsubjects_ld4l_cache_validation.yml +30 -0
- data/lib/generators/qa_server/templates/config/authorities/linked_data/scenarios/locvocabs_ld4l_cache_validation.yml +430 -0
- data/lib/generators/qa_server/templates/config/authorities/linked_data/scenarios/mesh_nlm_ld4l_cache_validation.yml +54 -1
- data/lib/generators/qa_server/templates/config/authorities/linked_data/scenarios/nalt_ld4l_cache_validation.yml +37 -0
- data/lib/generators/qa_server/templates/config/authorities/linked_data/scenarios/oclc_fast_validation.yml +71 -5
- data/lib/generators/qa_server/templates/config/authorities/linked_data/scenarios/oclcfast_direct_validation.yml +73 -2
- data/lib/generators/qa_server/templates/config/authorities/linked_data/scenarios/oclcfast_ld4l_cache_validation.yml +73 -0
- data/lib/generators/qa_server/templates/config/authorities/linked_data/scenarios/rda_registry_ld4l_cache_validation.yml +307 -0
- data/lib/qa_server/configuration.rb +28 -24
- data/lib/qa_server/version.rb +1 -1
- data/qa_server.gemspec +6 -5
- data/spec/feature/accuracy_spec.rb +32 -0
- data/spec/i18n_spec.rb +35 -0
- data/spec/spec_helper.rb +4 -0
- metadata +66 -17
|
@@ -17,46 +17,46 @@ module PrependedLinkedData::SearchQuery
|
|
|
17
17
|
requested_results(full_results)
|
|
18
18
|
end
|
|
19
19
|
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
20
|
+
private
|
|
21
|
+
|
|
22
|
+
def setup_search(request_header: {}, language: nil, replacements: {}, subauth: nil, context: false, performance_data: false) # rubocop:disable Metrics/ParameterLists
|
|
23
|
+
QaServer.log_agent_info(request_header[:request])
|
|
24
|
+
@start_time_s = QaServer::TimeService.current_time_s
|
|
25
|
+
request_header = build_request_header(language: language, replacements: replacements, subauth: subauth, context: context, performance_data: performance_data) if request_header.empty?
|
|
26
|
+
@saved_performance_data = performance_data || request_header[:performance_data]
|
|
27
|
+
request_header[:performance_data] = true
|
|
28
|
+
request_header
|
|
29
|
+
end
|
|
30
30
|
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
31
|
+
def update_performance_history_record(full_results)
|
|
32
|
+
return QaServer.config.performance_cache.destroy(@phid) unless full_results.is_a?(Hash) && full_results.key?(:performance)
|
|
33
|
+
updates = { action_time_ms: (QaServer::TimeService.current_time_s - @start_time_s) * 1000,
|
|
34
|
+
size_bytes: full_results[:performance][:fetched_bytes],
|
|
35
|
+
retrieve_plus_graph_load_time_ms: full_results[:performance][:fetch_time_s] * 1000,
|
|
36
|
+
normalization_time_ms: full_results[:performance][:normalization_time_s] * 1000 }
|
|
37
|
+
QaServer.config.performance_cache.update(id: @phid, updates: updates)
|
|
38
|
+
QaServer.config.performance_cache.complete_entry(id: @phid)
|
|
39
|
+
end
|
|
40
40
|
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
41
|
+
# Override to append performance history record id into the URL to allow access to the record in RDF::Graph
|
|
42
|
+
def load_graph(url:)
|
|
43
|
+
return super if QaServer.config.suppress_performance_gathering?
|
|
44
44
|
|
|
45
|
-
|
|
45
|
+
access_start_dt = QaServer::TimeService.current_time
|
|
46
46
|
|
|
47
|
-
|
|
48
|
-
|
|
47
|
+
url += "&phid=#{@phid}"
|
|
48
|
+
@full_graph = graph_service.load_graph(url: url)
|
|
49
49
|
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
50
|
+
access_end_dt = QaServer::TimeService.current_time
|
|
51
|
+
@access_time_s = access_end_dt - access_start_dt
|
|
52
|
+
@fetched_size = full_graph.triples.to_s.size if performance_data?
|
|
53
|
+
Rails.logger.info("Time to receive data from authority: #{access_time_s}s")
|
|
54
|
+
end
|
|
55
55
|
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
56
|
+
def requested_results(full_results)
|
|
57
|
+
return full_results if @saved_performance_data
|
|
58
|
+
return full_results[:results] unless full_results.key? :response_header
|
|
59
|
+
full_results.delete(:performance)
|
|
60
|
+
full_results
|
|
61
|
+
end
|
|
62
62
|
end
|
|
@@ -46,12 +46,12 @@ module PrependedRdf::RdfGraph
|
|
|
46
46
|
QaServer.config.performance_tracker.write "#{format('%.6f', end_time_s - start_time_s)}, " # load graph
|
|
47
47
|
end
|
|
48
48
|
|
|
49
|
-
|
|
49
|
+
private
|
|
50
50
|
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
51
|
+
def parse_phid(url)
|
|
52
|
+
i = url.rindex('&phid=')
|
|
53
|
+
phid = url[(i + 6)..url.length]
|
|
54
|
+
adjusted_url = url[0..(i - 1)]
|
|
55
|
+
[phid, adjusted_url]
|
|
56
|
+
end
|
|
57
57
|
end
|
|
@@ -116,44 +116,44 @@ module QaServer::MonitorStatus
|
|
|
116
116
|
QaServer::TimeService.pretty_date(performance_data_end_dt)
|
|
117
117
|
end
|
|
118
118
|
|
|
119
|
-
|
|
119
|
+
private
|
|
120
120
|
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
121
|
+
def expected_time_period
|
|
122
|
+
QaServer.config.performance_datatable_default_time_period
|
|
123
|
+
end
|
|
124
124
|
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
125
|
+
def data_table_for(authority_data, action)
|
|
126
|
+
authority_data[action]
|
|
127
|
+
end
|
|
128
128
|
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
129
|
+
def unsupported_action?(stats)
|
|
130
|
+
values = stats.values
|
|
131
|
+
return true if values.all?(&:zero?)
|
|
132
|
+
values.any? { |v| v.respond_to?(:nan?) && v.nan? }
|
|
133
|
+
end
|
|
134
134
|
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
135
|
+
def format_stat(stats, idx)
|
|
136
|
+
return '' if stats[idx].nil? || unsupported_action?(stats)
|
|
137
|
+
format("%0.1f", stats[idx])
|
|
138
|
+
end
|
|
139
139
|
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
140
|
+
def performance_style_class(stats, stat_key)
|
|
141
|
+
return "status-not-supported" if unsupported_action?(stats)
|
|
142
|
+
return "status-bad" if max_threshold_exceeded(stats, stat_key)
|
|
143
|
+
return "status-unknown" if desired_threshold_not_met(stats, stat_key)
|
|
144
|
+
"status-good"
|
|
145
|
+
end
|
|
146
146
|
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
147
|
+
def max_threshold_exceeded(stats, stat_key)
|
|
148
|
+
return false if stats[stat_key].nil?
|
|
149
|
+
return true if stats[stat_key] > QaServer.config.performance_datatable_max_threshold
|
|
150
|
+
false
|
|
151
|
+
end
|
|
152
152
|
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
153
|
+
def desired_threshold_not_met(stats, stat_key)
|
|
154
|
+
return false if stats[stat_key].nil?
|
|
155
|
+
return true unless stats[stat_key] < QaServer.config.performance_datatable_warning_threshold
|
|
156
|
+
false
|
|
157
|
+
end
|
|
158
158
|
end
|
|
159
159
|
end
|
|
@@ -83,73 +83,73 @@ module QaServer::MonitorStatus
|
|
|
83
83
|
false
|
|
84
84
|
end
|
|
85
85
|
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
def default_graph?(graph_info) # rubocop:disable Metrics/CyclomaticComplexity, Metrics/PerceivedComplexity
|
|
89
|
-
return false unless performance_all_actions_graph?(graph_info)
|
|
90
|
-
return true if QaServer.config.performance_graph_default_time_period == :day && performance_day_graph?(graph_info)
|
|
91
|
-
return true if QaServer.config.performance_graph_default_time_period == :month && performance_month_graph?(graph_info)
|
|
92
|
-
return true if QaServer.config.performance_graph_default_time_period == :year && performance_year_graph?(graph_info)
|
|
93
|
-
false
|
|
94
|
-
end
|
|
95
|
-
|
|
96
|
-
def performance_graphs_for_authority(graphs, auth_name)
|
|
97
|
-
[:search, :fetch, :all_actions].each do |action|
|
|
98
|
-
day_graph = performance_for_day_graph(auth_name, action)
|
|
99
|
-
month_graph = performance_for_month_graph(auth_name, action)
|
|
100
|
-
year_graph = performance_for_year_graph(auth_name, action)
|
|
101
|
-
add_graphs(graphs, day_graph, month_graph, year_graph)
|
|
102
|
-
end
|
|
103
|
-
end
|
|
86
|
+
private
|
|
104
87
|
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
def performance_for_day_graph(auth_name, action)
|
|
114
|
-
filepath = QaServer::PerformanceGraphingService.performance_graph_image_path(authority_name: auth_name, action: action, time_period: :day)
|
|
115
|
-
exists = QaServer::PerformanceGraphingService.performance_graph_image_exists?(authority_name: auth_name, action: action, time_period: :day)
|
|
116
|
-
{
|
|
117
|
-
action: action,
|
|
118
|
-
time_period: :day,
|
|
119
|
-
graph: filepath,
|
|
120
|
-
exists: exists,
|
|
121
|
-
label: "Performance data for the last 24 hours.",
|
|
122
|
-
authority_name: auth_name,
|
|
123
|
-
base_id: "performance-of-#{auth_name}"
|
|
124
|
-
}
|
|
125
|
-
end
|
|
88
|
+
def default_graph?(graph_info) # rubocop:disable Metrics/CyclomaticComplexity, Metrics/PerceivedComplexity
|
|
89
|
+
return false unless performance_all_actions_graph?(graph_info)
|
|
90
|
+
return true if QaServer.config.performance_graph_default_time_period == :day && performance_day_graph?(graph_info)
|
|
91
|
+
return true if QaServer.config.performance_graph_default_time_period == :month && performance_month_graph?(graph_info)
|
|
92
|
+
return true if QaServer.config.performance_graph_default_time_period == :year && performance_year_graph?(graph_info)
|
|
93
|
+
false
|
|
94
|
+
end
|
|
126
95
|
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
graph: filepath,
|
|
134
|
-
exists: exists,
|
|
135
|
-
label: "Performance data for the last 30 days.",
|
|
136
|
-
authority_name: auth_name,
|
|
137
|
-
base_id: "performance-of-#{auth_name}"
|
|
138
|
-
}
|
|
96
|
+
def performance_graphs_for_authority(graphs, auth_name)
|
|
97
|
+
[:search, :fetch, :all_actions].each do |action|
|
|
98
|
+
day_graph = performance_for_day_graph(auth_name, action)
|
|
99
|
+
month_graph = performance_for_month_graph(auth_name, action)
|
|
100
|
+
year_graph = performance_for_year_graph(auth_name, action)
|
|
101
|
+
add_graphs(graphs, day_graph, month_graph, year_graph)
|
|
139
102
|
end
|
|
103
|
+
end
|
|
140
104
|
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
105
|
+
# only add the graphs if all 3 exist
|
|
106
|
+
def add_graphs(graphs, day_graph, month_graph, year_graph)
|
|
107
|
+
return unless day_graph[:exists] && month_graph[:exists] && year_graph[:exists]
|
|
108
|
+
graphs << day_graph
|
|
109
|
+
graphs << month_graph
|
|
110
|
+
graphs << year_graph
|
|
111
|
+
end
|
|
112
|
+
|
|
113
|
+
def performance_for_day_graph(auth_name, action)
|
|
114
|
+
filepath = QaServer::PerformanceGraphingService.performance_graph_image_path(authority_name: auth_name, action: action, time_period: :day)
|
|
115
|
+
exists = QaServer::PerformanceGraphingService.performance_graph_image_exists?(authority_name: auth_name, action: action, time_period: :day)
|
|
116
|
+
{
|
|
117
|
+
action: action,
|
|
118
|
+
time_period: :day,
|
|
119
|
+
graph: filepath,
|
|
120
|
+
exists: exists,
|
|
121
|
+
label: "Performance data for the last 24 hours.",
|
|
122
|
+
authority_name: auth_name,
|
|
123
|
+
base_id: "performance-of-#{auth_name}"
|
|
124
|
+
}
|
|
125
|
+
end
|
|
126
|
+
|
|
127
|
+
def performance_for_month_graph(auth_name, action)
|
|
128
|
+
filepath = QaServer::PerformanceGraphingService.performance_graph_image_path(authority_name: auth_name, action: action, time_period: :month)
|
|
129
|
+
exists = QaServer::PerformanceGraphingService.performance_graph_image_exists?(authority_name: auth_name, action: action, time_period: :month)
|
|
130
|
+
{
|
|
131
|
+
action: action,
|
|
132
|
+
time_period: :month,
|
|
133
|
+
graph: filepath,
|
|
134
|
+
exists: exists,
|
|
135
|
+
label: "Performance data for the last 30 days.",
|
|
136
|
+
authority_name: auth_name,
|
|
137
|
+
base_id: "performance-of-#{auth_name}"
|
|
138
|
+
}
|
|
139
|
+
end
|
|
140
|
+
|
|
141
|
+
def performance_for_year_graph(auth_name, action)
|
|
142
|
+
filepath = QaServer::PerformanceGraphingService.performance_graph_image_path(authority_name: auth_name, action: action, time_period: :year)
|
|
143
|
+
exists = QaServer::PerformanceGraphingService.performance_graph_image_exists?(authority_name: auth_name, action: action, time_period: :year)
|
|
144
|
+
{
|
|
145
|
+
action: action,
|
|
146
|
+
time_period: :year,
|
|
147
|
+
graph: filepath,
|
|
148
|
+
exists: exists,
|
|
149
|
+
label: "Performance data for the last 12 months.",
|
|
150
|
+
authority_name: auth_name,
|
|
151
|
+
base_id: "performance-of-#{auth_name}"
|
|
152
|
+
}
|
|
153
|
+
end
|
|
154
154
|
end
|
|
155
155
|
end
|
|
@@ -4,10 +4,11 @@ module QaServer
|
|
|
4
4
|
class CheckStatusPresenter
|
|
5
5
|
# @param authorities_list [Array<String>] a list of all loaded authorities' names
|
|
6
6
|
# @param status_data [Array<Hash>] a list of status data for each scenario tested
|
|
7
|
-
def initialize(authorities_list:, connection_status_data:, accuracy_status_data:)
|
|
7
|
+
def initialize(authorities_list:, connection_status_data:, accuracy_status_data:, comparison_status_data:)
|
|
8
8
|
@authorities_list = authorities_list
|
|
9
9
|
@connection_status_data = connection_status_data
|
|
10
10
|
@accuracy_status_data = accuracy_status_data
|
|
11
|
+
@comparison_status_data = comparison_status_data
|
|
11
12
|
end
|
|
12
13
|
|
|
13
14
|
# @return [Array<String>] A list of all loaded authorities' names
|
|
@@ -19,10 +20,10 @@ module QaServer
|
|
|
19
20
|
# @example
|
|
20
21
|
# [ { status: :PASS,
|
|
21
22
|
# status_label: '√',
|
|
22
|
-
# authority_name: 'LOCNAMES_LD4L_CACHE',
|
|
23
|
-
# subauthority_name: 'person',
|
|
24
23
|
# service: 'ld4l_cache',
|
|
25
24
|
# action: 'search',
|
|
25
|
+
# authority_name: 'LOCNAMES_LD4L_CACHE',
|
|
26
|
+
# subauthority_name: 'person',
|
|
26
27
|
# url: '/qa/search/linked_data/locnames_ld4l_cache/person?q=mark twain&maxRecords=4',
|
|
27
28
|
# err_message: '' }, ... ]
|
|
28
29
|
attr_reader :connection_status_data
|
|
@@ -33,10 +34,10 @@ module QaServer
|
|
|
33
34
|
# @example
|
|
34
35
|
# [ { status: :PASS,
|
|
35
36
|
# status_label: '√',
|
|
36
|
-
# authority_name: 'LOCNAMES_LD4L_CACHE',
|
|
37
|
-
# subauthority_name: 'person',
|
|
38
37
|
# service: 'ld4l_cache',
|
|
39
38
|
# action: 'search',
|
|
39
|
+
# authority_name: 'LOCNAMES_LD4L_CACHE',
|
|
40
|
+
# subauthority_name: 'person',
|
|
40
41
|
# expected: 10,
|
|
41
42
|
# actual: 8,
|
|
42
43
|
# url: '/qa/search/linked_data/locnames_ld4l_cache/person?q=mark twain&maxRecords=20',
|
|
@@ -44,6 +45,25 @@ module QaServer
|
|
|
44
45
|
attr_reader :accuracy_status_data
|
|
45
46
|
# rubocop:enable Style/AsciiComments
|
|
46
47
|
|
|
48
|
+
# rubocop:disable Style/AsciiComments
|
|
49
|
+
# @return [Array<Hash>] A list of status data for each comparison of accuracy scenarios tested.
|
|
50
|
+
# @example
|
|
51
|
+
# [ { status: [:PASS, :FAIL],
|
|
52
|
+
# status_label: ['√', 'X'],
|
|
53
|
+
# service: ['ld4l_cache', 'ld4l_cache'],
|
|
54
|
+
# action: 'search',
|
|
55
|
+
# authority_name: ['LOCNAMES_LD4L_CACHE', 'LOCNAMES_NEW_LD4L_CACHE']
|
|
56
|
+
# subauthority_name: 'imprint',
|
|
57
|
+
# request_data: 'Plantin'
|
|
58
|
+
# target: 'http://thesaurus.cerl.org/record/cni00007649',
|
|
59
|
+
# expected: [1, 1]
|
|
60
|
+
# actual: [1, 2]
|
|
61
|
+
# url: ['/qa/search/linked_data/cerl_ld4l_cache/imprint?q=Plantin&maxRecords=8',
|
|
62
|
+
# '/qa/search/linked_data/cerl_new_ld4l_cache/imprint?q=Plantin&maxRecords=8']
|
|
63
|
+
# err_message: ['',''] }, ... ]
|
|
64
|
+
attr_reader :comparison_status_data
|
|
65
|
+
# rubocop:enable Style/AsciiComments
|
|
66
|
+
|
|
47
67
|
# @return [Boolean] true if status data exists; otherwise false
|
|
48
68
|
def connection_status_data?
|
|
49
69
|
@connection_status_data.present?
|
|
@@ -54,14 +74,19 @@ module QaServer
|
|
|
54
74
|
@accuracy_status_data.present?
|
|
55
75
|
end
|
|
56
76
|
|
|
77
|
+
# @return [Boolean] true if status data exists; otherwise false
|
|
78
|
+
def comparison_status_data?
|
|
79
|
+
@comparison_status_data.present?
|
|
80
|
+
end
|
|
81
|
+
|
|
57
82
|
# @return [String] the name of the css style class to use for the status cell based on the status of the scenario test.
|
|
58
83
|
def status_style_class(status)
|
|
59
|
-
"status-#{status
|
|
84
|
+
"status-#{status}"
|
|
60
85
|
end
|
|
61
86
|
|
|
62
87
|
# @return [String] the name of the css style class to use for the status cell based on the status of the scenario test.
|
|
63
88
|
def status_label(status)
|
|
64
|
-
case status
|
|
89
|
+
case status
|
|
65
90
|
when :good
|
|
66
91
|
QaServer::ScenarioRunHistory::GOOD_MARKER
|
|
67
92
|
when :bad
|
|
@@ -71,6 +96,17 @@ module QaServer
|
|
|
71
96
|
end
|
|
72
97
|
end
|
|
73
98
|
|
|
99
|
+
def selected_authority
|
|
100
|
+
return comparison_status_data.first[:authority_name][0].to_sym if comparison_status_data?
|
|
101
|
+
return connection_status_data.first[:authority_name].to_sym if connection_status_data?
|
|
102
|
+
return accuracy_status_data.first[:authority_name].to_sym if accuracy_status_data?
|
|
103
|
+
""
|
|
104
|
+
end
|
|
105
|
+
|
|
106
|
+
def selected_comparison
|
|
107
|
+
comparison_status_data? ? comparison_status_data.first[:authority_name][1].to_sym : ""
|
|
108
|
+
end
|
|
109
|
+
|
|
74
110
|
def value_all_collections
|
|
75
111
|
QaServer::CheckStatusController::ALL_AUTHORITIES
|
|
76
112
|
end
|
|
@@ -87,6 +123,10 @@ module QaServer
|
|
|
87
123
|
"#{value_check_param}_#{value_check_connections}".downcase.to_sym
|
|
88
124
|
end
|
|
89
125
|
|
|
126
|
+
def connection_tests_checked
|
|
127
|
+
connection_status_data?
|
|
128
|
+
end
|
|
129
|
+
|
|
90
130
|
def value_check_accuracy
|
|
91
131
|
QaServer::AuthorityValidationBehavior::VALIDATE_ACCURACY
|
|
92
132
|
end
|
|
@@ -95,6 +135,22 @@ module QaServer
|
|
|
95
135
|
"#{value_check_param}_#{value_check_accuracy}".downcase.to_sym
|
|
96
136
|
end
|
|
97
137
|
|
|
138
|
+
def accuracy_tests_checked
|
|
139
|
+
accuracy_status_data?
|
|
140
|
+
end
|
|
141
|
+
|
|
142
|
+
def value_check_comparison
|
|
143
|
+
QaServer::AuthorityValidationBehavior::VALIDATE_ACCURACY_COMPARISON
|
|
144
|
+
end
|
|
145
|
+
|
|
146
|
+
def label_check_comparison
|
|
147
|
+
"#{value_check_param}_#{value_check_comparison}".downcase.to_sym
|
|
148
|
+
end
|
|
149
|
+
|
|
150
|
+
def comparison_tests_checked
|
|
151
|
+
comparison_status_data?
|
|
152
|
+
end
|
|
153
|
+
|
|
98
154
|
def value_all_checks
|
|
99
155
|
QaServer::AuthorityValidationBehavior::ALL_VALIDATIONS
|
|
100
156
|
end
|