From d66524a83b2e74b30c6451cbe51f58fc8a77459b Mon Sep 17 00:00:00 2001 From: David Turner Date: Fri, 14 Jun 2019 10:07:05 +0100 Subject: [PATCH 1/2] Add UnknownRole#equals, hashCode, toString Adds methods to `DiscoveryNodeRole.UnknownRole` to compare these objects' values for equality, and adds a specialized `toString()` implementation for clearer test failures. Relates #43175 --- .../cluster/node/DiscoveryNodeRole.java | 23 ++++++++++++++++++- .../cluster/node/DiscoveryNodeRoleTests.java | 12 ++++++++++ .../cluster/node/DiscoveryNodeTests.java | 1 + 3 files changed, 35 insertions(+), 1 deletion(-) diff --git a/server/src/main/java/org/elasticsearch/cluster/node/DiscoveryNodeRole.java b/server/src/main/java/org/elasticsearch/cluster/node/DiscoveryNodeRole.java index ba63335d10046..4f96d3cee14cf 100644 --- a/server/src/main/java/org/elasticsearch/cluster/node/DiscoveryNodeRole.java +++ b/server/src/main/java/org/elasticsearch/cluster/node/DiscoveryNodeRole.java @@ -113,7 +113,7 @@ protected Setting roleSetting() { * Represents an unknown role. This can occur if a newer version adds a role that an older version does not know about, or a newer * version removes a role that an older version knows about. */ - static class UnknownRole extends DiscoveryNodeRole { + public static class UnknownRole extends DiscoveryNodeRole { /** * Construct an unknown role with the specified role name and role name abbreviation. @@ -132,6 +132,27 @@ protected Setting roleSetting() { return Setting.boolSetting("node. " + roleName(), false, Setting.Property.NodeScope); } + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + UnknownRole that = (UnknownRole) o; + return Objects.equals(roleName(), that.roleName()) && + Objects.equals(roleNameAbbreviation(), that.roleNameAbbreviation()); + } + + @Override + public int hashCode() { + return Objects.hash(roleName(), roleNameAbbreviation()); + } + + @Override + public String toString() { + return "UnknownRole{" + + "roleName='" + roleName() + '\'' + + ", roleAbbreviation='" + roleNameAbbreviation() + '\'' + + '}'; + } } } diff --git a/server/src/test/java/org/elasticsearch/cluster/node/DiscoveryNodeRoleTests.java b/server/src/test/java/org/elasticsearch/cluster/node/DiscoveryNodeRoleTests.java index f5fdd2d66fac9..a8e529a89fbb6 100644 --- a/server/src/test/java/org/elasticsearch/cluster/node/DiscoveryNodeRoleTests.java +++ b/server/src/test/java/org/elasticsearch/cluster/node/DiscoveryNodeRoleTests.java @@ -21,6 +21,7 @@ import org.elasticsearch.common.settings.Setting; import org.elasticsearch.test.ESTestCase; +import org.elasticsearch.test.EqualsHashCodeTestUtils; import java.util.Set; @@ -75,4 +76,15 @@ protected Setting roleSetting() { assertThat(e, hasToString(containsString("Duplicate key"))); } + public void testUnknownDiscoveryNodeRoleEqualsHashCode() { + EqualsHashCodeTestUtils.checkEqualsAndHashCode(new DiscoveryNodeRole.UnknownRole(randomAlphaOfLength(10), randomAlphaOfLength(1)), + r -> new DiscoveryNodeRole.UnknownRole(r.roleName(), r.roleNameAbbreviation()), + r -> { + if (randomBoolean()) { + return new DiscoveryNodeRole.UnknownRole(randomAlphaOfLength(21 - r.roleName().length()), r.roleNameAbbreviation()); + } else { + return new DiscoveryNodeRole.UnknownRole(r.roleName(), randomAlphaOfLength(3 - r.roleNameAbbreviation().length())); + } + }); + } } diff --git a/server/src/test/java/org/elasticsearch/cluster/node/DiscoveryNodeTests.java b/server/src/test/java/org/elasticsearch/cluster/node/DiscoveryNodeTests.java index b020c7e03f107..f3dc8bb1e4143 100644 --- a/server/src/test/java/org/elasticsearch/cluster/node/DiscoveryNodeTests.java +++ b/server/src/test/java/org/elasticsearch/cluster/node/DiscoveryNodeTests.java @@ -24,6 +24,7 @@ import org.elasticsearch.common.io.stream.StreamInput; import org.elasticsearch.common.transport.TransportAddress; import org.elasticsearch.test.ESTestCase; +import org.elasticsearch.test.EqualsHashCodeTestUtils; import java.net.InetAddress; From 0b45894c9f05093cb01715042ea83e24b6f649eb Mon Sep 17 00:00:00 2001 From: David Turner Date: Fri, 14 Jun 2019 10:35:14 +0100 Subject: [PATCH 2/2] Decruftify --- .../java/org/elasticsearch/cluster/node/DiscoveryNodeRole.java | 2 +- .../java/org/elasticsearch/cluster/node/DiscoveryNodeTests.java | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/server/src/main/java/org/elasticsearch/cluster/node/DiscoveryNodeRole.java b/server/src/main/java/org/elasticsearch/cluster/node/DiscoveryNodeRole.java index 4f96d3cee14cf..6edc0bd756055 100644 --- a/server/src/main/java/org/elasticsearch/cluster/node/DiscoveryNodeRole.java +++ b/server/src/main/java/org/elasticsearch/cluster/node/DiscoveryNodeRole.java @@ -113,7 +113,7 @@ protected Setting roleSetting() { * Represents an unknown role. This can occur if a newer version adds a role that an older version does not know about, or a newer * version removes a role that an older version knows about. */ - public static class UnknownRole extends DiscoveryNodeRole { + static class UnknownRole extends DiscoveryNodeRole { /** * Construct an unknown role with the specified role name and role name abbreviation. diff --git a/server/src/test/java/org/elasticsearch/cluster/node/DiscoveryNodeTests.java b/server/src/test/java/org/elasticsearch/cluster/node/DiscoveryNodeTests.java index f3dc8bb1e4143..b020c7e03f107 100644 --- a/server/src/test/java/org/elasticsearch/cluster/node/DiscoveryNodeTests.java +++ b/server/src/test/java/org/elasticsearch/cluster/node/DiscoveryNodeTests.java @@ -24,7 +24,6 @@ import org.elasticsearch.common.io.stream.StreamInput; import org.elasticsearch.common.transport.TransportAddress; import org.elasticsearch.test.ESTestCase; -import org.elasticsearch.test.EqualsHashCodeTestUtils; import java.net.InetAddress;