elastomer-client 2.3.0 → 3.0.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 (56) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +2 -0
  3. data/.travis.yml +0 -4
  4. data/CHANGELOG.md +8 -0
  5. data/docker/docker-compose.cibuild.yml +8 -0
  6. data/docker/docker-compose.es24.yml +34 -0
  7. data/docker/docker-compose.es56.yml +37 -0
  8. data/docker/elasticsearch.yml +15 -0
  9. data/docs/index.md +2 -2
  10. data/docs/notifications.md +1 -1
  11. data/elastomer-client.gemspec +2 -0
  12. data/lib/elastomer/client.rb +86 -33
  13. data/lib/elastomer/client/app_delete_by_query.rb +158 -0
  14. data/lib/elastomer/client/delete_by_query.rb +8 -115
  15. data/lib/elastomer/client/docs.rb +63 -13
  16. data/lib/elastomer/client/errors.rb +10 -2
  17. data/lib/elastomer/client/index.rb +40 -12
  18. data/lib/elastomer/client/multi_percolate.rb +2 -2
  19. data/lib/elastomer/client/native_delete_by_query.rb +60 -0
  20. data/lib/elastomer/client/percolator.rb +6 -3
  21. data/lib/elastomer/client/scroller.rb +22 -7
  22. data/lib/elastomer/client/tasks.rb +188 -0
  23. data/lib/elastomer/client/warmer.rb +6 -0
  24. data/lib/elastomer/notifications.rb +1 -0
  25. data/lib/elastomer/version.rb +1 -1
  26. data/lib/elastomer/version_support.rb +177 -0
  27. data/script/cibuild +77 -6
  28. data/script/cibuild-elastomer-client +1 -0
  29. data/script/cibuild-elastomer-client-es24 +8 -0
  30. data/script/cibuild-elastomer-client-es56 +8 -0
  31. data/script/poll-for-es +20 -0
  32. data/test/client/{delete_by_query_test.rb → app_delete_by_query_test.rb} +7 -7
  33. data/test/client/bulk_test.rb +9 -13
  34. data/test/client/cluster_test.rb +2 -2
  35. data/test/client/docs_test.rb +133 -49
  36. data/test/client/errors_test.rb +21 -1
  37. data/test/client/es_5_x_warmer_test.rb +13 -0
  38. data/test/client/index_test.rb +104 -39
  39. data/test/client/multi_percolate_test.rb +13 -6
  40. data/test/client/multi_search_test.rb +5 -5
  41. data/test/client/native_delete_by_query_test.rb +123 -0
  42. data/test/client/nodes_test.rb +1 -1
  43. data/test/client/percolator_test.rb +10 -2
  44. data/test/client/repository_test.rb +1 -1
  45. data/test/client/scroller_test.rb +16 -6
  46. data/test/client/snapshot_test.rb +1 -1
  47. data/test/client/stubbed_client_test.rb +1 -1
  48. data/test/client/tasks_test.rb +139 -0
  49. data/test/client/template_test.rb +1 -1
  50. data/test/client/warmer_test.rb +8 -4
  51. data/test/client_test.rb +99 -0
  52. data/test/core_ext/time_test.rb +1 -1
  53. data/test/notifications_test.rb +4 -0
  54. data/test/test_helper.rb +129 -21
  55. data/test/version_support_test.rb +119 -0
  56. metadata +59 -5
