/**
* Abiquo community edition
* cloud management application for hybrid clouds
* Copyright (C) 2008-2010 - Abiquo Holdings S.L.
*
* This application is free software; you can redistribute it and/or
* modify it under the terms of the GNU LESSER GENERAL PUBLIC
* LICENSE as published by the Free Software Foundation under
* version 3 of the License
*
* This software is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* LESSER GENERAL PUBLIC LICENSE v.3 for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the
* Free Software Foundation, Inc., 59 Temple Place - Suite 330,
* Boston, MA 02111-1307, USA. */
package com.abiquo.server.core.infrastructure;
import javax.persistence.EntityManager;
import org.testng.Assert;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
import com.abiquo.server.core.common.DefaultEntityCurrentUsed;
import com.abiquo.server.core.common.persistence.DefaultDAOTestBase;
import com.abiquo.server.core.enterprise.Enterprise;
import com.abiquo.server.core.enterprise.EnterpriseGenerator;
import com.softwarementors.bzngine.entities.test.PersistentInstanceTester;
public class DatacenterDAOTest extends DefaultDAOTestBase<DatacenterDAO, Datacenter>
{
private RackGenerator rackGenerator;
private EnterpriseGenerator enterpriseGenerator;
@Override
@BeforeMethod
protected void methodSetUp()
{
super.methodSetUp();
this.rackGenerator = new RackGenerator(getSeed());
this.enterpriseGenerator = new EnterpriseGenerator(getSeed());
}
@Override
protected DatacenterDAO createDao(final EntityManager arg0)
{
return new DatacenterDAO(arg0);
}
@Override
protected PersistentInstanceTester<Datacenter> createEntityInstanceGenerator()
{
return new DatacenterGenerator(getSeed());
}
@Test
public void test_datacenterDeletionDeletesRack()
{
Datacenter datacenter = eg().createUniqueInstance();
Rack rack1 = this.rackGenerator.createInstance(datacenter);
Rack rack2 = this.rackGenerator.createInstance(datacenter);
ds().persistAll(datacenter);
ds().remove(datacenter);
Assert.assertFalse(ds().canFind(rack1));
Assert.assertFalse(ds().canFind(rack2));
}
@Test
public void test_existsAnyWithName()
{
Assert.assertFalse(createDaoForRollbackTransaction().existsAnyWithName("INEXISTENT_NAME"));
Datacenter datacenter = createUniqueEntity();
datacenter.setName("A name");
ds().persistAll(datacenter);
Assert.assertTrue(createDaoForRollbackTransaction().existsAnyWithName("A name"));
}
@Test
public void test_existsAnyOtherWithName()
{
Datacenter datacenter = createUniqueEntity();
datacenter.setName("A name");
Datacenter datacenter2 = createUniqueEntity();
datacenter2.setName("Name 2");
ds().persistAll(datacenter, datacenter2);
DatacenterDAO dao = createDaoForRollbackTransaction();
datacenter = dao.findById(datacenter.getId());
Assert.assertFalse(dao.existsAnyOtherWithName(datacenter, "INEXISTENT_NAME"));
Assert.assertFalse(dao.existsAnyOtherWithName(datacenter, "A name"));
Assert.assertTrue(dao.existsAnyOtherWithName(datacenter, "Name 2"));
}
/**
* Should generate actual data to check its validity
*/
@Test(enabled = false)
public void test_getUsedResources()
{
Enterprise enterprise = this.enterpriseGenerator.createInstance("Enterprise Name");
Datacenter datacenter = createUniqueEntity();
datacenter.setName("Datacenter name");
ds().persistAll(datacenter, enterprise);
DatacenterDAO dao = createDaoWithNoTransaction();
DefaultEntityCurrentUsed expectedUsed = new DefaultEntityCurrentUsed(0, 0, 0);
DefaultEntityCurrentUsed currentUsed =
dao.getCurrentResourcesAllocated(datacenter.getId(), enterprise.getId());
Assert.assertEquals(currentUsed.getCpu(), expectedUsed.getCpu());
Assert.assertEquals(currentUsed.getRamInMb(), expectedUsed.getRamInMb());
Assert.assertEquals(currentUsed.getHdInMb(), expectedUsed.getHdInMb());
Assert.assertEquals(currentUsed.getPublicIp(), expectedUsed.getPublicIp());
Assert.assertEquals(currentUsed.getVlanCount(), expectedUsed.getVlanCount());
}
}