qa_server 7.2.1 → 7.6.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.
Files changed (116) hide show
  1. checksums.yaml +5 -5
  2. data/.rubocop_fixme.yml +3 -0
  3. data/.travis.yml +4 -5
  4. data/CHANGELOG.md +41 -0
  5. data/Rakefile +1 -1
  6. data/app/assets/stylesheets/qa_server/_check-status.scss +36 -0
  7. data/app/cache_processors/concerns/qa_server/cache_keys.rb +0 -5
  8. data/app/cache_processors/qa_server/cache_expiry_service.rb +13 -8
  9. data/app/cache_processors/qa_server/job_id_cache.rb +29 -0
  10. data/app/cache_processors/qa_server/performance_cache.rb +34 -34
  11. data/app/cache_processors/qa_server/performance_day_graph_cache.rb +27 -0
  12. data/app/cache_processors/qa_server/performance_month_graph_cache.rb +27 -0
  13. data/app/cache_processors/qa_server/performance_year_graph_cache.rb +27 -0
  14. data/app/cache_processors/qa_server/scenario_history_cache.rb +7 -7
  15. data/app/cache_processors/qa_server/scenario_history_graph_cache.rb +12 -17
  16. data/app/cache_processors/qa_server/scenario_run_cache.rb +8 -8
  17. data/app/cache_processors/qa_server/scenario_run_failures_cache.rb +7 -7
  18. data/app/cache_processors/qa_server/scenario_run_summary_cache.rb +7 -7
  19. data/app/controllers/concerns/qa_server/authority_validation_behavior.rb +49 -44
  20. data/app/controllers/qa_server/check_status_controller.rb +92 -22
  21. data/app/controllers/qa_server/fetch_controller.rb +36 -36
  22. data/app/controllers/qa_server/monitor_status_controller.rb +108 -108
  23. data/app/jobs/qa_server/history_graph_job.rb +28 -0
  24. data/app/jobs/qa_server/monitor_tests_job.rb +19 -39
  25. data/app/jobs/qa_server/performance_day_graph_job.rb +45 -0
  26. data/app/jobs/qa_server/performance_month_graph_job.rb +45 -0
  27. data/app/jobs/qa_server/performance_per_byte_job.rb +85 -0
  28. data/app/jobs/qa_server/performance_year_graph_job.rb +45 -0
  29. data/app/loggers/qa_server/scenario_logger.rb +74 -4
  30. data/app/models/concerns/qa_server/performance_history_data_keys.rb +8 -0
  31. data/app/models/qa_server/authority_scenario.rb +4 -4
  32. data/app/models/qa_server/authority_status.rb +2 -2
  33. data/app/models/qa_server/authority_status_failure.rb +1 -1
  34. data/app/models/qa_server/performance_history.rb +2 -2
  35. data/app/models/qa_server/scenario_run_history.rb +52 -52
  36. data/app/models/qa_server/scenario_run_registry.rb +2 -2
  37. data/app/models/qa_server/scenarios.rb +26 -26
  38. data/app/models/qa_server/search_scenario.rb +24 -13
  39. data/app/models/qa_server/term_scenario.rb +29 -29
  40. data/app/prepends/prepended_linked_data/find_term.rb +40 -40
  41. data/app/prepends/prepended_linked_data/search_query.rb +36 -36
  42. data/app/prepends/prepended_rdf/rdf_graph.rb +7 -7
  43. data/app/presenters/concerns/qa_server/monitor_status/performance_datatable_behavior.rb +32 -32
  44. data/app/presenters/concerns/qa_server/monitor_status/performance_graph_behavior.rb +64 -64
  45. data/app/presenters/qa_server/check_status_presenter.rb +63 -7
  46. data/app/presenters/qa_server/monitor_status/current_status_presenter.rb +9 -8
  47. data/app/services/concerns/qa_server/gruff_graph.rb +16 -16
  48. data/app/services/qa_server/authority_loader_service.rb +14 -14
  49. data/app/services/qa_server/authority_validator_service.rb +1 -0
  50. data/app/services/qa_server/database_migrator.rb +14 -14
  51. data/app/services/qa_server/history_graphing_service.rb +30 -30
  52. data/app/services/qa_server/performance_calculator_service.rb +80 -80
  53. data/app/services/qa_server/performance_datatable_service.rb +35 -35
  54. data/app/services/qa_server/performance_graph_data_service.rb +28 -28
  55. data/app/services/qa_server/performance_graphing_service.rb +58 -58
  56. data/app/services/qa_server/performance_per_byte_calculator_service.rb +88 -0
  57. data/app/services/qa_server/performance_per_byte_data_service.rb +41 -0
  58. data/app/services/qa_server/scenarios_loader_service.rb +1 -1
  59. data/app/services/qa_server/time_period_service.rb +21 -21
  60. data/app/validators/qa_server/scenario_validator.rb +99 -87
  61. data/app/validators/qa_server/search_scenario_validator.rb +67 -61
  62. data/app/validators/qa_server/term_scenario_validator.rb +20 -15
  63. data/app/views/qa_server/check_status/index.html.erb +120 -24
  64. data/app/views/qa_server/monitor_status/_test_summary.html.erb +1 -1
  65. data/config/i18n-tasks.yml +133 -0
  66. data/config/locales/qa_server.en.yml +16 -0
  67. data/lib/generators/qa_server/assets_generator.rb +4 -4
  68. data/lib/generators/qa_server/templates/config/authorities/linked_data/cerl_ld4l_cache.json +2 -2
  69. data/lib/generators/qa_server/templates/config/authorities/linked_data/getty_aat_ld4l_cache.json +62 -1
  70. data/lib/generators/qa_server/templates/config/authorities/linked_data/getty_tgn_ld4l_cache.json +45 -11
  71. data/lib/generators/qa_server/templates/config/authorities/linked_data/getty_ulan_ld4l_cache.json +104 -8
  72. data/lib/generators/qa_server/templates/config/authorities/linked_data/isni_ld4l_cache.json +90 -0
  73. data/lib/generators/qa_server/templates/config/authorities/linked_data/ligatus_ld4l_cache.json +133 -0
  74. data/lib/generators/qa_server/templates/config/authorities/linked_data/locnames_rwo2_ld4l_cache.json +248 -0
  75. data/lib/generators/qa_server/templates/config/authorities/linked_data/locnames_rwo3_ld4l_cache.json +248 -0
  76. data/lib/generators/qa_server/templates/config/authorities/linked_data/locnames_rwo_ld4l_cache.json +4 -4
  77. data/lib/generators/qa_server/templates/config/authorities/linked_data/locvocabs_ld4l_cache.json +117 -0
  78. data/lib/generators/qa_server/templates/config/authorities/linked_data/mesh_nlm_ld4l_cache.json +135 -3
  79. data/lib/generators/qa_server/templates/config/authorities/linked_data/oclcfast_direct.json +5 -0
  80. data/lib/generators/qa_server/templates/config/authorities/linked_data/oclcfast_ld4l_cache.json +2 -4
  81. data/lib/generators/qa_server/templates/config/authorities/linked_data/scenarios/agrovoc_direct_validation.yml +31 -0
  82. data/lib/generators/qa_server/templates/config/authorities/linked_data/scenarios/agrovoc_ld4l_cache_validation.yml +31 -0
  83. data/lib/generators/qa_server/templates/config/authorities/linked_data/scenarios/cerl_ld4l_cache_validation.yml +26 -14
  84. data/lib/generators/qa_server/templates/config/authorities/linked_data/scenarios/dbpedia_ld4l_cache_validation.yml +33 -0
  85. data/lib/generators/qa_server/templates/config/authorities/linked_data/scenarios/geonames_direct_validation.yml +35 -0
  86. data/lib/generators/qa_server/templates/config/authorities/linked_data/scenarios/geonames_ld4l_cache_validation.yml +55 -5
  87. data/lib/generators/qa_server/templates/config/authorities/linked_data/scenarios/getty_aat_ld4l_cache_validation.yml +253 -0
  88. data/lib/generators/qa_server/templates/config/authorities/linked_data/scenarios/getty_tgn_ld4l_cache_validation.yml +31 -1
  89. data/lib/generators/qa_server/templates/config/authorities/linked_data/scenarios/getty_ulan_ld4l_cache_validation.yml +38 -1
  90. data/lib/generators/qa_server/templates/config/authorities/linked_data/scenarios/isni_ld4l_cache_validation.yml +10 -0
  91. data/lib/generators/qa_server/templates/config/authorities/linked_data/scenarios/ligatus_ld4l_cache_validation.yml +36 -0
  92. data/lib/generators/qa_server/templates/config/authorities/linked_data/scenarios/locdemographics_ld4l_cache_validation.yml +69 -44
  93. data/lib/generators/qa_server/templates/config/authorities/linked_data/scenarios/locgenres_ld4l_cache_validation.yml +22 -0
  94. data/lib/generators/qa_server/templates/config/authorities/linked_data/scenarios/locnames_ld4l_cache_validation.yml +65 -0
  95. data/lib/generators/qa_server/templates/config/authorities/linked_data/scenarios/locnames_rwo2_ld4l_cache_validation.yml +78 -0
  96. data/lib/generators/qa_server/templates/config/authorities/linked_data/scenarios/locnames_rwo3_ld4l_cache_validation.yml +73 -0
  97. data/lib/generators/qa_server/templates/config/authorities/linked_data/scenarios/locnames_rwo_ld4l_cache_validation.yml +71 -3
  98. data/lib/generators/qa_server/templates/config/authorities/linked_data/scenarios/locperformance_ld4l_cache_validation.yml +6 -0
  99. data/lib/generators/qa_server/templates/config/authorities/linked_data/scenarios/locsubjects_ld4l_cache_validation.yml +30 -0
  100. data/lib/generators/qa_server/templates/config/authorities/linked_data/scenarios/locvocabs_ld4l_cache_validation.yml +430 -0
  101. data/lib/generators/qa_server/templates/config/authorities/linked_data/scenarios/mesh_nlm_ld4l_cache_validation.yml +54 -1
  102. data/lib/generators/qa_server/templates/config/authorities/linked_data/scenarios/nalt_ld4l_cache_validation.yml +37 -0
  103. data/lib/generators/qa_server/templates/config/authorities/linked_data/scenarios/oclc_fast_validation.yml +71 -5
  104. data/lib/generators/qa_server/templates/config/authorities/linked_data/scenarios/oclcfast_direct_validation.yml +73 -2
  105. data/lib/generators/qa_server/templates/config/authorities/linked_data/scenarios/oclcfast_ld4l_cache_validation.yml +73 -0
  106. data/lib/generators/qa_server/templates/config/authorities/linked_data/scenarios/rda_registry_ld4l_cache_validation.yml +307 -0
  107. data/lib/qa_server/configuration.rb +28 -24
  108. data/lib/qa_server/version.rb +1 -1
  109. data/qa_server.gemspec +6 -5
  110. data/spec/feature/accuracy_spec.rb +32 -0
  111. data/spec/i18n_spec.rb +36 -0
  112. data/spec/spec_helper.rb +4 -0
  113. metadata +74 -20
  114. data/app/cache_processors/qa_server/performance_daily_graph_cache.rb +0 -60
  115. data/app/cache_processors/qa_server/performance_hourly_graph_cache.rb +0 -65
  116. data/app/cache_processors/qa_server/performance_monthly_graph_cache.rb +0 -60
