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);