PR for BAEL-2838 (#6970)
* Singleton injection examples and tests added * code and tests implemented * test refactored
This commit is contained in:
parent
0579815b69
commit
60db8a741a
@ -10,6 +10,10 @@ import java.util.Map;
|
|||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
||||||
import javax.ejb.EJB;
|
import javax.ejb.EJB;
|
||||||
|
import javax.enterprise.context.spi.CreationalContext;
|
||||||
|
import javax.enterprise.inject.spi.Bean;
|
||||||
|
import javax.enterprise.inject.spi.BeanManager;
|
||||||
|
import javax.enterprise.inject.spi.CDI;
|
||||||
import javax.inject.Inject;
|
import javax.inject.Inject;
|
||||||
|
|
||||||
import org.jboss.arquillian.container.test.api.Deployment;
|
import org.jboss.arquillian.container.test.api.Deployment;
|
||||||
@ -47,68 +51,31 @@ public class CarServiceIntegrationTest {
|
|||||||
|
|
||||||
@EJB
|
@EJB
|
||||||
private CarServiceEjbSingleton carServiceEjbSingleton;
|
private CarServiceEjbSingleton carServiceEjbSingleton;
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void givenASingleton_whenGetBeanIsCalledTwice_thenTheSameInstanceIsReturned() {
|
||||||
|
CarServiceSingleton one = getBean(CarServiceSingleton.class);
|
||||||
|
CarServiceSingleton two = getBean(CarServiceSingleton.class);
|
||||||
|
assertTrue(one == two);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void givenAPojo_whenGetBeanIsCalledTwice_thenDifferentInstancesAreReturned() {
|
||||||
|
CarServiceBean one = getBean(CarServiceBean.class);
|
||||||
|
CarServiceBean two = getBean(CarServiceBean.class);
|
||||||
|
assertTrue(one != two);
|
||||||
|
}
|
||||||
|
|
||||||
private static Map<String, UUID> idMap = new HashMap<>();
|
@SuppressWarnings("unchecked")
|
||||||
|
private <T> T getBean(Class<T> beanClass) {
|
||||||
@Before
|
BeanManager bm = CDI.current().getBeanManager();
|
||||||
public void setUp() {
|
Bean<T> bean = (Bean<T>) bm.getBeans(beanClass).iterator().next();
|
||||||
// populate idMap only on first run
|
CreationalContext<T> ctx = bm.createCreationalContext(bean);
|
||||||
if (idMap.isEmpty()) {
|
return (T) bm.getReference(bean, beanClass, ctx);
|
||||||
LOG.info("setUp::carServiceBean: {}", carServiceBean.getId());
|
|
||||||
idMap.put("carServiceBeanId", carServiceBean.getId());
|
|
||||||
|
|
||||||
LOG.info("setUp::carServiceSingleton: {}", carServiceSingleton.getId());
|
|
||||||
idMap.put("carServiceSingletonId", carServiceSingleton.getId());
|
|
||||||
|
|
||||||
LOG.info("setUp::carServiceEjbSingleton: {}", carServiceEjbSingleton.getId());
|
|
||||||
idMap.put("carServiceEjbSingletonId", carServiceEjbSingleton.getId());
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void givenRun1_whenGetId_thenSingletonIdEqual() {
|
public void givenCDI_whenConcurrentAccess_thenLockingIsNotProvided() {
|
||||||
int testRun = 1;
|
|
||||||
|
|
||||||
assertNotNull(carServiceBean);
|
|
||||||
assertNotNull(carServiceSingleton);
|
|
||||||
assertNotNull(carServiceEjbSingleton);
|
|
||||||
|
|
||||||
UUID carServiceBeanId = carServiceBean.getId();
|
|
||||||
assertEquals(idMap.get("carServiceBeanId"), carServiceBeanId);
|
|
||||||
LOG.info("Test run {}::carServiceBeanId: {}", testRun, carServiceBeanId);
|
|
||||||
|
|
||||||
UUID carServiceSingletonId = carServiceSingleton.getId();
|
|
||||||
assertEquals(idMap.get("carServiceSingletonId"), carServiceSingletonId);
|
|
||||||
LOG.info("Test run {}::carServiceSingletonId: {}", testRun, carServiceSingletonId);
|
|
||||||
|
|
||||||
UUID carServiceEjbSingletonId = carServiceEjbSingleton.getId();
|
|
||||||
assertEquals(idMap.get("carServiceEjbSingletonId"), carServiceEjbSingletonId);
|
|
||||||
LOG.info("Test run {}::carServiceEjbSingletonId: {}", testRun, carServiceEjbSingletonId);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void givenRun2_whenGetId_thenSingletonIdEqual() {
|
|
||||||
int testRun = 2;
|
|
||||||
|
|
||||||
assertNotNull(carServiceBean);
|
|
||||||
assertNotNull(carServiceSingleton);
|
|
||||||
assertNotNull(carServiceEjbSingleton);
|
|
||||||
|
|
||||||
UUID carServiceBeanId = carServiceBean.getId();
|
|
||||||
assertNotEquals(idMap.get("carServiceBeanId"), carServiceBeanId);
|
|
||||||
LOG.info("Test run {}::carServiceBeanId: {}", testRun, carServiceBeanId);
|
|
||||||
|
|
||||||
UUID carServiceSingletonId = carServiceSingleton.getId();
|
|
||||||
assertEquals(idMap.get("carServiceSingletonId"), carServiceSingletonId);
|
|
||||||
LOG.info("Test run {}::carServiceSingletonId: {}", testRun, carServiceSingletonId);
|
|
||||||
|
|
||||||
UUID carServiceEjbSingletonId = carServiceEjbSingleton.getId();
|
|
||||||
assertEquals(idMap.get("carServiceEjbSingletonId"), carServiceEjbSingletonId);
|
|
||||||
LOG.info("Test run {}::carServiceEjbSingletonId: {}", testRun, carServiceEjbSingletonId);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void givenRun3_whenSingleton_thenNoLocking() {
|
|
||||||
for (int i = 0; i < 10; i++) {
|
for (int i = 0; i < 10; i++) {
|
||||||
new Thread(new Runnable() {
|
new Thread(new Runnable() {
|
||||||
@Override
|
@Override
|
||||||
@ -124,7 +91,7 @@ public class CarServiceIntegrationTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void givenRun4_whenEjb_thenLocking() {
|
public void givenEJB_whenConcurrentAccess_thenLockingIsProvided() {
|
||||||
for (int i = 0; i < 10; i++) {
|
for (int i = 0; i < 10; i++) {
|
||||||
new Thread(new Runnable() {
|
new Thread(new Runnable() {
|
||||||
@Override
|
@Override
|
||||||
|
Loading…
x
Reference in New Issue
Block a user