@@ -5,13 +5,13 @@ module QaServer
5
5
  # @return [Qa::Authorities::LinkedData::GenericAuthority] authority instance the scenarios run against
6
6
  attr_reader :authority
7
7
 
8
- # @return [String] name of the authority the scenarios run against (e.g. 'agrovoc_direct')
8
+ # @return [Symbol] name of the authority the scenarios run against (e.g. :AGROVOC_DIRECT)
9
9
  attr_reader :authority_name
10
10
 
11
11
  # @return [String] identifies the primary service provider (e.g. 'ld4l_cache', 'direct', etc.)
12
12
  attr_reader :service
13
13
 
14
- # @return [String] name of the subauthority the scenario runs against
14
+ # @return [String] name of the subauthority the scenario runs against (e.g. 'person')
15
15
  attr_reader :subauthority_name
16
16
 
17
17
  # @return [Integer] the minimum size of data that must be returned for the scenario to be considered passing
@@ -21,14 +21,14 @@ module QaServer
21
21
  MIN_EXPECTED_SIZE = 200
22
22
 
23
23
  # @param authority [Qa::Authorities::LinkedData::GenericAuthority] the instance of the QA authority
24
- # @param authoity_name [String] the name of the authority the scenario tests (e.g. "agrovoc_direct")
24
+ # @param authority_name [Symbol] the name of the authority the scenario tests (e.g. :AGROVOC_DIRECT)
25
25
  # @param authority_scenario_config [Hash] configurations from the yml file that pertain to all scenarios regardless of type
