package org.openstack.atlas.service.domain.services;
import org.junit.After;
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.openstack.atlas.service.domain.Base;
import org.openstack.atlas.service.domain.deadlock.DeadLockRetryAspect;
import org.openstack.atlas.service.domain.entities.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import java.util.HashSet;
import java.util.Set;
@RunWith(Enclosed.class)
public class LoadBalancerServiceImplDeleteTest {
@RunWith(SpringJUnit4ClassRunner.class)
public static class WhenPseudoDeletingALoadBalancer extends Base {
@Autowired
private DeadLockRetryAspect deadLockRetryAspect;
@Before
public void standUp() throws Exception {
super.standUp();
loadBalancer = new LoadBalancer();
loadBalancer.setAccountId(1234);
loadBalancer.setName("Pseudo Delete Test");
loadBalancer.setPort(80);
loadBalancer.setProtocol(LoadBalancerProtocol.HTTP);
loadBalancer.setUserName("Rackspace Cloud");
Set<LoadBalancerJoinVip6> lbJoinVip6Set = new HashSet<LoadBalancerJoinVip6>();
LoadBalancerJoinVip6 lbJoinVip6 = new LoadBalancerJoinVip6(80, loadBalancer, new VirtualIpv6());
lbJoinVip6Set.add(lbJoinVip6);
loadBalancer.setLoadBalancerJoinVip6Set(lbJoinVip6Set);
Set<Node> nodes = new HashSet<Node>();
Node node = new Node();
node.setIpAddress("198.9.23.94");
node.setPort(80);
node.setCondition(NodeCondition.ENABLED);
node.setType(NodeType.PRIMARY);
nodes.add(node);
loadBalancer.setNodes(nodes);
loadBalancer = loadBalancerService.create(loadBalancer);
System.out.println();
}
@After
public void tearDown() throws Exception {
loadBalancer = loadBalancerService.pseudoDelete(loadBalancer);
loadBalancerRepository.delete(loadBalancer);
super.tearDown();
}
@Test
public void shouldCallDeadlockCode() throws Throwable {
loadBalancer = loadBalancerService.get(loadBalancer.getId());
Assert.assertNotNull(loadBalancer);
loadBalancer = loadBalancerService.pseudoDelete(loadBalancer);
Assert.assertTrue(deadLockRetryAspect.getConncurrencyRetryCalls() > 0);
}
}
}