elasticsearch-api 0.4.7 → 0.4.8

Sign up to get free protection for your applications and to get access to all the features.
data/Gemfile CHANGED
@@ -2,3 +2,11 @@ source 'https://rubygems.org'
2
2
 
3
3
  # Specify your gem's dependencies in elasticsearch-api.gemspec
4
4
  gemspec
5
+
6
+ if File.exists? File.expand_path("../../elasticsearch-extensions", __FILE__)
7
+ gem 'elasticsearch-extensions', :path => File.expand_path("../../elasticsearch-extensions", __FILE__), :require => true
8
+ end
9
+
10
+ if File.exists? File.expand_path("../../elasticsearch-transport", __FILE__)
11
+ gem 'elasticsearch-transport', :path => File.expand_path("../../elasticsearch-transport", __FILE__), :require => true
12
+ end
data/README.md CHANGED
@@ -14,6 +14,13 @@ library.
14
14
 
15
15
  The library is compatible with Ruby 1.8.7 or higher.
16
16
 
17
+ The library is compatible with Elasticsearch 0.90 and 1.0 -- you have to install and use a matching version, though.
18
+
19
+ The 1.0 pre-release version and the master branch are compatible with **Elasticsearch 1.0** API.
20
+
21
+ To use the **Elasticsearch 0.90** API, install the **0.4.x** gem version or use the corresponding
22
+ [`0.4`](https://github.com/elasticsearch/elasticsearch-ruby/tree/0.4) branch.
23
+
17
24
  ## Installation
18
25
 
19
26
  Install the package from [Rubygems](https://rubygems.org):
data/Rakefile CHANGED
@@ -49,7 +49,7 @@ namespace :test do
49
49
  current_branch = branches.
50
50
  split("\n").
51
51
  select { |b| b =~ /^\*/ }.
52
- reject { |b| b =~ /detached/ }.
52
+ reject { |b| b =~ /no branch|detached/ }.
53
53
  map { |b| b.gsub(/^\*\s*/, '') }.
54
54
  first
55
55
 
@@ -78,6 +78,7 @@ namespace :test do
78
78
 
79
79
  checkout_specs_version = ENV['TEST_NO_CHECKOUT'].nil? ? true : false
80
80
  checkout_build_hash = ENV['TEST_BUILD_REF'] || build_hash
81
+ ENV['TEST_BUILD_REF'] = checkout_build_hash
81
82
 
82
83
  begin
83
84
  unless checkout_specs_version
@@ -91,7 +92,8 @@ namespace :test do
91
92
 
92
93
  if checkout_specs_version && checkout_build_hash
93
94
  # Checkout the commit corresponding to the running server build, or passed TEST_BUILD_REF
94
- STDERR.puts '-'*80, "YAML tests: Switching to [\e[1m#{checkout_build_hash}\e[0m]", '-'*80
95
+ name = ENV['CI'] ? checkout_build_hash : "[\e[1m#{checkout_build_hash}\e[0m]"
96
+ STDERR.puts '-'*80, "YAML tests: Switching to #{name} from #{current_branch}", '-'*80
95
97
  git_specs "checkout #{checkout_build_hash} --force --quiet"
96
98
  end
97
99
 
@@ -110,7 +112,7 @@ namespace :test do
110
112
  end
111
113
 
112
114
  ensure
113
- git_specs "checkout --force --quiet #{current_branch}" if checkout_specs_version
115
+ git_specs "checkout #{current_branch} --force --quiet" if checkout_specs_version && current_branch
114
116
  end
115
117
  end
116
118
 
@@ -52,10 +52,11 @@ Gem::Specification.new do |s|
52
52
  end
53
53
 
54
54
  if defined?(RUBY_VERSION) && RUBY_VERSION > '1.9'
55
- s.add_development_dependency "ruby-prof"
55
+ s.add_development_dependency "ruby-prof" unless defined? JRUBY_VERSION
56
56
  s.add_development_dependency "jbuilder"
57
- s.add_development_dependency "escape_utils"
57
+ s.add_development_dependency "escape_utils" unless defined? JRUBY_VERSION
58
58
  s.add_development_dependency "simplecov"
59
+ s.add_development_dependency "simplecov-rcov"
59
60
  s.add_development_dependency "cane"
60
61
  s.add_development_dependency "require-prof"
61
62
  s.add_development_dependency "coveralls"
@@ -0,0 +1,24 @@
1
+ module Elasticsearch
2
+ module API
3
+ module Actions
4
+
5
+ # Abort a particular scroll search and clear all the resources associated with it.
6
+ #
7
+ # @option arguments [List] :scroll_id A comma-separated list of scroll IDs to clear;
8
+ # use `_all` clear all scroll search contexts
9
+ #
10
+ # @see http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/search-request-search-type.html#clear-scroll
11
+ #
12
+ def clear_scroll(arguments={})
13
+ raise ArgumentError, "Required argument 'scroll_id' missing" unless arguments[:scroll_id]
14
+
15
+ method = 'DELETE'
16
+ path = Utils.__pathify '_search/scroll', Utils.__listify(arguments[:scroll_id])
17
+ params = {}
18
+ body = nil
19
+
20
+ perform_request(method, path, params, body).body
21
+ end
22
+ end
23
+ end
24
+ end
@@ -5,12 +5,22 @@ module Elasticsearch
5
5
 
6
6
  # Get the cluster settings (previously set with {Cluster::Actions#put_settings})
7
7
  #
8
+ # @example Get cluster settings
9
+ #
10
+ # client.cluster.get_settings
11
+ #
12
+ # @option arguments [Boolean] :flat_settings Return settings in flat format (default: false)
13
+ #
8
14
  # @see http://elasticsearch.org/guide/reference/api/admin-cluster-update-settings/
9
15
  #
10
16
  def get_settings(arguments={})
17
+ valid_params = [
18
+ :flat_settings
19
+ ]
20
+
11
21
  method = 'GET'
12
22
  path = "_cluster/settings"
13
- params = {}
23
+ params = Utils.__validate_and_extract_params arguments, valid_params
14
24
  body = nil
15
25
 
16
26
  perform_request(method, path, params, body).body
@@ -0,0 +1,33 @@
1
+ module Elasticsearch
2
+ module API
3
+ module Cluster
4
+ module Actions
5
+
6
+ # Returns a list of any cluster-level changes (e.g. create index, update mapping, allocate or fail shard)
7
+ # which have not yet been executed and are queued up.
8
+ #
9
+ # @example Get a list of currently queued up tasks in the cluster
10
+ #
11
+ # client.cluster.pending_tasks
12
+ #
13
+ # @option arguments [Boolean] :local Return local information, do not retrieve the state from master node
14
+ # (default: false)
15
+ # @option arguments [Time] :master_timeout Specify timeout for connection to master
16
+ #
17
+ # @see http://www.elasticsearch.org/guide/en/elasticsearch/reference/master/cluster-pending.html
18
+ #
19
+ def pending_tasks(arguments={})
20
+ valid_params = [
21
+ :local,
22
+ :master_timeout ]
23
+ method = 'GET'
24
+ path = "/_cluster/pending_tasks"
25
+ params = Utils.__validate_and_extract_params arguments, valid_params
26
+ body = nil
27
+
28
+ perform_request(method, path, params, body).body
29
+ end
30
+ end
31
+ end
32
+ end
33
+ end
@@ -55,7 +55,7 @@ module Elasticsearch
55
55
 
56
56
  rescue Exception => e
57
57
  # NOTE: Use exception name, not full class in Elasticsearch::Client to allow client plugability
58
- if arguments[:ignore] == 404 && e.class.to_s =~ /NotFound/; false
58
+ if Array(arguments[:ignore]).include?(404) && e.class.to_s =~ /NotFound/; false
59
59
  else raise(e)
60
60
  end
61
61
  end
@@ -59,7 +59,7 @@ module Elasticsearch
59
59
 
60
60
  rescue Exception => e
61
61
  # NOTE: Use exception name, not full class in Elasticsearch::Client to allow client plugability
62
- if arguments[:ignore] == 404 && e.class.to_s =~ /NotFound/; false
62
+ if Array(arguments[:ignore]).include?(404) && e.class.to_s =~ /NotFound/; false
63
63
  else raise(e)
64
64
  end
65
65
  end
@@ -62,7 +62,7 @@ module Elasticsearch
62
62
 
63
63
  rescue Exception => e
64
64
  # NOTE: Use exception name, not full class in Elasticsearch::Client to allow client plugability
65
- if arguments[:ignore] == 404 && e.class.to_s =~ /NotFound/; false
65
+ if Array(arguments[:ignore]).include?(404) && e.class.to_s =~ /NotFound/; false
66
66
  else raise(e)
67
67
  end
68
68
  end
@@ -28,7 +28,7 @@ module Elasticsearch
28
28
 
29
29
  rescue Exception => e
30
30
  # NOTE: Use exception name, not full class in Elasticsearch::Client to allow client plugability
31
- if arguments[:ignore] == 404 && e.class.to_s =~ /NotFound/; false
31
+ if Array(arguments[:ignore]).include?(404) && e.class.to_s =~ /NotFound/; false
32
32
  else raise(e)
33
33
  end
34
34
  end
@@ -9,19 +9,50 @@ module Elasticsearch
9
9
  #
10
10
  # client.indices.get_settings
11
11
  #
12
+ # @example Get settings for the 'foo' index
13
+ #
14
+ # client.indices.get_settings index: 'foo'
15
+ #
16
+ # @example Get settings for indices beginning with foo
17
+ #
18
+ # client.indices.get_settings prefix: 'foo'
19
+ #
12
20
  # @example Get settings for an index named _myindex_
13
21
  #
14
22
  # client.indices.get_settings index: 'myindex'
15
23
  #
16
24
  # @option arguments [List] :index A comma-separated list of index names; use `_all` or empty string
17
25
  # to perform the operation on all indices
26
+ # @option arguments [String] :prefix The prefix all settings must have in order to be included
27
+ # @option arguments [Boolean] :allow_no_indices Whether to ignore if a wildcard indices expression resolves into
28
+ # no concrete indices. (This includes `_all` string or when no
29
+ # indices have been specified)
30
+ # @option arguments [String] :expand_wildcards Whether to expand wildcard expression to concrete indices that
31
+ # are open, closed or both. (options: open, closed)
32
+ # @option arguments [String] :ignore_indices When performed on multiple indices, allows to ignore
33
+ # `missing` ones (options: none, missing) @until 1.0
34
+ # @option arguments [Boolean] :ignore_unavailable Whether specified concrete indices should be ignored when
35
+ # unavailable (missing, closed, etc)
36
+ # @option arguments [Boolean] :flat_settings Return settings in flat format (default: false)
18
37
  #
19
38
  # @see http://www.elasticsearch.org/guide/reference/api/admin-indices-get-settings/
20
39
  #
21
40
  def get_settings(arguments={})
41
+ valid_params = [
42
+ :prefix,
43
+ :ignore_indices,
44
+ :ignore_unavailable,
45
+ :allow_no_indices,
46
+ :expand_wildcards,
47
+ :flat_settings
48
+ ]
49
+
22
50
  method = 'GET'
23
- path = Utils.__pathify Utils.__listify(arguments[:index]), Utils.__listify(arguments[:type]), '_settings'
24
- params = {}
51
+ path = Utils.__pathify Utils.__listify(arguments[:index]),
52
+ Utils.__listify(arguments[:type]),
53
+ arguments.delete(:prefix),
54
+ '_settings'
55
+ params = Utils.__validate_and_extract_params arguments, valid_params
25
56
  body = nil
26
57
 
27
58
  perform_request(method, path, params, body).body
@@ -37,6 +37,7 @@ module Elasticsearch
37
37
  # @option arguments [Boolean] :ignore_unavailable Whether specified concrete indices should be ignored when
38
38
  # unavailable (missing, closed, etc)
39
39
  # @option arguments [Time] :master_timeout Specify timeout for connection to master
40
+ # @option arguments [Boolean] :flat_settings Return settings in flat format (default: false)
40
41
  #
41
42
  # @see http://www.elasticsearch.org/guide/reference/api/admin-indices-update-settings/
42
43
  #
@@ -48,7 +49,8 @@ module Elasticsearch
48
49
  :ignore_unavailable,
49
50
  :allow_no_indices,
50
51
  :expand_wildcards,
51
- :master_timeout
52
+ :master_timeout,
53
+ :flat_settings
52
54
  ]
53
55
 
54
56
  method = 'PUT'
@@ -98,7 +98,7 @@ module Elasticsearch
98
98
 
99
99
  rescue Exception => e
100
100
  # NOTE: Use exception name, not full class in Elasticsearch::Client to allow client plugability
101
- if arguments[:ignore] == 404 && e.class.to_s =~ /NotFound/; false
101
+ if Array(arguments[:ignore]).include?(404) && e.class.to_s =~ /NotFound/; false
102
102
  else raise(e)
103
103
  end
104
104
  end
@@ -13,6 +13,7 @@ module Elasticsearch
13
13
  #
14
14
  # @api private
15
15
  def __escape(string)
16
+ return string if string == '*'
16
17
  defined?(EscapeUtils) ? EscapeUtils.escape_url(string.to_s) : CGI.escape(string.to_s)
17
18
  end
18
19
 
@@ -1,5 +1,5 @@
1
1
  module Elasticsearch
2
2
  module API
3
- VERSION = "0.4.7"
3
+ VERSION = "0.4.8"
4
4
  end
5
5
  end
@@ -1,12 +1,21 @@
1
+ RUBY_1_8 = defined?(RUBY_VERSION) && RUBY_VERSION < '1.9'
2
+ JRUBY = defined?(JRUBY_VERSION)
3
+
1
4
  require 'pathname'
2
- require 'active_support/inflector'
5
+ require 'logger'
3
6
  require 'yaml'
4
- require 'pry'
7
+ require 'active_support/inflector'
8
+ require 'ansi'
9
+ require 'turn'
5
10
 
6
11
  require 'elasticsearch'
7
12
  require 'elasticsearch/extensions/test/cluster'
8
13
  require 'elasticsearch/extensions/test/startup_shutdown'
9
- require 'elasticsearch/extensions/test/profiling'
14
+ require 'elasticsearch/extensions/test/profiling' unless JRUBY
15
+
16
+ # Turn configuration
17
+ ENV['ansi'] = 'false' if ENV['CI']
18
+ Turn.config.format = :pretty
10
19
 
11
20
  # Launch test cluster
12
21
  #
@@ -17,10 +26,32 @@ Elasticsearch::Extensions::Test::Cluster.start(nodes: 1) if ENV['SERVER'] and no
17
26
  #
18
27
  at_exit { Elasticsearch::Extensions::Test::Cluster.stop if ENV['SERVER'] }
19
28
 
20
- require 'logger'
21
- require 'ansi'
29
+ class String
30
+ # Reset the `ansi` method on CI
31
+ def ansi(*args)
32
+ self
33
+ end
34
+ end if ENV['CI']
35
+
36
+ module CapturedLogger
37
+ def self.included base
38
+ base.class_eval do
39
+ %w[ info error warn fatal debug ].each do |m|
40
+ alias_method "#{m}_without_capture", m
22
41
 
23
- logger = Logger.new(STDERR)
42
+ define_method m do |*args|
43
+ @logdev.__send__ :puts, *(args.join("\n") + "\n")
44
+ self.__send__ "#{m}_without_capture", *args
45
+ end
46
+ end
47
+ end
48
+ end
49
+ end
50
+
51
+ Logger.__send__ :include, CapturedLogger if ENV['CI']
52
+
53
+ logger = Logger.new($stderr)
54
+ logger.progname = 'elasticsearch'
24
55
  logger.formatter = proc do |severity, datetime, progname, msg|
25
56
  color = case severity
26
57
  when /INFO/ then :green
@@ -28,17 +59,23 @@ logger.formatter = proc do |severity, datetime, progname, msg|
28
59
  when /DEBUG/ then :cyan
29
60
  else :white
30
61
  end
31
- ANSI.ansi(severity[0] + ' ', color, :faint) + ANSI.ansi(msg, :white, :faint) + "\n"
62
+ "#{severity[0]} ".ansi(color, :faint) + msg.ansi(:white, :faint) + "\n"
32
63
  end
33
64
 
65
+ tracer = Logger.new($stdout)
66
+ tracer.progname = 'elasticsearch.tracer'
67
+ tracer.formatter = proc { |severity, datetime, progname, msg| "#{msg}\n" }
68
+
34
69
  # Set up the client for the test
35
70
  #
36
71
  # To set up your own client, just set the `$client` variable in a file, and then require it:
37
72
  #
38
73
  # ruby -I lib:test -r ./tmp/my_special_client.rb test/integration/yaml_test_runner.rb
39
74
  #
40
- $client ||= Elasticsearch::Client.new host: "localhost:#{ENV['TEST_CLUSTER_PORT'] || 9250}",
41
- logger: (ENV['QUIET'] ? nil : logger)
75
+ $client ||= Elasticsearch::Client.new host: "localhost:#{ENV['TEST_CLUSTER_PORT'] || 9250}"
76
+
77
+ $client.transport.logger = logger unless ENV['QUIET'] || ENV['CI']
78
+ $client.transport.tracer = tracer if ENV['CI']
42
79
 
43
80
  # Store Elasticsearch version
44
81
  #
@@ -46,7 +83,7 @@ es_version_info = $client.info['version']
46
83
  $es_version = es_version_info['number']
47
84
 
48
85
  puts '-'*80,
49
- "Elasticsearch #{ANSI.ansi($es_version, :bold)} [#{es_version_info['build_hash'].to_s[0...7]}]".center(80),
86
+ "Elasticsearch #{$es_version.ansi(:bold)} [#{es_version_info['build_hash'].to_s[0...7]}]".center(80),
50
87
  '-'*80
51
88
 
52
89
  require 'test_helper'
@@ -136,7 +173,7 @@ module Elasticsearch
136
173
  end
137
174
  ]
