package org.ovirt.engine.arquillian; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import javax.inject.Inject; import org.jboss.arquillian.junit.Arquillian; import org.jboss.shrinkwrap.api.ArchivePaths; import org.jboss.shrinkwrap.api.ShrinkWrap; import org.jboss.shrinkwrap.api.asset.EmptyAsset; import org.jboss.shrinkwrap.api.spec.JavaArchive; import org.junit.Before; import org.junit.runner.RunWith; import org.ovirt.engine.arquillian.database.DataSourceFactory; import org.ovirt.engine.core.bll.aaa.SessionDataContainer; import org.ovirt.engine.core.bll.scheduling.CommonTestMocks; import org.ovirt.engine.core.builder.AbstractBuilder; import org.ovirt.engine.core.builder.ClusterBuilder; import org.ovirt.engine.core.builder.VdsBuilder; import org.ovirt.engine.core.builder.VmBuilder; import org.ovirt.engine.core.common.businessentities.Cluster; import org.ovirt.engine.core.common.businessentities.VDS; import org.ovirt.engine.core.common.businessentities.VM; import org.ovirt.engine.core.dal.dbbroker.DbFacade; import org.ovirt.engine.core.dao.Dao; import org.ovirt.engine.core.di.Injector; @RunWith(Arquillian.class) public abstract class TransactionalTestBase { @Inject protected VmBuilder vmBuilder; @Inject protected VdsBuilder vdsBuilder; @Inject protected ClusterBuilder clusterBuilder; @Inject private Injector injector; @Inject private DbFacade dbFacade; protected Cluster defaultCluster; protected VDS defaultHost; protected VM defaultVM; public static JavaArchive createDeployment(){ return createDeployment(new ArrayList<>()); } public static JavaArchive createDeployment(List<Class<?>> classes){ return createDeployment(classes.toArray(new Class<?>[classes.size()])); } public static JavaArchive createDeployment(Class<?>[] classes) { final Class<?>[] defaultClasses = { DataSourceFactory.class, CommonTestMocks.class, Injector.class, SessionDataContainer.class, DbFacade.class }; final List<Class<?>> classList = new ArrayList<>(); classList.addAll(Arrays.asList(defaultClasses)); if (classes != null && classes.length > 0){ classList.addAll(Arrays.asList(classes)); } return ShrinkWrap.create(JavaArchive.class) .addPackages(true, Dao.class.getPackage()) // add all DAOs .addPackage(AbstractBuilder.class.getPackage()) // add all builder .addClasses( classList.toArray(new Class<?>[classList.size()]) ).addAsManifestResource( EmptyAsset.INSTANCE, ArchivePaths.create("beans.xml") ); } @Before public void setUpDefaultEnvironment() { // Set the right location of a minimal oVirt configuration System.setProperty("ovirt-engine.config.defaults", "src/test/resources/engine.conf.defaults"); defaultCluster = clusterBuilder.persist(); defaultHost = vdsBuilder.cluster(defaultCluster).persist(); defaultVM = vmBuilder.host(defaultHost).up().persist(); } }