This is an automated email from the ASF dual-hosted git repository.
ibessonov pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/ignite-3.git
The following commit(s) were added to refs/heads/main by this push:
new a0389e94f7 IGNITE-18500 HybridTimestamp defines equals(), but not
hashCode() (#1492)
a0389e94f7 is described below
commit a0389e94f7192a4a56f48857a655e4817d6e5fe3
Author: Roman Puchkovskiy <[email protected]>
AuthorDate: Thu Jan 5 14:11:29 2023 +0400
IGNITE-18500 HybridTimestamp defines equals(), but not hashCode() (#1492)
---
.../ignite/internal/hlc/HybridTimestamp.java | 22 ++++++++++++++-----
.../internal/{ => hlc}/HybridTimestampTest.java | 25 +++++++++++++++++++++-
2 files changed, 41 insertions(+), 6 deletions(-)
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/hlc/HybridTimestamp.java
b/modules/core/src/main/java/org/apache/ignite/internal/hlc/HybridTimestamp.java
index 79495518bc..d3c8415cc8 100644
---
a/modules/core/src/main/java/org/apache/ignite/internal/hlc/HybridTimestamp.java
+++
b/modules/core/src/main/java/org/apache/ignite/internal/hlc/HybridTimestamp.java
@@ -107,17 +107,30 @@ public final class HybridTimestamp implements
Comparable<HybridTimestamp>, Seria
return new HybridTimestamp(physical, this.logical + ticks);
}
- /** {@inheritDoc} */
@Override
public boolean equals(Object o) {
- if (!(o instanceof HybridTimestamp)) {
+ if (this == o) {
+ return true;
+ }
+ if (o == null || getClass() != o.getClass()) {
return false;
}
- return compareTo((HybridTimestamp) o) == 0;
+ HybridTimestamp that = (HybridTimestamp) o;
+
+ if (physical != that.physical) {
+ return false;
+ }
+ return logical == that.logical;
+ }
+
+ @Override
+ public int hashCode() {
+ int result = (int) (physical ^ (physical >>> 32));
+ result = 31 * result + logical;
+ return result;
}
- /** {@inheritDoc} */
@Override
public int compareTo(HybridTimestamp other) {
if (this.physical == other.physical) {
@@ -127,7 +140,6 @@ public final class HybridTimestamp implements
Comparable<HybridTimestamp>, Seria
return Long.compare(this.physical, other.physical);
}
- /** {@inheritDoc} */
@Override
public String toString() {
return S.toString(HybridTimestamp.class, this);
diff --git
a/modules/core/src/test/java/org/apache/ignite/internal/HybridTimestampTest.java
b/modules/core/src/test/java/org/apache/ignite/internal/hlc/HybridTimestampTest.java
similarity index 66%
rename from
modules/core/src/test/java/org/apache/ignite/internal/HybridTimestampTest.java
rename to
modules/core/src/test/java/org/apache/ignite/internal/hlc/HybridTimestampTest.java
index 95a5429a00..12a2d31374 100644
---
a/modules/core/src/test/java/org/apache/ignite/internal/HybridTimestampTest.java
+++
b/modules/core/src/test/java/org/apache/ignite/internal/hlc/HybridTimestampTest.java
@@ -18,6 +18,9 @@
package org.apache.ignite.internal.hlc;
import static org.apache.ignite.internal.hlc.HybridTimestamp.max;
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.hamcrest.Matchers.equalTo;
+import static org.hamcrest.Matchers.not;
import static org.junit.jupiter.api.Assertions.assertEquals;
import org.junit.jupiter.api.Test;
@@ -28,7 +31,7 @@ import org.junit.jupiter.api.Test;
*/
class HybridTimestampTest {
@Test
- public void testComparison() {
+ void testComparison() {
assertEquals(new HybridTimestamp(10, 5),
max(new HybridTimestamp(10, 5), new HybridTimestamp(5, 7))
);
@@ -43,4 +46,24 @@ class HybridTimestampTest {
assertEquals(null, max());
}
+
+ @Test
+ void equalWhenComponentsAreSame() {
+ assertThat(new HybridTimestamp(1, 2), equalTo(new HybridTimestamp(1,
2)));
+ }
+
+ @Test
+ void notEqualWhenPhysicalIsDifferent() {
+ assertThat(new HybridTimestamp(1, 2), not(equalTo(new
HybridTimestamp(2, 2))));
+ }
+
+ @Test
+ void notEqualWhenLogicalIsDifferent() {
+ assertThat(new HybridTimestamp(1, 2), not(equalTo(new
HybridTimestamp(1, 3))));
+ }
+
+ @Test
+ void hashCodeSameWhenComponentsAreSame() {
+ assertEquals(new HybridTimestamp(1, 2).hashCode(), new
HybridTimestamp(1, 2).hashCode());
+ }
}