138
175
 
139
- STDERR.puts "ARGUMENTS: #{arguments.inspect}" if ENV['DEBUG']
176
+ $stderr.puts "ARGUMENTS: #{arguments.inspect}" if ENV['DEBUG']
140
177
 
141
178
  $results[test.hash] = namespace.reduce($client) do |memo, current|
142
179
  unless current == namespace.last
@@ -253,11 +290,11 @@ suites.each do |suite|
253
290
 
254
291
  tests.each do |test|
255
292
  context '' do
256
- test_name = test.keys.first.to_s + (ENV['QUIET'] ? '' : " | #{ANSI.ansi(file.gsub(PATH.to_s, ''), :bold)}")
293
+ test_name = test.keys.first.to_s + (ENV['QUIET'] ? '' : " | #{file.gsub(PATH.to_s, '').ansi(:bold)}")
257
294
  actions = test.values.first
258
295
 
259
296
  if reason = Runner.skip?(actions)
260
- STDOUT.puts "#{ANSI.ansi('SKIP', :yellow)}: [#{name}] #{test_name} (Reason: #{reason})"
297
+ $stdout.puts "#{'SKIP'.ansi(:yellow)} [#{name}] #{test_name} (Reason: #{reason})"
261
298
  next
262
299
  end
263
300
 