26
26
  # @param scenario_config [Hash] configuration from the yml file that are specific to a type of scenario
27
27
  def initialize(authority:, authority_name:, authority_scenario_config:, scenario_config: nil)
28
28
  @authority = authority
29
29
  @authority_name = authority_name
30
30
  @service = authority_scenario_config['service']
31
- @context = authority_scenario_config.fetch('context', false)
31
+ @context = scenario_config.key?("position") ? false : authority_scenario_config.fetch('context', false)
32
32
  @subauthority_name = DEFAULT_SUBAUTH
33
33
  @min_result_size = MIN_EXPECTED_SIZE
34
34
  end
@@ -1,9 +1,9 @@
1
1
  # frozen_string_literal: true
2
2
  # Provide access to the authority_status database table which tracks a summary of status data over time.
3
3
  module QaServer
4
- class AuthorityStatus < ActiveRecord::Base
4
+ class AuthorityStatus < ApplicationRecord
5
5
  self.table_name = 'authority_status'
6
- has_many :authority_status_failure, foreign_key: :authority_status_id
6
+ has_many :authority_status_failure, dependent: :destroy
7
7
 
8
8
  # Get the latest saved status.
9
9
  def self.latest
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
  # Provide access to the authority_status_failure database table which tracks specific failures over time.
