package org.openstack.atlas.service.domain.usagerefactor;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Ignore;
import org.junit.Test;
import org.junit.experimental.runners.Enclosed;
import org.junit.runner.RunWith;
import org.mockito.InjectMocks;
import org.mockito.Matchers;
import org.mockito.Mock;
import org.mockito.runners.MockitoJUnitRunner;
import org.openstack.atlas.service.domain.entities.AccountUsage;
import org.openstack.atlas.service.domain.entities.LoadBalancer;
import org.openstack.atlas.service.domain.entities.VirtualIpType;
import org.openstack.atlas.service.domain.repository.AccountUsageRepository;
import org.openstack.atlas.service.domain.repository.LoadBalancerRepository;
import org.openstack.atlas.service.domain.repository.VirtualIpRepository;
import org.openstack.atlas.service.domain.services.UsageRefactorService;
import org.openstack.atlas.service.domain.services.impl.UsageRefactorServiceImpl;
import org.openstack.atlas.service.domain.usage.repository.HostUsageRefactorRepository;
import org.openstack.atlas.usagerefactor.SnmpUsage;
import org.openstack.atlas.usagerefactor.processor.UsageEventProcessor;
import org.openstack.atlas.usagerefactor.processor.impl.UsageEventProcessorImpl;
import java.util.Calendar;
import java.util.List;
import static org.mockito.Mockito.when;
@Ignore
@RunWith(Enclosed.class)
public class UsageEventProcessorTest {
@RunWith(MockitoJUnitRunner.class)
public static class WhenProcessingUsageEvents {
LoadBalancer lb;
SnmpUsage snmpUsage;
SnmpUsage snmpUsage1;
List<SnmpUsage> snmpUsages;
@Mock
VirtualIpRepository virtualIpRepository;
@Mock
UsageRefactorService usageRefactorService;
@Mock
AccountUsageRepository accountUsageRepository;
@Mock
LoadBalancerRepository loadBalancerRepository;
@Mock
HostUsageRefactorRepository hostUsageRefactorRepository;
@InjectMocks
UsageRefactorService usageService1 = new UsageRefactorServiceImpl();
@Mock
UsageRefactorService usageService;
@InjectMocks
UsageEventProcessor processor = new UsageEventProcessorImpl();
@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);
}
}
@RunWith(MockitoJUnitRunner.class)
public static class WhenProcessingAccountUsageEvents {
LoadBalancer lb;
SnmpUsage snmpUsage;
SnmpUsage snmpUsage1;
List<SnmpUsage> snmpUsages;
@Mock
VirtualIpRepository virtualIpRepository;
@Mock
UsageRefactorService usageRefactorService;
@Mock
AccountUsageRepository accountUsageRepository;
@Mock
LoadBalancerRepository loadBalancerRepository;
@Mock
HostUsageRefactorRepository hostUsageRefactorRepository;
@InjectMocks
UsageRefactorService usageService1 = new UsageRefactorServiceImpl();
@Mock
UsageRefactorService usageService;
@InjectMocks
UsageEventProcessor processor = new UsageEventProcessorImpl();
@Before
public void standUp() {
lb = new LoadBalancer();
lb.setId(543221);
lb.setAccountId(55555);
}
@Test
public void shouldMapBasicAccountUsageRecord() {
when(loadBalancerRepository.getNumNonDeletedLoadBalancersForAccount(Matchers.<Integer>any())).thenReturn(2);
when(virtualIpRepository.getNumUniqueVipsForAccount(Matchers.<Integer>any(), Matchers.<VirtualIpType>any())).thenReturn(6);
AccountUsage mappedUsage;
Calendar now = Calendar.getInstance();
mappedUsage = processor.createAccountUsageEntry(lb, now);
Assert.assertEquals(lb.getAccountId(), mappedUsage.getAccountId());
Assert.assertEquals(6, (int) mappedUsage.getNumServicenetVips());
Assert.assertEquals(6, (int) mappedUsage.getNumPublicVips());
Assert.assertEquals(2, (int) mappedUsage.getNumLoadBalancers());
Assert.assertEquals(now, mappedUsage.getStartTime());
}
}
}