use of org.openkilda.pce.PathComputer in project open-kilda by telstra.
the class LatencyPathComputationStrategyBaseTest method shouldFindPathOverDiamondWithAllActiveLinksByLatency.
@Test
public void shouldFindPathOverDiamondWithAllActiveLinksByLatency() throws UnroutableFlowException, RecoverableException {
createDiamond(IslStatus.ACTIVE, IslStatus.ACTIVE, 100L, 1000L);
Switch srcSwitch = getSwitchById("00:01");
Switch destSwitch = getSwitchById("00:04");
Flow flow = new TestFlowBuilder().srcSwitch(srcSwitch).destSwitch(destSwitch).bandwidth(100).pathComputationStrategy(PathComputationStrategy.LATENCY).build();
PathComputer pathComputer = pathComputerFactory.getPathComputer();
GetPathsResult path = pathComputer.getPath(flow);
assertNotNull(path);
assertThat(path.getForward().getSegments(), Matchers.hasSize(2));
// should choose path B because it has lower latency
assertEquals(new SwitchId("00:02"), path.getForward().getSegments().get(0).getDestSwitchId());
}
use of org.openkilda.pce.PathComputer in project open-kilda by telstra.
the class LatencyPathComputationStrategyBaseTest method shouldFindPathOverDiamondWithOneActiveRouteByLatency.
@Test
public void shouldFindPathOverDiamondWithOneActiveRouteByLatency() throws UnroutableFlowException, RecoverableException {
createDiamond(IslStatus.INACTIVE, IslStatus.ACTIVE, 100L, 1000L);
Switch srcSwitch = getSwitchById("00:01");
Switch destSwitch = getSwitchById("00:04");
Flow flow = new TestFlowBuilder().srcSwitch(srcSwitch).destSwitch(destSwitch).bandwidth(100).pathComputationStrategy(PathComputationStrategy.LATENCY).build();
PathComputer pathComputer = pathComputerFactory.getPathComputer();
GetPathsResult path = pathComputer.getPath(flow);
assertNotNull(path);
assertThat(path.getForward().getSegments(), Matchers.hasSize(2));
// should have switch C as first hop since B is inactive
assertEquals(new SwitchId("00:03"), path.getForward().getSegments().get(0).getDestSwitchId());
}
use of org.openkilda.pce.PathComputer in project open-kilda by telstra.
the class LatencyPathComputationStrategyBaseTest method shouldFindDiversePath.
@Test
public void shouldFindDiversePath() throws RecoverableException, UnroutableFlowException {
createDiamondWithDiversity();
Flow flow = Flow.builder().flowId("new-flow").diverseGroupId("diverse").bandwidth(10).srcSwitch(getSwitchById("00:0A")).destSwitch(getSwitchById("00:0D")).encapsulationType(FlowEncapsulationType.TRANSIT_VLAN).pathComputationStrategy(PathComputationStrategy.LATENCY).build();
PathComputer pathComputer = pathComputerFactory.getPathComputer();
GetPathsResult diversePath = pathComputer.getPath(flow);
diversePath.getForward().getSegments().forEach(segment -> {
assertNotEquals(new SwitchId("00:0B"), segment.getSrcSwitchId());
assertNotEquals(new SwitchId("00:0B"), segment.getDestSwitchId());
});
}
use of org.openkilda.pce.PathComputer in project open-kilda by telstra.
the class LatencyPathComputationStrategyBaseTest method shouldFindPathOverDiamondWithUnstableIslByLatency.
@Test
public void shouldFindPathOverDiamondWithUnstableIslByLatency() throws UnroutableFlowException, RecoverableException {
createDiamond(IslStatus.ACTIVE, IslStatus.ACTIVE, 100L, 1000L);
Switch srcSwitch = getSwitchById("00:01");
Switch destSwitch = getSwitchById("00:04");
Isl linkAB = islRepository.findBySrcSwitch(srcSwitch.getSwitchId()).stream().filter(isl -> isl.getDestSwitchId().equals(new SwitchId("00:02"))).findAny().orElseThrow(() -> new IllegalStateException("Link A-B not found"));
linkAB.setTimeUnstable(Instant.now());
Flow flow = new TestFlowBuilder().srcSwitch(srcSwitch).destSwitch(destSwitch).bandwidth(100).pathComputationStrategy(PathComputationStrategy.LATENCY).build();
PathComputer pathComputer = pathComputerFactory.getPathComputer();
GetPathsResult path = pathComputer.getPath(flow);
assertNotNull(path);
assertThat(path.getForward().getSegments(), Matchers.hasSize(2));
// should now have C as first hop since A - B link is unstable
assertEquals(new SwitchId("00:03"), path.getForward().getSegments().get(0).getDestSwitchId());
}
use of org.openkilda.pce.PathComputer in project open-kilda by telstra.
the class LatencyPathComputationStrategyBaseTest method shouldFailToFindOverIslandsWithAllActiveLinks.
@Test
public void shouldFailToFindOverIslandsWithAllActiveLinks() throws RecoverableException, UnroutableFlowException {
createDiamond(IslStatus.ACTIVE, IslStatus.ACTIVE, 10, 20, "00:", 1);
createDiamond(IslStatus.ACTIVE, IslStatus.ACTIVE, 10, 20, "00:", 6);
Switch srcSwitch = getSwitchById("00:01");
Switch destSwitch = getSwitchById("00:06");
Flow flow = new TestFlowBuilder().srcSwitch(srcSwitch).destSwitch(destSwitch).bandwidth(100).pathComputationStrategy(PathComputationStrategy.LATENCY).build();
thrown.expect(UnroutableFlowException.class);
PathComputer pathComputer = pathComputerFactory.getPathComputer();
pathComputer.getPath(flow);
}
Aggregations