@@ -273,8 +310,14 @@ suites.each do |suite|
273
310
 
274
311
  # --- Register test method ------------------------------------------
275
312
  should test_name do
313
+ if ENV['CI']
314
+ ref = ENV['TEST_BUILD_REF'].to_s.gsub(/origin\//, '') || 'master'
315
+ $stderr.puts "https://github.com/elasticsearch/elasticsearch/blob/#{ref}/rest-api-spec/test/" \
316
+ + file.gsub(PATH.to_s, ''), ""
317
+ $stderr.puts YAML.dump(test)
318
+ end
276
319
  actions.each do |action|
277
- STDERR.puts "ACTION: #{action.inspect}" if ENV['DEBUG']
320
+ $stderr.puts "ACTION: #{action.inspect}" if ENV['DEBUG']
278
321
 
279
322
  case
280
323
 
@@ -289,7 +332,7 @@ suites.each do |suite|
289
332
  $results[test.hash] = Runner.perform_api_call(test, api, arguments)
290
333
  rescue Exception => e
291
334
  if catch_exception
292
- STDERR.puts "CATCH '#{catch_exception}': #{e.inspect}" if ENV['DEBUG']
335
+ $stderr.puts "CATCH '#{catch_exception}': #{e.inspect}" if ENV['DEBUG']
293
336
  case e
294
337
  when 'missing'
295
338
  assert_match /\[404\]/, e.message
@@ -311,12 +354,12 @@ suites.each do |suite|
311
354
  #
312
355
  when property = action['is_true']
313
356
  result = Runner.evaluate(test, property)
314
- STDERR.puts "CHECK: Expected '#{property}' to be true, is: #{result.inspect}" if ENV['DEBUG']
357
+ $stderr.puts "CHECK: Expected '#{property}' to be true, is: #{result.inspect}" if ENV['DEBUG']
315
358
  assert(result, "Property '#{property}' should be true, is: #{result.inspect}")
316
359
 
317
360
  when property = action['is_false']
318
361
  result = Runner.evaluate(test, property)
319
- STDERR.puts "CHECK: Expected '#{property}' to be false, is: #{result.inspect}" if ENV['DEBUG']
362
+ $stderr.puts "CHECK: Expected '#{property}' to be false, is: #{result.inspect}" if ENV['DEBUG']
320
363
  assert( !!! result, "Property '#{property}' should be false, is: #{result.inspect}")
321
364
 
322
365
  when a = action['match']
@@ -324,7 +367,7 @@ suites.each do |suite|
324
367
 
325
368
  value = Runner.fetch_or_return(value)
326
369
  result = Runner.evaluate(test, property)
327
- STDERR.puts "CHECK: Expected '#{property}' to be '#{value}', is: #{result.inspect}" if ENV['DEBUG']
370
+ $stderr.puts "CHECK: Expected '#{property}' to be '#{value}', is: #{result.inspect}" if ENV['DEBUG']
328
371
  assert_equal(value, result)
329
372
 
330
373
  when a = action['length']
@@ -332,7 +375,7 @@ suites.each do |suite|
332
375
 
333
376
  result = Runner.evaluate(test, property)
334
377
  length = result.size
335
- STDERR.puts "CHECK: Expected '#{property}' to be #{value}, is: #{length.inspect}" if ENV['DEBUG']
378
+ $stderr.puts "CHECK: Expected '#{property}' to be #{value}, is: #{length.inspect}" if ENV['DEBUG']
336
379
  assert_equal(value, length)
337
380
 
338
381
  when a = action['lt'] || action['gt']
@@ -343,14 +386,14 @@ suites.each do |suite|
343
386
  result = Runner.evaluate(test, property)
344
387
  message = "Expected '#{property}' to be #{operator} #{value}, is: #{result.inspect}"
345
388
 
346
- STDERR.puts "CHECK: #{message}" if ENV['DEBUG']
389
+ $stderr.puts "CHECK: #{message}" if ENV['DEBUG']
347
390
  # operator == 'less than' ? assert(value.to_f < result.to_f, message) : assert(value.to_f > result.to_f, message)
348
391
  assert_operator result, operator.to_sym, value.to_i
349
392
 
350
393
  when stash = action['set']
351
394
  property, variable = stash.to_a.first
352
395
  result = Runner.evaluate(test, property)
353
- STDERR.puts "STASH: '$#{variable}' => #{result.inspect}" if ENV['DEBUG']
396
+ $stderr.puts "STASH: '$#{variable}' => #{result.inspect}" if ENV['DEBUG']
354
397
  Runner.set variable, result
355
398
  end
356
399
  end
@@ -1,17 +1,28 @@
1
1
  RUBY_1_8 = defined?(RUBY_VERSION) && RUBY_VERSION < '1.9'
2
+ JRUBY = defined?(JRUBY_VERSION)
2
3
 
3
4
  if RUBY_1_8 and not ENV['BUNDLE_GEMFILE']
4
5
  require 'rubygems'
5
6
  gem 'test-unit'
6
7
  end
7
8
 
8
- require 'simplecov' and SimpleCov.start { add_filter "/test|test_/" } if ENV["COVERAGE"]
9
+ if ENV['COVERAGE'] && ENV['CI'].nil? && !RUBY_1_8
10
+ require 'simplecov'
11
+ SimpleCov.start { add_filter "/test|test_/" }
12
+ end
13
+
14
+ if ENV['CI'] && !RUBY_1_8
15
+ require 'simplecov'
16
+ require 'simplecov-rcov'
17
+ SimpleCov.formatter = SimpleCov::Formatter::RcovFormatter
18
+ SimpleCov.start { add_filter "/test|test_" }
19
+ end
9
20
 
10
21
  require 'test/unit'
11
22
  require 'shoulda-context'
12
23
  require 'mocha/setup'
13
24
 
14
- unless ENV["TM_FILEPATH"] || ENV["NOTURN"] || RUBY_1_8
25
+ unless ENV["NOTURN"] || RUBY_1_8
15
26
  require 'turn'
16
27
 
17
28
  if ENV['QUIET']
@@ -27,7 +38,7 @@ RequireProf.print_timing_infos if ENV["REQUIRE_PROF"]
27
38
  if defined?(RUBY_VERSION) && RUBY_VERSION > '1.9'
28
39
  require 'elasticsearch/extensions/test/cluster'
29
40
  require 'elasticsearch/extensions/test/startup_shutdown'
30
- require 'elasticsearch/extensions/test/profiling'
41
+ require 'elasticsearch/extensions/test/profiling' unless JRUBY
31
42
  end
32
43
 
33
44
  module Elasticsearch
@@ -0,0 +1,38 @@
1
+ require 'test_helper'
2
+
3
+ module Elasticsearch
4
+ module Test
5
+ class ClearScrollTest < ::Test::Unit::TestCase
6
+
7
+ context "Clear scroll" do
8
+ subject { FakeClient.new }
9
+
10
+ should "perform correct request" do
11
+ subject.expects(:perform_request).with do |method, url, params, body|
12
+ assert_equal 'DELETE', method
13
+ assert_equal '_search/scroll/abc123', url
14
+ assert_equal Hash.new, params
15
+ assert_nil body
16
+ true
17
+ end.returns(FakeResponse.new)
18
+
19
+ subject.clear_scroll :scroll_id => 'abc123'
20
+ end
21
+
22
+ should "listify scroll IDs" do
23
+ subject.expects(:perform_request).with do |method, url, params, body|
24
+ assert_equal 'DELETE', method
25
+ assert_equal '_search/scroll/abc123,def456', url
26
+ assert_equal Hash.new, params
27
+ assert_nil body
28
+ true
29
+ end.returns(FakeResponse.new)
30
+
31
+ subject.clear_scroll :scroll_id => ['abc123', 'def456']
32
+ end
33
+
34
+ end
35
+
36
+ end
37
+ end
38
+ end
@@ -0,0 +1,26 @@
1
+ require 'test_helper'
2
+
3
+ module Elasticsearch
4
+ module Test
5
+ class ClusterPendingTasksTest < ::Test::Unit::TestCase
6
+
7
+ context "Cluster: Pending tasks" do
8
+ subject { FakeClient.new }
9
+
10
+ should "perform correct request" do
11
+ subject.expects(:perform_request).with do |method, url, params, body|
12
+ assert_equal 'GET', method
13
+ assert_equal '/_cluster/pending_tasks', url
14
+ assert_equal Hash.new, params
15
+ assert_nil body
16
+ true
17
+ end.returns(FakeResponse.new)
18
+
19
+ subject.cluster.pending_tasks
20
+ end
21
+
22
+ end
23
+
24
+ end
25
+ end
26
+ end
@@ -21,6 +21,10 @@ module Elasticsearch
21
21
  assert_equal 'foo%5Ebar', __escape('foo^bar')
22
22
  end
23
23
 
24
+ should "not encode asterisks" do
25
+ assert_equal '*', __escape('*')
26
+ end
27
+
24
28
  should "use CGI.escape by default" do
25
29
  CGI.expects(:escape)
26
30
  __escape('foo bar')
@@ -31,7 +35,7 @@ module Elasticsearch
31
35
  CGI.expects(:escape).never
32
36
  EscapeUtils.expects(:escape_url)
33
37
  __escape('foo bar')
34
- end unless RUBY_1_8
38
+ end unless RUBY_1_8 || JRUBY
35
39
 
36
40
  end
37
41
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: elasticsearch-api
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.7
4
+ version: 0.4.8
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2014-01-11 00:00:00.000000000 Z
12
+ date: 2014-02-09 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: multi_json
@@ -315,6 +315,22 @@ dependencies:
315
315
  - - ! '>='
316
316
  - !ruby/object:Gem::Version
317
317
  version: '0'
318
+ - !ruby/object:Gem::Dependency
319
+ name: simplecov-rcov
320
+ requirement: !ruby/object:Gem::Requirement
321
+ none: false
322
+ requirements:
323
+ - - ! '>='
324
+ - !ruby/object:Gem::Version
325
+ version: '0'
326
+ type: :development
327
+ prerelease: false
328
+ version_requirements: !ruby/object:Gem::Requirement
329
+ none: false
330
+ requirements:
331
+ - - ! '>='
332
+ - !ruby/object:Gem::Version
333
+ version: '0'
318
334
  - !ruby/object:Gem::Dependency
319
335
  name: cane
320
336
  requirement: !ruby/object:Gem::Requirement
@@ -383,12 +399,14 @@ files:
383
399
  - lib/elasticsearch-api.rb
384
400
  - lib/elasticsearch/api.rb
385
401
  - lib/elasticsearch/api/actions/bulk.rb
402
+ - lib/elasticsearch/api/actions/clear_scroll.rb
386
403
  - lib/elasticsearch/api/actions/cluster/get_settings.rb
387
404
  - lib/elasticsearch/api/actions/cluster/health.rb
388
405
  - lib/elasticsearch/api/actions/cluster/node_hot_threads.rb
389
406
  - lib/elasticsearch/api/actions/cluster/node_info.rb
390
407
  - lib/elasticsearch/api/actions/cluster/node_shutdown.rb
391
408
  - lib/elasticsearch/api/actions/cluster/node_stats.rb
409
+ - lib/elasticsearch/api/actions/cluster/pending_tasks.rb
392
410
  - lib/elasticsearch/api/actions/cluster/put_settings.rb
393
411
  - lib/elasticsearch/api/actions/cluster/reroute.rb
394
412
  - lib/elasticsearch/api/actions/cluster/state.rb
@@ -453,6 +471,7 @@ files:
453
471
  - test/integration/yaml_test_runner.rb
454
472
  - test/test_helper.rb
455
473
  - test/unit/bulk_test.rb
474
+ - test/unit/clear_scroll_test.rb
456
475
  - test/unit/client_test.rb
457
476
  - test/unit/cluster/get_settings_test.rb
458
477
  - test/unit/cluster/health_test.rb
@@ -460,6 +479,7 @@ files:
460
479
  - test/unit/cluster/node_info_test.rb
461
480
  - test/unit/cluster/node_shutdown_test.rb
462
481
  - test/unit/cluster/node_stats_test.rb
482
+ - test/unit/cluster/pending_tasks_test.rb
463
483
  - test/unit/cluster/put_settings_test.rb
464
484
  - test/unit/cluster/reroute_test.rb
465
485
  - test/unit/cluster/state_test.rb
@@ -549,6 +569,7 @@ test_files:
549
569
  - test/integration/yaml_test_runner.rb
550
570
  - test/test_helper.rb
551
571
  - test/unit/bulk_test.rb
572
+ - test/unit/clear_scroll_test.rb
552
573
  - test/unit/client_test.rb
553
574
  - test/unit/cluster/get_settings_test.rb
554
575
  - test/unit/cluster/health_test.rb
@@ -556,6 +577,7 @@ test_files:
556
577
  - test/unit/cluster/node_info_test.rb
557
578
  - test/unit/cluster/node_shutdown_test.rb
558
579
  - test/unit/cluster/node_stats_test.rb
580
+ - test/unit/cluster/pending_tasks_test.rb
559
581
  - test/unit/cluster/put_settings_test.rb
560
582
  - test/unit/cluster/reroute_test.rb
561
583
  - test/unit/cluster/state_test.rb