@@ -0,0 +1,119 @@
1
+ require_relative './test_helper'
2
+
3
+ describe Elastomer::VersionSupport do
4
+ describe "supported versions" do
5
+ it "allows 2.3.0 to 5.6" do
6
+ two_three_series = ["2.3.0", "2.3.5", "2.4.0", "2.9.9", "2.9.100"]
7
+ five_series = ["5.0.0", "5.0.9", "5.2.0", "5.6.9", "5.6.100"]
8
+
9
+ two_three_series.each do |version|
10
+ assert Elastomer::VersionSupport.new(version).es_version_2_x?
11
+ end
12
+
13
+ five_series.each do |version|
14
+ assert Elastomer::VersionSupport.new(version).es_version_5_x?
15
+ end
16
+ end
17
+ end
18
+
19
+ describe "unsupported versions" do
20
+ it "blow up" do
21
+ too_low = ["0.90", "1.0.1", "2.0.0", "2.2.0"]
22
+ too_high = ["5.7.0", "6.0.0"]
23
+
24
+ (too_low + too_high).each do |version|
25
+ exception = assert_raises(ArgumentError, "expected #{version} to not be supported") do
26
+ Elastomer::VersionSupport.new(version)
27
+ end
28
+
29
+ assert_match version, exception.message
30
+ assert_match "is not supported", exception.message
31
+ end
32
+ end
33
+ end
34
+
35
+ describe "ES 2.x" do
36
+ let(:version_support) { Elastomer::VersionSupport.new("2.3.5") }
37
+
38
+ describe "#keyword" do
39
+ it "returns non_analyzed string" do
40
+ expected = {
41
+ type: "string",
42
+ index: "not_analyzed",
43
+ store: true
44
+ }
45
+ assert_equal(expected, version_support.keyword(store: true))
46
+ end
47
+ end
48
+
49
+ describe "#text" do
50
+ it "returns analyzed string" do
51
+ expected = {
52
+ type: "string",
53
+ term_vector: "with_positions_offsets"
54
+ }
55
+ assert_equal(expected, version_support.text(term_vector: "with_positions_offsets"))
56
+ end
57
+ end
58
+
59
+ describe "native_delete_by_query?" do
60
+ it "returns false" do
61
+ refute version_support.native_delete_by_query?, "ES 2.X does not have native delete_by_query support"
62
+ end
63
+ end
64
+
65
+ describe "#indexing_directives" do
66
+ it "returns a Hash of indexing parameter name to field name" do
67
+ assert_includes(version_support.indexing_directives.to_a, [:consistency, "_consistency"])
68
+ end
69
+ end
70
+
71
+ describe "#unsupported_indexing_directives" do
72
+ it "returns a Hash of indexing parameter name to field name" do
73
+ assert_includes(version_support.unsupported_indexing_directives.to_a, [:wait_for_active_shards, "_wait_for_active_shards"])
74
+ end
75
+ end
76
+ end
77
+
78
+ describe "ES 5.x" do
79
+ let(:version_support) { Elastomer::VersionSupport.new("5.6.0") }
80
+
81
+ describe "#keyword" do
82
+ it "returns keyword" do
83
+ expected = {
84
+ type: "keyword",
85
+ store: true
86
+ }
87
+ assert_equal(expected, version_support.keyword(store: true))
88
+ end
89
+ end
90
+
91
+ describe "#text" do
92
+ it "returns text" do
93
+ expected = {
94
+ type: "text",
95
+ term_vector: "with_positions_offsets"
96
+ }
97
+ assert_equal(expected, version_support.text(term_vector: "with_positions_offsets"))
98
+ end
99
+ end
100
+
101
+ describe "native_delete_by_query?" do
102
+ it "returns true" do
103
+ assert version_support.native_delete_by_query?, "ES 5.X has native delete_by_query support"
104
+ end
105
+ end
106
+
107
+ describe "#indexing_directives" do
108
+ it "returns a Hash of indexing parameter name to field name" do
109
+ assert_includes(version_support.indexing_directives.to_a, [:wait_for_active_shards, "_wait_for_active_shards"])
110
+ end
111
+ end
112
+
113
+ describe "#unsupported_indexing_directives" do
114
+ it "returns an Hash of indexing parameter names to field name" do
115
+ assert_includes(version_support.unsupported_indexing_directives.to_a, [:consistency, "_consistency"])
116
+ end
117
+ end
118
+ end
119
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: elastomer-client
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.3.0
4
+ version: 3.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tim Pease
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2017-11-30 00:00:00.000000000 Z
12
+ date: 2017-12-15 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: addressable
@@ -123,6 +123,26 @@ dependencies:
123
123
  - - "~>"
124
124
  - !ruby/object:Gem::Version
125
125
  version: 0.1.0
126
+ - !ruby/object:Gem::Dependency
127
+ name: minitest-focus
128
+ requirement: !ruby/object:Gem::Requirement
129
+ requirements:
130
+ - - "~>"
131
+ - !ruby/object:Gem::Version
132
+ version: '1.1'
133
+ - - ">="
134
+ - !ruby/object:Gem::Version
135
+ version: 1.1.2
136
+ type: :development
137
+ prerelease: false
138
+ version_requirements: !ruby/object:Gem::Requirement
139
+ requirements:
140
+ - - "~>"
141
+ - !ruby/object:Gem::Version
142
+ version: '1.1'
143
+ - - ">="
144
+ - !ruby/object:Gem::Version
145
+ version: 1.1.2
126
146
  - !ruby/object:Gem::Dependency
127
147
  name: webmock
128
148
  requirement: !ruby/object:Gem::Requirement
@@ -151,6 +171,20 @@ dependencies:
151
171
  - - "~>"
152
172
  - !ruby/object:Gem::Version
153
173
  version: '1.8'
174
+ - !ruby/object:Gem::Dependency
175
+ name: pry-byebug
176
+ requirement: !ruby/object:Gem::Requirement
177
+ requirements:
178
+ - - "~>"
179
+ - !ruby/object:Gem::Version
180
+ version: '3.4'
181
+ type: :development
182
+ prerelease: false
183
+ version_requirements: !ruby/object:Gem::Requirement
184
+ requirements:
185
+ - - "~>"
186
+ - !ruby/object:Gem::Version
187
+ version: '3.4'
154
188
  - !ruby/object:Gem::Dependency
155
189
  name: rake
156
190
  requirement: !ruby/object:Gem::Requirement
@@ -184,6 +218,10 @@ files:
184
218
  - LICENSE.txt
185
219
  - README.md
186
220
  - Rakefile
221
+ - docker/docker-compose.cibuild.yml
222
+ - docker/docker-compose.es24.yml
223
+ - docker/docker-compose.es56.yml
224
+ - docker/elasticsearch.yml
187
225
  - docs/README.md
