elasticsearch-extensions 0.0.27 → 0.0.32

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,3 +1,20 @@
1
+ # Licensed to Elasticsearch B.V. under one or more contributor
2
+ # license agreements. See the NOTICE file distributed with
3
+ # this work for additional information regarding copyright
4
+ # ownership. Elasticsearch B.V. licenses this file to you under
5
+ # the Apache License, Version 2.0 (the "License"); you may
6
+ # not use this file except in compliance with the License.
7
+ # You may obtain a copy of the License at
8
+ #
9
+ # http://www.apache.org/licenses/LICENSE-2.0
10
+ #
11
+ # Unless required by applicable law or agreed to in writing,
12
+ # software distributed under the License is distributed on an
13
+ # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
14
+ # KIND, either express or implied. See the License for the
15
+ # specific language governing permissions and limitations
16
+ # under the License.
17
+
1
18
  require 'elasticsearch/extensions/test/cluster'
2
19
 
3
20
  namespace :elasticsearch do
@@ -1,3 +1,20 @@
1
+ # Licensed to Elasticsearch B.V. under one or more contributor
2
+ # license agreements. See the NOTICE file distributed with
3
+ # this work for additional information regarding copyright
4
+ # ownership. Elasticsearch B.V. licenses this file to you under
5
+ # the Apache License, Version 2.0 (the "License"); you may
6
+ # not use this file except in compliance with the License.
7
+ # You may obtain a copy of the License at
8
+ #
9
+ # http://www.apache.org/licenses/LICENSE-2.0
10
+ #
11
+ # Unless required by applicable law or agreed to in writing,
12
+ # software distributed under the License is distributed on an
13
+ # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
14
+ # KIND, either express or implied. See the License for the
15
+ # specific language governing permissions and limitations
16
+ # under the License.
17
+
1
18
  require 'ruby-prof'
2
19
  require 'benchmark'
3
20
  require 'ansi'
@@ -1,3 +1,20 @@
1
+ # Licensed to Elasticsearch B.V. under one or more contributor
2
+ # license agreements. See the NOTICE file distributed with
3
+ # this work for additional information regarding copyright
4
+ # ownership. Elasticsearch B.V. licenses this file to you under
5
+ # the Apache License, Version 2.0 (the "License"); you may
6
+ # not use this file except in compliance with the License.
7
+ # You may obtain a copy of the License at
8
+ #
9
+ # http://www.apache.org/licenses/LICENSE-2.0
10
+ #
11
+ # Unless required by applicable law or agreed to in writing,
12
+ # software distributed under the License is distributed on an
13
+ # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
14
+ # KIND, either express or implied. See the License for the
15
+ # specific language governing permissions and limitations
16
+ # under the License.
17
+
1
18
  module Elasticsearch
2
19
  module Extensions
3
20
  module Test
@@ -1,5 +1,22 @@
1
+ # Licensed to Elasticsearch B.V. under one or more contributor
2
+ # license agreements. See the NOTICE file distributed with
3
+ # this work for additional information regarding copyright
4
+ # ownership. Elasticsearch B.V. licenses this file to you under
5
+ # the Apache License, Version 2.0 (the "License"); you may
6
+ # not use this file except in compliance with the License.
7
+ # You may obtain a copy of the License at
8
+ #
9
+ # http://www.apache.org/licenses/LICENSE-2.0
10
+ #
11
+ # Unless required by applicable law or agreed to in writing,
12
+ # software distributed under the License is distributed on an
13
+ # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
14
+ # KIND, either express or implied. See the License for the
15
+ # specific language governing permissions and limitations
16
+ # under the License.
17
+
1
18
  module Elasticsearch
2
19
  module Extensions
3
- VERSION = "0.0.27"
20
+ VERSION = '0.0.32'.freeze
4
21
  end
5
22
  end