3
3
  module QaServer
4
- class AuthorityStatusFailure < ActiveRecord::Base
4
+ class AuthorityStatusFailure < ApplicationRecord
5
5
  self.table_name = 'authority_status_failure'
6
6
  belongs_to :authority_status
7
7
  end
@@ -1,10 +1,10 @@
1
1
  # frozen_string_literal: true
2
2
  # Provide access to the scenario_results_history database table which tracks specific scenario runs over time.
3
3
  module QaServer
4
- class PerformanceHistory < ActiveRecord::Base
4
+ class PerformanceHistory < ApplicationRecord
5
5
  self.table_name = 'performance_history'
6
6
 
7
- enum action: [:fetch, :search]
7
+ enum action: { fetch: 0, search: 1 }
8
8
 
9
9
  class_attribute :datatable_data_service_class, :graph_data_service_class
10
10
  self.datatable_data_service_class = QaServer::PerformanceDatatableService
@@ -1,11 +1,11 @@
1
1
  # frozen_string_literal: true
2
2
  # Provide access to the scenario_run_history database table which tracks scenario runs over time.
3
3
  module QaServer
4
- class ScenarioRunHistory < ActiveRecord::Base
4
+ class ScenarioRunHistory < ApplicationRecord
5
5
  self.table_name = 'scenario_run_history'
6
6
  belongs_to :scenario_run_registry
7
- enum scenario_type: [:connection, :accuracy, :performance], _suffix: :type
8
- enum status: [:good, :bad, :unknown], _suffix: true
7
+ enum scenario_type: { connection: 0, accuracy: 1, performance: 2 }, _suffix: :type
8
+ enum status: { good: 0, bad: 1, unknown: 2 }, _suffix: true
9
9
 
