package org.ovirt.engine.core.dao;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
import java.util.List;
import javax.inject.Inject;
import org.junit.Before;
import org.junit.Test;
import org.ovirt.engine.core.common.businessentities.ArchitectureType;
import org.ovirt.engine.core.common.businessentities.Cluster;
import org.ovirt.engine.core.common.businessentities.Label;
import org.ovirt.engine.core.common.businessentities.LabelBuilder;
import org.ovirt.engine.core.common.businessentities.VdsStatic;
import org.ovirt.engine.core.common.businessentities.VmStatic;
import org.ovirt.engine.core.compat.Guid;
import org.ovirt.engine.core.compat.Version;
import com.google.common.collect.Lists;
public class LabelDaoTest extends BaseDaoTestCase {
@Inject
private LabelDao labelDao;
@Inject
private VmStaticDao vmDao;
@Inject
private VdsStaticDao vdsDao;
@Inject
private ClusterDao clusterDao;
private VdsStatic host;
@Override
@Before
public void setUp() {
Cluster cluster = new Cluster();
cluster.setName("test-cluster");
cluster.setId(Guid.newGuid());
cluster.setCompatibilityVersion(Version.v3_6);
cluster.setArchitecture(ArchitectureType.x86);
cluster.setMacPoolId(FixturesTool.DEFAULT_MAC_POOL_ID);
clusterDao.save(cluster);
host = new VdsStatic();
host.setId(Guid.newGuid());
host.setName("test-host");
host.setHostName("host-ip");
host.setClusterId(cluster.getId());
vdsDao.save(host);
}
@Test
public void testCreateAndGetById() {
Guid guid = Guid.newGuid();
Label label = new LabelBuilder()
.name("test label")
.id(guid)
.build();
labelDao.save(label);
Label read = labelDao.get(guid);
assertNotNull(read);
assertEquals(guid, read.getId());
assertEquals(label.getName(), read.getName());
}
@Test
public void testCreateAndGetAll() {
Guid guid = Guid.newGuid();
Label label = new LabelBuilder()
.name("test label")
.id(guid)
.build();
labelDao.save(label);
List<Label> readList = labelDao.getAll();
assertNotNull(readList);
Label read = readList.get(0);
assertNotNull(read);
assertEquals(guid, read.getId());
assertEquals(label.getName(), read.getName());
}
@Test
public void testCreateAndGetWithVM() {
Guid guid = Guid.newGuid();
VmStatic vm = new VmStatic();
vm.setId(Guid.newGuid());
vmDao.save(vm);
Label label = new LabelBuilder()
.name("test label")
.id(guid)
.vm(vm.getId())
.build();
labelDao.save(label);
Label read = labelDao.get(guid);
assertNotNull(read);
assertEquals(guid, read.getId());
assertEquals(label.getName(), read.getName());
assertNotNull(read.getVms());
assertEquals(1, read.getVms().size());
assertEquals(0, read.getHosts().size());
assertEquals(vm.getId(), read.getVms().iterator().next());
}
@Test
public void testCreateAndGetWithHost() {
Guid guid = Guid.newGuid();
Label label = new LabelBuilder()
.name("test label")
.id(guid)
.entity(host)
.build();
labelDao.save(label);
Label read = labelDao.get(guid);
assertNotNull(read);
assertEquals(guid, read.getId());
assertEquals(label.getName(), read.getName());
assertNotNull(read.getVms());
assertEquals(0, read.getVms().size());
assertEquals(1, read.getHosts().size());
assertEquals(host.getId(), read.getHosts().iterator().next());
}
@Test
public void testCreateAndGetByReferencedId() {
Label label = new LabelBuilder()
.name("test label")
.id(Guid.newGuid())
.entity(host)
.build();
labelDao.save(label);
VmStatic vm = new VmStatic();
vm.setId(Guid.newGuid());
vmDao.save(vm);
label = new LabelBuilder()
.name("test label 2")
.id(Guid.newGuid())
.entity(vm)
.build();
labelDao.save(label);
VmStatic vm2 = new VmStatic();
vm2.setId(Guid.newGuid());
vmDao.save(vm2);
label = new LabelBuilder()
.name("test label not in result")
.id(Guid.newGuid())
.entity(vm2)
.build();
labelDao.save(label);
List<Label> read = labelDao.getAllByEntityIds(Lists.newArrayList(host.getId(), vm.getId(), Guid.newGuid()));
assertNotNull(read);
assertEquals(2, read.size());
}
@Test
public void testCreateAndGetByIds() {
Label label = new LabelBuilder()
.name("test label")
.id(Guid.newGuid())
.entity(host)
.build();
labelDao.save(label);
VmStatic vm = new VmStatic();
vm.setId(Guid.newGuid());
vmDao.save(vm);
VmStatic vm2 = new VmStatic();
vm2.setId(Guid.newGuid());
vmDao.save(vm2);
Label label2 = new LabelBuilder()
.name("test label 2")
.id(Guid.newGuid())
.entity(vm)
.build();
labelDao.save(label2);
label = new LabelBuilder()
.name("test label not in result")
.id(Guid.newGuid())
.entity(vm2)
.build();
labelDao.save(label);
List<Label> read = labelDao.getAllByIds(Lists.newArrayList(label.getId(), label2.getId()));
assertNotNull(read);
assertEquals(2, read.size());
}
@Test
public void testCreateAndGetLabelWithTwoItems() {
VmStatic vm = new VmStatic();
vm.setId(Guid.newGuid());
vmDao.save(vm);
Label label = new LabelBuilder()
.name("test label")
.id(Guid.newGuid())
.entities(host, vm)
.build();
labelDao.save(label);
List<Label> read = labelDao.getAllByEntityIds(Lists.newArrayList(host.getId(), vm.getId()));
assertNotNull(read);
assertEquals(1, read.size());
}
@Test
public void testCreateAndDeleteById() {
Guid guid = Guid.newGuid();
Label label = new LabelBuilder()
.name("test label")
.id(guid)
.host(host.getId())
.build();
labelDao.save(label);
labelDao.remove(label.getId());
Label read = labelDao.get(guid);
assertNull(read);
}
}