16 package org.openkilda.testing.tools;
18 import static org.hamcrest.CoreMatchers.equalTo;
19 import static org.hamcrest.MatcherAssert.assertThat;
20 import static org.hamcrest.Matchers.hasProperty;
21 import static org.hamcrest.core.Every.everyItem;
33 import net.jodah.failsafe.Failsafe;
34 import net.jodah.failsafe.RetryPolicy;
35 import org.springframework.beans.factory.annotation.Autowired;
36 import org.springframework.stereotype.Component;
38 import java.util.Arrays;
39 import java.util.Collections;
40 import java.util.List;
41 import java.util.concurrent.TimeUnit;
42 import java.util.stream.Collectors;
60 public void waitForIslStatus(List<Isl> isls, String expectedStatus, RetryPolicy retryPolicy) {
63 List<IslInfoData> actualIsl = Failsafe.with(retryPolicy
64 .retryIf(states -> ((List<IslInfoData>) states).stream()
65 .map(IslInfoData::getState)
66 .anyMatch(state -> !state.equals(expectedIslState))))
68 List<IslInfoData> allLinks = northbound.getAllLinks();
69 return isls.stream().map(isl ->
getIslInfo(allLinks, isl)).collect(Collectors.toList());
72 assertThat(actualIsl, everyItem(hasProperty(
"state", equalTo(expectedIslState))));
86 return getIslInfo(northbound.getAllLinks(), isl);
98 return islsInfo.stream().filter(link -> {
99 PathNode src = link.getPath().get(0);
100 PathNode dst = link.getPath().get(1);
104 }).findFirst().get();
113 ASwitch reversedAsw = null;
114 if (isl.getAswitch() != null) {
115 reversedAsw = ASwitch.factory(isl.getAswitch().getOutPort(), isl.getAswitch().getInPort());
117 return Isl.factory(isl.getDstSwitch(), isl.getDstPort(), isl.getSrcSwitch(),
118 isl.getSrcPort(), isl.getMaxBandwidth(), reversedAsw);
132 ASwitch srcASwitch = srcIsl.getAswitch();
133 ASwitch dstASwitch = dstIsl.getAswitch();
135 List<Integer> portsToUnplug = Collections.singletonList(
136 replugSource ? srcASwitch.getInPort() : srcASwitch.getOutPort());
137 aswitchService.portsDown(portsToUnplug);
141 aswitchService.removeFlows(Arrays.asList(
142 new ASwitchFlow(srcASwitch.getInPort(), srcASwitch.getOutPort()),
143 new ASwitchFlow(srcASwitch.getOutPort(), srcASwitch.getInPort())));
146 plugIntoSource ? dstASwitch.getInPort() : dstASwitch.getOutPort());
148 aswitchService.addFlows(Arrays.asList(aswFlowForward, aswFlowReverse));
151 aswitchService.portsUp(portsToUnplug);
154 replugSource ? (plugIntoSource ? dstIsl.getSrcSwitch() : dstIsl.getDstSwitch()) : srcIsl.getSrcSwitch(),
155 replugSource ? (plugIntoSource ? dstIsl.getSrcPort() : dstIsl.getDstPort()) : srcIsl.getSrcPort(),
156 replugSource ? srcIsl.getDstSwitch() : (plugIntoSource ? dstIsl.getSrcSwitch() : dstIsl.getDstSwitch()),
157 replugSource ? srcIsl.getDstPort() : (plugIntoSource ? dstIsl.getSrcPort() : dstIsl.getDstPort()),
160 replugSource ? (plugIntoSource ? dstIsl.getAswitch().getInPort() :
161 dstIsl.getAswitch().getOutPort()) : srcIsl.getAswitch().getInPort(),
162 replugSource ? srcIsl.getAswitch().getOutPort() :
163 (plugIntoSource ? dstIsl.getAswitch().getInPort() : dstIsl.getAswitch().getOutPort())
167 private RetryPolicy retryPolicy() {
168 return new RetryPolicy()
169 .withDelay(3, TimeUnit.SECONDS)