package org.openstack.atlas.service.domain.usagerefactor; import org.junit.Assert; import org.junit.Before; import org.junit.Test; import org.junit.experimental.runners.Enclosed; import org.junit.runner.RunWith; import org.mockito.runners.MockitoJUnitRunner; import org.openstack.atlas.service.domain.entities.LoadBalancer; import org.openstack.atlas.service.domain.entities.LoadBalancerJoinVip; import org.openstack.atlas.service.domain.entities.VirtualIp; import org.openstack.atlas.service.domain.entities.VirtualIpType; import org.openstack.atlas.service.domain.events.UsageEvent; import org.openstack.atlas.service.domain.exceptions.DeletedStatusException; import org.openstack.atlas.service.domain.exceptions.EntityNotFoundException; import org.openstack.atlas.service.domain.usage.BitTag; import org.openstack.atlas.service.domain.usage.entities.LoadBalancerHostUsage; import org.openstack.atlas.usagerefactor.SnmpUsage; import org.openstack.atlas.usagerefactor.processor.mapper.UsageEventMapper; import java.util.Calendar; import java.util.HashSet; import java.util.List; import java.util.Set; @RunWith(Enclosed.class) public class UsageEventMapperTest { @RunWith(MockitoJUnitRunner.class) public static class WhenProcessingUsageEvents { LoadBalancer lb; SnmpUsage snmpUsage; SnmpUsage snmpUsage1; List<SnmpUsage> snmpUsages; UsageEventMapper usageEventMapper; @Before public void standUp() { lb = new LoadBalancer(); lb.setId(543221); lb.setAccountId(55555); snmpUsage = new SnmpUsage(); snmpUsage.setHostId(1); snmpUsage.setLoadbalancerId(lb.getId()); snmpUsage.setBytesIn(1234455); snmpUsage.setBytesInSsl(4321); snmpUsage.setBytesOut(987); snmpUsage.setBytesOutSsl(986); snmpUsage.setConcurrentConnections(1); snmpUsage.setConcurrentConnectionsSsl(3); } @Test public void shouldMapBasicUsageRecord() { LoadBalancerHostUsage mappedUsage; Calendar now = Calendar.getInstance(); usageEventMapper = new UsageEventMapper(lb, false, snmpUsage, UsageEvent.SSL_OFF, now); mappedUsage = usageEventMapper.mapSnmpUsageToUsageEvent(); Assert.assertEquals(1, mappedUsage.getHostId()); Assert.assertEquals(543221, mappedUsage.getLoadbalancerId()); Assert.assertEquals(1234455, mappedUsage.getIncomingTransfer()); Assert.assertEquals(4321, mappedUsage.getIncomingTransferSsl()); Assert.assertEquals(987, mappedUsage.getOutgoingTransfer()); Assert.assertEquals(986, mappedUsage.getOutgoingTransferSsl()); Assert.assertEquals(1, mappedUsage.getConcurrentConnections()); Assert.assertEquals(3, mappedUsage.getConcurrentConnectionsSsl()); } @Test public void shouldMapPollTime() { LoadBalancerHostUsage mappedUsage; Calendar now = Calendar.getInstance(); usageEventMapper = new UsageEventMapper(lb, false, snmpUsage, UsageEvent.SSL_OFF, now); mappedUsage = usageEventMapper.mapSnmpUsageToUsageEvent(); Assert.assertEquals(now, mappedUsage.getPollTime()); } @Test public void shouldMapBasicUsageRecordWithNumVips() { LoadBalancerHostUsage mappedUsage; Calendar now = Calendar.getInstance(); LoadBalancerJoinVip jv = new LoadBalancerJoinVip(); Set<LoadBalancerJoinVip> jvs = new HashSet<LoadBalancerJoinVip>(); jvs.add(jv); lb.setLoadBalancerJoinVipSet(jvs); usageEventMapper = new UsageEventMapper(lb, false, snmpUsage, UsageEvent.SSL_OFF, now); mappedUsage = usageEventMapper.mapSnmpUsageToUsageEvent(); Assert.assertEquals(1, mappedUsage.getHostId()); Assert.assertEquals(543221, mappedUsage.getLoadbalancerId()); Assert.assertEquals(1234455, mappedUsage.getIncomingTransfer()); Assert.assertEquals(4321, mappedUsage.getIncomingTransferSsl()); Assert.assertEquals(987, mappedUsage.getOutgoingTransfer()); Assert.assertEquals(986, mappedUsage.getOutgoingTransferSsl()); Assert.assertEquals(1, mappedUsage.getConcurrentConnections()); Assert.assertEquals(3, mappedUsage.getConcurrentConnectionsSsl()); Assert.assertEquals(1, mappedUsage.getNumVips()); } @Test public void shouldMapBasicUsageRecordWithMulipleNumVips() { LoadBalancerHostUsage mappedUsage; Calendar now = Calendar.getInstance(); LoadBalancerJoinVip jv = new LoadBalancerJoinVip(); LoadBalancerJoinVip jv2 = new LoadBalancerJoinVip(); Set<LoadBalancerJoinVip> jvs = new HashSet<LoadBalancerJoinVip>(); jvs.add(jv); jvs.add(jv2); lb.setLoadBalancerJoinVipSet(jvs); usageEventMapper = new UsageEventMapper(lb, false, snmpUsage, UsageEvent.SSL_OFF, now); mappedUsage = usageEventMapper.mapSnmpUsageToUsageEvent(); Assert.assertEquals(2, mappedUsage.getNumVips()); } @Test public void shouldMapBasicUsageRecordWithMulipleNumVipsAndPollTime() { LoadBalancerHostUsage mappedUsage; Calendar now = Calendar.getInstance(); LoadBalancerJoinVip jv = new LoadBalancerJoinVip(); LoadBalancerJoinVip jv2 = new LoadBalancerJoinVip(); Set<LoadBalancerJoinVip> jvs = new HashSet<LoadBalancerJoinVip>(); jvs.add(jv); jvs.add(jv2); lb.setLoadBalancerJoinVipSet(jvs); usageEventMapper = new UsageEventMapper(lb, false, snmpUsage, UsageEvent.SSL_OFF, now); mappedUsage = usageEventMapper.mapSnmpUsageToUsageEvent(); Assert.assertEquals(2, mappedUsage.getNumVips()); Assert.assertEquals(now, mappedUsage.getPollTime()); } @Test public void shouldMapBitTagsSSLON() { LoadBalancerHostUsage mappedUsage; Calendar now = Calendar.getInstance(); LoadBalancerJoinVip jv = new LoadBalancerJoinVip(); Set<LoadBalancerJoinVip> jvs = new HashSet<LoadBalancerJoinVip>(); jvs.add(jv); lb.setLoadBalancerJoinVipSet(jvs); usageEventMapper = new UsageEventMapper(lb, false, snmpUsage, UsageEvent.SSL_ONLY_ON, now); mappedUsage = usageEventMapper.mapSnmpUsageToUsageEvent(); Assert.assertEquals(BitTag.SSL.tagValue(), mappedUsage.getTagsBitmask()); } @Test public void shouldMapBasicUsageRecordWithMulipleNumVipsAndPollTimeAndSSLOn() { LoadBalancerHostUsage mappedUsage; Calendar now = Calendar.getInstance(); LoadBalancerJoinVip jv = new LoadBalancerJoinVip(); LoadBalancerJoinVip jv2 = new LoadBalancerJoinVip(); Set<LoadBalancerJoinVip> jvs = new HashSet<LoadBalancerJoinVip>(); jvs.add(jv); jvs.add(jv2); lb.setLoadBalancerJoinVipSet(jvs); usageEventMapper = new UsageEventMapper(lb, false, snmpUsage, UsageEvent.SSL_ONLY_ON, now); mappedUsage = usageEventMapper.mapSnmpUsageToUsageEvent(); Assert.assertEquals(2, mappedUsage.getNumVips()); Assert.assertEquals(now, mappedUsage.getPollTime()); Assert.assertEquals(BitTag.SSL.tagValue(), mappedUsage.getTagsBitmask()); } @Test public void shouldMapCreatLB() { LoadBalancerHostUsage mappedUsage; Calendar now = Calendar.getInstance(); LoadBalancerJoinVip jv = new LoadBalancerJoinVip(); Set<LoadBalancerJoinVip> jvs = new HashSet<LoadBalancerJoinVip>(); jvs.add(jv); lb.setLoadBalancerJoinVipSet(jvs); usageEventMapper = new UsageEventMapper(lb, false, snmpUsage, UsageEvent.CREATE_LOADBALANCER, now); mappedUsage = usageEventMapper.mapSnmpUsageToUsageEvent(); Assert.assertEquals(0, mappedUsage.getTagsBitmask()); } @Test public void shouldMapBitTagsPrevUsageSSLON() { LoadBalancerHostUsage usage = new LoadBalancerHostUsage(); usage.setTagsBitmask(BitTag.SSL.tagValue()); LoadBalancerHostUsage mappedUsage; Calendar now = Calendar.getInstance(); LoadBalancerJoinVip jv = new LoadBalancerJoinVip(); Set<LoadBalancerJoinVip> jvs = new HashSet<LoadBalancerJoinVip>(); jvs.add(jv); lb.setLoadBalancerJoinVipSet(jvs); usageEventMapper = new UsageEventMapper(lb, false, snmpUsage, UsageEvent.SSL_ONLY_ON, now); mappedUsage = usageEventMapper.mapSnmpUsageToUsageEvent(); Assert.assertEquals(BitTag.SSL.tagValue(), mappedUsage.getTagsBitmask()); } @Test public void shouldMapBitTagsPrevUsageSSLMixed() { LoadBalancerHostUsage usage = new LoadBalancerHostUsage(); usage.setTagsBitmask(BitTag.SSL.tagValue()); LoadBalancerHostUsage mappedUsage; Calendar now = Calendar.getInstance(); LoadBalancerJoinVip jv = new LoadBalancerJoinVip(); Set<LoadBalancerJoinVip> jvs = new HashSet<LoadBalancerJoinVip>(); jvs.add(jv); lb.setLoadBalancerJoinVipSet(jvs); usageEventMapper = new UsageEventMapper(lb, false, snmpUsage, UsageEvent.SSL_MIXED_ON, now); mappedUsage = usageEventMapper.mapSnmpUsageToUsageEvent(); Assert.assertEquals(BitTag.SSL.tagValue() + BitTag.SSL_MIXED_MODE.tagValue(), mappedUsage.getTagsBitmask()); } @Test public void shouldMapServiceNeCreatetLB() throws EntityNotFoundException, DeletedStatusException { Set<VirtualIp> vips = new HashSet<VirtualIp>(); VirtualIp vip = new VirtualIp(); vip.setVipType(VirtualIpType.SERVICENET); vips.add(vip); LoadBalancerHostUsage mappedUsage; Calendar now = Calendar.getInstance(); LoadBalancerJoinVip jv = new LoadBalancerJoinVip(); Set<LoadBalancerJoinVip> jvs = new HashSet<LoadBalancerJoinVip>(); jvs.add(jv); lb.setLoadBalancerJoinVipSet(jvs); usageEventMapper = new UsageEventMapper(lb, true, snmpUsage, UsageEvent.CREATE_LOADBALANCER, now); mappedUsage = usageEventMapper.mapSnmpUsageToUsageEvent(); Assert.assertEquals(BitTag.SERVICENET_LB.tagValue(), mappedUsage.getTagsBitmask()); } @Test public void shouldMapServiceNetLBSSLON() throws EntityNotFoundException, DeletedStatusException { Set<VirtualIp> vips = new HashSet<VirtualIp>(); VirtualIp vip = new VirtualIp(); vip.setVipType(VirtualIpType.SERVICENET); vips.add(vip); LoadBalancerHostUsage mappedUsage; Calendar now = Calendar.getInstance(); LoadBalancerJoinVip jv = new LoadBalancerJoinVip(); Set<LoadBalancerJoinVip> jvs = new HashSet<LoadBalancerJoinVip>(); jvs.add(jv); lb.setLoadBalancerJoinVipSet(jvs); usageEventMapper = new UsageEventMapper(lb, true, snmpUsage, UsageEvent.SSL_ONLY_ON, now); mappedUsage = usageEventMapper.mapSnmpUsageToUsageEvent(); Assert.assertEquals(BitTag.SERVICENET_LB.tagValue() + BitTag.SSL.tagValue(), mappedUsage.getTagsBitmask()); } @Test public void shouldMapServiceNetLBSSLMixed() throws EntityNotFoundException, DeletedStatusException { Set<VirtualIp> vips = new HashSet<VirtualIp>(); VirtualIp vip = new VirtualIp(); vip.setVipType(VirtualIpType.SERVICENET); vips.add(vip); LoadBalancerHostUsage mappedUsage; Calendar now = Calendar.getInstance(); LoadBalancerJoinVip jv = new LoadBalancerJoinVip(); Set<LoadBalancerJoinVip> jvs = new HashSet<LoadBalancerJoinVip>(); jvs.add(jv); lb.setLoadBalancerJoinVipSet(jvs); usageEventMapper = new UsageEventMapper(lb, true, snmpUsage, UsageEvent.SSL_MIXED_ON, now); mappedUsage = usageEventMapper.mapSnmpUsageToUsageEvent(); Assert.assertEquals(BitTag.SERVICENET_LB.tagValue() + BitTag.SSL.tagValue() + +BitTag.SSL_MIXED_MODE.tagValue(), mappedUsage.getTagsBitmask()); } @Test public void shouldMapDeleteServiceNetLoadBalancer() throws EntityNotFoundException, DeletedStatusException { Set<VirtualIp> vips = new HashSet<VirtualIp>(); VirtualIp vip = new VirtualIp(); vip.setVipType(VirtualIpType.SERVICENET); vips.add(vip); LoadBalancerHostUsage mappedUsage; Calendar now = Calendar.getInstance(); LoadBalancerJoinVip jv = new LoadBalancerJoinVip(); Set<LoadBalancerJoinVip> jvs = new HashSet<LoadBalancerJoinVip>(); jvs.add(jv); lb.setLoadBalancerJoinVipSet(jvs); usageEventMapper = new UsageEventMapper(lb, true, snmpUsage, UsageEvent.DELETE_LOADBALANCER, now); mappedUsage = usageEventMapper.mapSnmpUsageToUsageEvent(); Assert.assertEquals(BitTag.SERVICENET_LB.tagValue(), mappedUsage.getTagsBitmask()); } @Test public void shouldMapCreateServiceNetLoadBalancer() throws EntityNotFoundException, DeletedStatusException { Set<VirtualIp> vips = new HashSet<VirtualIp>(); VirtualIp vip = new VirtualIp(); vip.setVipType(VirtualIpType.SERVICENET); vips.add(vip); LoadBalancerHostUsage mappedUsage; Calendar now = Calendar.getInstance(); LoadBalancerJoinVip jv = new LoadBalancerJoinVip(); Set<LoadBalancerJoinVip> jvs = new HashSet<LoadBalancerJoinVip>(); jvs.add(jv); lb.setLoadBalancerJoinVipSet(jvs); usageEventMapper = new UsageEventMapper(lb, true, snmpUsage, UsageEvent.CREATE_LOADBALANCER, now); mappedUsage = usageEventMapper.mapSnmpUsageToUsageEvent(); Assert.assertEquals(BitTag.SERVICENET_LB.tagValue(), mappedUsage.getTagsBitmask()); } @Test public void shouldMapDeleteLoadBalancer() throws EntityNotFoundException, DeletedStatusException { LoadBalancerHostUsage mappedUsage; Calendar now = Calendar.getInstance(); LoadBalancerJoinVip jv = new LoadBalancerJoinVip(); Set<LoadBalancerJoinVip> jvs = new HashSet<LoadBalancerJoinVip>(); jvs.add(jv); lb.setLoadBalancerJoinVipSet(jvs); usageEventMapper = new UsageEventMapper(lb, false, snmpUsage, UsageEvent.DELETE_LOADBALANCER, now); mappedUsage = usageEventMapper.mapSnmpUsageToUsageEvent(); Assert.assertEquals(0, mappedUsage.getTagsBitmask()); } } }