use of org.openkilda.wfm.topology.floodlightrouter.model.RegionMappingSet in project open-kilda by telstra.
the class SwitchMonitorServiceTest method testDisconnectTheOnlyConnection.
@Test
public void testDisconnectTheOnlyConnection() {
SwitchMonitorService subject = makeSubject();
SwitchInfoData swActivate = makeSwitchActivateNotification(SWITCH_ALPHA, 1);
subject.handleStatusUpdateNotification(swActivate, REGION_ALPHA);
verify(carrier).regionUpdateNotification(eq(new RegionMappingSet(swActivate.getSwitchId(), REGION_ALPHA, true)));
verify(carrier).sendSwitchConnectNotification(eq(swActivate.getSwitchId()), eq(swActivate.getSwitchView()), any(SwitchAvailabilityData.class));
verifyNoMoreInteractions(carrier);
reset(carrier);
SwitchInfoData swDeactivate = new SwitchInfoData(swActivate.getSwitchId(), SwitchChangeType.DEACTIVATED);
subject.handleStatusUpdateNotification(swDeactivate, REGION_ALPHA);
verify(carrier).regionUpdateNotification(eq(new RegionMappingRemove(swActivate.getSwitchId(), REGION_ALPHA, true)));
verify(carrier).sendSwitchDisconnectNotification(eq(swDeactivate.getSwitchId()), eq(SwitchAvailabilityData.builder().build()), eq(false));
verifyNoMoreInteractions(carrier);
}
use of org.openkilda.wfm.topology.floodlightrouter.model.RegionMappingSet in project open-kilda by telstra.
the class SwitchMonitorServiceTest method testTheOnlyRegionLost.
@Test
public void testTheOnlyRegionLost() {
SwitchMonitorService subject = makeSubject();
SwitchInfoData swActivate = makeSwitchActivateNotification(SWITCH_ALPHA, 1);
subject.handleStatusUpdateNotification(swActivate, REGION_ALPHA);
verify(carrier).regionUpdateNotification(eq(new RegionMappingSet(swActivate.getSwitchId(), REGION_ALPHA, true)));
verify(carrier).sendSwitchConnectNotification(eq(swActivate.getSwitchId()), eq(swActivate.getSwitchView()), any(SwitchAvailabilityData.class));
verifyNoMoreInteractions(carrier);
reset(carrier);
clock.adjust(Duration.ofSeconds(1));
subject.handleRegionOfflineNotification(REGION_ALPHA);
verify(carrier).regionUpdateNotification(eq(new RegionMappingRemove(swActivate.getSwitchId(), REGION_ALPHA, true)));
verify(carrier).sendSwitchDisconnectNotification(eq(swActivate.getSwitchId()), eq(SwitchAvailabilityData.builder().build()), eq(true));
verifyNoMoreInteractions(carrier);
}
use of org.openkilda.wfm.topology.floodlightrouter.model.RegionMappingSet in project open-kilda by telstra.
the class SwitchMonitorServiceTest method testDisconnectActivePassive.
@Test
public void testDisconnectActivePassive() {
SwitchMonitorService subject = makeSubject();
Instant t0 = clock.instant();
SwitchId targetSw = SWITCH_ALPHA;
makeConnectInRegions(subject, targetSw, REGION_ALPHA, REGION_BETA);
clock.adjust(Duration.ofSeconds(1));
SwitchInfoData swDisconnect = new SwitchInfoData(targetSw, SwitchChangeType.DEACTIVATED);
// disconnect active region (so it must be swapped)
subject.handleStatusUpdateNotification(swDisconnect, REGION_ALPHA);
verify(carrier).regionUpdateNotification(eq(new RegionMappingSet(swDisconnect.getSwitchId(), REGION_BETA, true)));
SpeakerSwitchView suggestedSpeakerData = makeSwitchActivateNotification(swDisconnect.getSwitchId(), 2).getSwitchView();
verify(carrier).sendSwitchAvailabilityUpdateNotification(eq(swDisconnect.getSwitchId()), argThat(arg -> matchAvailabilityData(SwitchAvailabilityData.builder().connection(SwitchAvailabilityEntry.builder().regionName(REGION_BETA).connectMode(SwitchConnectMode.READ_WRITE).master(true).connectedAt(t0).switchAddress(suggestedSpeakerData.getSwitchSocketAddress()).speakerAddress(suggestedSpeakerData.getSpeakerSocketAddress()).build()).build(), arg)));
verifyNoMoreInteractions(carrier);
reset(carrier);
// disconnect last (active) region
subject.handleStatusUpdateNotification(swDisconnect, REGION_BETA);
verify(carrier).regionUpdateNotification(eq(new RegionMappingRemove(swDisconnect.getSwitchId(), REGION_BETA, true)));
verify(carrier).sendSwitchDisconnectNotification(eq(swDisconnect.getSwitchId()), eq(SwitchAvailabilityData.builder().build()), eq(false));
verifyNoMoreInteractions(carrier);
}
use of org.openkilda.wfm.topology.floodlightrouter.model.RegionMappingSet in project open-kilda by telstra.
the class SwitchMonitorServiceTest method makeConnectInRegions.
private void makeConnectInRegions(SwitchMonitorService subject, SwitchId switchId, String... regions) {
for (int i = 0; i < regions.length; i++) {
SwitchInfoData activate = makeSwitchActivateNotification(switchId, i + 1);
subject.handleStatusUpdateNotification(activate, regions[i]);
if (i == 0) {
verify(carrier).regionUpdateNotification(eq(new RegionMappingSet(activate.getSwitchId(), regions[i], true)));
verify(carrier).sendSwitchConnectNotification(eq(activate.getSwitchId()), eq(activate.getSwitchView()), any(SwitchAvailabilityData.class));
} else {
verify(carrier).sendSwitchAvailabilityUpdateNotification(eq(switchId), any(SwitchAvailabilityData.class));
}
verifyNoMoreInteractions(carrier);
reset(carrier);
}
}
use of org.openkilda.wfm.topology.floodlightrouter.model.RegionMappingSet in project open-kilda by telstra.
the class SwitchMonitorServiceTest method testSerialUpdate.
@Test
public void testSerialUpdate() {
SwitchMonitorService subject = makeSubject();
Instant t0 = clock.instant();
SwitchInfoData swAlphaActivate = makeSwitchActivateNotification(SWITCH_ALPHA, 1);
subject.handleStatusUpdateNotification(swAlphaActivate, REGION_ALPHA);
verify(carrier).regionUpdateNotification(eq(new RegionMappingSet(swAlphaActivate.getSwitchId(), REGION_ALPHA, true)));
verify(carrier).sendSwitchConnectNotification(eq(swAlphaActivate.getSwitchId()), eq(swAlphaActivate.getSwitchView()), any(SwitchAvailabilityData.class));
verifyNoMoreInteractions(carrier);
reset(carrier);
NetworkDumpSwitchData dump = new NetworkDumpSwitchData(swAlphaActivate.getSwitchView(), NETWORK_DUMP_CORRELATION_ID, true);
for (int i = 0; i < 5; i++) {
clock.adjust(Duration.ofSeconds(60));
subject.handleNetworkDumpResponse(dump, REGION_ALPHA);
verify(carrier, times(i + 1)).sendOtherNotification(eq(dump.getSwitchId()), eq(dump));
verifyNoMoreInteractions(carrier);
}
reset(carrier);
// to ensure correct value of connectedAt field for REGION_ALPHA force sending of
// SwitchAvailabilityUpdateNotification
Instant t1 = clock.instant();
SwitchInfoData swBetaActivate = makeSwitchActivateNotification(swAlphaActivate.getSwitchId(), 2);
subject.handleStatusUpdateNotification(swBetaActivate, REGION_BETA);
verify(carrier).sendSwitchAvailabilityUpdateNotification(eq(swBetaActivate.getSwitchId()), argThat(arg -> matchAvailabilityData(SwitchAvailabilityData.builder().connection(SwitchAvailabilityEntry.builder().regionName(REGION_ALPHA).connectMode(SwitchConnectMode.READ_WRITE).master(true).connectedAt(t0).switchAddress(swAlphaActivate.getSwitchView().getSwitchSocketAddress()).speakerAddress(swAlphaActivate.getSwitchView().getSpeakerSocketAddress()).build()).connection(SwitchAvailabilityEntry.builder().regionName(REGION_BETA).connectMode(SwitchConnectMode.READ_WRITE).master(false).connectedAt(t1).switchAddress(swBetaActivate.getSwitchView().getSwitchSocketAddress()).speakerAddress(swBetaActivate.getSwitchView().getSpeakerSocketAddress()).build()).build(), arg)));
}
Aggregations