package org.ovirt.engine.core.dao; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertTrue; import java.util.ArrayList; import java.util.List; import java.util.stream.Collectors; import javax.inject.Inject; import org.junit.Before; import org.junit.Test; import org.ovirt.engine.core.common.businessentities.Tags; import org.ovirt.engine.core.compat.Guid; import org.ovirt.engine.core.dal.dbbroker.CustomMapSqlParameterSource; import org.ovirt.engine.core.dal.dbbroker.DbEngineDialect; import org.ovirt.engine.core.dal.dbbroker.SimpleJdbcCallsHandler; import org.springframework.jdbc.core.namedparam.MapSqlParameterSource; public class BatchProcedureCallTest extends BaseDaoTestCase { private TagDao dao; @Inject private DbEngineDialect dbEngineDialect; @Inject private SimpleJdbcCallsHandler jdbcCallsHandler; public BatchProcedureCallTest() { } @Override @Before public void setUp() throws Exception { dao = dbFacade.getTagDao(); } protected CustomMapSqlParameterSource getParamsSource(Tags tag) { CustomMapSqlParameterSource paramsSource = new CustomMapSqlParameterSource(dbEngineDialect); paramsSource.addValue("description", tag.getDescription()) .addValue("tag_id", tag.getTagId()) .addValue("tag_name", tag.getTagName()) .addValue("parent_id", tag.getParentId()) .addValue("readonly", tag.getIsReadonly()) .addValue("type", tag.getType()); return paramsSource; } @Test public void testBatch() { List<Tags> tags = dao.getAll(); for (Tags tag : tags) { dao.remove(tag.getTagId()); } List<Tags> data = new ArrayList<>(); data.add(new Tags("a", Guid.Empty, true, Guid.newGuid(), "a")); data.add(new Tags("b", Guid.Empty, true, Guid.newGuid(), "b")); List<MapSqlParameterSource> executions = data.stream().map(this::getParamsSource).collect(Collectors.toList()); jdbcCallsHandler.executeStoredProcAsBatch("Inserttags", executions); List<Tags> tagsAfterInsert = dao.getAll(); assertNotNull(tagsAfterInsert); assertEquals(data.size(), tagsAfterInsert.size()); assertTrue(data.containsAll(tagsAfterInsert)); } }