@@ -1,3 +1,20 @@
1
+ # Licensed to Elasticsearch B.V. under one or more contributor
2
+ # license agreements. See the NOTICE file distributed with
3
+ # this work for additional information regarding copyright
4
+ # ownership. Elasticsearch B.V. licenses this file to you under
5
+ # the Apache License, Version 2.0 (the "License"); you may
6
+ # not use this file except in compliance with the License.
7
+ # You may obtain a copy of the License at
8
+ #
9
+ # http://www.apache.org/licenses/LICENSE-2.0
10
+ #
11
+ # Unless required by applicable law or agreed to in writing,
12
+ # software distributed under the License is distributed on an
13
+ # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
14
+ # KIND, either express or implied. See the License for the
15
+ # specific language governing permissions and limitations
16
+ # under the License.
17
+
1
18
  require 'test_helper'
2
19
  require 'elasticsearch/extensions/ansi'
3
20
 
@@ -7,10 +24,10 @@ class Elasticsearch::Extensions::AnsiTest < Elasticsearch::Test::UnitTestCase
7
24
  @client = Elasticsearch::Client.new
8
25
  @client.stubs(:perform_request).returns \
9
26
  Elasticsearch::Transport::Transport::Response.new(200, { "ok" => true, "status" => 200, "name" => "Hit-Maker",
10
- "version" => { "number" => "0.90.7",
11
- "build_hash" => "abc123",
12
- "build_timestamp"=>"2013-11-13T12:06:54Z", "build_snapshot"=>false, "lucene_version"=>"4.5.1" },
13
- "tagline"=>"You Know, for Search" })
27
+ "version" => { "number" => "0.90.7",
28
+ "build_hash" => "abc123",
29
+ "build_timestamp"=>"2013-11-13T12:06:54Z", "build_snapshot"=>false, "lucene_version"=>"4.5.1" },
30
+ "tagline"=>"You Know, for Search" })
14
31
  end
15
32
 
16
33
  should "wrap the response" do
@@ -30,7 +47,7 @@ class Elasticsearch::Extensions::AnsiTest < Elasticsearch::Test::UnitTestCase
30
47
  should "call the 'awesome_inspect' method when available and no handler found" do
31
48
  @client.stubs(:perform_request).returns \
32
49
  Elasticsearch::Transport::Transport::Response.new(200, {"index-1"=>{"aliases"=>{}}})
33
- response = @client.indices.get_aliases
50
+ response = @client.cat.aliases
34
51
 
35
52
  response.instance_eval do
36
53
  def awesome_inspect; "---PRETTY---"; end
@@ -41,7 +58,7 @@ class Elasticsearch::Extensions::AnsiTest < Elasticsearch::Test::UnitTestCase
41
58
  should "call `to_s` method when no pretty printer or handler found" do
42
59
  @client.stubs(:perform_request).returns \
43
60
  Elasticsearch::Transport::Transport::Response.new(200, {"index-1"=>{"aliases"=>{}}})
44
- response = @client.indices.get_aliases
61
+ response = @client.cat.aliases
45
62
 
46
63
  assert_equal '{"index-1"=>{"aliases"=>{}}}', response.to_ansi
47
64
  end
@@ -1,3 +1,20 @@
1
+ # Licensed to Elasticsearch B.V. under one or more contributor
2
+ # license agreements. See the NOTICE file distributed with
3
+ # this work for additional information regarding copyright
4
+ # ownership. Elasticsearch B.V. licenses this file to you under
5
+ # the Apache License, Version 2.0 (the "License"); you may
6
+ # not use this file except in compliance with the License.
7
+ # You may obtain a copy of the License at
8
+ #
9
+ # http://www.apache.org/licenses/LICENSE-2.0
10
+ #
11
+ # Unless required by applicable law or agreed to in writing,
12
+ # software distributed under the License is distributed on an
13
+ # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
14
+ # KIND, either express or implied. See the License for the
15
+ # specific language governing permissions and limitations
16
+ # under the License.
17
+
1
18
  require 'test_helper'
2
19
  require 'logger'
3
20
 
