elasticsearch-transport 6.8.1 → 6.8.2
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.
- checksums.yaml +4 -4
- data/README.md +86 -32
- data/elasticsearch-transport.gemspec +44 -64
- data/lib/elasticsearch-transport.rb +4 -0
- data/lib/elasticsearch/transport.rb +4 -0
- data/lib/elasticsearch/transport/client.rb +51 -11
- data/lib/elasticsearch/transport/redacted.rb +4 -0
- data/lib/elasticsearch/transport/transport/base.rb +17 -7
- data/lib/elasticsearch/transport/transport/connections/collection.rb +4 -0
- data/lib/elasticsearch/transport/transport/connections/connection.rb +4 -0
- data/lib/elasticsearch/transport/transport/connections/selector.rb +4 -0
- data/lib/elasticsearch/transport/transport/errors.rb +4 -0
- data/lib/elasticsearch/transport/transport/http/curb.rb +6 -2
- data/lib/elasticsearch/transport/transport/http/faraday.rb +6 -2
- data/lib/elasticsearch/transport/transport/http/manticore.rb +5 -1
- data/lib/elasticsearch/transport/transport/response.rb +4 -0
- data/lib/elasticsearch/transport/transport/serializer/multi_json.rb +4 -0
- data/lib/elasticsearch/transport/transport/sniffer.rb +31 -3
- data/lib/elasticsearch/transport/version.rb +5 -1
- data/spec/elasticsearch/transport/base_spec.rb +184 -0
- data/spec/elasticsearch/transport/client_spec.rb +117 -21
- data/spec/elasticsearch/transport/sniffer_spec.rb +269 -0
- data/spec/spec_helper.rb +4 -0
- data/test/integration/transport_test.rb +4 -0
- data/test/profile/client_benchmark_test.rb +4 -0
- data/test/test_helper.rb +4 -0
- data/test/unit/connection_collection_test.rb +4 -0
- data/test/unit/connection_selector_test.rb +4 -0
- data/test/unit/connection_test.rb +4 -0
- data/test/unit/response_test.rb +5 -1
- data/test/unit/serializer_test.rb +4 -0
- data/test/unit/transport_base_test.rb +4 -0
- data/test/unit/transport_curb_test.rb +4 -0
- data/test/unit/transport_faraday_test.rb +4 -0
- data/test/unit/transport_manticore_test.rb +4 -0
- metadata +68 -64
- data/test/unit/sniffer_test.rb +0 -179
data/test/unit/sniffer_test.rb
DELETED
@@ -1,179 +0,0 @@
|
|
1
|
-
require 'test_helper'
|
2
|
-
|
3
|
-
class Elasticsearch::Transport::Transport::SnifferTest < Test::Unit::TestCase
|
4
|
-
|
5
|
-
class DummyTransport
|
6
|
-
include Elasticsearch::Transport::Transport::Base
|
7
|
-
def __build_connections; hosts; end
|
8
|
-
end
|
9
|
-
|
10
|
-
def __nodes_info(json)
|
11
|
-
Elasticsearch::Transport::Transport::Response.new 200, MultiJson.load(json)
|
12
|
-
end
|
13
|
-
|
14
|
-
DEFAULT_NODES_INFO_RESPONSE = <<-JSON
|
15
|
-
{
|
16
|
-
"cluster_name" : "elasticsearch_test",
|
17
|
-
"nodes" : {
|
18
|
-
"N1" : {
|
19
|
-
"name" : "Node 1",
|
20
|
-
"transport_address" : "127.0.0.1:9300",
|
21
|
-
"host" : "testhost1",
|
22
|
-
"ip" : "127.0.0.1",
|
23
|
-
"version" : "5.0.0",
|
24
|
-
"roles": [
|
25
|
-
"master",
|
26
|
-
"data",
|
27
|
-
"ingest"
|
28
|
-
],
|
29
|
-
"attributes": {
|
30
|
-
"testattr": "test"
|
31
|
-
},
|
32
|
-
"http": {
|
33
|
-
"bound_address": [
|
34
|
-
"[fe80::1]:9250",
|
35
|
-
"[::1]:9250",
|
36
|
-
"127.0.0.1:9250"
|
37
|
-
],
|
38
|
-
"publish_address": "127.0.0.1:9250",
|
39
|
-
"max_content_length_in_bytes": 104857600
|
40
|
-
}
|
41
|
-
}
|
42
|
-
}
|
43
|
-
}
|
44
|
-
JSON
|
45
|
-
|
46
|
-
context "Sniffer" do
|
47
|
-
setup do
|
48
|
-
@transport = DummyTransport.new
|
49
|
-
@sniffer = Elasticsearch::Transport::Transport::Sniffer.new @transport
|
50
|
-
end
|
51
|
-
|
52
|
-
should "be initialized with a transport instance" do
|
53
|
-
assert_equal @transport, @sniffer.transport
|
54
|
-
end
|
55
|
-
|
56
|
-
should "return an array of hosts as hashes" do
|
57
|
-
@transport.expects(:perform_request).returns __nodes_info(DEFAULT_NODES_INFO_RESPONSE)
|
58
|
-
|
59
|
-
hosts = @sniffer.hosts
|
60
|
-
|
61
|
-
assert_equal 1, hosts.size
|
62
|
-
assert_equal '127.0.0.1', hosts.first[:host]
|
63
|
-
assert_equal '9250', hosts.first[:port]
|
64
|
-
assert_equal 'Node 1', hosts.first[:name]
|
65
|
-
end
|
66
|
-
|
67
|
-
should "return an array of hosts as hostnames when a hostname is returned" do
|
68
|
-
@transport.expects(:perform_request).returns __nodes_info <<-JSON
|
69
|
-
{
|
70
|
-
"nodes" : {
|
71
|
-
"N1" : {
|
72
|
-
"http": {
|
73
|
-
"publish_address": "testhost1.com:9250"
|
74
|
-
}
|
75
|
-
}
|
76
|
-
}
|
77
|
-
}
|
78
|
-
JSON
|
79
|
-
|
80
|
-
hosts = @sniffer.hosts
|
81
|
-
|
82
|
-
assert_equal 1, hosts.size
|
83
|
-
assert_equal 'testhost1.com', hosts.first[:host]
|
84
|
-
assert_equal '9250', hosts.first[:port]
|
85
|
-
end
|
86
|
-
|
87
|
-
should "return HTTP hosts for the HTTPS protocol in the transport" do
|
88
|
-
@transport = DummyTransport.new :options => { :protocol => 'https' }
|
89
|
-
@sniffer = Elasticsearch::Transport::Transport::Sniffer.new @transport
|
90
|
-
|
91
|
-
@transport.expects(:perform_request).returns __nodes_info(DEFAULT_NODES_INFO_RESPONSE)
|
92
|
-
|
93
|
-
assert_equal 1, @sniffer.hosts.size
|
94
|
-
end
|
95
|
-
|
96
|
-
should "skip hosts without a matching transport protocol" do
|
97
|
-
@transport = DummyTransport.new
|
98
|
-
@sniffer = Elasticsearch::Transport::Transport::Sniffer.new @transport
|
99
|
-
|
100
|
-
@transport.expects(:perform_request).returns __nodes_info <<-JSON
|
101
|
-
{
|
102
|
-
"nodes" : {
|
103
|
-
"N1" : {
|
104
|
-
"foobar": {
|
105
|
-
"publish_address": "foobar:1234"
|
106
|
-
}
|
107
|
-
}
|
108
|
-
}
|
109
|
-
}
|
110
|
-
JSON
|
111
|
-
|
112
|
-
assert_empty @sniffer.hosts
|
113
|
-
end
|
114
|
-
|
115
|
-
should "have configurable timeout" do
|
116
|
-
@transport = DummyTransport.new :options => { :sniffer_timeout => 0.001 }
|
117
|
-
@sniffer = Elasticsearch::Transport::Transport::Sniffer.new @transport
|
118
|
-
assert_equal 0.001, @sniffer.timeout
|
119
|
-
end
|
120
|
-
|
121
|
-
should "have settable timeout" do
|
122
|
-
@transport = DummyTransport.new
|
123
|
-
@sniffer = Elasticsearch::Transport::Transport::Sniffer.new @transport
|
124
|
-
assert_equal 1, @sniffer.timeout
|
125
|
-
|
126
|
-
@sniffer.timeout = 2
|
127
|
-
assert_equal 2, @sniffer.timeout
|
128
|
-
end
|
129
|
-
|
130
|
-
should "raise error on timeout" do
|
131
|
-
@transport.expects(:perform_request).raises(Elasticsearch::Transport::Transport::SnifferTimeoutError)
|
132
|
-
|
133
|
-
# TODO: Try to inject sleep into `perform_request` or make this test less ridiculous anyhow...
|
134
|
-
assert_raise Elasticsearch::Transport::Transport::SnifferTimeoutError do
|
135
|
-
@sniffer.hosts
|
136
|
-
end
|
137
|
-
end
|
138
|
-
|
139
|
-
should "randomize hosts" do
|
140
|
-
@transport = DummyTransport.new :options => { :randomize_hosts => true }
|
141
|
-
@sniffer = Elasticsearch::Transport::Transport::Sniffer.new @transport
|
142
|
-
|
143
|
-
@transport.expects(:perform_request).returns __nodes_info <<-JSON
|
144
|
-
{
|
145
|
-
"ok" : true,
|
146
|
-
"cluster_name" : "elasticsearch_test",
|
147
|
-
"nodes" : {
|
148
|
-
"N1" : {
|
149
|
-
"name" : "Node 1",
|
150
|
-
"http_address" : "inet[/192.168.1.23:9200]"
|
151
|
-
},
|
152
|
-
"N2" : {
|
153
|
-
"name" : "Node 2",
|
154
|
-
"http_address" : "inet[/192.168.1.23:9201]"
|
155
|
-
},
|
156
|
-
"N3" : {
|
157
|
-
"name" : "Node 3",
|
158
|
-
"http_address" : "inet[/192.168.1.23:9202]"
|
159
|
-
},
|
160
|
-
"N4" : {
|
161
|
-
"name" : "Node 4",
|
162
|
-
"http_address" : "inet[/192.168.1.23:9203]"
|
163
|
-
},
|
164
|
-
"N5" : {
|
165
|
-
"name" : "Node 5",
|
166
|
-
"http_address" : "inet[/192.168.1.23:9204]"
|
167
|
-
}
|
168
|
-
}
|
169
|
-
}
|
170
|
-
JSON
|
171
|
-
|
172
|
-
Array.any_instance.expects(:shuffle!)
|
173
|
-
|
174
|
-
hosts = @sniffer.hosts
|
175
|
-
end
|
176
|
-
|
177
|
-
end
|
178
|
-
|
179
|
-
end
|