1
0
Эх сурвалжийг харах

Test: make sure that tests are not affected by changing in address resolution settings

Igor Motov 10 жил өмнө
parent
commit
bac135261c

+ 4 - 0
src/main/java/org/elasticsearch/common/transport/InetSocketTransportAddress.java

@@ -38,6 +38,10 @@ public class InetSocketTransportAddress implements TransportAddress {
         InetSocketTransportAddress.resolveAddress = resolveAddress;
     }
 
+    public static boolean getResolveAddress() {
+        return resolveAddress;
+    }
+
     private InetSocketAddress address;
 
     InetSocketTransportAddress() {

+ 30 - 23
src/test/java/org/elasticsearch/test/ElasticsearchIntegrationTest.java

@@ -1141,34 +1141,41 @@ public abstract class ElasticsearchIntegrationTest extends ElasticsearchTestCase
      */
     protected void ensureClusterStateConsistency() throws IOException {
         if (cluster() != null) {
-            ClusterState masterClusterState = client().admin().cluster().prepareState().all().get().getState();
-            byte[] masterClusterStateBytes = ClusterState.Builder.toBytes(masterClusterState);
-            // remove local node reference
-            masterClusterState = ClusterState.Builder.fromBytes(masterClusterStateBytes, null);
-            Map<String, Object> masterStateMap = convertToMap(masterClusterState);
-            int masterClusterStateSize = ClusterState.Builder.toBytes(masterClusterState).length;
-            for (Client client : cluster()) {
-                ClusterState localClusterState = client.admin().cluster().prepareState().all().setLocal(true).get().getState();
-                byte[] localClusterStateBytes = ClusterState.Builder.toBytes(localClusterState);
+            boolean getResolvedAddress = InetSocketTransportAddress.getResolveAddress();
+            try {
+                InetSocketTransportAddress.setResolveAddress(false);
+                ClusterState masterClusterState = client().admin().cluster().prepareState().all().get().getState();
+                byte[] masterClusterStateBytes = ClusterState.Builder.toBytes(masterClusterState);
                 // remove local node reference
-                localClusterState = ClusterState.Builder.fromBytes(localClusterStateBytes, null);
-                Map<String, Object> localStateMap = convertToMap(localClusterState);
-                int localClusterStateSize = localClusterStateBytes.length;
-                if (masterClusterState.version() == localClusterState.version()) {
-                    try {
-                        assertThat(masterClusterState.uuid(), equalTo(localClusterState.uuid()));
-                        // We cannot compare serialization bytes since serialization order of maps is not guaranteed
-                        // but we can compare serialization sizes - they should be the same
-                        assertThat(masterClusterStateSize, equalTo(localClusterStateSize));
-                        // Compare JSON serialization
-                        assertThat(mapsEqualIgnoringArrayOrder(masterStateMap, localStateMap), equalTo(true));
-                    } catch (AssertionError error) {
-                        logger.error("Cluster state from master:\n{}\nLocal cluster state:\n{}", masterClusterState.toString(), localClusterState.toString());
-                        throw error;
+                masterClusterState = ClusterState.Builder.fromBytes(masterClusterStateBytes, null);
+                Map<String, Object> masterStateMap = convertToMap(masterClusterState);
+                int masterClusterStateSize = ClusterState.Builder.toBytes(masterClusterState).length;
+                for (Client client : cluster()) {
+                    ClusterState localClusterState = client.admin().cluster().prepareState().all().setLocal(true).get().getState();
+                    byte[] localClusterStateBytes = ClusterState.Builder.toBytes(localClusterState);
+                    // remove local node reference
+                    localClusterState = ClusterState.Builder.fromBytes(localClusterStateBytes, null);
+                    Map<String, Object> localStateMap = convertToMap(localClusterState);
+                    int localClusterStateSize = localClusterStateBytes.length;
+                    if (masterClusterState.version() == localClusterState.version()) {
+                        try {
+                            assertThat(masterClusterState.uuid(), equalTo(localClusterState.uuid()));
+                            // We cannot compare serialization bytes since serialization order of maps is not guaranteed
+                            // but we can compare serialization sizes - they should be the same
+                            assertThat(masterClusterStateSize, equalTo(localClusterStateSize));
+                            // Compare JSON serialization
+                            assertThat(mapsEqualIgnoringArrayOrder(masterStateMap, localStateMap), equalTo(true));
+                        } catch (AssertionError error) {
+                            logger.error("Cluster state from master:\n{}\nLocal cluster state:\n{}", masterClusterState.toString(), localClusterState.toString());
+                            throw error;
+                        }
                     }
                 }
+            } finally {
+                InetSocketTransportAddress.setResolveAddress(getResolvedAddress);
             }
         }
+
     }
 
     /**