Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

chore: Try fix for int tests #18137

Closed
wants to merge 12 commits into from
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@
package org.hisp.dhis.dbms;

import java.util.List;
import javax.persistence.EntityManager;

/**
* @author Lars Helge Overland
Expand All @@ -46,4 +47,6 @@ public interface DbmsManager {
boolean tableExists(String tableName);

List<List<Object>> getTableContent(String table);

EntityManager getEntityManager();
}
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,10 @@
this.entityManager = entityManager;
}

public EntityManager getEntityManager() {

Check notice

Code scanning / CodeQL

Missing Override annotation Note

This method overrides
DbmsManager.getEntityManager
; it is advisable to add an Override annotation.
return entityManager;
}

private HibernateCacheManager cacheManager;

public void setCacheManager(HibernateCacheManager cacheManager) {
Expand Down
8 changes: 0 additions & 8 deletions dhis-2/dhis-support/dhis-support-test/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -57,10 +57,6 @@
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-orm</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
Expand All @@ -87,10 +83,6 @@
<artifactId>junit-jupiter</artifactId>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
</dependency>
<dependency>
<groupId>javax.persistence</groupId>
<artifactId>javax.persistence-api</artifactId>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,22 +27,15 @@
*/
package org.hisp.dhis.test;

import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import lombok.extern.slf4j.Slf4j;
import org.hibernate.FlushMode;
import org.hibernate.annotations.QueryHints;
import org.hisp.dhis.dbms.DbmsManager;
import org.hisp.dhis.test.utils.TestUtils;
import org.junit.jupiter.api.extension.ExtendWith;
import org.springframework.beans.BeansException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.orm.jpa.EntityManagerFactoryUtils;
import org.springframework.orm.jpa.EntityManagerHolder;
import org.springframework.test.context.junit.jupiter.SpringExtension;
import org.springframework.transaction.support.TransactionSynchronizationManager;
import org.springframework.transaction.support.TransactionTemplate;

