Search in sources :

Example 1 with TransactionManager

use of org.openkilda.persistence.tx.TransactionManager in project open-kilda by telstra.

the class RerouteServiceTest method testRerouteInactivePinnedFlowsOneFailedSegment.

@Test
public void testRerouteInactivePinnedFlowsOneFailedSegment() throws Throwable {
    pinnedFlow.setStatus(FlowStatus.DOWN);
    for (FlowPath flowPath : pinnedFlow.getPaths()) {
        flowPath.setStatus(FlowPathStatus.INACTIVE);
        for (PathSegment pathSegment : flowPath.getSegments()) {
            if (pathSegment.containsNode(SWITCH_ID_A, PORT)) {
                pathSegment.setFailed(true);
            }
        }
    }
    RepositoryFactory repositoryFactory = mock(RepositoryFactory.class);
    FlowRepository flowRepository = mock(FlowRepository.class);
    when(flowRepository.findInactiveFlows()).thenReturn(Collections.singletonList(pinnedFlow));
    doAnswer(invocation -> {
        FlowStatus status = invocation.getArgument(1);
        pinnedFlow.setStatus(status);
        return null;
    }).when(flowRepository).updateStatusSafe(eq(pinnedFlow), any(), any());
    when(repositoryFactory.createFlowRepository()).thenReturn(flowRepository);
    FlowPathRepository pathRepository = mock(FlowPathRepository.class);
    when(repositoryFactory.createFlowPathRepository()).thenReturn(pathRepository);
    PathSegmentRepository pathSegmentRepository = mock(PathSegmentRepository.class);
    when(repositoryFactory.createPathSegmentRepository()).thenReturn(pathSegmentRepository);
    MessageSender messageSender = mock(MessageSender.class);
    PersistenceManager persistenceManager = mock(PersistenceManager.class);
    when(persistenceManager.getRepositoryFactory()).thenReturn(repositoryFactory);
    TransactionManager transactionManager = mock(TransactionManager.class);
    doAnswer(invocation -> {
        TransactionCallback<?, ?> arg = invocation.getArgument(0);
        return arg.doInTransaction();
    }).when(transactionManager).doInTransaction(Mockito.<TransactionCallback<?, ?>>any());
    when(persistenceManager.getTransactionManager()).thenReturn(transactionManager);
    RerouteService rerouteService = new RerouteService(persistenceManager);
    rerouteService.rerouteInactiveFlows(messageSender, CORRELATION_ID, REROUTE_INACTIVE_FLOWS_COMMAND);
    assertEquals(FlowStatus.UP, pinnedFlow.getStatus());
    for (FlowPath fp : pinnedFlow.getPaths()) {
        assertEquals(FlowPathStatus.ACTIVE, fp.getStatus());
        for (PathSegment ps : fp.getSegments()) {
            if (ps.containsNode(SWITCH_ID_A, PORT)) {
                assertFalse(ps.isFailed());
            }
        }
    }
}
Also used : FlowRepository(org.openkilda.persistence.repositories.FlowRepository) YFlowRepository(org.openkilda.persistence.repositories.YFlowRepository) FlowPathRepository(org.openkilda.persistence.repositories.FlowPathRepository) PathSegmentRepository(org.openkilda.persistence.repositories.PathSegmentRepository) PersistenceManager(org.openkilda.persistence.PersistenceManager) MessageSender(org.openkilda.wfm.topology.reroute.bolts.MessageSender) TransactionManager(org.openkilda.persistence.tx.TransactionManager) PathSegment(org.openkilda.model.PathSegment) RepositoryFactory(org.openkilda.persistence.repositories.RepositoryFactory) FlowPath(org.openkilda.model.FlowPath) FlowStatus(org.openkilda.model.FlowStatus) Test(org.junit.Test)

Example 2 with TransactionManager

use of org.openkilda.persistence.tx.TransactionManager in project open-kilda by telstra.

the class IslLatencyBolt method init.

@Override
protected void init() {
    TransactionManager transactionManager = persistenceManager.getTransactionManager();
    RepositoryFactory repositoryFactory = persistenceManager.getRepositoryFactory();
    islLatencyService = new IslLatencyService(transactionManager, repositoryFactory, latencyUpdateInterval, latencyUpdateTimeRange);
}
Also used : TransactionManager(org.openkilda.persistence.tx.TransactionManager) IslLatencyService(org.openkilda.wfm.topology.isllatency.service.IslLatencyService) RepositoryFactory(org.openkilda.persistence.repositories.RepositoryFactory)

Aggregations

RepositoryFactory (org.openkilda.persistence.repositories.RepositoryFactory)2 TransactionManager (org.openkilda.persistence.tx.TransactionManager)2 Test (org.junit.Test)1 FlowPath (org.openkilda.model.FlowPath)1 FlowStatus (org.openkilda.model.FlowStatus)1 PathSegment (org.openkilda.model.PathSegment)1 PersistenceManager (org.openkilda.persistence.PersistenceManager)1 FlowPathRepository (org.openkilda.persistence.repositories.FlowPathRepository)1 FlowRepository (org.openkilda.persistence.repositories.FlowRepository)1 PathSegmentRepository (org.openkilda.persistence.repositories.PathSegmentRepository)1 YFlowRepository (org.openkilda.persistence.repositories.YFlowRepository)1 IslLatencyService (org.openkilda.wfm.topology.isllatency.service.IslLatencyService)1 MessageSender (org.openkilda.wfm.topology.reroute.bolts.MessageSender)1