10
10
  GOOD_MARKER = '√'
11
11
  BAD_MARKER = 'X'
@@ -96,66 +96,66 @@ module QaServer
96
96
  end
97
97
  end
98
98
 
99
- private
99
+ private
100
100
 
101
- def day_count(auth, days)
102
- days&.key?(auth) ? days[auth] : 0
103
- end
101
+ def day_count(auth, days)
102
+ days&.key?(auth) ? days[auth] : 0
103
+ end
104
104
 
105
- def count_days(status)
106
- where = time_period_where
107
- where[:status] = status
108
- auths = QaServer::ScenarioRunHistory.where(where).select("authority_name").group("date, authority_name")
109
- .order("authority_name").pluck(:authority_name)
110
- auths.each_with_object({}) do |auth, hash|
111
- hash[auth] = 0 unless hash.key? auth
112
- hash[auth] += 1
113
- end
105
+ def count_days(status)
106
+ where = time_period_where
107
+ where[:status] = status
108
+ auths = QaServer::ScenarioRunHistory.where(where).select("authority_name").group("date, authority_name")
109
+ .order("authority_name").pluck(:authority_name)
110
+ auths.each_with_object({}) do |auth, hash|
111
+ hash[auth] = 0 unless hash.key? auth
112
+ hash[auth] += 1
114
113
  end
114
+ end
115
115
 
116
- def authorities_in_run(run_id:)
117
- QaServer::ScenarioRunHistory.where(scenario_run_registry_id: run_id).pluck(:authority_name).uniq
118
- end
116
+ def authorities_in_run(run_id:)
117
+ QaServer::ScenarioRunHistory.where(scenario_run_registry_id: run_id).pluck(:authority_name).uniq
118
+ end
119
119
 
120
- def authorities_with_failures_in_run(run_id:)
121
- QaServer::ScenarioRunHistory.where(scenario_run_registry_id: run_id).where.not(status: 'good').pluck('authority_name').uniq
122
- end
120
+ def authorities_with_failures_in_run(run_id:)
121
+ QaServer::ScenarioRunHistory.where(scenario_run_registry_id: run_id).where.not(status: 'good').pluck('authority_name').uniq
122
+ end
123
123
 
124
- # @return [Hash] status counts across all authorities (used for current test summary)
125
- # @example { "good" => 23, "bad" => 3, "unknown" => 0 }
126
- def status_counts_in_run(run_id:)
127
- status = QaServer::ScenarioRunHistory.group('status').where(scenario_run_registry_id: run_id).count
128
- status["good"] = 0 unless status.key? "good"
129
- status["bad"] = 0 unless status.key? "bad"
130
- status["unknown"] = 0 unless status.key? "unknown"
131
- status
132
- end
124
+ # @return [Hash] status counts across all authorities (used for current test summary)
125
+ # @example { "good" => 23, "bad" => 3, "unknown" => 0 }
126
+ def status_counts_in_run(run_id:)
127
+ status = QaServer::ScenarioRunHistory.group('status').where(scenario_run_registry_id: run_id).count
128
+ status["good"] = 0 unless status.key? "good"
129
+ status["bad"] = 0 unless status.key? "bad"
130
+ status["unknown"] = 0 unless status.key? "unknown"
131
+ status
132
+ end
133
133
 
134
- def runs_per_authority_for_time_period
135
- status = QaServer::ScenarioRunHistory.joins(:scenario_run_registry).where(time_period_where).group('authority_name', 'status').count
136
- status.each_with_object({}) do |(k, v), hash|
137
- h = hash[k[0]] || { "good" => 0, "bad" => 0 } # initialize for an authority if it doesn't already exist
138
- h[k[1]] = v
139
- hash[k[0]] = h
140
- end
134
+ def runs_per_authority_for_time_period
135
+ status = QaServer::ScenarioRunHistory.joins(:scenario_run_registry).where(time_period_where).group('authority_name', 'status').count
136
+ status.each_with_object({}) do |(k, v), hash|
137
+ h = hash[k[0]] || { "good" => 0, "bad" => 0 } # initialize for an authority if it doesn't already exist
138
+ h[k[1]] = v
139
+ hash[k[0]] = h
141
140
  end
