Skip to content

Commit

Permalink
Fix tests
Browse files Browse the repository at this point in the history
  • Loading branch information
dstepanov committed Mar 4, 2025
1 parent 508d1c2 commit 4978d8d
Show file tree
Hide file tree
Showing 7 changed files with 58 additions and 25 deletions.
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
package io.micronaut.data.jdbc

import io.micronaut.data.connection.ConnectionOperations
import io.micronaut.data.connection.jdbc.operations.DataSourceConnectionOperations
import io.micronaut.data.connection.jdbc.operations.DefaultDataSourceConnectionOperations
import io.micronaut.data.tck.tests.AbstractTransactionSpec
import io.micronaut.transaction.TransactionOperations
Expand All @@ -14,6 +16,11 @@ abstract class AbstractJdbcTransactionSpec extends AbstractTransactionSpec {
return context.getBean(DataSourceTransactionManager)
}

@Override
protected ConnectionOperations getConnectionOperations() {
return context.getBean(DataSourceConnectionOperations)
}

@Override
protected Runnable getNoTxCheck() {
DefaultDataSourceConnectionOperations connectionOperations = context.getBean(DefaultDataSourceConnectionOperations)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
*/
package io.micronaut.data.spring.jdbc


import io.micronaut.data.connection.ConnectionOperations
import io.micronaut.data.spring.jdbc.micronaut.H2BookRepository
import io.micronaut.data.tck.repositories.BookRepository
import io.micronaut.data.tck.tests.AbstractTransactionSpec
Expand Down Expand Up @@ -45,6 +45,11 @@ class SpringJdbcTransactionSpec extends AbstractTransactionSpec {
return context.getBean(SpringJdbcTransactionOperations)
}

@Override
protected ConnectionOperations getConnectionOperations() {
return context.getBean(SpringJdbcConnectionOperations)
}

@Override
protected Runnable getNoTxCheck() {
return new Runnable() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
*/
package io.micronaut.data.spring.jdbc


import io.micronaut.data.connection.ConnectionOperations
import io.micronaut.data.model.query.builder.sql.Dialect
import io.micronaut.data.spring.jdbc.micronaut.PostgresBookRepository
import io.micronaut.data.tck.repositories.BookRepository
Expand Down Expand Up @@ -44,6 +44,11 @@ class SpringPostgresJdbcTransactionSpec extends AbstractTransactionSpec implemen
return context.getBean(SpringJdbcTransactionOperations)
}

@Override
protected ConnectionOperations getConnectionOperations() {
return context.getBean(SpringJdbcConnectionOperations)
}

@Override
protected Runnable getNoTxCheck() {
return new Runnable() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,9 +15,11 @@
*/
package io.micronaut.data.spring.hibernate

import io.micronaut.data.connection.ConnectionOperations
import io.micronaut.data.model.query.builder.sql.Dialect
import io.micronaut.data.spring.hibernate.micronaut.HibernateBookRepository
import io.micronaut.data.spring.hibernate.micronaut.ReadOnlyTest
import io.micronaut.data.spring.jpa.hibernate.SpringHibernateConnectionOperations
import io.micronaut.data.spring.jpa.hibernate.SpringHibernateTransactionOperations
import io.micronaut.data.tck.repositories.BookRepository
import io.micronaut.data.tck.tests.AbstractTransactionSpec
Expand Down Expand Up @@ -55,6 +57,11 @@ class SpringHibernateTransactionSpec extends AbstractTransactionSpec implements
return context.getBean(SpringHibernateTransactionOperations)
}

@Override
protected ConnectionOperations getConnectionOperations() {
return context.getBean(SpringHibernateConnectionOperations)
}

@Override
protected Runnable getNoTxCheck() {
return new Runnable() {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package io.micronaut.data.tck.tests

import io.micronaut.context.ApplicationContext
import io.micronaut.data.connection.ConnectionOperations
import io.micronaut.data.tck.repositories.BookRepository
import io.micronaut.data.tck.services.TxBookService
import io.micronaut.data.tck.services.TxEventsService
Expand Down Expand Up @@ -29,10 +30,15 @@ abstract class AbstractTransactionSpec extends Specification implements TestProp

protected abstract TransactionOperations getTransactionOperations();

protected abstract ConnectionOperations getConnectionOperations();

protected abstract Runnable getNoTxCheck();

TxBookService getBookService() {
return context.getBean(TxBookService)
def service = context.getBean(TxBookService)
service.transactionManager = getTransactionOperations()
service.connectionOperations = getConnectionOperations()
return service
}

void cleanup() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@
import io.micronaut.context.annotation.Requires;
import io.micronaut.data.connection.ConnectionOperations;
import io.micronaut.data.connection.ConnectionStatus;
import io.micronaut.data.connection.annotation.Connectable;
import io.micronaut.transaction.SynchronousTransactionManager;
import io.micronaut.transaction.TransactionDefinition;
import io.micronaut.transaction.TransactionStatus;
Expand All @@ -18,32 +17,30 @@
@Singleton
public class TxBookService extends AbstractBookService {

private final SynchronousTransactionManager<Object> transactionManager;
private final ConnectionOperations<Object> connectionOperations;
public SynchronousTransactionManager<Object> transactionManager;
public ConnectionOperations<Object> connectionOperations;

public TxBookService(ApplicationContext beanContext,
SynchronousTransactionManager<Object> transactionManager,
ConnectionOperations<Object> connectionOperations) {
public TxBookService(ApplicationContext beanContext) {
super(beanContext);
this.transactionManager = transactionManager;
this.connectionOperations = connectionOperations;
}

@Connectable
public void bookAddedInConnectableNestedTransaction() {
ConnectionStatus<Object> outerConnection = getConnection();
TransactionDefinition definition = new DefaultTransactionDefinition(TransactionDefinition.Propagation.NESTED);
TransactionStatus<Object> status = transactionManager.getTransaction(definition);
ConnectionStatus<Object> txConnection = getConnection();
if (!txConnection.equals(outerConnection)) {
throw new IllegalStateException("Connection is not the same as the outer connection");
}
bookRepository.save(newBook("MandatoryBook"));
transactionManager.commit(status);
ConnectionStatus<Object> afterTxConnection = getConnection();
if (!afterTxConnection.equals(outerConnection)) {
throw new IllegalStateException("Connection is not the same as the outer connection");
}
connectionOperations.executeWrite(connectionStatus -> {
ConnectionStatus<Object> outerConnection = getConnection();
TransactionDefinition definition = new DefaultTransactionDefinition(TransactionDefinition.Propagation.NESTED);
TransactionStatus<Object> status = transactionManager.getTransaction(definition);
ConnectionStatus<Object> txConnection = getConnection();
if (!txConnection.equals(outerConnection)) {
throw new IllegalStateException("Connection is not the same as the outer connection");
}
bookRepository.save(newBook("MandatoryBook"));
transactionManager.commit(status);
ConnectionStatus<Object> afterTxConnection = getConnection();
if (!afterTxConnection.equals(outerConnection)) {
throw new IllegalStateException("Connection is not the same as the outer connection");
}
return null;
});
}

private ConnectionStatus<Object> getConnection() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ package io.micronaut.transaction.hibernate6

import io.micronaut.core.type.Argument
import io.micronaut.data.connection.ConnectionOperations
import io.micronaut.data.hibernate.connection.HibernateConnectionOperations
import io.micronaut.data.model.query.builder.sql.Dialect
import io.micronaut.data.tck.repositories.BookRepository
import io.micronaut.data.tck.tests.AbstractTransactionSpec
Expand Down Expand Up @@ -54,6 +55,11 @@ class HibernateTransactionSpec extends AbstractTransactionSpec implements TestRe
return context.getBean(HibernateTransactionManager)
}

@Override
protected ConnectionOperations getConnectionOperations() {
return context.getBean(HibernateConnectionOperations)
}

@Override
protected Runnable getNoTxCheck() {
ConnectionOperations<Session> connectionOperations = context.getBean(Argument.of(ConnectionOperations.class, Session.class))
Expand Down

0 comments on commit 4978d8d

Please sign in to comment.