elasticsearch-api 1.0.1 → 1.0.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +15 -0
- data/elasticsearch-api.gemspec +3 -2
- data/lib/elasticsearch/api.rb +2 -1
- data/lib/elasticsearch/api/actions/abort_benchmark.rb +27 -0
- data/lib/elasticsearch/api/actions/benchmark.rb +62 -0
- data/lib/elasticsearch/api/actions/cat/fielddata.rb +49 -0
- data/lib/elasticsearch/api/actions/cluster/health.rb +5 -1
- data/lib/elasticsearch/api/actions/cluster/state.rb +2 -1
- data/lib/elasticsearch/api/actions/count_percolate.rb +1 -1
- data/lib/elasticsearch/api/actions/delete.rb +1 -1
- data/lib/elasticsearch/api/actions/get.rb +4 -0
- data/lib/elasticsearch/api/actions/index.rb +22 -2
- data/lib/elasticsearch/api/actions/indices/get_template.rb +5 -1
- data/lib/elasticsearch/api/actions/indices/optimize.rb +3 -0
- data/lib/elasticsearch/api/actions/indices/put_template.rb +2 -3
- data/lib/elasticsearch/api/actions/indices/recovery.rb +42 -0
- data/lib/elasticsearch/api/actions/indices/stats.rb +42 -36
- data/lib/elasticsearch/api/actions/list_benchmarks.rb +29 -0
- data/lib/elasticsearch/api/actions/mlt.rb +39 -1
- data/lib/elasticsearch/api/actions/nodes/info.rb +11 -9
- data/lib/elasticsearch/api/actions/percolate.rb +1 -1
- data/lib/elasticsearch/api/actions/scroll.rb +20 -2
- data/lib/elasticsearch/api/actions/search.rb +3 -2
- data/lib/elasticsearch/api/actions/search_shards.rb +41 -0
- data/lib/elasticsearch/api/actions/search_template.rb +61 -0
- data/lib/elasticsearch/api/actions/snapshot/create.rb +1 -1
- data/lib/elasticsearch/api/actions/snapshot/create_repository.rb +1 -1
- data/lib/elasticsearch/api/actions/snapshot/restore.rb +1 -1
- data/lib/elasticsearch/api/actions/snapshot/status.rb +40 -0
- data/lib/elasticsearch/api/utils.rb +23 -1
- data/lib/elasticsearch/api/version.rb +1 -1
- data/test/integration/yaml_test_runner.rb +1 -0
- data/test/unit/abort_benchmark_test.rb +26 -0
- data/test/unit/benchmark_test.rb +26 -0
- data/test/unit/cat/fielddata_test.rb +38 -0
- data/test/unit/indices/recovery_test.rb +26 -0
- data/test/unit/indices/stats_test.rb +5 -14
- data/test/unit/list_benchmarks_test.rb +26 -0
- data/test/unit/nodes/info_test.rb +21 -0
- data/test/unit/search_shards_test.rb +26 -0
- data/test/unit/search_template_test.rb +26 -0
- data/test/unit/snapshot/status_test.rb +38 -0
- data/test/unit/utils_test.rb +8 -0
- metadata +43 -53
@@ -0,0 +1,29 @@
|
|
1
|
+
module Elasticsearch
|
2
|
+
module API
|
3
|
+
module Actions
|
4
|
+
|
5
|
+
# Return a list of running benchmarks
|
6
|
+
#
|
7
|
+
# @example
|
8
|
+
#
|
9
|
+
# client.list_benchmarks
|
10
|
+
#
|
11
|
+
# @option arguments [List] :index A comma-separated list of index names; use `_all` or empty string
|
12
|
+
# to perform the operation on all indices
|
13
|
+
# @option arguments [String] :type The name of the document type
|
14
|
+
#
|
15
|
+
# @see http://www.elasticsearch.org/guide/en/elasticsearch/reference/master/search-benchmark.html
|
16
|
+
#
|
17
|
+
def list_benchmarks(arguments={})
|
18
|
+
valid_params = [
|
19
|
+
]
|
20
|
+
method = 'GET'
|
21
|
+
path = "_bench"
|
22
|
+
params = {}
|
23
|
+
body = nil
|
24
|
+
|
25
|
+
perform_request(method, path, params, body).body
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
@@ -8,7 +8,45 @@ module Elasticsearch
|
|
8
8
|
#
|
9
9
|
# @example Search for similar documents using the `title` property of document `myindex/mytype/1`
|
10
10
|
#
|
11
|
-
#
|
11
|
+
# # First, let's setup a synonym-aware analyzer ("quick" <=> "fast")
|
12
|
+
# client.indices.create index: 'myindex', body: {
|
13
|
+
# settings: {
|
14
|
+
# analysis: {
|
15
|
+
# filter: {
|
16
|
+
# synonyms: {
|
17
|
+
# type: 'synonym',
|
18
|
+
# synonyms: [ "quick,fast" ]
|
19
|
+
# }
|
20
|
+
# },
|
21
|
+
# analyzer: {
|
22
|
+
# title_synonym: {
|
23
|
+
# type: 'custom',
|
24
|
+
# tokenizer: 'whitespace',
|
25
|
+
# filter: ['lowercase', 'stop', 'snowball', 'synonyms']
|
26
|
+
# }
|
27
|
+
# }
|
28
|
+
# }
|
29
|
+
# },
|
30
|
+
# mappings: {
|
31
|
+
# mytype: {
|
32
|
+
# properties: {
|
33
|
+
# title: {
|
34
|
+
# type: 'string',
|
35
|
+
# analyzer: 'title_synonym'
|
36
|
+
# }
|
37
|
+
# }
|
38
|
+
# }
|
39
|
+
# }
|
40
|
+
# }
|
41
|
+
#
|
42
|
+
# # Index three documents
|
43
|
+
# client.index index: 'myindex', type: 'mytype', id: 1, body: { title: 'Quick Brown Fox' }
|
44
|
+
# client.index index: 'myindex', type: 'mytype', id: 2, body: { title: 'Slow Black Dog' }
|
45
|
+
# client.index index: 'myindex', type: 'mytype', id: 3, body: { title: 'Fast White Rabbit' }
|
46
|
+
# client.indices.refresh index: 'myindex'
|
47
|
+
#
|
48
|
+
# client.mlt index: 'myindex', type: 'mytype', id: 1, mlt_fields: 'title', min_doc_freq: 1, min_term_freq: 1
|
49
|
+
# # => { ... {"title"=>"Fast White Rabbit"}}]}}
|
12
50
|
#
|
13
51
|
# @option arguments [String] :id The document ID (*Required*)
|
14
52
|
# @option arguments [String] :index The name of the index (*Required*)
|
@@ -17,13 +17,12 @@ module Elasticsearch
|
|
17
17
|
# @option arguments [List] :node_id A comma-separated list of node IDs or names to limit the returned information;
|
18
18
|
# use `_local` to return information from the node you're connecting to, leave
|
19
19
|
# empty to get information from all nodes
|
20
|
-
# @option arguments [Boolean] :
|
21
|
-
# @option arguments [Boolean] :clear Reset the default settings
|
20
|
+
# @option arguments [Boolean] :_all Return all available information
|
22
21
|
# @option arguments [Boolean] :http Return information about HTTP
|
23
22
|
# @option arguments [Boolean] :jvm Return information about the JVM
|
24
23
|
# @option arguments [Boolean] :network Return information about network
|
25
24
|
# @option arguments [Boolean] :os Return information about the operating system
|
26
|
-
# @option arguments [Boolean] :
|
25
|
+
# @option arguments [Boolean] :plugins Return information about plugins
|
27
26
|
# @option arguments [Boolean] :process Return information about the Elasticsearch process
|
28
27
|
# @option arguments [Boolean] :settings Return information about node settings
|
29
28
|
# @option arguments [Boolean] :thread_pool Return information about the thread pool
|
@@ -32,24 +31,27 @@ module Elasticsearch
|
|
32
31
|
# @see http://elasticsearch.org/guide/reference/api/admin-cluster-nodes-info/
|
33
32
|
#
|
34
33
|
def info(arguments={})
|
35
|
-
|
36
|
-
:
|
37
|
-
:clear,
|
34
|
+
valid_parts = [
|
35
|
+
:_all,
|
38
36
|
:http,
|
39
37
|
:jvm,
|
40
38
|
:network,
|
41
39
|
:os,
|
42
|
-
:
|
40
|
+
:plugins,
|
43
41
|
:process,
|
44
42
|
:settings,
|
45
43
|
:thread_pool,
|
46
44
|
:transport ]
|
47
45
|
|
46
|
+
valid_params = []
|
47
|
+
|
48
48
|
method = 'GET'
|
49
|
-
|
49
|
+
|
50
|
+
parts = Utils.__extract_parts arguments, valid_parts
|
51
|
+
path = Utils.__pathify '_nodes', Utils.__listify(arguments[:node_id]), Utils.__listify(parts)
|
50
52
|
|
51
53
|
params = Utils.__validate_and_extract_params arguments, valid_params
|
52
|
-
body
|
54
|
+
body = nil
|
53
55
|
|
54
56
|
perform_request(method, path, params, body).body
|
55
57
|
end
|
@@ -69,7 +69,7 @@ module Elasticsearch
|
|
69
69
|
# @option arguments [String] :percolate_index The index to percolate the document into. Defaults to passed `index`.
|
70
70
|
# @option arguments [String] :percolate_type The type to percolate document into. Defaults to passed `type`.
|
71
71
|
# @option arguments [Number] :version Explicit version number for concurrency control
|
72
|
-
# @option arguments [String] :version_type Specific version type (options: internal, external)
|
72
|
+
# @option arguments [String] :version_type Specific version type (options: internal, external, external_gte, force)
|
73
73
|
#
|
74
74
|
# @see http://www.elasticsearch.org/guide/en/elasticsearch/reference/master/search-percolate.html
|
75
75
|
#
|
@@ -9,13 +9,30 @@ module Elasticsearch
|
|
9
9
|
#
|
10
10
|
# "Scrolling" the results is frequently used with the `scan` search type.
|
11
11
|
#
|
12
|
-
# @example
|
12
|
+
# @example A basic example
|
13
13
|
#
|
14
14
|
# result = client.search index: 'scrollindex',
|
15
15
|
# scroll: '5m',
|
16
16
|
# body: { query: { match: { title: 'test' } }, sort: '_id' }
|
17
17
|
#
|
18
|
-
# client.scroll scroll: '5m', scroll_id: result['_scroll_id']
|
18
|
+
# result = client.scroll scroll: '5m', scroll_id: result['_scroll_id']
|
19
|
+
#
|
20
|
+
# @example Call the `scroll` API until all the documents are returned
|
21
|
+
#
|
22
|
+
# # Index 1,000 documents
|
23
|
+
# client.indices.delete index: 'test'
|
24
|
+
# 1_000.times do |i| client.index index: 'test', type: 'test', id: i+1, body: {title: "Test #{i}"} end
|
25
|
+
# client.indices.refresh index: 'test'
|
26
|
+
#
|
27
|
+
# # Open the "view" of the index with the `scan` search_type
|
28
|
+
# r = client.search index: 'test', search_type: 'scan', scroll: '5m', size: 10
|
29
|
+
#
|
30
|
+
# # Call the `scroll` API until empty results are returned
|
31
|
+
# while r = client.scroll(scroll_id: r['_scroll_id'], scroll: '5m') and not r['hits']['hits'].empty? do
|
32
|
+
# puts "--- BATCH #{defined?($i) ? $i += 1 : $i = 1} -------------------------------------------------"
|
33
|
+
# puts r['hits']['hits'].map { |d| d['_source']['title'] }.inspect
|
34
|
+
# puts
|
35
|
+
# end
|
19
36
|
#
|
20
37
|
# @option arguments [String] :scroll_id The scroll ID
|
21
38
|
# @option arguments [Hash] :body The scroll ID if not passed by URL or query parameter.
|
@@ -23,6 +40,7 @@ module Elasticsearch
|
|
23
40
|
# should be maintained for scrolled search
|
24
41
|
# @option arguments [String] :scroll_id The scroll ID for scrolled search
|
25
42
|
#
|
43
|
+
# @see http://www.elasticsearch.org/guide/en/elasticsearch/guide/current/scan-scroll.html#scan-scroll
|
26
44
|
# @see http://www.elasticsearch.org/guide/reference/api/search/scroll/
|
27
45
|
# @see http://www.elasticsearch.org/guide/reference/api/search/search-type/
|
28
46
|
#
|
@@ -70,7 +70,6 @@ module Elasticsearch
|
|
70
70
|
# @option arguments [Number] :from Starting offset (default: 0)
|
71
71
|
# @option arguments [String] :ignore_indices When performed on multiple indices, allows to ignore `missing` ones
|
72
72
|
# (options: none, missing)
|
73
|
-
# @option arguments [List] :indices_boost Comma-separated list of index boosts
|
74
73
|
# @option arguments [Boolean] :lenient Specify whether format-based query failures
|
75
74
|
# (such as providing text to a numeric field) should be ignored
|
76
75
|
# @option arguments [Boolean] :lowercase_expanded_terms Specify whether query terms should be lowercased
|
@@ -115,7 +114,9 @@ module Elasticsearch
|
|
115
114
|
:fields,
|
116
115
|
:from,
|
117
116
|
:ignore_indices,
|
118
|
-
:
|
117
|
+
:ignore_unavailable,
|
118
|
+
:allow_no_indices,
|
119
|
+
:expand_wildcards,
|
119
120
|
:lenient,
|
120
121
|
:lowercase_expanded_terms,
|
121
122
|
:preference,
|
@@ -0,0 +1,41 @@
|
|
1
|
+
module Elasticsearch
|
2
|
+
module API
|
3
|
+
module Actions
|
4
|
+
|
5
|
+
# Returns the names of indices and shards on which a search request would be executed
|
6
|
+
#
|
7
|
+
# @option arguments [String] :index The name of the index
|
8
|
+
# @option arguments [String] :type The type of the document
|
9
|
+
# @option arguments [String] :preference Specify the node or shard the operation should be performed on
|
10
|
+
# (default: random)
|
11
|
+
# @option arguments [String] :routing Specific routing value
|
12
|
+
# @option arguments [Boolean] :local Return local information, do not retrieve the state from master node
|
13
|
+
# (default: false)
|
14
|
+
# @option arguments [Boolean] :ignore_unavailable Whether specified concrete indices should be ignored when
|
15
|
+
# unavailable (missing or closed)
|
16
|
+
# @option arguments [Boolean] :allow_no_indices Whether to ignore if a wildcard indices expression resolves
|
17
|
+
# into no concrete indices.
|
18
|
+
# (This includes `_all` or when no indices have been specified)
|
19
|
+
# @option arguments [String] :expand_wildcards Whether to expand wildcard expression to concrete indices
|
20
|
+
# that are open, closed or both. (options: open, closed)
|
21
|
+
#
|
22
|
+
# @see http://www.elasticsearch.org/guide/en/elasticsearch/reference/master/search-shards.html
|
23
|
+
#
|
24
|
+
def search_shards(arguments={})
|
25
|
+
valid_params = [
|
26
|
+
:preference,
|
27
|
+
:routing,
|
28
|
+
:local,
|
29
|
+
:ignore_unavailable,
|
30
|
+
:allow_no_indices,
|
31
|
+
:expand_wildcards ]
|
32
|
+
method = 'GET'
|
33
|
+
path = Utils.__pathify( Utils.__listify(arguments[:index]), Utils.__listify(arguments[:type]), '_search_shards' )
|
34
|
+
params = Utils.__validate_and_extract_params arguments, valid_params
|
35
|
+
body = nil
|
36
|
+
|
37
|
+
perform_request(method, path, params, body).body
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
@@ -0,0 +1,61 @@
|
|
1
|
+
module Elasticsearch
|
2
|
+
module API
|
3
|
+
module Actions
|
4
|
+
|
5
|
+
# Configure the search definition witha template in Mustache and parameters
|
6
|
+
#
|
7
|
+
# @example Insert the start and end values for the `range` query
|
8
|
+
#
|
9
|
+
# client.search_template index: 'myindex',
|
10
|
+
# body: {
|
11
|
+
# template: {
|
12
|
+
# query: {
|
13
|
+
# range: {
|
14
|
+
# date: { gte: "{{start}}", lte: "{{end}}" }
|
15
|
+
# }
|
16
|
+
# }
|
17
|
+
# },
|
18
|
+
# params: { start: "2014-02-01", end: "2014-03-01" }
|
19
|
+
# }
|
20
|
+
#
|
21
|
+
# @option arguments [List] :index A comma-separated list of index names to search; use `_all` or empty
|
22
|
+
# string to perform the operation on all indices
|
23
|
+
# @option arguments [List] :type A comma-separated list of document types to search;
|
24
|
+
# leave empty to perform the operation on all types
|
25
|
+
# @option arguments [Hash] :body The search definition template and its params
|
26
|
+
# @option arguments [Boolean] :ignore_unavailable Whether specified concrete indices should be ignored
|
27
|
+
# when unavailable (missing or closed)
|
28
|
+
# @option arguments [Boolean] :allow_no_indices Whether to ignore if a wildcard indices expression resolves into
|
29
|
+
# no concrete indices. (This includes `_all` string or when no
|
30
|
+
# indices have been specified)
|
31
|
+
# @option arguments [String] :expand_wildcards Whether to expand wildcard expression to concrete indices
|
32
|
+
# that are open, closed or both. (options: open, closed)
|
33
|
+
# @option arguments [String] :preference Specify the node or shard the operation should be performed on
|
34
|
+
# (default: random)
|
35
|
+
# @option arguments [List] :routing A comma-separated list of specific routing values
|
36
|
+
# @option arguments [Duration] :scroll Specify how long a consistent view of the index should be maintained
|
37
|
+
# for scrolled search
|
38
|
+
# @option arguments [String] :search_type Search operation type (options: query_then_fetch, query_and_fetch,
|
39
|
+
# dfs_query_then_fetch, dfs_query_and_fetch, count, scan)
|
40
|
+
#
|
41
|
+
# @see http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/search-template.html
|
42
|
+
#
|
43
|
+
def search_template(arguments={})
|
44
|
+
valid_params = [
|
45
|
+
:ignore_unavailable,
|
46
|
+
:allow_no_indices,
|
47
|
+
:expand_wildcards,
|
48
|
+
:preference,
|
49
|
+
:routing,
|
50
|
+
:scroll,
|
51
|
+
:search_type ]
|
52
|
+
method = 'GET'
|
53
|
+
path = Utils.__pathify( Utils.__listify(arguments[:index]), Utils.__listify(arguments[:type]), '_search/template' )
|
54
|
+
params = Utils.__validate_and_extract_params arguments, valid_params
|
55
|
+
body = arguments[:body]
|
56
|
+
|
57
|
+
perform_request(method, path, params, body).body
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
@@ -22,7 +22,7 @@ module Elasticsearch
|
|
22
22
|
# @option arguments [Boolean] :wait_for_completion Whether the request should block and wait until
|
23
23
|
# the operation has completed
|
24
24
|
#
|
25
|
-
# @see http://www.elasticsearch.org/guide/en/elasticsearch/reference/master/modules-snapshots.html
|
25
|
+
# @see http://www.elasticsearch.org/guide/en/elasticsearch/reference/master/modules-snapshots.html#_snapshot
|
26
26
|
#
|
27
27
|
def create(arguments={})
|
28
28
|
raise ArgumentError, "Required argument 'repository' missing" unless arguments[:repository]
|
@@ -18,7 +18,7 @@ module Elasticsearch
|
|
18
18
|
# @option arguments [Time] :master_timeout Explicit operation timeout for connection to master node
|
19
19
|
# @option arguments [Time] :timeout Explicit operation timeout
|
20
20
|
#
|
21
|
-
# @see http://www.elasticsearch.org/guide/en/elasticsearch/reference/master/modules-snapshots.html
|
21
|
+
# @see http://www.elasticsearch.org/guide/en/elasticsearch/reference/master/modules-snapshots.html#_repositories
|
22
22
|
#
|
23
23
|
def create_repository(arguments={})
|
24
24
|
raise ArgumentError, "Required argument 'repository' missing" unless arguments[:repository]
|
@@ -12,7 +12,7 @@ module Elasticsearch
|
|
12
12
|
# @example Restore a specific index under a different name
|
13
13
|
#
|
14
14
|
# client.snapshot.restore repository: 'my-backups',
|
15
|
-
# snapshot: 'snapshot-
|
15
|
+
# snapshot: 'snapshot-1',
|
16
16
|
# body: {
|
17
17
|
# rename_pattern: "^(.*)$",
|
18
18
|
# rename_replacement: "restored_$1"
|
@@ -0,0 +1,40 @@
|
|
1
|
+
module Elasticsearch
|
2
|
+
module API
|
3
|
+
module Snapshot
|
4
|
+
module Actions
|
5
|
+
|
6
|
+
# Return information about a running snapshot
|
7
|
+
#
|
8
|
+
# @example Return information about all currently running snapshots
|
9
|
+
#
|
10
|
+
# client.snapshot.status repository: 'my-backups', human: true
|
11
|
+
#
|
12
|
+
# @example Return information about a specific snapshot
|
13
|
+
#
|
14
|
+
# client.snapshot.status repository: 'my-backups', human: true
|
15
|
+
#
|
16
|
+
# @option arguments [String] :repository A repository name
|
17
|
+
# @option arguments [List] :snapshot A comma-separated list of snapshot names
|
18
|
+
# @option arguments [Time] :master_timeout Explicit operation timeout for connection to master node
|
19
|
+
#
|
20
|
+
# @see http://www.elasticsearch.org/guide/en/elasticsearch/reference/master/modules-snapshots.html#_snapshot_status
|
21
|
+
#
|
22
|
+
def status(arguments={})
|
23
|
+
valid_params = [
|
24
|
+
:master_timeout ]
|
25
|
+
|
26
|
+
repository = arguments.delete(:repository)
|
27
|
+
snapshot = arguments.delete(:snapshot)
|
28
|
+
|
29
|
+
method = 'GET'
|
30
|
+
|
31
|
+
path = Utils.__pathify( '_snapshot', Utils.__escape(repository), Utils.__escape(snapshot), '_status')
|
32
|
+
params = Utils.__validate_and_extract_params arguments, valid_params
|
33
|
+
body = nil
|
34
|
+
|
35
|
+
perform_request(method, path, params, body).body
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
@@ -103,7 +103,7 @@ module Elasticsearch
|
|
103
103
|
|
104
104
|
# Validates the argument Hash against common and valid API parameters
|
105
105
|
#
|
106
|
-
# @param arguments
|
106
|
+
# @param arguments [Hash] Hash of arguments to verify and extract, **with symbolized keys**
|
107
107
|
# @param valid_params [Array<Symbol>] An array of symbols with valid keys
|
108
108
|
#
|
109
109
|
# @return [Hash] Return whitelisted Hash
|
@@ -130,6 +130,28 @@ module Elasticsearch
|
|
130
130
|
params
|
131
131
|
end
|
132
132
|
|
133
|
+
# Extracts the valid parts of the URL from the arguments
|
134
|
+
#
|
135
|
+
# @note Mutates the `arguments` argument, to prevent failures in `__validate_and_extract_params`.
|
136
|
+
#
|
137
|
+
# @param arguments [Hash] Hash of arguments to verify and extract, **with symbolized keys**
|
138
|
+
# @param valid_parts [Array<Symbol>] An array of symbol with valid keys
|
139
|
+
#
|
140
|
+
# @return [Array<String>] Valid parts of the URL as an array of strings
|
141
|
+
#
|
142
|
+
# @example Extract parts
|
143
|
+
# __extract_parts { :foo => true }, [:foo, :bar]
|
144
|
+
# # => [:foo]
|
145
|
+
#
|
146
|
+
#
|
147
|
+
# @api private
|
148
|
+
#
|
149
|
+
def __extract_parts(arguments, valid_parts=[])
|
150
|
+
parts = arguments.keys.select { |a| valid_parts.include?(a) }.map { |a| a.to_s }.sort
|
151
|
+
arguments.delete_if { |k,v| valid_parts.include? k }
|
152
|
+
return parts
|
153
|
+
end
|
154
|
+
|
133
155
|
extend self
|
134
156
|
end
|
135
157
|
end
|
@@ -395,6 +395,7 @@ suites.each do |suite|
|
|
395
395
|
$stderr.puts "CHECK: Expected '#{property}' to match #{pattern}, is: #{result.inspect}" if ENV['DEBUG']
|
396
396
|
assert_match(pattern, result)
|
397
397
|
else
|
398
|
+
value = value.reduce({}) { |memo, (k,v)| memo[k] = Runner.fetch_or_return(v); memo } if value.is_a? Hash
|
398
399
|
$stderr.puts "CHECK: Expected '#{property}' to be '#{value}', is: #{result.inspect}" if ENV['DEBUG']
|
399
400
|
assert_equal(value, result)
|
400
401
|
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
module Elasticsearch
|
4
|
+
module Test
|
5
|
+
class AbortBenchmarkTest < ::Test::Unit::TestCase
|
6
|
+
|
7
|
+
context "Abort benchmark" 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 'POST', method
|
13
|
+
assert_equal '_bench/abort/foo', url
|
14
|
+
assert_equal nil, params[:name]
|
15
|
+
assert_nil body
|
16
|
+
true
|
17
|
+
end.returns(FakeResponse.new)
|
18
|
+
|
19
|
+
subject.abort_benchmark :name => 'foo'
|
20
|
+
end
|
21
|
+
|
22
|
+
end
|
23
|
+
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|