@@ -143,6 +143,99 @@ public static MockTransportService startTransport(
143143 }
144144 }
145145
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+
146239 public void testDiscoverSingleNode () throws Exception {
147240 List <DiscoveryNode > knownNodes = new CopyOnWriteArrayList <>();
148241 try (MockTransportService seedTransport = startTransport ("seed_node" , knownNodes , Version .CURRENT );
0 commit comments