Skip to content

Commit 78ee99a

Browse files
authored
Fix test for being inside a transaction. (#1969)
Closes #1968.
1 parent 10f71c9 commit 78ee99a

4 files changed

+8
-50
lines changed

src/test/java/org/springframework/data/couchbase/transactions/CouchbaseTransactionalTemplateCollectionDefaultScopeIntegrationTests.java

+1-16
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
import static org.junit.jupiter.api.Assertions.assertNull;
2424
import static org.junit.jupiter.api.Assertions.fail;
2525
import static org.springframework.data.couchbase.transactions.util.TransactionTestUtil.assertNotInTransaction;
26+
import static org.springframework.data.couchbase.util.Util.assertInAnnotationTransaction;
2627

2728
import java.util.ArrayList;
2829
import java.util.List;
@@ -483,20 +484,4 @@ public void fetchAndRemove(String id, AtomicInteger tryCount) {
483484

484485
}
485486

486-
static void assertInAnnotationTransaction(boolean inTransaction) {
487-
StackTraceElement[] stack = Thread.currentThread().getStackTrace();
488-
for (StackTraceElement ste : stack) {
489-
if (ste.getClassName().startsWith("org.springframework.transaction.interceptor")) {
490-
if (inTransaction) {
491-
return;
492-
}
493-
}
494-
}
495-
if (!inTransaction) {
496-
return;
497-
}
498-
throw new RuntimeException(
499-
"in transaction = " + (!inTransaction) + " but expected in annotation transaction = " + inTransaction);
500-
}
501-
502487
}

src/test/java/org/springframework/data/couchbase/transactions/CouchbaseTransactionalTemplateCollectionIntegrationTests.java

+2-17
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
import static org.junit.jupiter.api.Assertions.assertNull;
2424
import static org.junit.jupiter.api.Assertions.fail;
2525
import static org.springframework.data.couchbase.transactions.util.TransactionTestUtil.assertNotInTransaction;
26+
import static org.springframework.data.couchbase.util.Util.assertInAnnotationTransaction;
2627

2728
import java.util.ArrayList;
2829
import java.util.List;
@@ -450,10 +451,10 @@ public Person declarativeFindReplaceTwicePersonCallback(Person person, AtomicInt
450451
}
451452

452453
@Transactional(timeout = 2)
453-
454454
public Person replace(Person person, AtomicInteger tryCount) {
455455
assertInAnnotationTransaction(true);
456456
tryCount.incrementAndGet();
457+
System.err.println("try: " + tryCount.get());
457458
return personOperations.replaceById(Person.class).inScope(scopeName).inCollection(collectionName).one(person);
458459
}
459460

@@ -483,20 +484,4 @@ public void fetchAndRemove(String id, AtomicInteger tryCount) {
483484

484485
}
485486

486-
static void assertInAnnotationTransaction(boolean inTransaction) {
487-
StackTraceElement[] stack = Thread.currentThread().getStackTrace();
488-
for (StackTraceElement ste : stack) {
489-
if (ste.getClassName().startsWith("org.springframework.transaction.interceptor")) {
490-
if (inTransaction) {
491-
return;
492-
}
493-
}
494-
}
495-
if (!inTransaction) {
496-
return;
497-
}
498-
throw new RuntimeException(
499-
"in transaction = " + (!inTransaction) + " but expected in annotation transaction = " + inTransaction);
500-
}
501-
502487
}

src/test/java/org/springframework/data/couchbase/transactions/CouchbaseTransactionalTemplateIntegrationTests.java

+3-16
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,9 @@
2222
import static org.junit.jupiter.api.Assertions.assertNotNull;
2323
import static org.junit.jupiter.api.Assertions.assertNull;
2424
import static org.junit.jupiter.api.Assertions.fail;
25+
import static org.springframework.data.couchbase.transactions.util.TransactionTestUtil.assertInReactiveTransaction;
2526
import static org.springframework.data.couchbase.transactions.util.TransactionTestUtil.assertNotInTransaction;
27+
import static org.springframework.data.couchbase.util.Util.assertInAnnotationTransaction;
2628

2729
import java.util.ArrayList;
2830
import java.util.List;
@@ -394,6 +396,7 @@ public Person declarativeSavePerson(Person person) {
394396
@Transactional
395397
public Person declarativeSavePersonWithThread(Person person, Thread thread) {
396398
assertInAnnotationTransaction(true);
399+
assertInReactiveTransaction();
397400
long currentThreadId = Thread.currentThread().getId();
398401
System.out.printf("Thread %d %s, started from %d %s%n", Thread.currentThread().getId(),
399402
Thread.currentThread().getName(), thread.getId(), thread.getName());
@@ -483,20 +486,4 @@ public void fetchAndRemove(String id, AtomicInteger tryCount) {
483486

484487
}
485488

486-
static void assertInAnnotationTransaction(boolean inTransaction) {
487-
StackTraceElement[] stack = Thread.currentThread().getStackTrace();
488-
for (StackTraceElement ste : stack) {
489-
if (ste.getClassName().startsWith("org.springframework.transaction.interceptor")) {
490-
if (inTransaction) {
491-
return;
492-
}
493-
}
494-
}
495-
if (!inTransaction) {
496-
return;
497-
}
498-
throw new RuntimeException(
499-
"in transaction = " + (!inTransaction) + " but expected in annotation transaction = " + inTransaction);
500-
}
501-
502489
}

src/test/java/org/springframework/data/couchbase/util/Util.java

+2-1
Original file line numberDiff line numberDiff line change
@@ -155,7 +155,8 @@ public static <T> Pair<List<T>, List<T>> comprisesNot(Iterable<T> source, T[] al
155155
public static void assertInAnnotationTransaction(boolean inTransaction) {
156156
StackTraceElement[] stack = Thread.currentThread().getStackTrace();
157157
for (StackTraceElement ste : stack) {
158-
if (ste.getClassName().startsWith("org.springframework.transaction.interceptor")
158+
if (ste.getClassName()
159+
.startsWith("org.springframework.data.couchbase.transaction.CouchbaseCallbackTransactionManager")
159160
|| ste.getClassName().startsWith("org.springframework.data.couchbase.transaction.interceptor")) {
160161
if (inTransaction) {
161162
return;

0 commit comments

Comments
 (0)