@@ -106,5 +123,9 @@ class Elasticsearch::Extensions::BackupTest < Elasticsearch::Test::UnitTestCase
106
123
 
107
124
  @subject.__perform_single
108
125
  end
126
+
127
+ should "sanitize filename" do
128
+ assert_equal "foo-bar-baz", @subject.__sanitize_filename("foo/bar\nbaz")
129
+ end
109
130
  end
110
131
  end
@@ -1,3 +1,20 @@
1
+ # Licensed to Elasticsearch B.V. under one or more contributor
2
+ # license agreements. See the NOTICE file distributed with
3
+ # this work for additional information regarding copyright
4
+ # ownership. Elasticsearch B.V. licenses this file to you under
5
+ # the Apache License, Version 2.0 (the "License"); you may
6
+ # not use this file except in compliance with the License.
7
+ # You may obtain a copy of the License at
8
+ #
9
+ # http://www.apache.org/licenses/LICENSE-2.0
10
+ #
11
+ # Unless required by applicable law or agreed to in writing,
12
+ # software distributed under the License is distributed on an
13
+ # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
14
+ # KIND, either express or implied. See the License for the
15
+ # specific language governing permissions and limitations
16
+ # under the License.
17
+
1
18
  require 'test_helper'
2
19
  require 'elasticsearch/extensions/reindex'
3
20
 
@@ -17,7 +34,7 @@ class Elasticsearch::Extensions::ReindexIntegrationTest < Elasticsearch::Test::I
17
34
  ANSI.ansi(severity[0] + ' ', color, :faint) + ANSI.ansi(msg, :white, :faint) + "\n"
18
35
  end
19
36
 
20
- @client = Elasticsearch::Client.new host: "localhost:#{@port}", logger: @logger
37
+ @client = Elasticsearch::Client.new host: "#{TEST_HOST}:#{TEST_PORT}", logger: @logger
21
38
  @client.indices.delete index: '_all'
22
39
 
23
40
  @client.index index: 'test1', type: 'd', id: 1, body: { title: 'TEST 1', category: 'one' }
@@ -37,83 +54,53 @@ class Elasticsearch::Extensions::ReindexIntegrationTest < Elasticsearch::Test::I
37
54
  should "copy documents from one index to another" do
38
55
  reindex = Elasticsearch::Extensions::Reindex.new \
39
56
  source: { index: 'test1', client: @client },
40
- target: { index: 'test2' },
57
+ dest: { index: 'test2' },
41
58
  batch_size: 2,
42
59
  refresh: true
43
60
 
44
61
  result = reindex.perform
45
62
 
46
63
  assert_equal 0, result[:errors]
47
- assert_equal 3, @client.search(index: 'test2')['hits']['total']
48
- end
49
-
50
- should "copy documents with parent/child relationship" do
51
- mapping = { mappings: { p: {}, c: { _parent: { type: 'p' } } } }
52
- @client.indices.create index: 'test_parent_1', body: mapping
53
- @client.indices.create index: 'test_parent_2', body: mapping
54
-
55
- @client.index index: 'test_parent_1', type: 'p', id: 1, body: { title: 'Parent 1' }
56
- @client.index index: 'test_parent_1', type: 'p', id: 2, body: { title: 'Parent 2' }
57
- @client.index index: 'test_parent_1', type: 'c', parent: 1, body: { title: 'Child One' }
58
- @client.index index: 'test_parent_1', type: 'c', parent: 1, body: { title: 'Child Two' }
59
-
60
- @client.indices.refresh index: 'test_parent_1'
61
-
62
- reindex = Elasticsearch::Extensions::Reindex.new \
63
- source: { index: 'test_parent_1', client: @client },
64
- target: { index: 'test_parent_2' },
65
- batch_size: 2,
66
- refresh: true
67
-
68
- result = reindex.perform
69
-
70
- assert_equal 0, result[:errors]
71
- assert_equal 4, @client.search(index: 'test_parent_2')['hits']['total']
72
-
73
- response = @client.search index: 'test_parent_2', body: {
74
- query: { has_child: { type: 'c', query: { match: { title: 'two' } } } } }
75
-
76
- assert_equal 1, response['hits']['hits'].size
77
- assert_equal 'Parent 1', response['hits']['hits'][0]['_source']['title']
64
+ assert_equal 3, @client.search(index: 'test2')['hits']['total']['value']
78
65
  end
