package org.openstack.atlas.service.domain.services; import org.junit.Test; import org.openstack.atlas.service.domain.entities.*; import org.openstack.atlas.service.domain.repository.LoadBalancerRepository; import org.openstack.atlas.service.domain.repository.VirtualIpRepository; import org.openstack.atlas.service.domain.services.impl.VirtualIpServiceImpl; import org.junit.Before; import org.junit.Ignore; import org.junit.experimental.runners.Enclosed; import org.junit.runner.RunWith; import org.junit.Assert; import java.util.*; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; @Ignore @RunWith(Enclosed.class) public class VirtualIpServiceImplTest { public static class WhenConfiguringVipsForNewLb { Integer accountId = 1234; VirtualIpRepository virtualIpRepository; LoadBalancerRepository loadBalancerRepository; VirtualIpServiceImpl virtualIpService; LoadBalancer lb; LoadBalancerJoinVip lbjv; Set<LoadBalancerJoinVip> loadBalancerJoinVips; VirtualIp vip; @Before public void standUp() { virtualIpRepository = mock(VirtualIpRepository.class); loadBalancerRepository = mock(LoadBalancerRepository.class); virtualIpService = new VirtualIpServiceImpl(); virtualIpService.setLoadBalancerRepository(loadBalancerRepository); virtualIpService.setVirtualIpRepository(virtualIpRepository); } @Before public void standUpObjects() { lb = new LoadBalancer(); lb.setAccountId(898989); lb.setId(12); lb.setStatus(LoadBalancerStatus.ACTIVE); lbjv = new LoadBalancerJoinVip(); loadBalancerJoinVips = new HashSet<LoadBalancerJoinVip>(); vip = new VirtualIp(); } } public static class WhenRetrievingVirtualIps { VirtualIpRepository virtualIpRepository; LoadBalancerRepository loadBalancerRepository; VirtualIpServiceImpl virtualIpService; List<VirtualIp> vips = new ArrayList<VirtualIp>(); @Before public void standUp() { virtualIpRepository = mock(VirtualIpRepository.class); loadBalancerRepository = mock(LoadBalancerRepository.class); virtualIpService = new VirtualIpServiceImpl(); virtualIpService.setLoadBalancerRepository(loadBalancerRepository); virtualIpService.setVirtualIpRepository(virtualIpRepository); when(virtualIpRepository.getAll()).thenReturn(vips); } @Test public void shouldMapVipsByLbIdWhenCallingGetAllocatedVipsMappedByLbIdOneVipPerLb() { VirtualIp vip1 = new VirtualIp(); vip1.setAllocated(true); vip1.setVipType(VirtualIpType.PUBLIC); vip1.setIpVersion(IpVersion.IPV4); VirtualIp vip2 = new VirtualIp(); vip2.setAllocated(true); vip2.setVipType(VirtualIpType.SERVICENET); vip2.setIpVersion(IpVersion.IPV4); Set<LoadBalancerJoinVip> lbJoinVipSet1 = new HashSet<LoadBalancerJoinVip>(); LoadBalancerJoinVip lbJoinVip1 = new LoadBalancerJoinVip(); lbJoinVipSet1.add(lbJoinVip1); Set<LoadBalancerJoinVip> lbJoinVipSet2 = new HashSet<LoadBalancerJoinVip>(); LoadBalancerJoinVip lbJoinVip2 = new LoadBalancerJoinVip(); lbJoinVipSet2.add(lbJoinVip2); LoadBalancer lb1 = new LoadBalancer(); lb1.setId(123); LoadBalancer lb2 = new LoadBalancer(); lb2.setId(124); lbJoinVip1.setLoadBalancer(lb1); lbJoinVip2.setLoadBalancer(lb2); vip1.setLoadBalancerJoinVipSet(lbJoinVipSet1); vip2.setLoadBalancerJoinVipSet(lbJoinVipSet2); vips.add(vip1); vips.add(vip2); Map<Integer, List<VirtualIp>> vipMap = virtualIpService.getAllocatedVipsMappedByLbId(); Assert.assertEquals(2, vipMap.size()); Assert.assertTrue(vipMap.containsKey(123)); Assert.assertTrue(vipMap.containsKey(124)); Assert.assertEquals(1, vipMap.get(123).size()); Assert.assertEquals(1, vipMap.get(124).size()); Assert.assertEquals(VirtualIpType.PUBLIC, vipMap.get(123).get(0).getVipType()); Assert.assertEquals(IpVersion.IPV4, vipMap.get(123).get(0).getIpVersion()); Assert.assertEquals(VirtualIpType.SERVICENET, vipMap.get(124).get(0).getVipType()); Assert.assertEquals(IpVersion.IPV4, vipMap.get(124).get(0).getIpVersion()); } @Test public void shouldMapVipsByLbIdWhenCallingGetAllocatedVipsMappedByLbIdManyVipsPerLb() { VirtualIp vip11 = new VirtualIp(); vip11.setAllocated(true); vip11.setVipType(VirtualIpType.PUBLIC); vip11.setIpVersion(IpVersion.IPV4); VirtualIp vip12 = new VirtualIp(); vip12.setAllocated(true); vip12.setVipType(VirtualIpType.PUBLIC); vip12.setIpVersion(IpVersion.IPV6); VirtualIp vip13 = new VirtualIp(); vip13.setAllocated(true); vip13.setVipType(VirtualIpType.PUBLIC); vip13.setIpVersion(IpVersion.IPV4); VirtualIp vip21 = new VirtualIp(); vip21.setAllocated(true); vip21.setVipType(VirtualIpType.SERVICENET); vip21.setIpVersion(IpVersion.IPV4); VirtualIp vip22 = new VirtualIp(); vip22.setAllocated(true); vip22.setVipType(VirtualIpType.SERVICENET); vip22.setIpVersion(IpVersion.IPV4); Set<LoadBalancerJoinVip> lbJoinVipSet1 = new HashSet<LoadBalancerJoinVip>(); LoadBalancerJoinVip lbJoinVip1 = new LoadBalancerJoinVip(); lbJoinVipSet1.add(lbJoinVip1); Set<LoadBalancerJoinVip> lbJoinVipSet2 = new HashSet<LoadBalancerJoinVip>(); LoadBalancerJoinVip lbJoinVip2 = new LoadBalancerJoinVip(); lbJoinVipSet2.add(lbJoinVip2); LoadBalancer lb1 = new LoadBalancer(); lb1.setId(123); LoadBalancer lb2 = new LoadBalancer(); lb2.setId(124); lbJoinVip1.setLoadBalancer(lb1); lbJoinVip2.setLoadBalancer(lb2); vip11.setLoadBalancerJoinVipSet(lbJoinVipSet1); vip12.setLoadBalancerJoinVipSet(lbJoinVipSet1); vip13.setLoadBalancerJoinVipSet(lbJoinVipSet1); vip21.setLoadBalancerJoinVipSet(lbJoinVipSet2); vip22.setLoadBalancerJoinVipSet(lbJoinVipSet2); vips.add(vip11); vips.add(vip12); vips.add(vip13); vips.add(vip22); vips.add(vip21); Map<Integer, List<VirtualIp>> vipMap = virtualIpService.getAllocatedVipsMappedByLbId(); Assert.assertEquals(2, vipMap.size()); Assert.assertTrue(vipMap.containsKey(123)); Assert.assertTrue(vipMap.containsKey(124)); Assert.assertEquals(3, vipMap.get(123).size()); Assert.assertEquals(2, vipMap.get(124).size()); Assert.assertEquals(VirtualIpType.PUBLIC, vipMap.get(123).get(0).getVipType()); Assert.assertEquals(IpVersion.IPV4, vipMap.get(123).get(0).getIpVersion()); Assert.assertEquals(VirtualIpType.PUBLIC, vipMap.get(123).get(1).getVipType()); Assert.assertEquals(IpVersion.IPV6, vipMap.get(123).get(1).getIpVersion()); Assert.assertEquals(VirtualIpType.PUBLIC, vipMap.get(123).get(2).getVipType()); Assert.assertEquals(IpVersion.IPV4, vipMap.get(123).get(2).getIpVersion()); Assert.assertEquals(VirtualIpType.SERVICENET, vipMap.get(124).get(0).getVipType()); Assert.assertEquals(IpVersion.IPV4, vipMap.get(124).get(0).getIpVersion()); Assert.assertEquals(VirtualIpType.SERVICENET, vipMap.get(124).get(1).getVipType()); Assert.assertEquals(IpVersion.IPV4, vipMap.get(124).get(1).getIpVersion()); } } }