This is an automated email from the ASF dual-hosted git repository.

apolovtsev 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 be03897554 IGNITE-22957 Use non-random transaction IDs in tests (#4201)
be03897554 is described below

commit be03897554f5184e55311237d59f1adf76cde714
Author: Alexander Polovtcev <[email protected]>
AuthorDate: Thu Aug 8 12:12:18 2024 +0300

    IGNITE-22957 Use non-random transaction IDs in tests (#4201)
---
 .../apache/ignite/internal/schema/BinaryRowMatcher.java | 16 ++++++++++++----
 modules/storage-api/build.gradle                        |  1 +
 .../AbstractMvPartitionStorageConcurrencyTest.java      | 17 ++++++++++-------
 .../storage/AbstractMvPartitionStorageTest.java         | 10 +---------
 .../internal/storage/AbstractMvTableStorageTest.java    | 15 +++++++++------
 .../internal/storage/BaseMvPartitionStorageTest.java    | 11 +----------
 .../ignite/internal/storage/BaseMvStoragesTest.java     |  9 +++++++++
 .../storage/rocksdb/RocksDbMvTableStorageTest.java      |  4 ++--
 8 files changed, 45 insertions(+), 38 deletions(-)

diff --git 
a/modules/schema/src/testFixtures/java/org/apache/ignite/internal/schema/BinaryRowMatcher.java
 
b/modules/schema/src/testFixtures/java/org/apache/ignite/internal/schema/BinaryRowMatcher.java
index db4f9c21f7..572152c7b5 100644
--- 
a/modules/schema/src/testFixtures/java/org/apache/ignite/internal/schema/BinaryRowMatcher.java
+++ 
b/modules/schema/src/testFixtures/java/org/apache/ignite/internal/schema/BinaryRowMatcher.java
@@ -17,11 +17,10 @@
 
 package org.apache.ignite.internal.schema;
 
-import static org.hamcrest.Matchers.is;
-
 import java.nio.ByteBuffer;
 import java.util.Arrays;
 import org.hamcrest.CustomMatcher;
+import org.hamcrest.Description;
 import org.hamcrest.Matcher;
 import org.jetbrains.annotations.Nullable;
 
@@ -30,16 +29,25 @@ public class BinaryRowMatcher extends 
CustomMatcher<BinaryRow> {
     private final @Nullable BinaryRow row;
 
     private BinaryRowMatcher(@Nullable BinaryRow row) {
-        super("Expected row to be equal to " + rowToString(row));
+        super("a row equal to " + rowToString(row));
         this.row = row;
     }
 
+    @Override
+    public void describeMismatch(Object item, Description description) {
+        if (item instanceof BinaryRow) {
+            description.appendText("but was " + rowToString((BinaryRow) item));
+        } else {
+            super.describeMismatch(item, description);
+        }
+    }
+
     public static BinaryRowMatcher equalToRow(@Nullable BinaryRow row) {
         return new BinaryRowMatcher(row);
     }
 
     public static Matcher<BinaryRow> isRow(@Nullable BinaryRow expectedRow) {
-        return is(equalToRow(expectedRow));
+        return equalToRow(expectedRow);
     }
 
     @Override
diff --git a/modules/storage-api/build.gradle b/modules/storage-api/build.gradle
index bb4d866e5c..64aa130e74 100644
--- a/modules/storage-api/build.gradle
+++ b/modules/storage-api/build.gradle
@@ -55,6 +55,7 @@ dependencies {
     testFixturesImplementation project(':ignite-catalog')
     testFixturesImplementation project(':ignite-system-view-api')
     testFixturesImplementation project(':ignite-failure-handler')
+    testFixturesImplementation project(':ignite-transactions')
     testFixturesImplementation(testFixtures(project(':ignite-core')))
     testFixturesImplementation(testFixtures(project(':ignite-configuration')))
     testFixturesImplementation(testFixtures(project(':ignite-schema')))
diff --git 
a/modules/storage-api/src/testFixtures/java/org/apache/ignite/internal/storage/AbstractMvPartitionStorageConcurrencyTest.java
 
b/modules/storage-api/src/testFixtures/java/org/apache/ignite/internal/storage/AbstractMvPartitionStorageConcurrencyTest.java
index 966a8b2426..726fabc4ed 100644
--- 
a/modules/storage-api/src/testFixtures/java/org/apache/ignite/internal/storage/AbstractMvPartitionStorageConcurrencyTest.java
+++ 
b/modules/storage-api/src/testFixtures/java/org/apache/ignite/internal/storage/AbstractMvPartitionStorageConcurrencyTest.java
@@ -29,6 +29,7 @@ import static org.junit.jupiter.api.Assertions.assertNotNull;
 import static org.junit.jupiter.api.Assertions.assertNull;
 
 import java.util.Collection;
+import java.util.UUID;
 import java.util.concurrent.ConcurrentLinkedQueue;
 import java.util.concurrent.LinkedBlockingQueue;
 import org.apache.ignite.internal.hlc.HybridTimestamp;
@@ -47,10 +48,12 @@ public abstract class 
AbstractMvPartitionStorageConcurrencyTest extends BaseMvPa
     /** To be used in a loop. {@link RepeatedTest} has a smaller failure rate 
due to recreating the storage every time. */
     private static final int REPEATS = 100;
 
+    private final UUID txId = newTransactionId();
+
     @Test
     void testAbortAndRead() {
         for (int i = 0; i < REPEATS; i++) {
-            addWrite(ROW_ID, TABLE_ROW, TX_ID);
+            addWrite(ROW_ID, TABLE_ROW, txId);
 
             runRace(
                     () -> abortWrite(ROW_ID),
@@ -66,7 +69,7 @@ public abstract class 
AbstractMvPartitionStorageConcurrencyTest extends BaseMvPa
     @Test
     void testCommitAndRead() {
         for (int i = 0; i < REPEATS; i++) {
-            addWrite(ROW_ID, TABLE_ROW, TX_ID);
+            addWrite(ROW_ID, TABLE_ROW, txId);
 
             runRace(
                     () -> commitWrite(ROW_ID, clock.now()),
@@ -82,10 +85,10 @@ public abstract class 
AbstractMvPartitionStorageConcurrencyTest extends BaseMvPa
     @Test
     void testUpdateAndRead() {
         for (int i = 0; i < REPEATS; i++) {
-            addWrite(ROW_ID, TABLE_ROW, TX_ID);
+            addWrite(ROW_ID, TABLE_ROW, txId);
 
             runRace(
-                    () -> addWrite(ROW_ID, TABLE_ROW2, TX_ID),
+                    () -> addWrite(ROW_ID, TABLE_ROW2, txId),
                     () -> read(ROW_ID, clock.now()),
                     () -> scanFirstEntry(clock.now()),
                     () -> scanFirstEntry(HybridTimestamp.MAX_VALUE)
@@ -143,7 +146,7 @@ public abstract class 
AbstractMvPartitionStorageConcurrencyTest extends BaseMvPa
 
             runRace(
                     () -> pollForVacuum(HybridTimestamp.MAX_VALUE),
-                    () -> addWrite(ROW_ID, TABLE_ROW2, TX_ID)
+                    () -> addWrite(ROW_ID, TABLE_ROW2, txId)
             );
 
             assertThat(read(ROW_ID, HybridTimestamp.MAX_VALUE), 
isRow(TABLE_ROW2));
@@ -162,7 +165,7 @@ public abstract class 
AbstractMvPartitionStorageConcurrencyTest extends BaseMvPa
 
             addAndCommit.perform(this, null);
 
-            addWrite(ROW_ID, TABLE_ROW2, TX_ID);
+            addWrite(ROW_ID, TABLE_ROW2, txId);
 
             runRace(
                     () -> pollForVacuum(HybridTimestamp.MAX_VALUE),
@@ -185,7 +188,7 @@ public abstract class 
AbstractMvPartitionStorageConcurrencyTest extends BaseMvPa
 
             addAndCommit.perform(this, null);
 
-            addWrite(ROW_ID, TABLE_ROW2, TX_ID);
+            addWrite(ROW_ID, TABLE_ROW2, txId);
 
             runRace(
                     () -> pollForVacuum(HybridTimestamp.MAX_VALUE),
diff --git 
a/modules/storage-api/src/testFixtures/java/org/apache/ignite/internal/storage/AbstractMvPartitionStorageTest.java
 
b/modules/storage-api/src/testFixtures/java/org/apache/ignite/internal/storage/AbstractMvPartitionStorageTest.java
index 32e168a959..252cde5c11 100644
--- 
a/modules/storage-api/src/testFixtures/java/org/apache/ignite/internal/storage/AbstractMvPartitionStorageTest.java
+++ 
b/modules/storage-api/src/testFixtures/java/org/apache/ignite/internal/storage/AbstractMvPartitionStorageTest.java
@@ -753,7 +753,7 @@ public abstract class AbstractMvPartitionStorageTest 
extends BaseMvPartitionStor
             return null;
         });
 
-        UUID txId2 = UUID.randomUUID();
+        UUID txId2 = newTransactionId();
 
         storage.runConsistently(locker -> {
             addWrite(rowId, binaryRow2, txId2);
@@ -935,8 +935,6 @@ public abstract class AbstractMvPartitionStorageTest 
extends BaseMvPartitionStor
         RowId higherRowId = new RowId(PARTITION_ID);
         RowId lowerRowId = decrement(higherRowId);
 
-        UUID txId = UUID.randomUUID();
-
         storage.runConsistently(locker -> {
             addWrite(higherRowId, binaryRow, txId);
 
@@ -1459,8 +1457,6 @@ public abstract class AbstractMvPartitionStorageTest 
extends BaseMvPartitionStor
     public void estimatedSizeNeverFallsBelowZeroUsingCommitWrite() {
         assertThat(storage.estimatedSize(), is(0L));
 
-        UUID txId = UUID.randomUUID();
-
         addWrite(ROW_ID, null, txId);
 
         assertThat(storage.estimatedSize(), is(0L));
@@ -1507,8 +1503,6 @@ public abstract class AbstractMvPartitionStorageTest 
extends BaseMvPartitionStor
 
     @Test
     public void estimatedSizeIncreasedAfterTombstoneUsingCommiteWrite() {
-        UUID txId = UUID.randomUUID();
-
         addWrite(ROW_ID, binaryRow, txId);
         commitWrite(ROW_ID, clock.now());
 
@@ -1550,8 +1544,6 @@ public abstract class AbstractMvPartitionStorageTest 
extends BaseMvPartitionStor
         var rowId1 = new RowId(PARTITION_ID);
         var rowId2 = new RowId(PARTITION_ID);
 
-        UUID txId = UUID.randomUUID();
-
         addWrite(rowId1, binaryRow, txId);
         addWrite(rowId2, binaryRow, txId);
 
diff --git 
a/modules/storage-api/src/testFixtures/java/org/apache/ignite/internal/storage/AbstractMvTableStorageTest.java
 
b/modules/storage-api/src/testFixtures/java/org/apache/ignite/internal/storage/AbstractMvTableStorageTest.java
index 415091d1e2..5f854e1176 100644
--- 
a/modules/storage-api/src/testFixtures/java/org/apache/ignite/internal/storage/AbstractMvTableStorageTest.java
+++ 
b/modules/storage-api/src/testFixtures/java/org/apache/ignite/internal/storage/AbstractMvTableStorageTest.java
@@ -208,7 +208,7 @@ public abstract class AbstractMvTableStorageTest extends 
BaseMvStoragesTest {
 
         var testData0 = binaryRow(new TestKey(1, "0"), new TestValue(10, 
"10"));
 
-        UUID txId = UUID.randomUUID();
+        UUID txId = newTransactionId();
 
         RowId rowId0 = new RowId(PARTITION_ID_0);
 
@@ -528,7 +528,7 @@ public abstract class AbstractMvTableStorageTest extends 
BaseMvStoragesTest {
             RowId rowId = new RowId(PARTITION_ID);
             locker.tryLock(rowId);
 
-            partitionStorage.addWrite(rowId, binaryRow, UUID.randomUUID(), 
COMMIT_TABLE_ID, PARTITION_ID);
+            partitionStorage.addWrite(rowId, binaryRow, newTransactionId(), 
COMMIT_TABLE_ID, PARTITION_ID);
 
             return null;
         });
@@ -559,7 +559,7 @@ public abstract class AbstractMvTableStorageTest extends 
BaseMvStoragesTest {
             RowId rowId = new RowId(PARTITION_ID);
             locker.tryLock(rowId);
 
-            partitionStorage.addWrite(rowId, binaryRow, UUID.randomUUID(), 
COMMIT_TABLE_ID, PARTITION_ID);
+            partitionStorage.addWrite(rowId, binaryRow, newTransactionId(), 
COMMIT_TABLE_ID, PARTITION_ID);
 
             return null;
         });
@@ -602,7 +602,10 @@ public abstract class AbstractMvTableStorageTest extends 
BaseMvStoragesTest {
 
         BinaryRow binaryRow = binaryRow(new TestKey(0, "0"), new TestValue(1, 
"1"));
 
-        assertThrows(StorageDestroyedException.class, () -> 
storage.addWrite(rowId, binaryRow, UUID.randomUUID(), COMMIT_TABLE_ID, partId));
+        assertThrows(
+                StorageDestroyedException.class,
+                () -> storage.addWrite(rowId, binaryRow, newTransactionId(), 
COMMIT_TABLE_ID, partId)
+        );
         assertThrows(StorageDestroyedException.class, () -> 
storage.commitWrite(rowId, timestamp));
         assertThrows(StorageDestroyedException.class, () -> 
storage.abortWrite(rowId));
         assertThrows(StorageDestroyedException.class, () -> 
storage.addWriteCommitted(rowId, binaryRow, timestamp));
@@ -1100,7 +1103,7 @@ public abstract class AbstractMvTableStorageTest extends 
BaseMvStoragesTest {
         }
     }
 
-    private static void fillStorages(
+    private void fillStorages(
             MvPartitionStorage mvPartitionStorage,
             @Nullable HashIndexStorage hashIndexStorage,
             @Nullable SortedIndexStorage sortedIndexStorage,
@@ -1125,7 +1128,7 @@ public abstract class AbstractMvTableStorageTest extends 
BaseMvStoragesTest {
                 locker.lock(rowId);
 
                 if ((finalI % 2) == 0) {
-                    mvPartitionStorage.addWrite(rowId, binaryRow, 
UUID.randomUUID(), COMMIT_TABLE_ID, rowId.partitionId());
+                    mvPartitionStorage.addWrite(rowId, binaryRow, 
newTransactionId(), COMMIT_TABLE_ID, rowId.partitionId());
 
                     mvPartitionStorage.commitWrite(rowId, timestamp);
                 } else {
diff --git 
a/modules/storage-api/src/testFixtures/java/org/apache/ignite/internal/storage/BaseMvPartitionStorageTest.java
 
b/modules/storage-api/src/testFixtures/java/org/apache/ignite/internal/storage/BaseMvPartitionStorageTest.java
index a20d6bb0b1..9302987fcc 100644
--- 
a/modules/storage-api/src/testFixtures/java/org/apache/ignite/internal/storage/BaseMvPartitionStorageTest.java
+++ 
b/modules/storage-api/src/testFixtures/java/org/apache/ignite/internal/storage/BaseMvPartitionStorageTest.java
@@ -35,8 +35,6 @@ public abstract class BaseMvPartitionStorageTest extends 
BaseMvStoragesTest {
 
     protected static final int COMMIT_TABLE_ID = 999;
 
-    protected static final UUID TX_ID = newTransactionId();
-
     protected static final RowId ROW_ID = new RowId(PARTITION_ID);
 
     protected static final TestKey KEY = new TestKey(10, "foo");
@@ -47,13 +45,6 @@ public abstract class BaseMvPartitionStorageTest extends 
BaseMvStoragesTest {
 
     protected MvPartitionStorage storage;
 
-    /**
-     * Creates a new transaction id.
-     */
-    protected static UUID newTransactionId() {
-        return UUID.randomUUID();
-    }
-
     @AfterEach
     protected void tearDown() throws Exception {
         IgniteUtils.closeAllManually(storage);
@@ -144,7 +135,7 @@ public abstract class BaseMvPartitionStorageTest extends 
BaseMvStoragesTest {
     protected HybridTimestamp addAndCommit(@Nullable BinaryRow binaryRow) {
         HybridTimestamp commitTs = clock.now();
 
-        addWrite(ROW_ID, binaryRow, TX_ID);
+        addWrite(ROW_ID, binaryRow, newTransactionId());
         commitWrite(ROW_ID, commitTs);
 
         return commitTs;
diff --git 
a/modules/storage-api/src/testFixtures/java/org/apache/ignite/internal/storage/BaseMvStoragesTest.java
 
b/modules/storage-api/src/testFixtures/java/org/apache/ignite/internal/storage/BaseMvStoragesTest.java
index fc8cfbe710..c9fe1a096d 100644
--- 
a/modules/storage-api/src/testFixtures/java/org/apache/ignite/internal/storage/BaseMvStoragesTest.java
+++ 
b/modules/storage-api/src/testFixtures/java/org/apache/ignite/internal/storage/BaseMvStoragesTest.java
@@ -23,6 +23,7 @@ import static org.junit.jupiter.api.Assertions.assertNotNull;
 
 import java.util.List;
 import java.util.Objects;
+import java.util.UUID;
 import java.util.concurrent.CompletableFuture;
 import java.util.stream.Collectors;
 import 
org.apache.ignite.internal.configuration.testframework.ConfigurationExtension;
@@ -45,6 +46,7 @@ import 
org.apache.ignite.internal.storage.index.StorageIndexDescriptor;
 import org.apache.ignite.internal.testframework.BaseIgniteAbstractTest;
 import org.apache.ignite.internal.tostring.IgniteToStringInclude;
 import org.apache.ignite.internal.tostring.S;
+import org.apache.ignite.internal.tx.TransactionIds;
 import org.apache.ignite.internal.type.NativeTypes;
 import org.apache.ignite.internal.util.Cursor;
 import org.jetbrains.annotations.Nullable;
@@ -235,4 +237,11 @@ public abstract class BaseMvStoragesTest extends 
BaseIgniteAbstractTest {
 
         return createMvPartitionStorageFuture.join();
     }
+
+    /**
+     * Creates a new transaction id.
+     */
+    public final UUID newTransactionId() {
+        return TransactionIds.transactionId(clock.now(), 0);
+    }
 }
diff --git 
a/modules/storage-rocksdb/src/test/java/org/apache/ignite/internal/storage/rocksdb/RocksDbMvTableStorageTest.java
 
b/modules/storage-rocksdb/src/test/java/org/apache/ignite/internal/storage/rocksdb/RocksDbMvTableStorageTest.java
index 52f90af41d..80f0e91efd 100644
--- 
a/modules/storage-rocksdb/src/test/java/org/apache/ignite/internal/storage/rocksdb/RocksDbMvTableStorageTest.java
+++ 
b/modules/storage-rocksdb/src/test/java/org/apache/ignite/internal/storage/rocksdb/RocksDbMvTableStorageTest.java
@@ -91,7 +91,7 @@ public class RocksDbMvTableStorageTest extends 
AbstractMvTableStorageTest {
     void testDropPartition() throws Exception {
         var testData = binaryRow(new TestKey(1, "1"), new TestValue(10, "10"));
 
-        UUID txId = UUID.randomUUID();
+        UUID txId = newTransactionId();
 
         MvPartitionStorage partitionStorage0 = 
getOrCreateMvPartition(PARTITION_ID_0);
 
@@ -132,7 +132,7 @@ public class RocksDbMvTableStorageTest extends 
AbstractMvTableStorageTest {
     void testRestart() throws Exception {
         var testData = binaryRow(new TestKey(1, "1"), new TestValue(10, "10"));
 
-        UUID txId = UUID.randomUUID();
+        UUID txId = newTransactionId();
 
         MvPartitionStorage partitionStorage0 = 
getOrCreateMvPartition(PARTITION_ID);
 

Reply via email to