188
226
  - docs/bulk_indexing.md
189
227
  - docs/client.md
@@ -198,6 +236,7 @@ files:
198
236
  - docs/warmers.md
199
237
  - elastomer-client.gemspec
200
238
  - lib/elastomer/client.rb
239
+ - lib/elastomer/client/app_delete_by_query.rb
201
240
  - lib/elastomer/client/bulk.rb
202
241
  - lib/elastomer/client/cluster.rb
203
242
  - lib/elastomer/client/delete_by_query.rb
@@ -206,11 +245,13 @@ files:
206
245
  - lib/elastomer/client/index.rb
207
246
  - lib/elastomer/client/multi_percolate.rb
208
247
  - lib/elastomer/client/multi_search.rb
248
+ - lib/elastomer/client/native_delete_by_query.rb
209
249
  - lib/elastomer/client/nodes.rb
210
250
  - lib/elastomer/client/percolator.rb
211
251
  - lib/elastomer/client/repository.rb
212
252
  - lib/elastomer/client/scroller.rb
213
253
  - lib/elastomer/client/snapshot.rb
254
+ - lib/elastomer/client/tasks.rb
214
255
  - lib/elastomer/client/template.rb
215
256
  - lib/elastomer/client/warmer.rb
216
257
  - lib/elastomer/core_ext/time.rb
@@ -220,24 +261,32 @@ files:
220
261
  - lib/elastomer/middleware/parse_json.rb
221
262
  - lib/elastomer/notifications.rb
222
263
  - lib/elastomer/version.rb
264
+ - lib/elastomer/version_support.rb
223
265
  - script/bootstrap
224
266
  - script/cibuild
267
+ - script/cibuild-elastomer-client
268
+ - script/cibuild-elastomer-client-es24
269
+ - script/cibuild-elastomer-client-es56
225
270
  - script/console
271
+ - script/poll-for-es
226
272
  - test/assertions.rb
273
+ - test/client/app_delete_by_query_test.rb
227
274
  - test/client/bulk_test.rb
228
275
  - test/client/cluster_test.rb
229
- - test/client/delete_by_query_test.rb
230
276
  - test/client/docs_test.rb
231
277
  - test/client/errors_test.rb
278
+ - test/client/es_5_x_warmer_test.rb
232
279
  - test/client/index_test.rb
233
280
  - test/client/multi_percolate_test.rb
234
281
  - test/client/multi_search_test.rb
282
+ - test/client/native_delete_by_query_test.rb
235
283
  - test/client/nodes_test.rb
236
284
  - test/client/percolator_test.rb
237
285
  - test/client/repository_test.rb
238
286
  - test/client/scroller_test.rb
239
287
  - test/client/snapshot_test.rb
240
288
  - test/client/stubbed_client_test.rb
289
+ - test/client/tasks_test.rb
241
290
  - test/client/template_test.rb
242
291
  - test/client/warmer_test.rb
243
292
  - test/client_test.rb
@@ -247,6 +296,7 @@ files:
247
296
  - test/middleware/parse_json_test.rb
248
297
  - test/notifications_test.rb
249
298
  - test/test_helper.rb
299
+ - test/version_support_test.rb
250
300
  homepage: https://github.com/github/elastomer-client
251
301
  licenses:
252
302
  - MIT
@@ -267,26 +317,29 @@ required_rubygems_version: !ruby/object:Gem::Requirement
267
317
  version: '0'
268
318
  requirements: []
269
319
  rubyforge_project:
270
- rubygems_version: 2.6.13
320
+ rubygems_version: 2.6.14
271
321
  signing_key:
272
322
  specification_version: 4
273
323
  summary: A library for interacting with Elasticsearch
274
324
  test_files:
275
325
  - test/assertions.rb
326
+ - test/client/app_delete_by_query_test.rb
276
327
  - test/client/bulk_test.rb
277
328
  - test/client/cluster_test.rb
278
- - test/client/delete_by_query_test.rb
279
329
  - test/client/docs_test.rb
280
330
  - test/client/errors_test.rb
331
+ - test/client/es_5_x_warmer_test.rb
281
332
  - test/client/index_test.rb
282
333
  - test/client/multi_percolate_test.rb
283
334
  - test/client/multi_search_test.rb
335
+ - test/client/native_delete_by_query_test.rb
284
336
  - test/client/nodes_test.rb
285
337
  - test/client/percolator_test.rb
286
338
  - test/client/repository_test.rb
287
339
  - test/client/scroller_test.rb
288
340
  - test/client/snapshot_test.rb
289
341
  - test/client/stubbed_client_test.rb
342
+ - test/client/tasks_test.rb
290
343
  - test/client/template_test.rb
291
344
  - test/client/warmer_test.rb
292
345
  - test/client_test.rb
@@ -296,3 +349,4 @@ test_files:
296
349
  - test/middleware/parse_json_test.rb
297
350
  - test/notifications_test.rb
298
351
  - test/test_helper.rb
352
+ - test/version_support_test.rb