79
66
 
80
67
  should "transform documents with a lambda" do
81
68
  reindex = Elasticsearch::Extensions::Reindex.new \
82
69
  source: { index: 'test1', client: @client },
83
- target: { index: 'test2' },
70
+ dest: { index: 'test2' },
84
71
  transform: lambda { |d| d['_source']['category'].upcase! },
85
72
  refresh: true
86
73
 
87
74
  result = reindex.perform
88
75
 
89
76
  assert_equal 0, result[:errors]
90
- assert_equal 3, @client.search(index: 'test2')['hits']['total']
77
+ assert_equal 3, @client.search(index: 'test2')['hits']['total']['value']
91
78
  assert_equal 'ONE', @client.get(index: 'test2', type: 'd', id: 1)['_source']['category']
92
79
  end
93
80
 
94
81
  should "return the number of errors" do
95
- @client.indices.create index: 'test3', body: { mappings: { d: { properties: { category: { type: 'integer' } }}}}
82
+ @client.indices.create index: 'test3', body: { mappings: { properties: { category: { type: 'integer' } }}}
96
83
  @client.cluster.health wait_for_status: 'yellow'
97
84
 
98
85
  reindex = Elasticsearch::Extensions::Reindex.new \
99
86
  source: { index: 'test1', client: @client },
100
- target: { index: 'test3' }
87
+ dest: { index: 'test3' }
101
88
 
102
89
  result = reindex.perform
103
90
 
104
91
  @client.indices.refresh index: 'test3'
105
92
 
106
93
  assert_equal 3, result[:errors]
107
- assert_equal 0, @client.search(index: 'test3')['hits']['total']
94
+ assert_equal 0, @client.search(index: 'test3')['hits']['total']['value']
108
95
  end
109
96
 
110
97
  should "reindex via the API integration" do
111
98
  @client.indices.create index: 'test4'
112
99
 
113
- @client.reindex source: { index: 'test1' }, target: { index: 'test4' }
100
+ @client.reindex source: { index: 'test1' }, dest: { index: 'test4' }
114
101
  @client.indices.refresh index: 'test4'
115
102
 
116
- assert_equal 3, @client.search(index: 'test4')['hits']['total']
103
+ assert_equal 3, @client.search(index: 'test4')['hits']['total']['value']
117
104
  end
118
105
  end
119
106
 
@@ -1,9 +1,26 @@
1
+ # Licensed to Elasticsearch B.V. under one or more contributor
2
+ # license agreements. See the NOTICE file distributed with
3
+ # this work for additional information regarding copyright
4
+ # ownership. Elasticsearch B.V. licenses this file to you under
5
+ # the Apache License, Version 2.0 (the "License"); you may
6
+ # not use this file except in compliance with the License.
7
+ # You may obtain a copy of the License at
8
+ #
9
+ # http://www.apache.org/licenses/LICENSE-2.0
10
+ #
11
+ # Unless required by applicable law or agreed to in writing,
12
+ # software distributed under the License is distributed on an
13
+ # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
14
+ # KIND, either express or implied. See the License for the
15
+ # specific language governing permissions and limitations
16
+ # under the License.
17
+
1
18
  require 'test_helper'
2
19
  require 'elasticsearch/extensions/reindex'
3
20
 
4
21
  class Elasticsearch::Extensions::ReindexTest < Elasticsearch::Test::UnitTestCase
5
22
  context "The Reindex extension module" do
6
- DEFAULT_OPTIONS = { source: { index: 'foo', client: Object.new }, target: { index: 'bar' } }
23
+ DEFAULT_OPTIONS = { source: { index: 'foo', client: Object.new }, dest: { index: 'bar' } }
7
24
 
