org.xlcloud.service.dao.VirtualClusterDefinitionsDaoTest.java Source code

Java tutorial

Introduction

Here is the source code for org.xlcloud.service.dao.VirtualClusterDefinitionsDaoTest.java

Source

/*
 * 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());
    }
}