/**
Expand All @@ -55,8 +48,6 @@ public abstract class BaseSpringTest extends DhisConvenienceTest

protected ApplicationContext applicationContext;

public EntityManager entityManager;

@Autowired protected DbmsManager dbmsManager;

@Autowired protected TransactionTemplate transactionTemplate;
Expand All @@ -75,7 +66,6 @@ protected void tearDownTest() throws Exception {}
protected void nonTransactionalAfter() throws Exception {
clearSecurityContext();
tearDownTest();
unbindSession();
transactionTemplate.execute(
status -> {
dbmsManager.emptyDatabase();
Expand All @@ -87,22 +77,4 @@ protected void integrationTestBeforeEach() throws Exception {
TestUtils.executeStartupRoutines(applicationContext);
setUpTest();
}

protected void bindSession() {
EntityManagerFactory entityManagerFactory =
(EntityManagerFactory) applicationContext.getBean("entityManagerFactory");
EntityManager entityManager = entityManagerFactory.createEntityManager();
this.entityManager = entityManager;
entityManager.setProperty(QueryHints.FLUSH_MODE, FlushMode.AUTO);
TransactionSynchronizationManager.bindResource(
entityManagerFactory, new EntityManagerHolder(entityManager));
}

protected void unbindSession() {
EntityManagerFactory sessionFactory =
(EntityManagerFactory) applicationContext.getBean("entityManagerFactory");
EntityManagerHolder entityManagerHolder =
(EntityManagerHolder) TransactionSynchronizationManager.unbindResource(sessionFactory);
EntityManagerFactoryUtils.closeEntityManager(entityManagerHolder.getEntityManager());
}
}
5 changes: 0 additions & 5 deletions dhis-2/dhis-test-integration/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -249,11 +249,6 @@
<artifactId>spring-jdbc</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-orm</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,6 @@
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.TypedQuery;
import org.hibernate.FlushMode;
import org.hibernate.SessionFactory;
import org.hibernate.jpa.QueryHints;
import org.hisp.dhis.common.ValueType;
Expand All @@ -46,15 +45,12 @@
import org.hisp.dhis.test.integration.IntegrationTestBase;
import org.hisp.dhis.user.User;
import org.hisp.dhis.user.UserService;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.orm.jpa.EntityManagerHolder;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.transaction.support.TransactionSynchronizationManager;

@ContextConfiguration(classes = {HibernateQueryCacheTest.DhisConfiguration.class})
class HibernateQueryCacheTest extends IntegrationTestBase {
Expand All @@ -81,13 +77,6 @@ public DhisConfigurationProvider dhisConfigurationProvider() {
@BeforeEach
@Override
public void before() throws Exception {
this.entityManager = entityManagerFactory.createEntityManager();
this.sessionFactory = entityManagerFactory.unwrap(SessionFactory.class);

this.entityManager.setProperty(org.hibernate.annotations.QueryHints.FLUSH_MODE, FlushMode.AUTO);
TransactionSynchronizationManager.bindResource(
entityManagerFactory, new EntityManagerHolder(entityManager));

userService = _userService;
User adminUser = preCreateInjectAdminUser();
injectSecurityContextUser(adminUser);
Expand All @@ -96,21 +85,16 @@ public void before() throws Exception {
sessionFactory.getStatistics().clear();
}

@AfterEach
public final void afterEach() {
entityManager.close();
}

@Test
@DisplayName("Hibernate Query cache should be used")
void testQueryCache() {
setUpData();

for (int i = 0; i < 10; i++) {
entityManager.getTransaction().begin();
TypedQuery<OptionSet> query = createQuery(entityManager);
dbmsManager.getEntityManager().getTransaction().begin();
TypedQuery<OptionSet> query = createQuery(dbmsManager.getEntityManager());
assertEquals(1, query.getResultList().size());
entityManager.getTransaction().commit();
dbmsManager.getEntityManager().getTransaction().commit();
}

assertEquals(1, sessionFactory.getStatistics().getQueryCacheMissCount());
Expand Down Expand Up @@ -141,17 +125,17 @@ private void setUpData() {
optionSet.setCode("OptionSetCodeA");
optionSet.setValueType(ValueType.TEXT);

entityManager.getTransaction().begin();
entityManager.persist(optionSet);
entityManager.getTransaction().commit();
dbmsManager.getEntityManager().getTransaction().begin();
dbmsManager.getEntityManager().persist(optionSet);
dbmsManager.getEntityManager().getTransaction().commit();
}

private void createSelectQuery(int numberOfQueries) {
for (int i = 0; i < numberOfQueries; i++) {
entityManager.getTransaction().begin();
TypedQuery<OptionSet> query = createQuery(entityManager);
dbmsManager.getEntityManager().getTransaction().begin();
TypedQuery<OptionSet> query = createQuery(dbmsManager.getEntityManager());
assertEquals(1, query.getResultList().size());
entityManager.getTransaction().commit();
dbmsManager.getEntityManager().getTransaction().commit();
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -185,8 +185,8 @@ void shouldRetrieveAllDataElementFromServerRuleActions() {
programRuleService.updateProgramRule(ruleB);
programRuleService.updateProgramRule(ruleC);

entityManager.clear();
entityManager.flush();
dbmsManager.getEntityManager().clear();
dbmsManager.getEntityManager().flush();

List<String> dataElementsPresentInProgramRules =
programRuleService.getDataElementsPresentInProgramRules();
Expand Down Expand Up @@ -242,8 +242,8 @@ void shouldRetrieveAllTrackedEntityAttributesFromServerRuleActions() {
programRuleService.updateProgramRule(ruleB);
programRuleService.updateProgramRule(ruleC);

entityManager.clear();
entityManager.flush();
dbmsManager.getEntityManager().clear();
dbmsManager.getEntityManager().flush();

List<String> trackedEntityAttributesPresentInProgramRules =
programRuleService.getTrackedEntityAttributesPresentInProgramRules();
Expand Down Expand Up @@ -344,8 +344,8 @@ void testGetProgramRulesByServerActionTypes() {
programRuleService.updateProgramRule(ruleG);
programRuleService.updateProgramRule(ruleF);

entityManager.clear();
entityManager.flush();
dbmsManager.getEntityManager().clear();
dbmsManager.getEntityManager().flush();

List<ProgramRule> rules =
programRuleService.getProgramRulesByActionTypes(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -54,11 +54,10 @@ public abstract class CacheInvalidationIntegrationTestBase extends BaseSpringTes

@BeforeEach
public final void before() throws Exception {
bindSession();

userService = _userService;

User admin = DhisConvenienceTest.createRandomAdminUserWithEntityManager(entityManager);
User admin =
DhisConvenienceTest.createRandomAdminUserWithEntityManager(dbmsManager.getEntityManager());
XinjectSecurityContextUser(admin);

integrationTestBeforeEach();
Expand All @@ -70,7 +69,7 @@ protected void XinjectSecurityContextUser(User user) {
return;
}
hibernateService.flushSession();
User user1 = entityManager.find(User.class, user.getId());
User user1 = dbmsManager.getEntityManager().find(User.class, user.getId());
UserDetails currentUserDetails = UserDetails.fromUser(user1);
injectSecurityContext(currentUserDetails);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -54,8 +54,6 @@ public abstract class IntegrationTestBase extends BaseSpringTest {

@BeforeEach
public void before() throws Exception {
bindSession();

userService = _userService;
adminUser = preCreateInjectAdminUser();

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@
import org.hisp.dhis.user.User;
import org.hisp.dhis.user.UserDetails;
import org.junit.jupiter.api.AfterAll;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.TestInstance;
import org.springframework.test.context.ActiveProfiles;
import org.springframework.test.context.ContextConfiguration;
Expand All @@ -59,11 +59,10 @@ public abstract class SingleSetupIntegrationTestBase extends BaseSpringTest {
private UserDetails adminUserDetails;
private User adminUser;

@BeforeAll
@BeforeEach
public final void before() throws Exception {
bindSession();

User userAdmin = DhisConvenienceTest.createRandomAdminUserWithEntityManager(entityManager);
User userAdmin =
DhisConvenienceTest.createRandomAdminUserWithEntityManager(dbmsManager.getEntityManager());
adminUsername = userAdmin.getUsername();

XinjectSecurityContextUser(userAdmin);
Expand All @@ -84,8 +83,7 @@ protected void XinjectSecurityContextUser(User user) {
clearSecurityContext();
return;
}
hibernateService.flushSession();
User user1 = entityManager.find(User.class, user.getId());
User user1 = dbmsManager.getEntityManager().find(User.class, user.getId());
this.adminUser = user1;
UserDetails currentUserDetails = UserDetails.fromUser(user1);
this.adminUserDetails = currentUserDetails;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -524,7 +524,8 @@ TrackedEntity getTrackedEntity() {
public <T extends SoftDeletableObject> T getEntityJpql(String entity, String uid) {

return (T)
entityManager
dbmsManager
.getEntityManager()
.createQuery("SELECT e FROM " + entity + " e WHERE e.uid = :uid")
.setParameter("uid", uid)
.getSingleResult();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,6 @@

import static org.hisp.dhis.test.web.WebClientUtils.failOnException;

import javax.persistence.EntityManager;
import org.hisp.dhis.test.DhisConvenienceTest;
import org.hisp.dhis.test.config.H2DhisConfiguration;
import org.hisp.dhis.test.utils.TestUtils;
Expand Down Expand Up @@ -59,8 +58,6 @@
public abstract class ControllerWithApiTokenAuthTestBase extends H2ControllerIntegrationTestBase {
@Autowired private UserService _userService;

@Autowired private EntityManager entityManager;

@Autowired private FilterChainProxy springSecurityFilterChain;

@Override
Expand All @@ -70,7 +67,7 @@ void setup() {
clearSecurityContext();

User randomAdminUser =
DhisConvenienceTest.createRandomAdminUserWithEntityManager(entityManager);
DhisConvenienceTest.createRandomAdminUserWithEntityManager(dbmsManager.getEntityManager());
injectSecurityContextUser(randomAdminUser);

adminUser = createAndAddAdminUser("ALL");
Expand Down
Loading