8
25
  should "require options" do
9
26
  assert_raise ArgumentError do
@@ -50,7 +67,7 @@ class Elasticsearch::Extensions::ReindexTest < Elasticsearch::Test::UnitTestCase
50
67
  should "scroll through the index and save batches in bulk" do
51
68
  client = mock()
52
69
  subject = Elasticsearch::Extensions::Reindex.new source: { index: 'foo', client: client },
53
- target: { index: 'bar' }
70
+ dest: { index: 'bar' }
54
71
 
55
72
  client.expects(:search)
56
73
  .returns({ '_scroll_id' => 'scroll_id_1' }.merge(Marshal.load(Marshal.dump(@default_response))))
@@ -70,7 +87,7 @@ class Elasticsearch::Extensions::ReindexTest < Elasticsearch::Test::UnitTestCase
70
87
  should "return the number of errors" do
71
88
  client = mock()
72
89
  subject = Elasticsearch::Extensions::Reindex.new source: { index: 'foo', client: client },
73
- target: { index: 'bar' }
90
+ dest: { index: 'bar' }
74
91
 
75
92
  client.expects(:search).returns({ '_scroll_id' => 'scroll_id_1' }.merge(@default_response))
76
93
  client.expects(:scroll).returns(@empty_response)
@@ -85,7 +102,7 @@ class Elasticsearch::Extensions::ReindexTest < Elasticsearch::Test::UnitTestCase
85
102
  client = mock()
86
103
  subject = Elasticsearch::Extensions::Reindex.new \
87
104
  source: { index: 'foo', client: client },
88
- target: { index: 'bar' },
105
+ dest: { index: 'bar' },
89
106
  transform: lambda { |d| d['_source']['foo'].upcase!; d }
90
107
 
91
108
  client.expects(:search).returns({ '_scroll_id' => 'scroll_id_1' }.merge(@default_response))
@@ -1,3 +1,20 @@
1
+ # Licensed to Elasticsearch B.V. under one or more contributor
2
+ # license agreements. See the NOTICE file distributed with
3
+ # this work for additional information regarding copyright
4
+ # ownership. Elasticsearch B.V. licenses this file to you under
5
+ # the Apache License, Version 2.0 (the "License"); you may
6
+ # not use this file except in compliance with the License.
7
+ # You may obtain a copy of the License at
8
+ #
9
+ # http://www.apache.org/licenses/LICENSE-2.0
10
+ #
11
+ # Unless required by applicable law or agreed to in writing,
12
+ # software distributed under the License is distributed on an
13
+ # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
14
+ # KIND, either express or implied. See the License for the
15
+ # specific language governing permissions and limitations
16
+ # under the License.
17
+
1
18
  require 'test_helper'
2
19
  require 'pathname'
3
20
 
@@ -1,3 +1,20 @@
1
+ # Licensed to Elasticsearch B.V. under one or more contributor
2
+ # license agreements. See the NOTICE file distributed with
3
+ # this work for additional information regarding copyright
4
+ # ownership. Elasticsearch B.V. licenses this file to you under
5
+ # the Apache License, Version 2.0 (the "License"); you may
6
+ # not use this file except in compliance with the License.
7
+ # You may obtain a copy of the License at
8
+ #
9
+ # http://www.apache.org/licenses/LICENSE-2.0
10
+ #
11
+ # Unless required by applicable law or agreed to in writing,
12
+ # software distributed under the License is distributed on an
13
+ # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
14
+ # KIND, either express or implied. See the License for the
15
+ # specific language governing permissions and limitations
16
+ # under the License.
17
+
1
18
  require 'test_helper'
2
19
 
3
20
  require 'elasticsearch/extensions/test/cluster'
@@ -252,7 +269,7 @@ class Elasticsearch::Extensions::TestClusterTest < Elasticsearch::Test::UnitTest
252
269
 
253
270
  should "return version from lib/elasticsearch.X.Y.Z.jar" do
