Skip to content

Commit

Permalink
Add unit test, stress test commented
Browse files Browse the repository at this point in the history
  • Loading branch information
marcosgopen committed May 13, 2024
1 parent 170dace commit 249e14e
Showing 1 changed file with 62 additions and 0 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
package io.quarkus.narayana.jta.runtime;

import static org.junit.jupiter.api.Assertions.fail;

import java.nio.charset.StandardCharsets;
import java.util.SortedSet;
import java.util.TreeSet;
import java.util.UUID;

import org.junit.jupiter.api.Test;

public class NarayanaJtaRecorderTest {

@Test
void testByteLength() {

TransactionManagerConfiguration transactions = new TransactionManagerConfiguration();
transactions.shortenNodeNameIfNecessary = true;
// create nodeNames larger than 28 bytes
for (int i = 1; i < 100; i++) {
String originalNodeName = UUID.randomUUID().toString();
NarayanaJtaRecorder r = new NarayanaJtaRecorder();
transactions.nodeName = originalNodeName;
r.setNodeName(transactions);
int numberOfBytes = transactions.nodeName.getBytes(StandardCharsets.UTF_8).length;
if (numberOfBytes > 28) {
fail("node name bytes still exceeded 28 bytes limit, number of bytes is " + numberOfBytes);
}
}
// for (int i = 1; i < 20000; i++) {
for (int i = 1; i < 2000; i++) {
byte[] data = new byte[i];
NarayanaJtaRecorder r = new NarayanaJtaRecorder();
transactions.nodeName = new String(data);
r.setNodeName(transactions);
int numberOfBytes = transactions.nodeName.getBytes(StandardCharsets.UTF_8).length;
if (numberOfBytes > 28) {
fail("node name bytes still exceeded 28 bytes limit, number of bytes is " + numberOfBytes);
}
}
}

//commented because it is a stress test
// @Test
void testCollision() {
SortedSet<String> set = new TreeSet<>();
TransactionManagerConfiguration transactions = new TransactionManagerConfiguration();
transactions.shortenNodeNameIfNecessary = true;
// create a nodeName larger than 28 bytes
for (int i = 1; i < 1000000; i++) {
String originalNodeName = UUID.randomUUID().toString();
NarayanaJtaRecorder r = new NarayanaJtaRecorder();
transactions.nodeName = originalNodeName;
r.setNodeName(transactions);
if (set.contains(transactions.nodeName)) {
fail("Collision of IDs for " + transactions.nodeName);
}
set.add(transactions.nodeName);
}
}

}

0 comments on commit 249e14e

Please sign in to comment.