@@ -143,6 +143,99 @@ public static MockTransportService startTransport(
143
143
}
144
144
}
145
145
146
+ public void testLocalProfileIsUsedForLocalCluster () throws Exception {
147
+ List <DiscoveryNode > knownNodes = new CopyOnWriteArrayList <>();
148
+ try (MockTransportService seedTransport = startTransport ("seed_node" , knownNodes , Version .CURRENT );
149
+ MockTransportService discoverableTransport = startTransport ("discoverable_node" , knownNodes , Version .CURRENT )) {
150
+ DiscoveryNode seedNode = seedTransport .getLocalDiscoNode ();
151
+ DiscoveryNode discoverableNode = discoverableTransport .getLocalDiscoNode ();
152
+ knownNodes .add (seedTransport .getLocalDiscoNode ());
153
+ knownNodes .add (discoverableTransport .getLocalDiscoNode ());
154
+ Collections .shuffle (knownNodes , random ());
155
+
156
+ try (MockTransportService service = MockTransportService .createNewService (Settings .EMPTY , Version .CURRENT , threadPool , null )) {
157
+ service .start ();
158
+ service .acceptIncomingRequests ();
159
+ try (RemoteClusterConnection connection = new RemoteClusterConnection (Settings .EMPTY , "test-cluster" ,
160
+ Arrays .asList (seedNode ), service , Integer .MAX_VALUE , n -> true )) {
161
+ updateSeedNodes (connection , Arrays .asList (seedNode ));
162
+ assertTrue (service .nodeConnected (seedNode ));
163
+ assertTrue (service .nodeConnected (discoverableNode ));
164
+ assertTrue (connection .assertNoRunningConnections ());
165
+ PlainTransportFuture <ClusterSearchShardsResponse > futureHandler = new PlainTransportFuture <>(
166
+ new FutureTransportResponseHandler <ClusterSearchShardsResponse >() {
167
+
168
+ @ Override
169
+ public ClusterSearchShardsResponse newInstance () {
170
+ return new ClusterSearchShardsResponse ();
171
+ }
172
+ });
173
+ TransportRequestOptions options = TransportRequestOptions .builder ().withType (TransportRequestOptions .Type .BULK )
174
+ .build ();
175
+ service .sendRequest (connection .getConnection (), ClusterSearchShardsAction .NAME , new ClusterSearchShardsRequest (),
176
+ options , futureHandler );
177
+ futureHandler .txGet ();
178
+ }
179
+ }
180
+ }
181
+ }
182
+
183
+ public void testRemoteProfileIsUsedForRemoteCluster () throws Exception {
184
+ List <DiscoveryNode > knownNodes = new CopyOnWriteArrayList <>();
185
+ try (MockTransportService seedTransport = startTransport ("seed_node" , knownNodes , Version .CURRENT , threadPool ,
186
+ Settings .builder ().put ("cluster.name" , "foobar" ).build ());
187
+ MockTransportService discoverableTransport = startTransport ("discoverable_node" , knownNodes , Version .CURRENT ,
188
+ threadPool , Settings .builder ().put ("cluster.name" , "foobar" ).build ())) {
189
+ DiscoveryNode seedNode = seedTransport .getLocalDiscoNode ();
190
+ DiscoveryNode discoverableNode = discoverableTransport .getLocalDiscoNode ();
191
+ knownNodes .add (seedTransport .getLocalDiscoNode ());
192
+ knownNodes .add (discoverableTransport .getLocalDiscoNode ());
193
+ Collections .shuffle (knownNodes , random ());
194
+
195
+ try (MockTransportService service = MockTransportService .createNewService (Settings .EMPTY , Version .CURRENT , threadPool , null )) {
196
+ service .start ();
197
+ service .acceptIncomingRequests ();
198
+ try (RemoteClusterConnection connection = new RemoteClusterConnection (Settings .EMPTY , "test-cluster" ,
199
+ Arrays .asList (seedNode ), service , Integer .MAX_VALUE , n -> true )) {
200
+ updateSeedNodes (connection , Arrays .asList (seedNode ));
201
+ assertTrue (service .nodeConnected (seedNode ));
202
+ assertTrue (service .nodeConnected (discoverableNode ));
203
+ assertTrue (connection .assertNoRunningConnections ());
204
+ PlainTransportFuture <ClusterSearchShardsResponse > futureHandler = new PlainTransportFuture <>(
205
+ new FutureTransportResponseHandler <ClusterSearchShardsResponse >() {
206
+
207
+ @ Override
208
+ public ClusterSearchShardsResponse newInstance () {
209
+ return new ClusterSearchShardsResponse ();
210
+ }
211
+ });
212
+ TransportRequestOptions options = TransportRequestOptions .builder ().withType (TransportRequestOptions .Type .BULK )
213
+ .build ();
214
+ IllegalStateException ise = (IllegalStateException ) expectThrows (SendRequestTransportException .class , () -> {
215
+ service .sendRequest (discoverableNode ,
216
+ ClusterSearchShardsAction .NAME , new ClusterSearchShardsRequest (), options , futureHandler );
217
+ futureHandler .txGet ();
218
+ }).getCause ();
219
+ assertEquals (ise .getMessage (), "can't select channel size is 0 for types: [RECOVERY, BULK, STATE]" );
220
+
221
+ PlainTransportFuture <ClusterSearchShardsResponse > handler = new PlainTransportFuture <>(
222
+ new FutureTransportResponseHandler <ClusterSearchShardsResponse >() {
223
+
224
+ @ Override
225
+ public ClusterSearchShardsResponse newInstance () {
226
+ return new ClusterSearchShardsResponse ();
227
+ }
228
+ });
229
+ TransportRequestOptions ops = TransportRequestOptions .builder ().withType (TransportRequestOptions .Type .REG )
230
+ .build ();
231
+ service .sendRequest (connection .getConnection (), ClusterSearchShardsAction .NAME , new ClusterSearchShardsRequest (),
232
+ ops , handler );
233
+ handler .txGet ();
234
+ }
235
+ }
236
+ }
237
+ }
238
+
146
239
public void testDiscoverSingleNode () throws Exception {
147
240
List <DiscoveryNode > knownNodes = new CopyOnWriteArrayList <>();
148
241
try (MockTransportService seedTransport = startTransport ("seed_node" , knownNodes , Version .CURRENT );
0 commit comments