inquisitio 0.1.7 → 0.2.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 -13
- data/CHANGELOG.md +4 -0
- data/lib/inquisitio/configuration.rb +4 -2
- data/lib/inquisitio/searcher.rb +20 -13
- data/lib/inquisitio/version.rb +1 -1
- data/test/configuration_test.rb +4 -0
- data/test/searcher_test.rb +11 -0
- metadata +12 -12
checksums.yaml
CHANGED
@@ -1,15 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
|
5
|
-
data.tar.gz: !binary |-
|
6
|
-
NzE0OWNkZjkwZTk5M2VmZjQyOWIxOWYxNGUwMjBlZjhmNjlhZTc4MA==
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: fea08d92d3503aaf286abbbfb90603071151987c
|
4
|
+
data.tar.gz: 89b2a9fa0fde1d9315aaa2b78e6f056b94fc865b
|
7
5
|
SHA512:
|
8
|
-
metadata.gz:
|
9
|
-
|
10
|
-
Mjk3ODBiNWVjMjZjOTA5ZWZlOGI2MDcwZjE2NWI1M2I3N2ZhMmJlYjY0ZTY2
|
11
|
-
NzZhNjA1MTZlY2Y1NzA2NzAyMDU1OTM0NWNkNGZmZTMxZTZiMGI=
|
12
|
-
data.tar.gz: !binary |-
|
13
|
-
ZWUwMzViZjJhMDQ3MjllY2NiOTc4MzY0MWNkZGI2MmYzN2M0NDNmMjg2MjRk
|
14
|
-
YzMyOTMzYjM5ZTUzNGI2ZDBkYmNiNmQwOWM4ZWY0ZjMyZjJmNTYyZTAwOWMx
|
15
|
-
Y2ZmMWEyNzZjOTZiOTlkNjZlOTk1MDJhZTYwZjdkNTE5MjMzOWU=
|
6
|
+
metadata.gz: acc88c23d6a6149742fd9b9b8d86aa6965bfd3271cab315d555670e04ddfb02d426bdf5515be1b6bf2b32541d032eba26890bb7c083799ba6ea59f73b1e50f38
|
7
|
+
data.tar.gz: 37b197462af739476a09d9058385054dc54f8b27e4cee3e27a9edb229c8ac758c8ae6157e44a15f7117943c3172df9e0f5d85b34ecbb052e394fa23c4d32d97c
|
data/CHANGELOG.md
CHANGED
@@ -10,14 +10,16 @@ module Inquisitio
|
|
10
10
|
:document_endpoint,
|
11
11
|
:default_search_size,
|
12
12
|
:dry_run,
|
13
|
-
:logger
|
13
|
+
:logger,
|
14
|
+
:max_attempts
|
14
15
|
]
|
15
|
-
|
16
|
+
|
16
17
|
attr_writer *SETTINGS
|
17
18
|
|
18
19
|
def initialize
|
19
20
|
self.logger = Inquisitio::Logger.new
|
20
21
|
self.dry_run = false
|
22
|
+
self.max_attempts = 3
|
21
23
|
end
|
22
24
|
|
23
25
|
SETTINGS.each do |setting|
|
data/lib/inquisitio/searcher.rb
CHANGED
@@ -18,6 +18,7 @@ module Inquisitio
|
|
18
18
|
returns: [],
|
19
19
|
with: {}
|
20
20
|
}
|
21
|
+
@failed_attempts = 0
|
21
22
|
|
22
23
|
yield(self) if block_given?
|
23
24
|
end
|
@@ -33,7 +34,7 @@ module Inquisitio
|
|
33
34
|
def records
|
34
35
|
@records ||= begin
|
35
36
|
klasses = {}
|
36
|
-
map do |result|
|
37
|
+
results.map do |result|
|
37
38
|
klass = result['data']['med_type'].first
|
38
39
|
klasses[klass] ||= []
|
39
40
|
klasses[klass] << result['data']['med_id'].first
|
@@ -102,20 +103,26 @@ module Inquisitio
|
|
102
103
|
private
|
103
104
|
|
104
105
|
def results
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
@results
|
106
|
+
return @results unless @results.nil?
|
107
|
+
|
108
|
+
Inquisitio.config.logger.info("Performing search: #{search_url}")
|
109
|
+
response = Excon.get(search_url)
|
110
|
+
raise InquisitioError.new("Search failed with status code: #{response.status} Message #{response.body}") unless response.status == 200
|
111
|
+
body = JSON.parse(response.body)
|
112
|
+
@results = Results.new(body["hits"]["hit"],
|
113
|
+
params[:page],
|
114
|
+
params[:per],
|
115
|
+
body["hits"]["found"])
|
116
116
|
rescue => e
|
117
|
-
|
117
|
+
@failed_attempts += 1
|
118
|
+
Inquisitio.config.logger.error("Exception Performing search: #{search_url} #{e}")
|
119
|
+
|
120
|
+
if @failed_attempts < Inquisitio.config.max_attempts
|
121
|
+
Inquisitio.config.logger.error("Retrying search #{@failed_attempts}/#{Inquisitio.config.max_attempts}")
|
122
|
+
results
|
123
|
+
else
|
118
124
|
raise InquisitioError.new("Exception performing search")
|
125
|
+
end
|
119
126
|
end
|
120
127
|
|
121
128
|
def search_url
|
data/lib/inquisitio/version.rb
CHANGED
data/test/configuration_test.rb
CHANGED
@@ -19,6 +19,10 @@ module Inquisitio
|
|
19
19
|
assert_equal test_search_endpoint, Inquisitio.config.search_endpoint
|
20
20
|
end
|
21
21
|
|
22
|
+
def test_search_endpoint
|
23
|
+
assert_equal 3, Inquisitio.config.max_attempts
|
24
|
+
end
|
25
|
+
|
22
26
|
def test_search_endpoint
|
23
27
|
search_endpoint = "test-search-endpoint"
|
24
28
|
Inquisitio.config.search_endpoint = search_endpoint
|
data/test/searcher_test.rb
CHANGED
@@ -211,6 +211,7 @@ module Inquisitio
|
|
211
211
|
Excon.stub({}, {:body => 'Bad Happened', :status => 500})
|
212
212
|
|
213
213
|
searcher = Searcher.where('Star Wars')
|
214
|
+
searcher.instance_variable_set(:@failed_attempts, 3)
|
214
215
|
|
215
216
|
assert_raises(InquisitioError, "Search failed with status code 500") do
|
216
217
|
searcher.search
|
@@ -221,12 +222,22 @@ module Inquisitio
|
|
221
222
|
Excon.stub({}, lambda { |_| raise Excon::Errors::Timeout})
|
222
223
|
|
223
224
|
searcher = Searcher.where('Star Wars')
|
225
|
+
searcher.instance_variable_set(:@failed_attempts, 3)
|
224
226
|
|
225
227
|
assert_raises(InquisitioError) do
|
226
228
|
searcher.search
|
227
229
|
end
|
228
230
|
end
|
229
231
|
|
232
|
+
def test_search_retries_when_failed_attempts_under_limit
|
233
|
+
Excon.expects(:get).raises(Excon::Errors::Timeout).times(3)
|
234
|
+
|
235
|
+
searcher = Searcher.where('Star Wars')
|
236
|
+
assert_raises(InquisitioError, "Search failed with status code 500") do
|
237
|
+
searcher.search
|
238
|
+
end
|
239
|
+
end
|
240
|
+
|
230
241
|
def test_that_iterating_calls_results
|
231
242
|
searcher = Searcher.where("star_wars")
|
232
243
|
searcher.expects(results: [])
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: inquisitio
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jeremy Walker
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date:
|
13
|
+
date: 2014-01-17 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: excon
|
@@ -30,14 +30,14 @@ dependencies:
|
|
30
30
|
name: ruby_deep_clone
|
31
31
|
requirement: !ruby/object:Gem::Requirement
|
32
32
|
requirements:
|
33
|
-
- -
|
33
|
+
- - '>='
|
34
34
|
- !ruby/object:Gem::Version
|
35
35
|
version: '0'
|
36
36
|
type: :runtime
|
37
37
|
prerelease: false
|
38
38
|
version_requirements: !ruby/object:Gem::Requirement
|
39
39
|
requirements:
|
40
|
-
- -
|
40
|
+
- - '>='
|
41
41
|
- !ruby/object:Gem::Version
|
42
42
|
version: '0'
|
43
43
|
- !ruby/object:Gem::Dependency
|
@@ -58,42 +58,42 @@ dependencies:
|
|
58
58
|
name: rake
|
59
59
|
requirement: !ruby/object:Gem::Requirement
|
60
60
|
requirements:
|
61
|
-
- -
|
61
|
+
- - '>='
|
62
62
|
- !ruby/object:Gem::Version
|
63
63
|
version: '0'
|
64
64
|
type: :development
|
65
65
|
prerelease: false
|
66
66
|
version_requirements: !ruby/object:Gem::Requirement
|
67
67
|
requirements:
|
68
|
-
- -
|
68
|
+
- - '>='
|
69
69
|
- !ruby/object:Gem::Version
|
70
70
|
version: '0'
|
71
71
|
- !ruby/object:Gem::Dependency
|
72
72
|
name: mocha
|
73
73
|
requirement: !ruby/object:Gem::Requirement
|
74
74
|
requirements:
|
75
|
-
- -
|
75
|
+
- - '>='
|
76
76
|
- !ruby/object:Gem::Version
|
77
77
|
version: '0'
|
78
78
|
type: :development
|
79
79
|
prerelease: false
|
80
80
|
version_requirements: !ruby/object:Gem::Requirement
|
81
81
|
requirements:
|
82
|
-
- -
|
82
|
+
- - '>='
|
83
83
|
- !ruby/object:Gem::Version
|
84
84
|
version: '0'
|
85
85
|
- !ruby/object:Gem::Dependency
|
86
86
|
name: yard
|
87
87
|
requirement: !ruby/object:Gem::Requirement
|
88
88
|
requirements:
|
89
|
-
- -
|
89
|
+
- - '>='
|
90
90
|
- !ruby/object:Gem::Version
|
91
91
|
version: '0'
|
92
92
|
type: :development
|
93
93
|
prerelease: false
|
94
94
|
version_requirements: !ruby/object:Gem::Requirement
|
95
95
|
requirements:
|
96
|
-
- -
|
96
|
+
- - '>='
|
97
97
|
- !ruby/object:Gem::Version
|
98
98
|
version: '0'
|
99
99
|
- !ruby/object:Gem::Dependency
|
@@ -165,12 +165,12 @@ require_paths:
|
|
165
165
|
- lib
|
166
166
|
required_ruby_version: !ruby/object:Gem::Requirement
|
167
167
|
requirements:
|
168
|
-
- -
|
168
|
+
- - '>='
|
169
169
|
- !ruby/object:Gem::Version
|
170
170
|
version: '0'
|
171
171
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
172
172
|
requirements:
|
173
|
-
- -
|
173
|
+
- - '>='
|
174
174
|
- !ruby/object:Gem::Version
|
175
175
|
version: '0'
|
176
176
|
requirements: []
|