141
+ end
142
142
 
143
- def expected_time_period
144
- QaServer.config.historical_datatable_default_time_period
145
- end
143
+ def expected_time_period
144
+ QaServer.config.historical_datatable_default_time_period
145
+ end
146
146
 
147
- def time_period_where
148
- case expected_time_period
149
- when :day
150
- QaServer::TimePeriodService.where_clause_for_last_24_hours(dt_table: :scenario_run_history, dt_column: :date)
151
- when :month
152
- QaServer::TimePeriodService.where_clause_for_last_30_days(dt_table: :scenario_run_history, dt_column: :date)
153
- when :year
154
- QaServer::TimePeriodService.where_clause_for_last_12_months(dt_table: :scenario_run_history, dt_column: :date)
155
- else
156
- all_records
157
- end
147
+ def time_period_where
148
+ case expected_time_period
149
+ when :day
150
+ QaServer::TimePeriodService.where_clause_for_last_24_hours(dt_table: :scenario_run_history, dt_column: :date)
151
+ when :month
152
+ QaServer::TimePeriodService.where_clause_for_last_30_days(dt_table: :scenario_run_history, dt_column: :date)
153
+ when :year
154
+ QaServer::TimePeriodService.where_clause_for_last_12_months(dt_table: :scenario_run_history, dt_column: :date)
155
+ else
156
+ all_records
158
157
  end
158
+ end
159
159
  end
160
160
  end
161
161
  end
@@ -1,9 +1,9 @@
1
1
  # frozen_string_literal: true
2
2
  # Provide access to the scenario_run_registry database table which registers each run of tests made over time.
3
3
  module QaServer
4
- class ScenarioRunRegistry < ActiveRecord::Base
4
+ class ScenarioRunRegistry < ApplicationRecord
5
5
  self.table_name = 'scenario_run_registry'
6
- has_many :scenario_run_history, foreign_key: :scenario_run_registry_id
6
+ has_many :scenario_run_history, dependent: :destroy
7
7
 
8
8
  # @return [ScenarioRunRegistry] registry data for latest run (e.g. id, dt_stamp)
9
9
  def self.latest_run
@@ -32,38 +32,38 @@ module QaServer
32
32
  parse_search_scenarios
33
33
  end
34
34
 
35
- private
35
+ private
36
36
 
37
- def parse_term_scenarios
38
- @term_scenarios = []
39
- term_scenarios_config.each do |term_scenario_config|
40
- @term_scenarios << QaServer::TermScenario.new(authority: authority,
41
- authority_name: authority_name,
42
- authority_scenario_config: authority_scenario_config,
43
- scenario_config: term_scenario_config)
44
- end
37
+ def parse_term_scenarios
38
+ @term_scenarios = []
39
+ term_scenarios_config.each do |term_scenario_config|
40
+ @term_scenarios << QaServer::TermScenario.new(authority: authority,
41
+ authority_name: authority_name,
42
+ authority_scenario_config: authority_scenario_config,
43
+ scenario_config: term_scenario_config)
45
44
  end
45
+ end
46
46
 
47
- def parse_search_scenarios
48
- @search_scenarios = []
49
- search_scenarios_config.each do |search_scenario_config|
50
- @search_scenarios << QaServer::SearchScenario.new(authority: authority,
51
- authority_name: authority_name,
52
- authority_scenario_config: authority_scenario_config,
53
- scenario_config: search_scenario_config)
54
- end
47
+ def parse_search_scenarios
48
+ @search_scenarios = []
49
+ search_scenarios_config.each do |search_scenario_config|
50
+ @search_scenarios << QaServer::SearchScenario.new(authority: authority,
51
+ authority_name: authority_name,
52
+ authority_scenario_config: authority_scenario_config,
53
+ scenario_config: search_scenario_config)
55
54
  end
55
+ end
56
56
 
