package org.ovirt.engine.core.dao; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; import java.util.HashSet; import java.util.List; import java.util.Set; import java.util.stream.Collectors; import org.apache.commons.collections.KeyValue; import org.junit.Before; import org.junit.Test; import org.ovirt.engine.core.common.businessentities.BusinessEntitySnapshot; import org.ovirt.engine.core.compat.Guid; public class BusinessEntitySnapshotDaoTest extends BaseDaoTestCase { private BusinessEntitySnapshotDao dao; private Guid commandWithTwoSnapshotsId = new Guid("48e85ac4-17cc-40d1-8b4e-37edcea8d78a"); private Guid commandWithOneSnapshotId = new Guid("0dcaa6a5-16fe-4270-8614-5dd249a057e0"); @Override @Before public void setUp() throws Exception { super.setUp(); dao = dbFacade.getBusinessEntitySnapshotDao(); } @Test public void testGetByCommandId() { List<BusinessEntitySnapshot> snapshots = dao.getAllForCommandId(commandWithTwoSnapshotsId); assertNotNull(snapshots); assertEquals(2, snapshots.size()); snapshots = dao.getAllForCommandId(commandWithOneSnapshotId); assertNotNull(snapshots); assertEquals(1, snapshots.size()); } @Test public void testInsertSnapshot() { BusinessEntitySnapshot snapshot = new BusinessEntitySnapshot(); Guid commandId = Guid.newGuid(); snapshot.setCommandId(commandId); snapshot.setCommandType("org.ovirt.engine.core.bll.UpdateVdsCommand"); snapshot.setEntityId(Guid.newGuid().toString()); snapshot.setEntityType("org.ovirt.engine.core.common.businessentities.VdsStatic"); snapshot.setEntitySnapshot("something"); snapshot.setSnapshotClass("someClass"); dao.save(snapshot); List<BusinessEntitySnapshot> snapshotsFromDb = dao.getAllForCommandId(commandId); assertNotNull(snapshotsFromDb); assertEquals(1, snapshotsFromDb.size()); assertEquals(snapshot, snapshotsFromDb.get(0)); } @Test public void testDeleteByCommandId() { int numberOfResultsBeforeDeletion = 2; Guid commandId = commandWithTwoSnapshotsId; testDeleteByCommandId(numberOfResultsBeforeDeletion, commandId); numberOfResultsBeforeDeletion = 1; commandId = commandWithOneSnapshotId; testDeleteByCommandId(numberOfResultsBeforeDeletion, commandId); } @Test public void testGetAllCommands() { List<KeyValue> snapshots = dao.getAllCommands(); assertNotNull(snapshots); assertEquals(2, snapshots.size()); Set<Guid> expectedSet = new HashSet<>(); expectedSet.add(commandWithOneSnapshotId); expectedSet.add(commandWithTwoSnapshotsId); Set<Guid> resultSet = snapshots.stream().map(snapshot -> (Guid) snapshot.getKey()).collect(Collectors.toSet()); assertEquals(expectedSet, resultSet); } private void testDeleteByCommandId(int numberOfResultsBeforeDeletion, Guid commandId) { List<BusinessEntitySnapshot> snapshots = dao.getAllForCommandId(commandId); assertNotNull(snapshots); assertEquals(numberOfResultsBeforeDeletion, snapshots.size()); dao.removeAllForCommandId(commandId); snapshots = dao.getAllForCommandId(commandId); assertNotNull(snapshots); assertEquals(0, snapshots.size()); } }