Roy Golan has uploaded a new change for review. Change subject: core: replace mock with injections in RemoveDiskCommandTest ......................................................................
core: replace mock with injections in RemoveDiskCommandTest Change-Id: I733e926e2a07daa6d5c9dca6ff5020a8324590e6 Signed-off-by: Roy Golan <[email protected]> --- M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/CommandBase.java M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RemoveDiskCommand.java M backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/CommandBaseDependenciesTest.java M backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/MockDbFacade.java A backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/MockVMDAo.java M backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/RemoveDiskCommandTest.java M backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dal/dbbroker/DbFacade.java 7 files changed, 208 insertions(+), 27 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/73/19173/1 diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/CommandBase.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/CommandBase.java index 15ad806..fcee209 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/CommandBase.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/CommandBase.java @@ -213,6 +213,11 @@ this.commandId = commandId; } + @Override + protected DbFacade getDbFacade() { + return dbFacade; + } + /** * This method should be used only at {@link CommandBase} code for creating * and execution {@link CommandBase} objects directly. diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RemoveDiskCommand.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RemoveDiskCommand.java index 21e7ff9..bd52034 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RemoveDiskCommand.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RemoveDiskCommand.java @@ -51,10 +51,12 @@ import org.ovirt.engine.core.utils.transaction.TransactionMethod; import org.ovirt.engine.core.utils.transaction.TransactionSupport; +import javax.inject.Inject; + @DisableInPrepareMode @LockIdNameAttribute @NonTransactiveCommandAttribute -public class RemoveDiskCommand<T extends RemoveDiskParameters> extends CommandBase<T> +public class RemoveDiskCommand extends CommandBase<RemoveDiskParameters> implements QuotaStorageDependent { private Disk disk; @@ -62,7 +64,8 @@ private List<VM> listVms; private String cachedDiskIsBeingRemovedLockMessage; - public RemoveDiskCommand(T parameters) { + @Inject + public RemoveDiskCommand(RemoveDiskParameters parameters) { super(parameters); setStorageDomainId(getParameters().getStorageDomainId()); } @@ -242,16 +245,15 @@ } protected VmDeviceDAO getVmDeviceDAO() { - return DbFacade.getInstance() - .getVmDeviceDao(); + return getDbFacade().getVmDeviceDao(); } protected DiskImageDAO getDiskImageDao() { - return DbFacade.getInstance().getDiskImageDao(); + return getDbFacade().getDiskImageDao(); } protected DiskDao getDiskDao() { - return DbFacade.getInstance().getDiskDao(); + return getDbFacade().getDiskDao(); } @Override diff --git a/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/CommandBaseDependenciesTest.java b/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/CommandBaseDependenciesTest.java index 9ec5a4f..4d03627 100644 --- a/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/CommandBaseDependenciesTest.java +++ b/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/CommandBaseDependenciesTest.java @@ -34,13 +34,17 @@ /** * deploy an jar archive with a our test class and empty beans.xml into the container */ - @Deployment - public static JavaArchive createDeployment() { + + public static JavaArchive createDeployment(Class<?>... classes) { return ShrinkWrap.create(JavaArchive.class) - .addClasses(CDITestCommand.class, MockDbFacade.class, MockConfig.class) + .addClasses(classes) .addAsManifestResource(EmptyAsset.INSTANCE, "beans.xml"); } + @Deployment + public static JavaArchive deploy() { + return createDeployment(CDITestCommand.class, MockDbFacade.class, MockConfig.class); + } /** * A Command that test that the actual dependencies of Commands gets injected. diff --git a/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/MockDbFacade.java b/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/MockDbFacade.java index 700b22b..8c9062e 100644 --- a/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/MockDbFacade.java +++ b/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/MockDbFacade.java @@ -1,6 +1,8 @@ package org.ovirt.engine.core.bll; +import org.mockito.Mockito; import org.ovirt.engine.core.dal.dbbroker.DbFacade; +import org.ovirt.engine.core.dao.DAO; /** * A mock of DbFacade that has a toString which will be used in a command - to test its really the DbFacade instance we @@ -17,4 +19,9 @@ return MockDbFacade.class.getSimpleName(); } + @Override + protected <T extends DAO> T getDao(Class<T> daoType) { + return Mockito.mock(daoType); + } + } diff --git a/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/MockVMDAo.java b/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/MockVMDAo.java new file mode 100644 index 0000000..833c657 --- /dev/null +++ b/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/MockVMDAo.java @@ -0,0 +1,140 @@ +package org.ovirt.engine.core.bll; + +import org.ovirt.engine.core.common.businessentities.VM; +import org.ovirt.engine.core.compat.Guid; +import org.ovirt.engine.core.dao.VmDAO; + +import java.util.List; +import java.util.Map; + +public class MockVMDAo implements VmDAO { + @Override + public VM get(Guid id) { + return null; //To change body of implemented methods use File | Settings | File Templates. + } + + @Override + public VM get(Guid id, Guid userID, boolean isFiltered) { + return null; //To change body of implemented methods use File | Settings | File Templates. + } + + @Override + public VM getByNameForDataCenter(Guid dataCenterId, String name, Guid userID, boolean isFiltered) { + return null; //To change body of implemented methods use File | Settings | File Templates. + } + + @Override + public VM getForHibernationImage(Guid hibernationImage) { + return null; //To change body of implemented methods use File | Settings | File Templates. + } + + @Override + public Map<Boolean, List<VM>> getForDisk(Guid disk) { + return null; //To change body of implemented methods use File | Settings | File Templates. + } + + @Override + public List<VM> getVmsListForDisk(Guid id) { + return null; //To change body of implemented methods use File | Settings | File Templates. + } + + @Override + public List<VM> getAllForUser(Guid user) { + return null; //To change body of implemented methods use File | Settings | File Templates. + } + + @Override + public List<VM> getAllForUserWithGroupsAndUserRoles(Guid user) { + return null; //To change body of implemented methods use File | Settings | File Templates. + } + + @Override + public List<VM> getAllForAdGroupByName(String name) { + return null; //To change body of implemented methods use File | Settings | File Templates. + } + + @Override + public List<VM> getAllWithTemplate(Guid template) { + return null; //To change body of implemented methods use File | Settings | File Templates. + } + + @Override + public List<VM> getAllRunningForVds(Guid vds) { + return null; //To change body of implemented methods use File | Settings | File Templates. + } + + @Override + public List<VM> getAllRunningOnOrMigratingToVds(Guid vds) { + return null; //To change body of implemented methods use File | Settings | File Templates. + } + + @Override + public Map<Guid, VM> getAllRunningByVds(Guid vds) { + return null; //To change body of implemented methods use File | Settings | File Templates. + } + + @Override + public List<VM> getAllUsingQuery(String query) { + return null; //To change body of implemented methods use File | Settings | File Templates. + } + + @Override + public List<VM> getAllForStorageDomain(Guid storageDomain) { + return null; //To change body of implemented methods use File | Settings | File Templates. + } + + @Override + public List<VM> getAllActiveForStorageDomain(Guid storageDomain) { + return null; //To change body of implemented methods use File | Settings | File Templates. + } + + @Override + public List<VM> getAllVmsRelatedToQuotaId(Guid quotaId) { + return null; //To change body of implemented methods use File | Settings | File Templates. + } + + @Override + public List<VM> getVmsByIds(List<Guid> vmsIds) { + return null; //To change body of implemented methods use File | Settings | File Templates. + } + + @Override + public List<VM> getAll(Guid userID, boolean isFiltered) { + return null; //To change body of implemented methods use File | Settings | File Templates. + } + + @Override + public List<VM> getAll() { + return null; //To change body of implemented methods use File | Settings | File Templates. + } + + @Override + public void saveIsInitialized(Guid vmid, boolean isInitialized) { + //To change body of implemented methods use File | Settings | File Templates. + } + + @Override + public void remove(Guid vm) { + //To change body of implemented methods use File | Settings | File Templates. + } + + @Override + public List<VM> getAllForNetwork(Guid networkId) { + return null; //To change body of implemented methods use File | Settings | File Templates. + } + + @Override + public List<VM> getAllForVdsGroup(Guid vds_group_id) { + return null; //To change body of implemented methods use File | Settings | File Templates. + } + + @Override + public List<VM> getAllForVmPool(Guid vmPoolId) { + return null; //To change body of implemented methods use File | Settings | File Templates. + } + + @Override + public List<VM> getAllMigratingToHost(Guid vdsId) { + return null; //To change body of implemented methods use File | Settings | File Templates. + } +} diff --git a/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/RemoveDiskCommandTest.java b/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/RemoveDiskCommandTest.java index bd74d5a..9789c45 100644 --- a/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/RemoveDiskCommandTest.java +++ b/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/RemoveDiskCommandTest.java @@ -6,12 +6,16 @@ import java.util.Collections; +import javax.enterprise.inject.Produces; +import javax.inject.Inject; + +import org.jboss.arquillian.container.test.api.Deployment; +import org.jboss.arquillian.junit.Arquillian; +import org.jboss.shrinkwrap.api.spec.JavaArchive; import org.junit.Before; import org.junit.Rule; import org.junit.Test; import org.junit.runner.RunWith; -import org.mockito.Mock; -import org.mockito.runners.MockitoJUnitRunner; import org.ovirt.engine.core.bll.lock.InMemoryLockManager; import org.ovirt.engine.core.common.action.RemoveDiskParameters; import org.ovirt.engine.core.common.businessentities.DiskImage; @@ -29,7 +33,7 @@ import org.ovirt.engine.core.utils.lock.LockManager; /** A test case for {@link RemoveDiskCommandTest} */ -@RunWith(MockitoJUnitRunner.class) +@RunWith(Arquillian.class) public class RemoveDiskCommandTest { private LockManager lockManager = new InMemoryLockManager(); @@ -37,43 +41,61 @@ @Rule public MockEJBStrategyRule ejbRule = new MockEJBStrategyRule(BeanType.LOCK_MANAGER, lockManager); - @Mock + // @Inject private VmDAO vmDao; - @Mock + // @Inject private VmDeviceDAO vmDeviceDao; - private RemoveDiskCommand<RemoveDiskParameters> cmd; + @Deployment + public static JavaArchive deploy() { + System.out.println("deploy"); + return CommandBaseDependenciesTest.createDeployment(RemoveDiskCommandTest.class, MockDbFacade.class, MockConfig.class, RemoveDiskCommand.class); + } + + public RemoveDiskCommandTest() { + System.out.println("ctor"); + + } + + @Inject + private RemoveDiskCommand cmd; private DiskImage disk; private VM vm; private VmDevice vmDevice; + Guid diskId = Guid.newGuid(); + Guid vmId = Guid.newGuid(); + VmDeviceId vmDeviceId = new VmDeviceId(diskId, vmId); + + @Before public void setUp() { - Guid diskId = Guid.newGuid(); + System.out.println("setup"); + +// cmd = spy(new RemoveDiskCommand<RemoveDiskParameters>(params)); + cmd = spy(cmd); + when(cmd.getVmDAO().getVmsListForDisk(diskId)).thenReturn(Collections.singletonList(vm)); + when(cmd.getVmDeviceDAO().get(vmDeviceId)).thenReturn(vmDevice); + + doReturn(disk).when(cmd).getDisk(); + } + + @Produces + public RemoveDiskParameters createParams() { disk = new DiskImage(); disk.setId(diskId); disk.setVmEntityType(VmEntityType.VM); - Guid vmId = Guid.newGuid(); vm = new VM(); vm.setId(vmId); - VmDeviceId vmDeviceId = new VmDeviceId(diskId, vmId); vmDevice = new VmDevice(); vmDevice.setId(vmDeviceId); vmDevice.setIsPlugged(true); - when(vmDao.getVmsListForDisk(diskId)).thenReturn(Collections.singletonList(vm)); - when(vmDeviceDao.get(vmDeviceId)).thenReturn(vmDevice); - - RemoveDiskParameters params = new RemoveDiskParameters(diskId); - - cmd = spy(new RemoveDiskCommand<RemoveDiskParameters>(params)); - doReturn(disk).when(cmd).getDisk(); - doReturn(vmDeviceDao).when(cmd).getVmDeviceDAO(); - doReturn(vmDao).when(cmd).getVmDAO(); + return new RemoveDiskParameters(diskId); } /* Tests for canDoAction() flow */ diff --git a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dal/dbbroker/DbFacade.java b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dal/dbbroker/DbFacade.java index 987ebb9..3c1c371 100644 --- a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dal/dbbroker/DbFacade.java +++ b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dal/dbbroker/DbFacade.java @@ -193,6 +193,7 @@ public <T extends GenericDao<?, ?>> T getDaoForEntity(Class<? extends BusinessEntity<?>> entityClass) { @SuppressWarnings("unchecked") Class<T> daoType = (Class<T>) mapEntityToDao.get(entityClass); + return getDao(daoType); } -- To view, visit http://gerrit.ovirt.org/19173 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I733e926e2a07daa6d5c9dca6ff5020a8324590e6 Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: Roy Golan <[email protected]> _______________________________________________ Engine-patches mailing list [email protected] http://lists.ovirt.org/mailman/listinfo/engine-patches