254
271
  File.expects(:exist?).with('/foo/bar/bin/../lib/').returns(true)
255
- Dir.expects(:entries).with('/foo/bar/bin/../lib/').returns(['foo.jar', 'elasticsearch-2.3.0.jar'])
272
+ Dir.expects(:entries).with('/foo/bar/bin/../lib/').returns(['foo.jar', 'elasticsearch-foo-1.0.0.jar', 'elasticsearch-2.3.0.jar', 'elasticsearch-bar-9.9.9.jar'])
256
273
 
257
274
  assert_equal '2.0', @subject.__determine_version
258
275
  end
@@ -261,16 +278,37 @@ class Elasticsearch::Extensions::TestClusterTest < Elasticsearch::Test::UnitTest
261
278
  File.expects(:exist?).with('/foo/bar/bin/../lib/').returns(false)
262
279
  File.expects(:exist?).with('/foo/bar/bin/elasticsearch').returns(true)
263
280
 
281
+ io = mock('IO')
282
+ io.expects(:pid).returns(123)
283
+ io.expects(:read).returns('Version: 2.3.0-SNAPSHOT, Build: d1c86b0/2016-03-30T10:43:20Z, JVM: 1.8.0_60')
284
+ io.expects(:closed?).returns(false)
285
+ io.expects(:close)
286
+ IO.expects(:popen).returns(io)
287
+
264
288
  Process.stubs(:wait)
265
- Process.expects(:spawn).returns(123)
266
289
  Process.expects(:kill).with('INT', 123)
267
290
 
268
- IO.any_instance.expects(:read)
269
- .returns('Version: 2.3.0-SNAPSHOT, Build: d1c86b0/2016-03-30T10:43:20Z, JVM: 1.8.0_60')
270
-
271
291
  assert_equal '2.0', @subject.__determine_version
272
292
  end
273
293
 
294
+ should "return version from `elasticsearch --version` when version reaches double digits" do
295
+ File.expects(:exist?).with('/foo/bar/bin/../lib/').returns(false)
296
+ File.expects(:exist?).with('/foo/bar/bin/elasticsearch').returns(true)
297
+
298
+ io = mock('IO')
299
+ io.expects(:pid).returns(123)
300
+ io.expects(:read).returns('Version: 7.11.0-SNAPSHOT, Build: d1c86b0/2016-03-30T10:43:20Z, JVM: 1.8.0_60')
301
+ io.expects(:closed?).returns(false)
302
+ io.expects(:close)
303
+ IO.expects(:popen).returns(io)
304
+
305
+ Process.stubs(:wait)
306
+ Process.expects(:kill).with('INT', 123)
307
+
308
+ assert_equal '7.0', @subject.__determine_version
309
+ end
310
+
311
+
274
312
  should "return version from arguments" do
275
313
  cluster = Elasticsearch::Extensions::Test::Cluster::Cluster.new command: '/foo/bar/bin/elasticsearch', version: '5.2'
276
314
  assert_equal '5.0', cluster.__determine_version
@@ -288,12 +326,16 @@ class Elasticsearch::Extensions::TestClusterTest < Elasticsearch::Test::UnitTest
288
326
  File.expects(:exist?).with('/foo/bar/bin/../lib/').returns(false)
289
327
  File.expects(:exist?).with('/foo/bar/bin/elasticsearch').returns(true)
290
328
 
329
+ io = mock('IO')
330
+ io.expects(:pid).returns(123)
331
+ io.expects(:read).returns('Version: FOOBAR')
332
+ io.expects(:closed?).returns(false)
333
+ io.expects(:close)
334
+ IO.expects(:popen).returns(io)
335
+
291
336
  Process.stubs(:wait)
292
- Process.expects(:spawn).returns(123)
293
337
  Process.expects(:kill).with('INT', 123)
294
338
 
295
- IO.any_instance.expects(:read).returns('Version: FOOBAR')
296
-
297
339
  assert_raise(RuntimeError) { @subject.__determine_version }
298
340
  end
299
341