57
- def authority_scenario_config
58
- scenarios_config[AUTHORITY_SCENARIO]
59
- end
57
+ def authority_scenario_config
58
+ scenarios_config[AUTHORITY_SCENARIO]
59
+ end
60
60
 
61
- def term_scenarios_config
62
- scenarios_config[TERM_SCENARIOS] || []
63
- end
61
+ def term_scenarios_config
62
+ scenarios_config[TERM_SCENARIOS] || []
63
+ end
64
64
 
65
- def search_scenarios_config
66
- scenarios_config[SEARCH_SCENARIOS] || []
67
- end
65
+ def search_scenarios_config
66
+ scenarios_config[SEARCH_SCENARIOS] || []
67
+ end
68
68
  end
69
69
  end
@@ -20,10 +20,10 @@ module QaServer
20
20
  DEFAULT_SUBJECT_URI = nil
21
21
 
22
22
  # @param authority [Qa::Authorities::LinkedData::GenericAuthority] the instance of the QA authority
23
- # @param authoity_name [Symbol] the name of the authority the scenario tests (e.g. :AGROVOC_DIRECT)
23
+ # @param authority_name [Symbol] the name of the authority the scenario tests (e.g. :AGROVOC_DIRECT)
24
24
  # @param authority_scenario_config [Hash] configurations from the yml file that pertain to all scenarios regardless of type
25
25
  # @param scenario_config [Hash] configuration from the yml file that are specific to a search scenario
26
- def initialize(authority:, authority_name:, authority_scenario_config:, scenario_config:)
26
+ def initialize(authority:, authority_name:, authority_scenario_config:, scenario_config:) # rubocop:disable Metrics/CyclomaticComplexity
27
27
  super
28
28
  @query = scenario_config['query']
29
29
  @subauthority_name = scenario_config['subauth'] || DEFAULT_SUBAUTH
@@ -31,6 +31,7 @@ module QaServer
31
31
  @replacements = scenario_config['replacements'] || DEFAULT_REPLACEMENTS
32
32
  @expected_by_position = scenario_config['position'] || DEFAULT_POSITION
33
33
  @subject_uri = scenario_config['subject_uri'] || DEFAULT_SUBJECT_URI
34
+ @pending = scenario_config['pending'] || false
34
35
  end
35
36
 
36
37
  # Generate an example URL that can be called in a browser or through curl
@@ -42,18 +43,28 @@ module QaServer
42
43
  "#{prefix}?q=#{query}#{url_replacements}#{context}"
43
44
  end
44
45
 
45
- private
46
+ def pending?
47
+ @pending
48
+ end
49
+
50
+ private
46
51
 
47
- # Convert replacements hash into URL parameters
48
- def url_replacements
49
- return "&maxRecords=#{MAX_RECORDS}" unless replacements
50
- param_replacements = ""
51
- replacements.each { |k, v| param_replacements += "&#{k}=#{v}" }
52
- param_replacements
53
- end
52
+ # Convert replacements hash into URL parameters
53
+ def url_replacements
54
+ return "&maxRecords=#{MAX_RECORDS}" unless replacements
55
+ param_replacements = ""
56
+ replacements.each { |k, v| param_replacements += "&#{k}=#{v}" }
57
+ param_replacements
58
+ end
54
59
 
55
- def subauthority?
56
- subauthority_name.present?
57
- end
60
+ def subauthority?
61
+ subauthority_name.present?
62
+ end
63
+
64
+ def context?
65
+ # don't include context for accuracy tests
66
+ return false if expected_by_position.present?
67
+ super
68
+ end
58
69
  end
59
70
  end
@@ -26,41 +26,41 @@ module QaServer
26
26
  authority.term_id_expects_uri? ? fetch_url : show_url
27
27
  end
28
28
 
29
- private
29
+ private
30
30
 
31
- # Generate an example URL that can be called in a browser or through curl
32
- # @return [String] the example URL
33
- def show_url
34
- "#{prefix_for_url('show')}/#{url_identifier}"
35
- end
31
+ # Generate an example URL that can be called in a browser or through curl
32
+ # @return [String] the example URL
33
+ def show_url
34
+ "#{prefix_for_url('show')}/#{url_identifier}"
35
+ end
36
36
 
