package org.openstack.atlas.api.mgmt.mapper.dozer;
import org.openstack.atlas.docs.loadbalancers.api.management.v1.Backup;
import org.openstack.atlas.service.domain.entities.Host;
import org.openstack.atlas.service.domain.entities.Zone;
import org.openstack.atlas.service.domain.events.entities.CategoryType;
import org.openstack.atlas.service.domain.events.entities.EventSeverity;
import org.openstack.atlas.service.domain.events.entities.LoadBalancerServiceEvent;
import org.openstack.atlas.service.domain.events.pojos.AccountLoadBalancerServiceEvents;
import org.openstack.atlas.service.domain.events.pojos.LoadBalancerServiceEvents;
import org.openstack.atlas.service.domain.pojos.HostUsage;
import org.openstack.atlas.service.domain.pojos.HostUsageList;
import org.openstack.atlas.service.domain.pojos.HostUsageRecord;
import org.openstack.atlas.api.helpers.CalendarHelper;
import org.dozer.DozerBeanMapper;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import org.junit.experimental.runners.Enclosed;
import org.junit.runner.RunWith;
import java.util.*;
@RunWith(Enclosed.class)
public class DomainToDataModelBackupTest {
private static final String managementDozerConfigFile = "loadbalancing-dozer-management-mapping.xml";
public static class WhenMappingABackupFromDomainToDataModel {
private DozerBeanMapper mapper;
private Backup backup;
private org.openstack.atlas.service.domain.entities.Backup domainBackup;
@Before
public void setUp() {
mapper = MapperBuilder.getConfiguredMapper(managementDozerConfigFile);
domainBackup = new org.openstack.atlas.service.domain.entities.Backup();
domainBackup.setId(1);
domainBackup.setName("MyFirstBackup");
domainBackup.setBackupTime(new GregorianCalendar(2010, Calendar.OCTOBER, 7));
Host host = new Host();
host.setId(1234);
host.setZone(Zone.A);
domainBackup.setHost(host);
backup = mapper.map(domainBackup, Backup.class);
}
@Test
public void shouldNotFailWhenDomainBackupIsNull() {
domainBackup = new org.openstack.atlas.service.domain.entities.Backup();
try {
backup = mapper.map(domainBackup, Backup.class);
} catch (Exception e) {
Assert.fail("Empty domain load balancer caused this exception");
}
}
@Test
public void shouldMapAllFieldsExceptHostIdWhenUsingDefaultMap() {
Assert.assertEquals(new Integer(1), backup.getId());
Assert.assertEquals("MyFirstBackup", backup.getName());
Assert.assertEquals(new GregorianCalendar(2010, Calendar.OCTOBER, 7), backup.getBackupTime());
Assert.assertNull(backup.getHostId());
}
@Test
public void shouldMapAllFieldsWhenUsingFullMapper() {
backup = mapper.map(domainBackup, Backup.class, "FULL_BACKUP");
Assert.assertEquals(new Integer(1), backup.getId());
Assert.assertEquals("MyFirstBackup", backup.getName());
Assert.assertEquals(new GregorianCalendar(2010, Calendar.OCTOBER, 7), backup.getBackupTime());
Assert.assertEquals(new Integer(1234), backup.getHostId());
}
}
public static class When_mapping_Host_UsageList {
private DozerBeanMapper mapper;
private HostUsageList dae;
private org.openstack.atlas.docs.loadbalancers.api.management.v1.HostUsageList rae;
@Before
public void setUp() {
rae = new org.openstack.atlas.docs.loadbalancers.api.management.v1.HostUsageList();
mapper = MapperBuilder.getConfiguredMapper(managementDozerConfigFile);
dae = new HostUsageList();
List<HostUsageRecord> x = new ArrayList();
HostUsageRecord sel = new HostUsageRecord();
sel.setHostId(new Integer(3));
List<HostUsage> xs = new ArrayList();
Calendar now = Calendar.getInstance();
now = CalendarHelper.zeroOutTime(now);
xs.add(newHostUsage(23L, 44L, now));
xs.add(newHostUsage(42L, 33L, Calendar.getInstance()));
sel.setHostUsages(xs);
x.add(sel);
sel = new HostUsageRecord();
sel.setHostId(31337);
xs = new ArrayList();
xs.add(newHostUsage(26L, 45L, Calendar.getInstance()));
xs.add(newHostUsage(26L, 43L, Calendar.getInstance()));
sel.setHostUsages(xs);
x.add(sel);
dae.setHostUsageRecords(x);
}
@Test
public void ShouldHaveIdenticalHostIds() {
rae = mapper.map(dae, rae.getClass());
Assert.assertEquals(new Integer(3), rae.getHostUsageRecords().get(0).getHostId());
Assert.assertEquals(new Integer(31337), rae.getHostUsageRecords().get(1).getHostId());
}
@Test
public void ShouldHaveIdenticalBandwidths() {
rae = mapper.map(dae, rae.getClass());
Assert.assertEquals(new Long(23), rae.getHostUsageRecords().get(0).getHostUsages().get(0).getBandwidthIn());
Assert.assertEquals(new Long(44), rae.getHostUsageRecords().get(0).getHostUsages().get(0).getBandwidthOut());
Assert.assertEquals(dae.getHostUsageRecords().get(0).getHostUsages().get(0).getDay(), rae.getHostUsageRecords().get(0).getHostUsages().get(0).getDay());
}
private static HostUsage newHostUsage(Long bin, Long bout, Calendar r) {
HostUsage out = new HostUsage();
out.setBandwidthIn(bin);
out.setBandwidthOut(bout);
out.setDay(r);
return out;
}
}
public static class When_mapping_Account_LoadBalancerEvents {
private DozerBeanMapper mapper;
private AccountLoadBalancerServiceEvents dae;
private org.openstack.atlas.docs.loadbalancers.api.management.v1.AccountLoadBalancerServiceEvents rae;
@Before
public void setUp() {
rae = new org.openstack.atlas.docs.loadbalancers.api.management.v1.AccountLoadBalancerServiceEvents();
mapper = MapperBuilder.getConfiguredMapper(managementDozerConfigFile);
dae = new AccountLoadBalancerServiceEvents();
dae.setAccountId(3000);
LoadBalancerServiceEvents sel = new LoadBalancerServiceEvents();
sel.setLoadbalancerId(69);
sel.getLoadBalancerServiceEvents().add(newLoadBalancerServiceEvent(1, "user69"));
sel.getLoadBalancerServiceEvents().add(newLoadBalancerServiceEvent(2, "user69"));
dae.getLoadBalancerServiceEvents().add(sel);
sel = new LoadBalancerServiceEvents();
sel.setLoadbalancerId(31337);
sel.getLoadBalancerServiceEvents().add(newLoadBalancerServiceEvent(3, "user31337"));
sel.getLoadBalancerServiceEvents().add(newLoadBalancerServiceEvent(4, "user31337"));
dae.getLoadBalancerServiceEvents().add(sel);
}
@Test
public void shouldMapAccountIdCorrectly() {
rae = mapper.map(dae, rae.getClass());
Assert.assertEquals(new Integer(3000), dae.getAccountId());
}
@Test
public void accountServiceEventShouldHave2Itmems() {
rae = mapper.map(dae, rae.getClass());
Assert.assertEquals(2, rae.getLoadBalancerServiceEvents().size());
}
@Test
public void accountServiceEventShouldHaveIdenticalLoadBalncerIds() {
rae = mapper.map(dae, rae.getClass());
Assert.assertEquals(new Integer(69), rae.getLoadBalancerServiceEvents().get(0).getLoadbalancerId());
Assert.assertEquals(new Integer(31337), rae.getLoadBalancerServiceEvents().get(1).getLoadbalancerId());
}
@Test
public void loadBalancerEventIdsShouldBeMappedCorrectly() {
rae = mapper.map(dae, rae.getClass());
Assert.assertEquals(new Integer(1), rae.getLoadBalancerServiceEvents().get(0).getLoadBalancerServiceEvents().get(0).getId());
Assert.assertEquals(new Integer(2), rae.getLoadBalancerServiceEvents().get(0).getLoadBalancerServiceEvents().get(1).getId());
Assert.assertEquals(new Integer(3), rae.getLoadBalancerServiceEvents().get(1).getLoadBalancerServiceEvents().get(0).getId());
Assert.assertEquals(new Integer(4), rae.getLoadBalancerServiceEvents().get(1).getLoadBalancerServiceEvents().get(1).getId());
}
@Test
public void loadBalancerEventSeverityShouldBeMappedCorrectly() {
rae = mapper.map(dae, rae.getClass());
Assert.assertEquals("user69", rae.getLoadBalancerServiceEvents().get(0).getLoadBalancerServiceEvents().get(0).getAuthor());
Assert.assertEquals("user69", rae.getLoadBalancerServiceEvents().get(0).getLoadBalancerServiceEvents().get(1).getAuthor());
Assert.assertEquals("user31337", rae.getLoadBalancerServiceEvents().get(1).getLoadBalancerServiceEvents().get(0).getAuthor());
Assert.assertEquals("user31337", rae.getLoadBalancerServiceEvents().get(1).getLoadBalancerServiceEvents().get(1).getAuthor());
}
@Test
public void loadBalancerEventCategorysShouldBeMappedCorrectly() {
rae = mapper.map(dae, rae.getClass());
String cat = "CREATE";
Assert.assertEquals(cat, rae.getLoadBalancerServiceEvents().get(0).getLoadBalancerServiceEvents().get(0).getCategory());
Assert.assertEquals(cat, rae.getLoadBalancerServiceEvents().get(0).getLoadBalancerServiceEvents().get(1).getCategory());
Assert.assertEquals(cat, rae.getLoadBalancerServiceEvents().get(1).getLoadBalancerServiceEvents().get(0).getCategory());
Assert.assertEquals(cat, rae.getLoadBalancerServiceEvents().get(1).getLoadBalancerServiceEvents().get(1).getCategory());
}
@Test
public void loadBalancerEventDescriptionShouldBeMappedCorrectly() {
rae = mapper.map(dae, rae.getClass());
Assert.assertEquals("Test1", rae.getLoadBalancerServiceEvents().get(0).getLoadBalancerServiceEvents().get(0).getDescription());
Assert.assertEquals("Test2", rae.getLoadBalancerServiceEvents().get(0).getLoadBalancerServiceEvents().get(1).getDescription());
Assert.assertEquals("Test3", rae.getLoadBalancerServiceEvents().get(1).getLoadBalancerServiceEvents().get(0).getDescription());
Assert.assertEquals("Test4", rae.getLoadBalancerServiceEvents().get(1).getLoadBalancerServiceEvents().get(1).getDescription());
}
private static LoadBalancerServiceEvent newLoadBalancerServiceEvent(Integer id, String author) {
LoadBalancerServiceEvent out = new LoadBalancerServiceEvent();
out.setAuthor(author);
out.setId(id);
out.setCategory(CategoryType.CREATE);
out.setDescription(String.format("Test%d", id));
out.setSeverity(EventSeverity.CRITICAL);
return out;
}
}
}