JAVA-3115: SimpleStrategy#equals should compare replicationFactor using ReplicationFactor#equals (#1718)
diff --git a/driver-core/src/main/java/com/datastax/driver/core/ReplicationStategy.java b/driver-core/src/main/java/com/datastax/driver/core/ReplicationStategy.java
index aaaefd9..0635160 100644
--- a/driver-core/src/main/java/com/datastax/driver/core/ReplicationStategy.java
+++ b/driver-core/src/main/java/com/datastax/driver/core/ReplicationStategy.java
@@ -106,7 +106,7 @@
SimpleStrategy that = (SimpleStrategy) o;
- return replicationFactor == that.replicationFactor;
+ return replicationFactor.equals(that.replicationFactor);
}
@Override
diff --git a/driver-core/src/test/java/com/datastax/driver/core/ReplicationStrategyTest.java b/driver-core/src/test/java/com/datastax/driver/core/ReplicationStrategyTest.java
index 5615623..12f284f 100644
--- a/driver-core/src/test/java/com/datastax/driver/core/ReplicationStrategyTest.java
+++ b/driver-core/src/test/java/com/datastax/driver/core/ReplicationStrategyTest.java
@@ -15,6 +15,7 @@
*/
package com.datastax.driver.core;
+import static org.assertj.core.api.Assertions.assertThat;
import static org.testng.Assert.assertNotNull;
import static org.testng.Assert.assertNull;
import static org.testng.Assert.assertTrue;
@@ -87,4 +88,77 @@
assertNull(strategy);
}
+
+ @Test(groups = "unit")
+ public void simpleStrategyEqualsTest() {
+ ReplicationStrategy rf3_1 =
+ ReplicationStrategy.create(
+ ImmutableMap.<String, String>builder()
+ .put("class", "SimpleStrategy")
+ .put("replication_factor", "3")
+ .build());
+
+ ReplicationStrategy rf3_2 =
+ ReplicationStrategy.create(
+ ImmutableMap.<String, String>builder()
+ .put("class", "SimpleStrategy")
+ .put("replication_factor", "3")
+ .build());
+
+ ReplicationStrategy rf2_1 =
+ ReplicationStrategy.create(
+ ImmutableMap.<String, String>builder()
+ .put("class", "SimpleStrategy")
+ .put("replication_factor", "2")
+ .build());
+
+ //noinspection EqualsWithItself
+ assertThat(rf3_1).isEqualTo(rf3_1);
+ assertThat(rf3_1).isEqualTo(rf3_2);
+ assertThat(rf3_1).isNotEqualTo(rf2_1);
+ }
+
+ public void networkTopologyStrategyEqualsTest() {
+ ReplicationStrategy network_dc1x2_dc2x2_1 =
+ ReplicationStrategy.create(
+ ImmutableMap.<String, String>builder()
+ .put("class", "NetworkTopologyStrategy")
+ .put("dc1", "2")
+ .put("dc2", "2")
+ .build());
+ ReplicationStrategy network_dc1x2_dc2x2_2 =
+ ReplicationStrategy.create(
+ ImmutableMap.<String, String>builder()
+ .put("class", "NetworkTopologyStrategy")
+ .put("dc1", "2")
+ .put("dc2", "2")
+ .build());
+ ReplicationStrategy network_dc1x1_dc2x2_1 =
+ ReplicationStrategy.create(
+ ImmutableMap.<String, String>builder()
+ .put("class", "NetworkTopologyStrategy")
+ .put("dc1", "1")
+ .put("dc2", "2")
+ .build());
+ ReplicationStrategy network_dc1x2_dc3x2_1 =
+ ReplicationStrategy.create(
+ ImmutableMap.<String, String>builder()
+ .put("class", "NetworkTopologyStrategy")
+ .put("dc1", "2")
+ .put("dc3", "2")
+ .build());
+ ReplicationStrategy network_dc1x2_1 =
+ ReplicationStrategy.create(
+ ImmutableMap.<String, String>builder()
+ .put("class", "NetworkTopologyStrategy")
+ .put("dc1", "2")
+ .build());
+
+ //noinspection EqualsWithItself
+ assertThat(network_dc1x2_dc2x2_1).isEqualTo(network_dc1x2_dc2x2_1);
+ assertThat(network_dc1x2_dc2x2_1).isEqualTo(network_dc1x2_dc2x2_2);
+ assertThat(network_dc1x2_dc2x2_1).isNotEqualTo(network_dc1x1_dc2x2_1);
+ assertThat(network_dc1x2_dc2x2_1).isNotEqualTo(network_dc1x2_dc3x2_1);
+ assertThat(network_dc1x2_dc2x2_1).isNotEqualTo(network_dc1x2_1);
+ }
}