qa_server 7.5.1 → 7.9.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.rubocop_fixme.yml +3 -2
- data/.travis.yml +1 -1
- data/CHANGELOG.md +28 -0
- data/app/assets/stylesheets/qa_server/_check-status.scss +4 -0
- data/app/assets/stylesheets/qa_server/_monitor-status.scss +45 -0
- data/app/cache_processors/concerns/qa_server/cache_keys.rb +1 -0
- data/app/cache_processors/qa_server/scenario_history_cache.rb +19 -1
- data/app/controllers/qa_server/monitor_status_controller.rb +39 -9
- data/app/models/qa_server/scenario_run_history.rb +12 -3
- data/app/models/qa_server/search_scenario.rb +6 -0
- data/app/presenters/qa_server/check_status_presenter.rb +1 -1
- data/app/presenters/qa_server/monitor_status/current_status_presenter.rb +9 -8
- data/app/presenters/qa_server/monitor_status/history_presenter.rb +55 -4
- data/app/presenters/qa_server/monitor_status/history_up_down_presenter.rb +58 -0
- data/app/presenters/qa_server/monitor_status_presenter.rb +7 -2
- data/app/services/qa_server/history_up_down_service.rb +103 -0
- data/app/services/qa_server/time_service.rb +6 -0
- data/app/views/qa_server/check_status/index.html.erb +7 -6
- data/app/views/qa_server/monitor_status/_test_summary.html.erb +1 -1
- data/app/views/qa_server/monitor_status/_test_up_down_connection_history.html.erb +30 -0
- data/app/views/qa_server/monitor_status/index.html.erb +2 -1
- data/config/locales/qa_server.en.yml +8 -7
- data/lib/generators/qa_server/templates/config/authorities/linked_data/getty_tgn_ld4l_cache.json +24 -14
- 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/locnames_rwo2_ld4l_cache.json +4 -4
- data/lib/generators/qa_server/templates/config/authorities/linked_data/locnames_rwo3_ld4l_cache.json +4 -4
- 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 +1 -1
- data/lib/generators/qa_server/templates/config/authorities/linked_data/mesh_nlm_ld4l_cache.json +1 -0
- data/lib/generators/qa_server/templates/config/authorities/linked_data/oclcfast_direct.json +4 -0
- data/lib/generators/qa_server/templates/config/authorities/linked_data/oclcfast_ld4l_cache.json +1 -0
- data/lib/generators/qa_server/templates/config/authorities/linked_data/scenarios/cerl_ld4l_cache_validation.yml +3 -3
- data/lib/generators/qa_server/templates/config/authorities/linked_data/scenarios/geonames_ld4l_cache_validation.yml +2 -5
- data/lib/generators/qa_server/templates/config/authorities/linked_data/scenarios/getty_aat_ld4l_cache_validation.yml +0 -3
- data/lib/generators/qa_server/templates/config/authorities/linked_data/scenarios/getty_tgn_ld4l_cache_validation.yml +3 -7
- data/lib/generators/qa_server/templates/config/authorities/linked_data/scenarios/getty_ulan_ld4l_cache_validation.yml +5 -5
- data/lib/generators/qa_server/templates/config/authorities/linked_data/scenarios/locdemographics_ld4l_cache_validation.yml +0 -4
- data/lib/generators/qa_server/templates/config/authorities/linked_data/scenarios/locgenres_ld4l_cache_validation.yml +0 -9
- data/lib/generators/qa_server/templates/config/authorities/linked_data/scenarios/locnames_ld4l_cache_validation.yml +1 -7
- 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 +11 -11
- data/lib/generators/qa_server/templates/config/authorities/linked_data/scenarios/locsubjects_ld4l_cache_validation.yml +1 -3
- data/lib/generators/qa_server/templates/config/authorities/linked_data/scenarios/locvocabs_ld4l_cache_validation.yml +246 -0
- data/lib/generators/qa_server/templates/config/authorities/linked_data/scenarios/mesh_nlm_ld4l_cache_validation.yml +8 -5
- data/lib/generators/qa_server/templates/config/authorities/linked_data/scenarios/oclcfast_direct_validation.yml +13 -7
- data/lib/generators/qa_server/templates/config/authorities/linked_data/scenarios/oclcfast_ld4l_cache_validation.yml +19 -3
- data/lib/generators/qa_server/templates/config/authorities/linked_data/scenarios/rda_registry_ld4l_cache_validation.yml +0 -3
- data/lib/generators/qa_server/templates/config/initializers/qa_server.rb +8 -0
- data/lib/qa_server/configuration.rb +14 -0
- data/lib/qa_server/version.rb +1 -1
- data/qa_server.gemspec +5 -5
- data/spec/feature/accuracy_spec.rb +1 -1
- data/spec/i18n_spec.rb +0 -1
- data/spec/lib/configuration_spec.rb +22 -0
- data/spec/presenters/qa_server/monitor_status/history_presenter_spec.rb +81 -0
- data/spec/services/qa_server/history_up_down_service_spec.rb +86 -0
- metadata +39 -12
@@ -0,0 +1,58 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
# This presenter class provides historical testing data needed by the view that monitors status of authorities.
|
3
|
+
module QaServer::MonitorStatus
|
4
|
+
class HistoryUpDownPresenter
|
5
|
+
attr_reader :historical_up_down_data
|
6
|
+
|
7
|
+
# @param parent [QaServer::MonitorStatusPresenter] parent presenter
|
8
|
+
# @param historical_up_down_data [Hash<Array>] recent connection status of queries (typically last 30 days)
|
9
|
+
# @example historical_up_down_data
|
10
|
+
# { 'AGROVOC' = [
|
11
|
+
# :FULLY_UP, # 0 - today
|
12
|
+
# :MOSTLY_UP, # 1 - yesterday
|
13
|
+
# :MOSTLY_UP, # 2 - two days ago
|
14
|
+
# :FULLY_UP, # 3 - three days ago
|
15
|
+
# :DOWN, # 4 - four days ago
|
16
|
+
# ... # etc.
|
17
|
+
# ],
|
18
|
+
# 'CERL' = [ ... ]
|
19
|
+
# }
|
20
|
+
def initialize(parent:, historical_up_down_data:)
|
21
|
+
@parent = parent
|
22
|
+
@historical_up_down_data = historical_up_down_data
|
23
|
+
end
|
24
|
+
|
25
|
+
# Return the last date of data represented in the history graph and data table
|
26
|
+
# @return [ActiveSupport::TimeWithZone] date time stamp
|
27
|
+
def up_down_start
|
28
|
+
QaServer::TimeService.pretty_date(up_down_end_dt - 29.days)
|
29
|
+
end
|
30
|
+
|
31
|
+
def up_down_end
|
32
|
+
QaServer::TimeService.pretty_date(up_down_end_dt)
|
33
|
+
end
|
34
|
+
|
35
|
+
def up_down_end_dt
|
36
|
+
@parent.last_updated_dt
|
37
|
+
end
|
38
|
+
|
39
|
+
# @param status [Symbol] :fully_up, :mostly_up, :timeouts, :barely_up, :down
|
40
|
+
# @param day [Integer] retrieve the status for this day
|
41
|
+
# @return [String] name of the css class for the status
|
42
|
+
def historical_up_down_status_class(status, day) # rubocop:disable Metrics/CyclomaticComplexity
|
43
|
+
case status[day]
|
44
|
+
when :no_date then 'connection-no-date'
|
45
|
+
when :fully_up then 'connection-fully-up'
|
46
|
+
when :mostly_up then 'connection-mostly-up'
|
47
|
+
when :timeouts then 'connection-timeouts'
|
48
|
+
when :barely_up then 'connection-barely-up'
|
49
|
+
when :down then 'connection-down'
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
# @return [Boolean] true if historical datatable should be visible; otherwise false
|
54
|
+
def display_historical_up_down?
|
55
|
+
QaServer.config.display_historical_datatable? && @historical_up_down_data.present?
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
@@ -5,12 +5,14 @@ module QaServer
|
|
5
5
|
extend Forwardable
|
6
6
|
|
7
7
|
# @param current_summary [ScenarioRunSummary] summary status of the latest run of test scenarios
|
8
|
-
# @param
|
8
|
+
# @param current_failure_data [Array<Hash>] current set of failures for the latest test run, if any
|
9
9
|
# @param historical_summary_data [Array<Hash>] summary of past failuring runs per authority to drive chart
|
10
|
+
# @param historical_up_down_data [Hash<Array>] status of queries for the last 30 days
|
10
11
|
# @param performance_data [Hash<Hash>] performance datatable data
|
11
|
-
def initialize(current_summary:, current_failure_data:, historical_summary_data:, performance_data:)
|
12
|
+
def initialize(current_summary:, current_failure_data:, historical_summary_data:, historical_up_down_data:, performance_data:)
|
12
13
|
@current_status_presenter = QaServer::MonitorStatus::CurrentStatusPresenter.new(parent: self, current_summary: current_summary, current_failure_data: current_failure_data)
|
13
14
|
@history_presenter = QaServer::MonitorStatus::HistoryPresenter.new(parent: self, historical_summary_data: historical_summary_data)
|
15
|
+
@history_up_down_presenter = QaServer::MonitorStatus::HistoryUpDownPresenter.new(parent: self, historical_up_down_data: historical_up_down_data)
|
14
16
|
@performance_presenter = QaServer::MonitorStatus::PerformancePresenter.new(parent: self, performance_data: performance_data)
|
15
17
|
end
|
16
18
|
|
@@ -23,6 +25,9 @@ module QaServer
|
|
23
25
|
:percent_authority_failing, :percent_authority_failing_str, :failure_style_class, :passing_style_class,
|
24
26
|
:display_history_details?, :display_historical_graph?, :display_historical_datatable?, :history_start, :history_end
|
25
27
|
|
28
|
+
def_delegators :@history_up_down_presenter, :historical_up_down_data, :display_historical_up_down?, :historical_up_down_status_class,
|
29
|
+
:up_down_start, :up_down_end
|
30
|
+
|
26
31
|
def_delegators :@performance_presenter, :performance_data, :performance_data?, :display_performance?, :display_performance_graph?,
|
27
32
|
:display_performance_datatable?, :performance_data_authority_name, :performance_for_day_graph, :performance_for_month_graph,
|
28
33
|
:performance_for_year_graph, :datatable_search_stats, :datatable_fetch_stats, :datatable_all_actions_stats,
|
@@ -0,0 +1,103 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
# This class determines the state (e.g. fully_up, mostly_up, barely_up, down)of an authority during the last 30 days.
|
3
|
+
module QaServer
|
4
|
+
class HistoryUpDownService
|
5
|
+
NO_DATA = :no_data
|
6
|
+
FULLY_UP = :fully_up
|
7
|
+
MOSTLY_UP = :mostly_up
|
8
|
+
EXCESSIVE_TIMEOUTS = :timeouts
|
9
|
+
BARELY_UP = :barely_up
|
10
|
+
DOWN = :down
|
11
|
+
|
12
|
+
MOSTLY_UP_THRESHOLD = QaServer.config.up_down_data_mostly_up_threshold
|
13
|
+
TIMEOUT_THRESHOLD = QaServer.config.up_down_data_timeouts_max_threshold
|
14
|
+
|
15
|
+
class_attribute :authority_lister, :scenario_history_class, :time_service
|
16
|
+
self.authority_lister = QaServer::AuthorityListerService
|
17
|
+
self.scenario_history_class = QaServer::ScenarioRunHistory
|
18
|
+
self.time_service = QaServer::TimeService
|
19
|
+
|
20
|
+
def last_30_days
|
21
|
+
data = {}
|
22
|
+
authorities_list.each { |authority| data[authority] = last_30_days_for(authority.to_s) }
|
23
|
+
data
|
24
|
+
end
|
25
|
+
|
26
|
+
private
|
27
|
+
|
28
|
+
# @returns [Hash <Array<Hash>>] data for an authority for each of the last 30 days
|
29
|
+
# @example
|
30
|
+
# { 'AGROVOC' = [
|
31
|
+
# :FULLY_UP, # 0 - today
|
32
|
+
# :MOSTLY_UP, # 1 - yesterday
|
33
|
+
# :MOSTLY_UP, # 2 - two days ago
|
34
|
+
# :FULLY_UP, # 3 - three days ago
|
35
|
+
# :DOWN, # 4 - four days ago
|
36
|
+
# ... # etc.
|
37
|
+
# ]
|
38
|
+
# }
|
39
|
+
def last_30_days_for(authority)
|
40
|
+
auth_data = []
|
41
|
+
0.upto(29) { |offset| auth_data[offset] = day_status(authority, offset) }
|
42
|
+
auth_data
|
43
|
+
end
|
44
|
+
|
45
|
+
# @returns [Symbol] status for a given day for an authority
|
46
|
+
def day_status(authority, offset)
|
47
|
+
day = offset_day(offset)
|
48
|
+
good_count = count_good(authority, day)
|
49
|
+
unknown_count = count_unknown(authority, day)
|
50
|
+
bad_count = count_bad(authority, day)
|
51
|
+
timeout_count = count_timeouts(authority, day)
|
52
|
+
status_determination(good_count, unknown_count, bad_count, timeout_count)
|
53
|
+
end
|
54
|
+
|
55
|
+
def status_determination(good_count, unknown_count, bad_count, timeout_count) # rubocop:disable Metrics/CyclomaticComplexity
|
56
|
+
total_count = good_count + unknown_count + bad_count
|
57
|
+
return NO_DATA if total_count.zero?
|
58
|
+
return FULLY_UP if good_count == total_count
|
59
|
+
return DOWN if bad_count == total_count
|
60
|
+
return BARELY_UP if unknown_count == total_count
|
61
|
+
return EXCESSIVE_TIMEOUTS if (timeout_count.to_f / total_count) > TIMEOUT_THRESHOLD
|
62
|
+
return MOSTLY_UP if (bad_count.to_f / total_count) < (1 - MOSTLY_UP_THRESHOLD)
|
63
|
+
BARELY_UP
|
64
|
+
end
|
65
|
+
|
66
|
+
def authorities_list
|
67
|
+
@authorities_list ||= authority_lister.authorities_list
|
68
|
+
end
|
69
|
+
|
70
|
+
def offset_day(offset)
|
71
|
+
@today ||= time_service.current_time
|
72
|
+
time_service.pretty_query_date(@today - offset.days)
|
73
|
+
end
|
74
|
+
|
75
|
+
def count_good(authority, day)
|
76
|
+
scenario_history_class.where(authority_name: authority)
|
77
|
+
.where(date: day)
|
78
|
+
.where(status: :good)
|
79
|
+
.count(:id)
|
80
|
+
end
|
81
|
+
|
82
|
+
def count_unknown(authority, day)
|
83
|
+
scenario_history_class.where(authority_name: authority)
|
84
|
+
.where(date: day)
|
85
|
+
.where(status: :unknown)
|
86
|
+
.count(:id)
|
87
|
+
end
|
88
|
+
|
89
|
+
def count_bad(authority, day)
|
90
|
+
scenario_history_class.where(authority_name: authority)
|
91
|
+
.where(date: day)
|
92
|
+
.where(status: :bad)
|
93
|
+
.count(:id)
|
94
|
+
end
|
95
|
+
|
96
|
+
def count_timeouts(authority, day)
|
97
|
+
scenario_history_class.where(authority_name: authority)
|
98
|
+
.where(date: day)
|
99
|
+
.where('err_message LIKE ?', "%timeout%")
|
100
|
+
.count(:id)
|
101
|
+
end
|
102
|
+
end
|
103
|
+
end
|
@@ -24,6 +24,12 @@ module QaServer
|
|
24
24
|
def pretty_date(dt)
|
25
25
|
dt.in_time_zone(QaServer.config.preferred_time_zone_name).strftime("%m/%d/%Y")
|
26
26
|
end
|
27
|
+
|
28
|
+
# @param dt [ActiveSupport::TimeWithZone] date time stamp
|
29
|
+
# @return [String] string version of date formatted with just date (e.g. "2020-02-01")
|
30
|
+
def pretty_query_date(dt)
|
31
|
+
dt.in_time_zone(QaServer.config.preferred_time_zone_name).strftime("%Y-%m-%d")
|
32
|
+
end
|
27
33
|
end
|
28
34
|
end
|
29
35
|
end
|
@@ -44,8 +44,6 @@
|
|
44
44
|
<select name="authority" id="authority" class="string optional form-control form-control" value="" aria-labelledby="authority" onchange="hide_data()">
|
45
45
|
<option value=""><%= t('qa_server.check_status.select_authority') %></option>
|
46
46
|
<option disabled>──────────</option>
|
47
|
-
<option value="<%= @presenter.value_all_collections %>"><%= t('qa_server.check_status.show_all') %></option>
|
48
|
-
<option disabled>──────────</option>
|
49
47
|
<% @authorities_list.each do |auth_name| %>
|
50
48
|
<option value="<%= auth_name %>"<%= " selected" if auth_name == selected_authority %>><%= auth_name.upcase %></option>
|
51
49
|
<% end %>
|
@@ -77,7 +75,10 @@
|
|
77
75
|
<% end %>
|
78
76
|
|
79
77
|
|
80
|
-
<div id="status-loading-message" class="wait-message"
|
78
|
+
<div id="status-loading-message" class="wait-message">
|
79
|
+
<%= t('qa_server.check_status.wait_message_ln1') %><br>
|
80
|
+
<%= t('qa_server.check_status.wait_message_ln2') %>
|
81
|
+
</div>
|
81
82
|
|
82
83
|
<% if @presenter.connection_status_data? %>
|
83
84
|
<div id="connection-status-section" class="status-section">
|
@@ -100,7 +101,7 @@
|
|
100
101
|
</tr>
|
101
102
|
<% end %>
|
102
103
|
<tr>
|
103
|
-
<td class="<%= @presenter.status_style_class(status
|
104
|
+
<td class="<%= @presenter.status_style_class(status) %>"><%= @presenter.status_label(status[:status]) %></td>
|
104
105
|
<td><%= status[:subauthority_name] %></td>
|
105
106
|
<td><%= status[:service] %></td>
|
106
107
|
<td><%= status[:action] %></td>
|
@@ -137,8 +138,8 @@
|
|
137
138
|
</tr>
|
138
139
|
<% end %>
|
139
140
|
<tr>
|
140
|
-
<td class="position <%= @presenter.status_style_class(status
|
141
|
-
<td class="position <%= @presenter.status_style_class(status
|
141
|
+
<td class="position <%= @presenter.status_style_class(status) %>"><%= status[:expected] %></td>
|
142
|
+
<td class="position <%= @presenter.status_style_class(status) %>"><%= status[:actual] %></td>
|
142
143
|
<td><%= status[:request_data] %></td>
|
143
144
|
<td><a href="<%= status[:target] %>"><%= status[:target] %></a></td>
|
144
145
|
<td><%= status[:authority_name] %></td>
|
@@ -17,7 +17,7 @@
|
|
17
17
|
<td class="status-neutral"><%= @presenter.tests_count %></td>
|
18
18
|
</tr>
|
19
19
|
</table>
|
20
|
-
<p class="status-update-dtstamp"><%=
|
20
|
+
<p class="status-update-dtstamp"><%= @presenter.last_updated %></p>
|
21
21
|
|
22
22
|
<% if @presenter.failures?%>
|
23
23
|
<div id="failures" class="status-section">
|
@@ -0,0 +1,30 @@
|
|
1
|
+
<% if @presenter.history? && @presenter.display_history_details?%>
|
2
|
+
<div id="availability-history" class="status-section">
|
3
|
+
<h3><%= t('qa_server.monitor_status.history.title') %></h3>
|
4
|
+
<% if @presenter.display_historical_graph? %>
|
5
|
+
<p class="status-update-dtstamp"><%= t('qa_server.monitor_status.history.range', from: @presenter.history_start, to: @presenter.history_end) %></p>
|
6
|
+
<%= image_tag(@presenter.historical_graph, alt: 'History Graph Unavailable') %>
|
7
|
+
<% end %>
|
8
|
+
|
9
|
+
<% if @presenter.display_historical_up_down? %>
|
10
|
+
<p class="status-update-dtstamp"><%= t('qa_server.monitor_status.history.range', from: @presenter.up_down_start, to: @presenter.up_down_end) %></p>
|
11
|
+
<table class="up-down-history">
|
12
|
+
<tr>
|
13
|
+
<th class="up-down-history"><%= t('qa_server.monitor_status.history.authority') %></th>
|
14
|
+
<% 0.upto(29) do %>
|
15
|
+
<th class='up-down-history'></th>
|
16
|
+
<% end %>
|
17
|
+
<td class='up-down-history'>Most Recent</td>
|
18
|
+
</tr>
|
19
|
+
<% @presenter.historical_up_down_data.each do |authority_name, status| %>
|
20
|
+
<tr>
|
21
|
+
<td class="connection-up-down"><%= authority_name %></td>
|
22
|
+
<% 29.downto(0) do |day| %>
|
23
|
+
<td class="connection-up-down <%= @presenter.historical_up_down_status_class(status, day) %>"></td>
|
24
|
+
<% end %>
|
25
|
+
</tr>
|
26
|
+
<% end %>
|
27
|
+
</table>
|
28
|
+
<% end %>
|
29
|
+
</div>
|
30
|
+
<% end %>
|
@@ -25,12 +25,12 @@ en:
|
|
25
25
|
check_status:
|
26
26
|
title: Check Status
|
27
27
|
select_authority: Select authority...
|
28
|
-
show_all: ALL Authorities (SLOW)
|
29
28
|
connections: Check Connection Status only
|
30
29
|
accuracy: Check Accuracy only
|
31
30
|
comparison: Compare Accuracy
|
32
31
|
all_checks: Run all checks
|
33
|
-
|
32
|
+
wait_message_ln1: "Please wait while the status is verified."
|
33
|
+
wait_message_ln2: "This may be slow for large authorities or ones with a lot of tests."
|
34
34
|
connection_checks: Connection Checks
|
35
35
|
accuracy_checks: Accuracy Checks for Search Results
|
36
36
|
comparison_checks: Comparison of Accuracy Checks
|
@@ -58,7 +58,11 @@ en:
|
|
58
58
|
wait_message: Fetching term...
|
59
59
|
term_results: Results
|
60
60
|
monitor_status:
|
61
|
-
title:
|
61
|
+
title: Monitor Status
|
62
|
+
permission_denied: 'Permission denied. Unable to %{action}.'
|
63
|
+
refreshing_tests: Refreshing tests.
|
64
|
+
refreshing_history: Refreshing connection history.
|
65
|
+
refreshing_performance: Refreshing performance metrics.
|
62
66
|
summary:
|
63
67
|
title: Latest Monitored Status
|
64
68
|
summary_table: Summary
|
@@ -68,10 +72,10 @@ en:
|
|
68
72
|
failing_tests: Failing Tests
|
69
73
|
total_tests: TOTAL Tests
|
70
74
|
last_updated: 'Status last updated %{date} ET'
|
75
|
+
no_data: 'No Data Available (Common Cause: first time tests are running)'
|
71
76
|
failures:
|
72
77
|
title: Failures During Latest Status Update
|
73
78
|
status: Status
|
74
|
-
authority: Authority
|
75
79
|
subauthority: Subauthority
|
76
80
|
service: Service
|
77
81
|
action: Action
|
@@ -79,7 +83,6 @@ en:
|
|
79
83
|
errmsg: Errors
|
80
84
|
history:
|
81
85
|
title: Authority Connection History
|
82
|
-
since: 'Since %{date} ET'
|
83
86
|
range: 'From %{from} to %{to}'
|
84
87
|
authority: Authority
|
85
88
|
days_failing: Days Failing
|
@@ -100,7 +103,6 @@ en:
|
|
100
103
|
graph_load_time_ms: Graph Load Time (ms)
|
101
104
|
normalization_time_ms: Normalization Time (ms)
|
102
105
|
retrieve_time_ms: Retrieve Time (ms)
|
103
|
-
full_request_time_ms: Full Request Time (ms)
|
104
106
|
x_axis_hour: Hour
|
105
107
|
x_axis_day: Day
|
106
108
|
x_axis_month: Month
|
@@ -113,7 +115,6 @@ en:
|
|
113
115
|
datatable_month_desc: 'Month'
|
114
116
|
datatable_year_desc: 'Year'
|
115
117
|
datarange: 'From %{from} to %{to}'
|
116
|
-
authority: Authority
|
117
118
|
average_times: Average (ms)
|
118
119
|
fastest_times: 10th percentile (ms)
|
119
120
|
slowest_times: 90th percentile (ms)
|
data/lib/generators/qa_server/templates/config/authorities/linked_data/getty_tgn_ld4l_cache.json
CHANGED
@@ -3,8 +3,8 @@
|
|
3
3
|
"service_uri": "http://ld4l.org/ld4l_services/cache",
|
4
4
|
"prefixes": {
|
5
5
|
"getty": "http://vocab.getty.edu/ontology#",
|
6
|
-
"
|
7
|
-
"
|
6
|
+
"skosxl": "http://www.w3.org/2008/05/skos-xl#",
|
7
|
+
"vivo": "http://vivoweb.org/ontology/core#"
|
8
8
|
},
|
9
9
|
"term": {
|
10
10
|
"url": {
|
@@ -28,11 +28,9 @@
|
|
28
28
|
"term_id": "URI",
|
29
29
|
"results": {
|
30
30
|
"id_ldpath": "dc:identifier ::xsd:string",
|
31
|
-
"label_ldpath": "
|
32
|
-
"altlabel_ldpath": "
|
33
|
-
"broader_ldpath": "
|
34
|
-
"narrower_ldpath": "skos:narrower ::xsd:anyURI",
|
35
|
-
"sameas_ldpath": "skos:exactMatch ::xsd:anyURI"
|
31
|
+
"label_ldpath": "^foaf:focus/skosxl:prefLabel/skosxl:literalForm :: xsd:string",
|
32
|
+
"altlabel_ldpath": "^foaf:focus/skosxl:altLabel/skosxl:literalForm :: xsd:string",
|
33
|
+
"broader_ldpath": "^foaf:focus/getty:broaderPreferred ::xsd:anyURI"
|
36
34
|
}
|
37
35
|
},
|
38
36
|
"search": {
|
@@ -79,8 +77,7 @@
|
|
79
77
|
},
|
80
78
|
"total_count_ldpath": "vivo:count",
|
81
79
|
"results": {
|
82
|
-
"
|
83
|
-
"label_ldpath": "skos:prefLabel ::xsd:string",
|
80
|
+
"label_ldpath": "^foaf:focus/skosxl:prefLabel/skosxl:literalForm :: xsd:string",
|
84
81
|
"sort_ldpath": "vivo:rank ::xsd:string"
|
85
82
|
},
|
86
83
|
"context": {
|
@@ -88,28 +85,42 @@
|
|
88
85
|
{
|
89
86
|
"property_label_i18n": "qa.linked_data.authority.getty_tgn_ld4l_cache.preferred_label",
|
90
87
|
"property_label_default": "Preferred label",
|
91
|
-
"ldpath": "^foaf:focus/
|
88
|
+
"ldpath": "^foaf:focus/skosxl:prefLabel/skosxl:literalForm :: xsd:string",
|
92
89
|
"selectable": true,
|
93
90
|
"drillable": false
|
94
91
|
},
|
95
92
|
{
|
96
93
|
"property_label_i18n": "qa.linked_data.authority.getty_tgn_ld4l_cache.variant_label",
|
97
94
|
"property_label_default": "Variant Label",
|
98
|
-
"ldpath": "^foaf:focus/
|
95
|
+
"ldpath": "^foaf:focus/skosxl:altLabel/skosxl:literalForm :: xsd:string",
|
96
|
+
"selectable": false,
|
97
|
+
"drillable": false
|
98
|
+
},
|
99
|
+
{
|
100
|
+
"property_label_i18n": "qa.linked_data.authority.getty_tgn_ld4l_cache.parent_body",
|
101
|
+
"property_label_default": "Parent body",
|
102
|
+
"ldpath": "^foaf:focus/getty:parentString :: xsd:string",
|
103
|
+
"selectable": false,
|
104
|
+
"drillable": false
|
105
|
+
},
|
106
|
+
{
|
107
|
+
"property_label_i18n": "qa.linked_data.authority.getty_tgn_ld4l_cache.parent_body_abbreviation",
|
108
|
+
"property_label_default": "Parent body (abbreviation)",
|
109
|
+
"ldpath": "^foaf:focus/getty:parentStringAbbrev :: xsd:string",
|
99
110
|
"selectable": false,
|
100
111
|
"drillable": false
|
101
112
|
},
|
102
113
|
{
|
103
114
|
"property_label_i18n": "qa.linked_data.authority.getty_tgn_ld4l_cache.place_type",
|
104
115
|
"property_label_default": "Place type",
|
105
|
-
"ldpath": "^foaf:focus/
|
116
|
+
"ldpath": "^foaf:focus/getty:placeTypePreferred :: xsd:string",
|
106
117
|
"selectable": false,
|
107
118
|
"drillable": false
|
108
119
|
},
|
109
120
|
{
|
110
121
|
"property_label_i18n": "qa.linked_data.authority.getty_aat_ld4l_cache.broader",
|
111
122
|
"property_label_default": "Broader",
|
112
|
-
"ldpath": "^foaf:focus/
|
123
|
+
"ldpath": "^foaf:focus/getty:broaderPreferred :: xsd:string",
|
113
124
|
"selectable": false,
|
114
125
|
"drillable": true,
|
115
126
|
"expansion_label_ldpath": "skos:prefLabel ::xsd:string",
|
@@ -119,4 +130,3 @@
|
|
119
130
|
}
|
120
131
|
}
|
121
132
|
}
|
122
|
-
|