use of org.openkilda.messaging.info.switches.LogicalPortInfoEntry in project open-kilda by telstra.
the class ValidationServiceImplTest method calculateMisconfiguredLogicalPortDifferentPortOrderTest.
@Test
public void calculateMisconfiguredLogicalPortDifferentPortOrderTest() {
ValidationServiceImpl validationService = new ValidationServiceImpl(persistenceManager().build());
LogicalPortInfoEntry actual = LogicalPortInfoEntry.builder().type(org.openkilda.messaging.info.switches.LogicalPortType.LAG).logicalPortNumber(LOGICAL_PORT_NUMBER_1).physicalPorts(Lists.newArrayList(PHYSICAL_PORT_1, PHYSICAL_PORT_2, PHYSICAL_PORT_3)).build();
LogicalPortInfoEntry expected = LogicalPortInfoEntry.builder().type(org.openkilda.messaging.info.switches.LogicalPortType.LAG).logicalPortNumber(LOGICAL_PORT_NUMBER_1).physicalPorts(Lists.newArrayList(PHYSICAL_PORT_3, PHYSICAL_PORT_2, PHYSICAL_PORT_1)).build();
LogicalPortInfoEntry difference = validationService.calculateMisconfiguredLogicalPort(expected, actual);
// physical ports are equal. Only order is different. So port difference must be null
assertNull(difference.getActual().getPhysicalPorts());
assertNull(difference.getExpected().getPhysicalPorts());
}
use of org.openkilda.messaging.info.switches.LogicalPortInfoEntry in project open-kilda by telstra.
the class ValidationServiceImplTest method validateLogicalPorts.
@Test
public void validateLogicalPorts() {
ValidationService validationService = new ValidationServiceImpl(persistenceManager().build());
LogicalPort proper = buildLogicalPort(LOGICAL_PORT_NUMBER_1, PHYSICAL_PORT_2, PHYSICAL_PORT_1);
LogicalPort misconfigured = buildLogicalPort(LOGICAL_PORT_NUMBER_2, LogicalPortType.BFD, PHYSICAL_PORT_3);
LogicalPort excess = buildLogicalPort(LOGICAL_PORT_NUMBER_4, PHYSICAL_PORT_6);
LogicalPort bfdExcess = buildLogicalPort(LOGICAL_PORT_NUMBER_5, LogicalPortType.BFD, PHYSICAL_PORT_7);
ValidateLogicalPortsResult result = validationService.validateLogicalPorts(SWITCH_ID_A, Lists.newArrayList(proper, misconfigured, excess, bfdExcess));
assertEquals(1, result.getProperLogicalPorts().size());
// bfdExcess port shouldn't be in this list
assertEquals(1, result.getExcessLogicalPorts().size());
assertEquals(1, result.getMissingLogicalPorts().size());
assertEquals(1, result.getMisconfiguredLogicalPorts().size());
assertEqualLogicalPort(proper, result.getProperLogicalPorts().get(0));
assertEqualLogicalPort(excess, result.getExcessLogicalPorts().get(0));
LogicalPortInfoEntry missing = LogicalPortInfoEntry.builder().type(org.openkilda.messaging.info.switches.LogicalPortType.LAG).logicalPortNumber(LOGICAL_PORT_NUMBER_3).physicalPorts(Lists.newArrayList(PHYSICAL_PORT_5, PHYSICAL_PORT_6)).build();
assertEquals(missing, result.getMissingLogicalPorts().get(0));
LogicalPortInfoEntry misconfiguredEntry = LogicalPortInfoEntry.builder().type(org.openkilda.messaging.info.switches.LogicalPortType.BFD).logicalPortNumber(LOGICAL_PORT_NUMBER_2).physicalPorts(Lists.newArrayList(PHYSICAL_PORT_3)).actual(new LogicalPortMisconfiguredInfoEntry(org.openkilda.messaging.info.switches.LogicalPortType.BFD, Lists.newArrayList(PHYSICAL_PORT_3))).expected(new LogicalPortMisconfiguredInfoEntry(org.openkilda.messaging.info.switches.LogicalPortType.LAG, Lists.newArrayList(PHYSICAL_PORT_3, PHYSICAL_PORT_4))).build();
assertEquals(misconfiguredEntry, result.getMisconfiguredLogicalPorts().get(0));
}
use of org.openkilda.messaging.info.switches.LogicalPortInfoEntry in project open-kilda by telstra.
the class ValidationServiceImpl method validateLogicalPorts.
@Override
public ValidateLogicalPortsResult validateLogicalPorts(SwitchId switchId, List<LogicalPort> presentLogicalPorts) {
Map<Integer, LogicalPortInfoEntry> expectedPorts = lagLogicalPortRepository.findBySwitchId(switchId).stream().map(LogicalPortMapper.INSTANCE::map).peek(port -> Collections.sort(port.getPhysicalPorts())).collect(Collectors.toMap(LogicalPortInfoEntry::getLogicalPortNumber, Function.identity()));
Map<Integer, LogicalPortInfoEntry> actualPorts = presentLogicalPorts.stream().map(LogicalPortMapper.INSTANCE::map).peek(port -> Collections.sort(port.getPhysicalPorts())).collect(Collectors.toMap(LogicalPortInfoEntry::getLogicalPortNumber, Function.identity()));
List<LogicalPortInfoEntry> properPorts = new ArrayList<>();
List<LogicalPortInfoEntry> missingPorts = new ArrayList<>();
List<LogicalPortInfoEntry> excessPorts = new ArrayList<>();
List<LogicalPortInfoEntry> misconfiguredPorts = new ArrayList<>();
for (Entry<Integer, LogicalPortInfoEntry> entry : expectedPorts.entrySet()) {
int portNumber = entry.getKey();
LogicalPortInfoEntry expected = entry.getValue();
if (actualPorts.containsKey(portNumber)) {
LogicalPortInfoEntry actual = actualPorts.get(portNumber);
if (actual.equals(expected)) {
properPorts.add(actual);
} else {
misconfiguredPorts.add(calculateMisconfiguredLogicalPort(expected, actual));
}
} else {
missingPorts.add(expected);
}
}
for (Entry<Integer, LogicalPortInfoEntry> entry : actualPorts.entrySet()) {
if (LogicalPortType.BFD.equals(entry.getValue().getType())) {
// At this moment we do not validate BFD ports, so Kilda wouldn't include BFD ports into excess list
continue;
}
if (!expectedPorts.containsKey(entry.getKey())) {
excessPorts.add(entry.getValue());
}
}
return new ValidateLogicalPortsResult(ImmutableList.copyOf(properPorts), ImmutableList.copyOf(missingPorts), ImmutableList.copyOf(excessPorts), ImmutableList.copyOf(misconfiguredPorts));
}
use of org.openkilda.messaging.info.switches.LogicalPortInfoEntry in project open-kilda by telstra.
the class ValidationServiceImplTest method assertEqualLogicalPort.
private void assertEqualLogicalPort(LogicalPort expected, LogicalPortInfoEntry actual) {
LogicalPortInfoEntry expectedPortInfo = LogicalPortMapper.INSTANCE.map(expected);
Collections.sort(expectedPortInfo.getPhysicalPorts());
Collections.sort(actual.getPhysicalPorts());
assertEquals(expectedPortInfo, actual);
}
use of org.openkilda.messaging.info.switches.LogicalPortInfoEntry in project open-kilda by telstra.
the class SwitchMapperTest method testToLogicalPortsValidationDto.
@Test
public void testToLogicalPortsValidationDto() {
LogicalPortInfoEntry missing = LogicalPortInfoEntry.builder().logicalPortNumber(LOGICAL_PORT_NUMBER_1).type(LAG).physicalPorts(newArrayList(PHYSICAL_PORT_1, PHYSICAL_PORT_2)).build();
LogicalPortInfoEntry excess = LogicalPortInfoEntry.builder().logicalPortNumber(LOGICAL_PORT_NUMBER_2).type(LAG).physicalPorts(newArrayList(PHYSICAL_PORT_3)).build();
LogicalPortInfoEntry misconfigured = LogicalPortInfoEntry.builder().logicalPortNumber(LOGICAL_PORT_NUMBER_3).type(BFD).physicalPorts(newArrayList(PHYSICAL_PORT_4)).actual(new LogicalPortMisconfiguredInfoEntry(BFD, newArrayList(PHYSICAL_PORT_4))).expected(new LogicalPortMisconfiguredInfoEntry(LAG, newArrayList(PHYSICAL_PORT_4, PHYSICAL_PORT_5))).build();
LogicalPortInfoEntry proper = LogicalPortInfoEntry.builder().logicalPortNumber(LOGICAL_PORT_NUMBER_4).type(LAG).physicalPorts(newArrayList(PHYSICAL_PORT_6)).build();
LogicalPortsValidationEntry validationEntry = LogicalPortsValidationEntry.builder().missing(newArrayList(missing)).misconfigured(newArrayList(misconfigured)).proper(newArrayList(proper)).excess(newArrayList(excess)).build();
LogicalPortsValidationDto validationDto = switchMapper.toLogicalPortsValidationDto(validationEntry);
assertEquals(1, validationDto.getProper().size());
assertEquals(1, validationDto.getMissing().size());
assertEquals(1, validationDto.getMisconfigured().size());
assertEquals(1, validationDto.getExcess().size());
assertEqualsLogicalPortInfoDto(validationDto.getMissing().get(0), LOGICAL_PORT_NUMBER_1, LAG.toString(), PHYSICAL_PORT_1, PHYSICAL_PORT_2);
assertEqualsLogicalPortInfoDto(validationDto.getExcess().get(0), LOGICAL_PORT_NUMBER_2, LAG.toString(), PHYSICAL_PORT_3);
assertEqualsLogicalPortInfoDto(validationDto.getMisconfigured().get(0), LOGICAL_PORT_NUMBER_3, BFD.toString(), PHYSICAL_PORT_4);
assertEqualsLogicalPortInfoDto(validationDto.getProper().get(0), LOGICAL_PORT_NUMBER_4, LAG.toString(), PHYSICAL_PORT_6);
assertEquals(BFD.toString(), validationDto.getMisconfigured().get(0).getActual().getType());
assertEquals(newArrayList(PHYSICAL_PORT_4), validationDto.getMisconfigured().get(0).getActual().getPhysicalPorts());
assertEquals(LAG.toString(), validationDto.getMisconfigured().get(0).getExpected().getType());
assertEquals(newArrayList(PHYSICAL_PORT_4, PHYSICAL_PORT_5), validationDto.getMisconfigured().get(0).getExpected().getPhysicalPorts());
}
Aggregations