elasticsearch-extensions 0.0.3 → 0.0.4
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.
- data/Rakefile +3 -3
- data/elasticsearch-extensions.gemspec +3 -4
- data/lib/elasticsearch/extensions/ansi/actions.rb +27 -0
- data/lib/elasticsearch/extensions/ansi/response.rb +6 -2
- data/lib/elasticsearch/extensions/version.rb +1 -1
- data/test/ansi/unit/ansi_test.rb +49 -0
- data/test/test_helper.rb +20 -0
- metadata +18 -30
data/Rakefile
CHANGED
@@ -22,7 +22,7 @@ namespace :test do
|
|
22
22
|
Rake::TestTask.new(:unit) do |test|
|
23
23
|
Rake::Task['test:ci_reporter'].invoke if ENV['CI']
|
24
24
|
test.libs << 'lib' << 'test'
|
25
|
-
test.test_files = FileList["test
|
25
|
+
test.test_files = FileList["test/**/unit/**/*_test.rb"]
|
26
26
|
# test.verbose = true
|
27
27
|
# test.warning = true
|
28
28
|
end
|
@@ -30,13 +30,13 @@ namespace :test do
|
|
30
30
|
Rake::TestTask.new(:integration) do |test|
|
31
31
|
Rake::Task['test:ci_reporter'].invoke if ENV['CI']
|
32
32
|
test.libs << 'lib' << 'test'
|
33
|
-
test.test_files = FileList["test
|
33
|
+
test.test_files = FileList["test/**/integration/**/*_test.rb"]
|
34
34
|
end
|
35
35
|
|
36
36
|
Rake::TestTask.new(:all) do |test|
|
37
37
|
Rake::Task['test:ci_reporter'].invoke if ENV['CI']
|
38
38
|
test.libs << 'lib' << 'test'
|
39
|
-
test.test_files = FileList["test
|
39
|
+
test.test_files = FileList["test/**/unit/**/*_test.rb", "test/**/unit/**/*_test.rb"]
|
40
40
|
end
|
41
41
|
|
42
42
|
Rake::TestTask.new(:profile) do |test|
|
@@ -18,13 +18,14 @@ Gem::Specification.new do |s|
|
|
18
18
|
s.test_files = s.files.grep(%r{^(test|spec|features)/})
|
19
19
|
s.require_paths = ["lib"]
|
20
20
|
|
21
|
-
s.add_dependency "elasticsearch", '~> 0.4
|
21
|
+
s.add_dependency "elasticsearch", '~> 0.4'
|
22
22
|
s.add_dependency "ansi"
|
23
23
|
|
24
|
-
|
25
24
|
s.add_development_dependency "bundler", "> 1"
|
26
25
|
s.add_development_dependency "rake"
|
27
26
|
|
27
|
+
s.add_development_dependency "awesome_print"
|
28
|
+
|
28
29
|
s.add_development_dependency "shoulda-context"
|
29
30
|
s.add_development_dependency "mocha"
|
30
31
|
s.add_development_dependency "turn"
|
@@ -35,7 +36,5 @@ Gem::Specification.new do |s|
|
|
35
36
|
if defined?(RUBY_VERSION) && RUBY_VERSION > '1.9'
|
36
37
|
s.add_development_dependency "simplecov"
|
37
38
|
s.add_development_dependency "cane"
|
38
|
-
s.add_development_dependency "require-prof"
|
39
|
-
s.add_development_dependency "coveralls"
|
40
39
|
end
|
41
40
|
end
|
@@ -157,6 +157,33 @@ module Elasticsearch
|
|
157
157
|
output.join("\n")
|
158
158
|
end
|
159
159
|
|
160
|
+
# Display histogram facets
|
161
|
+
#
|
162
|
+
def display_histogram_facets(json, options={})
|
163
|
+
return unless json['facets']
|
164
|
+
|
165
|
+
output = [] << ''
|
166
|
+
|
167
|
+
facets = json['facets'].select { |name, values| values['_type'] == 'histogram' }
|
168
|
+
facets.each do |name, values|
|
169
|
+
max = values['entries'].map { |t| t['count'] }.max
|
170
|
+
padding = 27
|
171
|
+
ratio = ((Helpers.width)-padding)/max.to_f
|
172
|
+
|
173
|
+
histogram = values['entries']
|
174
|
+
histogram.each_with_index do |segment, i|
|
175
|
+
key = (i == 0) ? "<#{histogram[1]['key']}ms" : "#{segment['key']}ms"
|
176
|
+
|
177
|
+
output << key.rjust(7) +
|
178
|
+
' ' +
|
179
|
+
'█' * (segment['count']*ratio).ceil +
|
180
|
+
" [#{segment['count']}]"
|
181
|
+
end
|
182
|
+
end
|
183
|
+
|
184
|
+
output.join("\n")
|
185
|
+
end
|
186
|
+
|
160
187
|
# Display statistical facets
|
161
188
|
#
|
162
189
|
def display_statistical_facets(json, options={})
|
@@ -13,7 +13,7 @@ module Elasticsearch
|
|
13
13
|
# representation of the Elasticsearch response for:
|
14
14
|
#
|
15
15
|
# * Search results (hits and highlights)
|
16
|
-
# * Facets (terms, statistical, date_histogram)
|
16
|
+
# * Facets (terms, statistical, histogram, date_histogram)
|
17
17
|
# * Analyze API output
|
18
18
|
# * Shard allocation
|
19
19
|
#
|
@@ -31,7 +31,11 @@ module Elasticsearch
|
|
31
31
|
Actions.send(m, self, options)
|
32
32
|
end
|
33
33
|
|
34
|
-
output.compact.
|
34
|
+
unless output.compact.empty?
|
35
|
+
output.compact.join("\n")
|
36
|
+
else
|
37
|
+
self.respond_to?(:awesome_inspect) ? self.awesome_inspect : self.inspect
|
38
|
+
end
|
35
39
|
end
|
36
40
|
end
|
37
41
|
|
@@ -0,0 +1,49 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
require 'elasticsearch/extensions/ansi'
|
3
|
+
|
4
|
+
class Elasticsearch::Extensions::AnsiTest < Test::Unit::TestCase
|
5
|
+
context "The ANSI extension" do
|
6
|
+
setup do
|
7
|
+
@client = Elasticsearch::Client.new
|
8
|
+
@client.stubs(:perform_request).returns \
|
9
|
+
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" })
|
14
|
+
end
|
15
|
+
|
16
|
+
should "wrap the response" do
|
17
|
+
response = @client.info
|
18
|
+
|
19
|
+
assert_instance_of Elasticsearch::Extensions::ANSI::ResponseBody, response
|
20
|
+
assert_instance_of Hash, response.to_hash
|
21
|
+
end
|
22
|
+
|
23
|
+
should "extend the response object with `to_ansi`" do
|
24
|
+
response = @client.info
|
25
|
+
|
26
|
+
assert_respond_to response, :to_ansi
|
27
|
+
assert_instance_of String, response.to_ansi
|
28
|
+
end
|
29
|
+
|
30
|
+
should "call the 'awesome_inspect' method when available and no handler found" do
|
31
|
+
@client.stubs(:perform_request).returns \
|
32
|
+
Elasticsearch::Transport::Transport::Response.new(200, {"index-1"=>{"aliases"=>{}}})
|
33
|
+
response = @client.indices.get_aliases
|
34
|
+
|
35
|
+
response.instance_eval do
|
36
|
+
def awesome_inspect; "---PRETTY---"; end
|
37
|
+
end
|
38
|
+
assert_equal '---PRETTY---', response.to_ansi
|
39
|
+
end
|
40
|
+
|
41
|
+
should "call `to_s` method when no pretty printer or handler found" do
|
42
|
+
@client.stubs(:perform_request).returns \
|
43
|
+
Elasticsearch::Transport::Transport::Response.new(200, {"index-1"=>{"aliases"=>{}}})
|
44
|
+
response = @client.indices.get_aliases
|
45
|
+
|
46
|
+
assert_equal '{"index-1"=>{"aliases"=>{}}}', response.to_ansi
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
data/test/test_helper.rb
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
RUBY_1_8 = defined?(RUBY_VERSION) && RUBY_VERSION < '1.9'
|
2
|
+
|
3
|
+
exit(0) if RUBY_1_8
|
4
|
+
|
5
|
+
require 'simplecov' and SimpleCov.start { add_filter "/test|test_/" } if ENV["COVERAGE"]
|
6
|
+
|
7
|
+
require 'test/unit'
|
8
|
+
require 'shoulda-context'
|
9
|
+
require 'mocha/setup'
|
10
|
+
require 'ansi/code'
|
11
|
+
require 'turn' unless ENV["TM_FILEPATH"] || ENV["NOTURN"] || RUBY_1_8
|
12
|
+
|
13
|
+
require 'elasticsearch/extensions'
|
14
|
+
|
15
|
+
module Elasticsearch
|
16
|
+
module Test
|
17
|
+
class IntegrationTestCase < ::Test::Unit::TestCase
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: elasticsearch-extensions
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.4
|
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: 2013-
|
12
|
+
date: 2013-12-07 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: elasticsearch
|
@@ -18,7 +18,7 @@ dependencies:
|
|
18
18
|
requirements:
|
19
19
|
- - ~>
|
20
20
|
- !ruby/object:Gem::Version
|
21
|
-
version: 0.4
|
21
|
+
version: '0.4'
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
24
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -26,7 +26,7 @@ dependencies:
|
|
26
26
|
requirements:
|
27
27
|
- - ~>
|
28
28
|
- !ruby/object:Gem::Version
|
29
|
-
version: 0.4
|
29
|
+
version: '0.4'
|
30
30
|
- !ruby/object:Gem::Dependency
|
31
31
|
name: ansi
|
32
32
|
requirement: !ruby/object:Gem::Requirement
|
@@ -76,7 +76,7 @@ dependencies:
|
|
76
76
|
- !ruby/object:Gem::Version
|
77
77
|
version: '0'
|
78
78
|
- !ruby/object:Gem::Dependency
|
79
|
-
name:
|
79
|
+
name: awesome_print
|
80
80
|
requirement: !ruby/object:Gem::Requirement
|
81
81
|
none: false
|
82
82
|
requirements:
|
@@ -92,23 +92,7 @@ dependencies:
|
|
92
92
|
- !ruby/object:Gem::Version
|
93
93
|
version: '0'
|
94
94
|
- !ruby/object:Gem::Dependency
|
95
|
-
name:
|
96
|
-
requirement: !ruby/object:Gem::Requirement
|
97
|
-
none: false
|
98
|
-
requirements:
|
99
|
-
- - ! '>='
|
100
|
-
- !ruby/object:Gem::Version
|
101
|
-
version: '0'
|
102
|
-
type: :development
|
103
|
-
prerelease: false
|
104
|
-
version_requirements: !ruby/object:Gem::Requirement
|
105
|
-
none: false
|
106
|
-
requirements:
|
107
|
-
- - ! '>='
|
108
|
-
- !ruby/object:Gem::Version
|
109
|
-
version: '0'
|
110
|
-
- !ruby/object:Gem::Dependency
|
111
|
-
name: turn
|
95
|
+
name: shoulda-context
|
112
96
|
requirement: !ruby/object:Gem::Requirement
|
113
97
|
none: false
|
114
98
|
requirements:
|
@@ -124,7 +108,7 @@ dependencies:
|
|
124
108
|
- !ruby/object:Gem::Version
|
125
109
|
version: '0'
|
126
110
|
- !ruby/object:Gem::Dependency
|
127
|
-
name:
|
111
|
+
name: mocha
|
128
112
|
requirement: !ruby/object:Gem::Requirement
|
129
113
|
none: false
|
130
114
|
requirements:
|
@@ -140,7 +124,7 @@ dependencies:
|
|
140
124
|
- !ruby/object:Gem::Version
|
141
125
|
version: '0'
|
142
126
|
- !ruby/object:Gem::Dependency
|
143
|
-
name:
|
127
|
+
name: turn
|
144
128
|
requirement: !ruby/object:Gem::Requirement
|
145
129
|
none: false
|
146
130
|
requirements:
|
@@ -156,7 +140,7 @@ dependencies:
|
|
156
140
|
- !ruby/object:Gem::Version
|
157
141
|
version: '0'
|
158
142
|
- !ruby/object:Gem::Dependency
|
159
|
-
name:
|
143
|
+
name: yard
|
160
144
|
requirement: !ruby/object:Gem::Requirement
|
161
145
|
none: false
|
162
146
|
requirements:
|
@@ -172,7 +156,7 @@ dependencies:
|
|
172
156
|
- !ruby/object:Gem::Version
|
173
157
|
version: '0'
|
174
158
|
- !ruby/object:Gem::Dependency
|
175
|
-
name:
|
159
|
+
name: ruby-prof
|
176
160
|
requirement: !ruby/object:Gem::Requirement
|
177
161
|
none: false
|
178
162
|
requirements:
|
@@ -188,7 +172,7 @@ dependencies:
|
|
188
172
|
- !ruby/object:Gem::Version
|
189
173
|
version: '0'
|
190
174
|
- !ruby/object:Gem::Dependency
|
191
|
-
name:
|
175
|
+
name: ci_reporter
|
192
176
|
requirement: !ruby/object:Gem::Requirement
|
193
177
|
none: false
|
194
178
|
requirements:
|
@@ -204,7 +188,7 @@ dependencies:
|
|
204
188
|
- !ruby/object:Gem::Version
|
205
189
|
version: '0'
|
206
190
|
- !ruby/object:Gem::Dependency
|
207
|
-
name:
|
191
|
+
name: simplecov
|
208
192
|
requirement: !ruby/object:Gem::Requirement
|
209
193
|
none: false
|
210
194
|
requirements:
|
@@ -220,7 +204,7 @@ dependencies:
|
|
220
204
|
- !ruby/object:Gem::Version
|
221
205
|
version: '0'
|
222
206
|
- !ruby/object:Gem::Dependency
|
223
|
-
name:
|
207
|
+
name: cane
|
224
208
|
requirement: !ruby/object:Gem::Requirement
|
225
209
|
none: false
|
226
210
|
requirements:
|
@@ -255,6 +239,8 @@ files:
|
|
255
239
|
- lib/elasticsearch/extensions/ansi/helpers.rb
|
256
240
|
- lib/elasticsearch/extensions/ansi/response.rb
|
257
241
|
- lib/elasticsearch/extensions/version.rb
|
242
|
+
- test/ansi/unit/ansi_test.rb
|
243
|
+
- test/test_helper.rb
|
258
244
|
homepage: ''
|
259
245
|
licenses:
|
260
246
|
- Apache 2
|
@@ -280,5 +266,7 @@ rubygems_version: 1.8.23
|
|
280
266
|
signing_key:
|
281
267
|
specification_version: 3
|
282
268
|
summary: Extensions for the Elasticsearch Rubygem
|
283
|
-
test_files:
|
269
|
+
test_files:
|
270
|
+
- test/ansi/unit/ansi_test.rb
|
271
|
+
- test/test_helper.rb
|
284
272
|
has_rdoc:
|