16 package org.openkilda.atdd.staging.steps;
18 import static java.lang.String.format;
19 import static java.util.stream.Collectors.toList;
20 import static org.hamcrest.Matchers.containsInAnyOrder;
21 import static org.junit.Assert.assertFalse;
22 import static org.junit.Assert.assertThat;
23 import static org.junit.Assert.assertTrue;
36 import cucumber.api.Scenario;
37 import cucumber.api.java.Before;
38 import cucumber.api.java.en.And;
39 import cucumber.api.java.en.Given;
40 import cucumber.api.java8.En;
41 import org.springframework.beans.factory.annotation.Autowired;
43 import java.util.List;
45 import java.util.stream.Collectors;
46 import java.util.stream.Stream;
61 private List<SwitchInfoData> actualSwitches;
62 private List<IslInfoData> actualLinks;
64 private Scenario scenario;
67 public void before(Scenario scenario) {
68 this.scenario = scenario;
71 @Given(
"^the reference topology$")
73 Set<SwitchId> skippedSwitches = topologyDefinition.getSkippedSwitchIds();
75 referenceSwitches = topologyDefinition.getActiveSwitches();
76 actualSwitches = northboundService.getActiveSwitches().stream()
77 .filter(sw -> !skippedSwitches.contains(sw.getSwitchId()))
80 referenceLinks = topologyDefinition.getIslsForActiveSwitches();
81 actualLinks = northboundService.getActiveLinks().stream()
82 .filter(sw -> !skippedSwitches.contains(sw.getPath().get(0).getSwitchId()))
83 .filter(sw -> !skippedSwitches.contains(sw.getPath().get(1).getSwitchId()))
84 .collect(Collectors.toList());
88 @And(
"^all defined switches are discovered")
90 assertFalse(
"No switches were discovered", actualSwitches.isEmpty());
92 assertThat(
"Discovered switches don't match expected", actualSwitches, containsInAnyOrder(
93 referenceSwitches.stream().map(SwitchMatcher::new).collect(toList())));
97 @And(
"^all defined links are detected")
99 if (actualLinks.isEmpty() && referenceLinks.isEmpty()) {
100 scenario.write(
"There are no links discovered as expected");
104 assertFalse(
"No links were discovered", actualLinks.isEmpty());
106 assertThat(
"Discovered links don't match expected", actualLinks, containsInAnyOrder(
107 referenceLinks.stream()
110 Isl pairedLink = Isl.factory(link.getDstSwitch(), link.getDstPort(),
111 link.getSrcSwitch(), link.getSrcPort(), link.getMaxBandwidth(), link.getAswitch());
112 return Stream.of(link, pairedLink);
114 .map(IslMatcher::new)
115 .collect(toList())));
118 @And(
"^all active switches have correct rules installed per Northbound validation")
120 actualSwitches.forEach(sw -> {
121 SwitchId switchId = sw.getSwitchId();
123 assertTrue(
format(
"The switch '%s' is missing rules: %s", switchId, validationResult.getMissingRules()),
124 validationResult.getMissingRules().isEmpty());
125 assertTrue(
format(
"The switch '%s' has excess rules: %s", switchId, validationResult.getExcessRules()),
126 validationResult.getExcessRules().isEmpty());
void before(Scenario scenario)
void validateSwitchRules()
void checkDiscoveredSwitches()
void checkDiscoveredLinks()