Java tutorial
/* * Copyright 2012 AMG.lab, a Bull Group Company * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.xlcloud.service.dao; import static junit.framework.Assert.assertEquals; import java.util.Collection; import java.util.HashSet; import java.util.LinkedList; import java.util.List; import java.util.Set; import javax.inject.Inject; import javax.transaction.HeuristicMixedException; import javax.transaction.HeuristicRollbackException; import javax.transaction.NotSupportedException; import javax.transaction.RollbackException; import javax.transaction.SystemException; import org.apache.commons.lang.builder.ToStringBuilder; import org.apache.commons.lang.builder.ToStringStyle; import org.apache.log4j.Logger; import org.junit.Before; import org.junit.Test; import org.xlcloud.service.model.CatalogScope; import org.xlcloud.service.model.VirtualClusterDefinitionModel; /** * JUnit test suite used for testing {@link VirtualClusterDefinitionsDao}. * * @author Tomek Adamczewski, AMG.net * @author Andrzej Stasiak, AMG.net */ public class VirtualClusterDefinitionsDaoTest extends DaoTestSupport { private static final Logger LOG = Logger.getLogger(VirtualClusterDefinitionsDaoTest.class); @Inject private VirtualClusterDefinitionsDao vcDefinitionsDao; private VirtualClusterDefinitionModel createVCD(String name, String desc, Set<String> tags, String type, CatalogScope catalogScope, Long accountId) { VirtualClusterDefinitionModel model = new VirtualClusterDefinitionModel(); model.setDescription(desc); model.setName(name); model.setTags(tags); model.setType(type); model.setCatalogScope(catalogScope); model.setAccountId(accountId); em.persist(model); LOG.info("Created vcd with ID: " + model.getVcDefinitionId()); return model; } private Set<String> publicTestTagSet; private Set<String> privateTestTagSet; @Before public void preparePersistenceTest() throws Exception { Set<String> tagSet1 = new HashSet<String>(); tagSet1.add("TAG1"); tagSet1.add("TAG2"); tagSet1.add("TAG3"); Set<String> tagSet2 = new HashSet<String>(); tagSet2.add("TAG1"); publicTestTagSet = new HashSet<String>(); publicTestTagSet.add("TAG1"); publicTestTagSet.add("TAG2"); privateTestTagSet = new HashSet<String>(); privateTestTagSet.add("TAG1"); VirtualClusterDefinitionModel model1 = createVCD("model-1", "desc-1", tagSet1, "TYPE1", CatalogScope.PUBLIC, null); // good one VirtualClusterDefinitionModel model2 = createVCD("model-2", "desc-2", tagSet2, "TYPE1", CatalogScope.PUBLIC, null); VirtualClusterDefinitionModel model3 = createVCD("model-3", "desc-3", tagSet1, "TYPE2", CatalogScope.PUBLIC, null); VirtualClusterDefinitionModel model4 = createVCD("model-4", "desc-4", tagSet2, "TYPE2", CatalogScope.PRIVATE, 1L); em.persist(model1); em.persist(model2); em.persist(model3); em.persist(model4); } @Test public void getAllModels() { LOG.info("Get all vcDefinition models test"); Collection<VirtualClusterDefinitionModel> allVcDefinitions = vcDefinitionsDao.findAll(); assertEquals(4, allVcDefinitions.size()); for (VirtualClusterDefinitionModel model : allVcDefinitions) { LOG.info(ToStringBuilder.reflectionToString(model, ToStringStyle.MULTI_LINE_STYLE)); } } @Test public void getByAccount() { LOG.info("Get vcDefinition models by account test"); List<VirtualClusterDefinitionModel> allVcDefinitions = vcDefinitionsDao.findByAccount(1L, false); assertEquals(1, allVcDefinitions.size()); assertEquals("model-4", allVcDefinitions.get(0).getName()); } @Test public void getPublicByTypeAndTags() { List<VirtualClusterDefinitionModel> vcDefinitions = vcDefinitionsDao.findPublicByTypeAndTags("TYPE1", publicTestTagSet, false); assertEquals(1, vcDefinitions.size()); assertEquals("model-1", vcDefinitions.get(0).getName()); } @Test public void getPrivateByTypeAndTags() { List<VirtualClusterDefinitionModel> vcDefinitions = vcDefinitionsDao.findByTypeAndTags(1L, "TYPE2", privateTestTagSet, false); assertEquals(1, vcDefinitions.size()); assertEquals(CatalogScope.PRIVATE, vcDefinitions.get(0).getCatalogScope()); assertEquals("model-4", vcDefinitions.get(0).getName()); } @Test public void getModelsById() { LOG.info("Get vcDefinition models by id test"); Collection<VirtualClusterDefinitionModel> allVcDefinitions = vcDefinitionsDao.findAll(); for (VirtualClusterDefinitionModel model : allVcDefinitions) { assertEquals(model, vcDefinitionsDao.find(model.getVcDefinitionId())); LOG.info(ToStringBuilder.reflectionToString(model, ToStringStyle.MULTI_LINE_STYLE)); } } @Test public void createModel() { LOG.info("Create vcDefinition model test"); VirtualClusterDefinitionModel newModel = new VirtualClusterDefinitionModel(); newModel.setDescription("insertTestModel"); newModel.setName("testModel"); vcDefinitionsDao.createOrUpdate(newModel); Collection<VirtualClusterDefinitionModel> allVcDefinitions = vcDefinitionsDao.findAll(); assertEquals(5, allVcDefinitions.size()); } @Test public void removeModel() { LOG.info("Remove vcDefinition test"); Collection<VirtualClusterDefinitionModel> allVcDefinitions = vcDefinitionsDao.findAll(); for (VirtualClusterDefinitionModel model : allVcDefinitions) { LOG.info("Removing vcDefinition with id: " + model.getVcDefinitionId()); vcDefinitionsDao.remove(model.getVcDefinitionId()); } allVcDefinitions = vcDefinitionsDao.findAll(); assertEquals(0, allVcDefinitions.size()); } }