37
- # Generate an example URL that can be called in a browser or through curl
38
- # @return [String] the example URL
39
- def fetch_url
40
- "#{prefix_for_url('fetch')}?uri=#{url_identifier}"
41
- end
37
+ # Generate an example URL that can be called in a browser or through curl
38
+ # @return [String] the example URL
39
+ def fetch_url
40
+ "#{prefix_for_url('fetch')}?uri=#{url_identifier}"
41
+ end
42
42
 
43
- def prefix_for_url(action)
44
- subauth = "/#{subauthority_name}" if subauthority_name.present?
45
- "#{QaServer::Engine.qa_engine_mount}/#{action}/linked_data/#{authority_name.downcase}#{subauth}"
46
- end
43
+ def prefix_for_url(action)
44
+ subauth = "/#{subauthority_name}" if subauthority_name.present?
45
+ "#{QaServer::Engine.qa_engine_mount}/#{action}/linked_data/#{authority_name.downcase}#{subauth}"
46
+ end
47
47
 
48
- # Convert identifier into URL safe version with encoding if needed.
49
- def url_identifier
50
- return uri_encode(identifier) if encode?
51
- identifier
52
- end
48
+ # Convert identifier into URL safe version with encoding if needed.
49
+ def url_identifier
50
+ return uri_encode(identifier) if encode?
51
+ identifier
52
+ end
53
53
 
54
- def subauthority?
55
- subauthority_name.present?
56
- end
54
+ def subauthority?
55
+ subauthority_name.present?
56
+ end
57
57
 
58
- def encode?
59
- authority.term_id_expects_uri?
60
- end
58
+ def encode?
59
+ authority.term_id_expects_uri?
60
+ end
61
61
 
62
- def uri_encode(uri)
63
- url_encode(uri).gsub(".", "%2E")
64
- end
62
+ def uri_encode(uri)
63
+ url_encode(uri).gsub(".", "%2E")
64
+ end
65
65
  end
66
66
  end
@@ -17,52 +17,52 @@ module PrependedLinkedData::FindTerm
17
17
  requested_results(full_results)
18
18
  end
19
19
 
20
- private
20
+ private
21
21
 
22
- def setup_find(request_header: {}, language: nil, replacements: {}, subauth: nil, format: nil, 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, format: format, 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
22
+ def setup_find(request_header: {}, language: nil, replacements: {}, subauth: nil, format: nil, 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, format: format, 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
- 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
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
- # 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?
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
- access_start_dt = QaServer::TimeService.current_time
45
+ access_start_dt = QaServer::TimeService.current_time
46
46
 
47
- url += "&phid=#{@phid}"
48
- @full_graph = graph_service.load_graph(url: url)
47
+ url += "&phid=#{@phid}"
48
+ @full_graph = graph_service.load_graph(url: url)
49
49
 
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
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
- # Temporary override to fix bug. Remove when QA Issue #271 is fixed and a new release is cut
57
- def performance_data?
58
- return super if QaServer.config.suppress_performance_gathering?
59
- @performance_data == true
60
- end
56
+ # Temporary override to fix bug. Remove when QA Issue #271 is fixed and a new release is cut
57
+ def performance_data?
58
+ return super if QaServer.config.suppress_performance_gathering?
59
+ @performance_data == true
60
+ end
61
61
 
62
- def requested_results(full_results)
63
- return full_results if @saved_performance_data || !full_results.is_a?(Hash)
64
- return full_results[:results] unless full_results.key? :response_header
65
- full_results.delete(:performance)
66
- full_results
67
- end
62
+ def requested_results(full_results)
63
+ return full_results if @saved_performance_data || !full_results.is_a?(Hash)
64
+ return full_results[:results] unless full_results.key? :response_header
65
+ full_results.delete(:performance)
66
+ full_results
67
+ end
68
68
  end