use of org.openkilda.wfm.share.flow.TestFlowBuilder in project open-kilda by telstra.
the class FlowOperationsServiceTest method testStrictBandwidthAndIgnoreBandwidthFlowConflict.
@Test(expected = IllegalArgumentException.class)
public void testStrictBandwidthAndIgnoreBandwidthFlowConflict() throws FlowNotFoundException {
String testFlowId = "flow_id";
Flow flow = new TestFlowBuilder().flowId(testFlowId).srcSwitch(createSwitch(SWITCH_ID_1)).destSwitch(createSwitch(SWITCH_ID_2)).ignoreBandwidth(true).build();
flowRepository.add(flow);
FlowPatch receivedFlow = FlowPatch.builder().flowId(testFlowId).strictBandwidth(true).ignoreBandwidth(false).build();
flowOperationsService.updateFlow(new FlowCarrierImpl(), receivedFlow);
}
use of org.openkilda.wfm.share.flow.TestFlowBuilder in project open-kilda by telstra.
the class StatsTopologyTest method createFlow.
private Flow createFlow() {
Switch srcSw = Switch.builder().switchId(SWITCH_ID_1).build();
switchRepository.add(srcSw);
Switch dstSw = Switch.builder().switchId(SWITCH_ID_3).build();
switchRepository.add(dstSw);
Flow flow = new TestFlowBuilder(flowId).srcSwitch(srcSw).srcPort(PORT_1).srcVlan(5).addTransitionEndpoint(srcSw, PORT_2).addTransitionEndpoint(dstSw, PORT_1).unmaskedCookie(MAIN_COOKIE).forwardMeterId(456).forwardTransitEncapsulationId(ENCAPSULATION_ID).reverseMeterId(457).reverseTransitEncapsulationId(ENCAPSULATION_ID + 1).destSwitch(dstSw).destPort(PORT_3).destVlan(5).encapsulationType(FlowEncapsulationType.TRANSIT_VLAN).build();
flowRepository.add(flow);
return flow;
}
use of org.openkilda.wfm.share.flow.TestFlowBuilder in project open-kilda by telstra.
the class KildaEntryCacheServiceTest method buildFlow.
private Flow buildFlow() {
Switch srcSwitch = Switch.builder().switchId(SRC_SWITCH_ID).build();
Switch destSwitch = Switch.builder().switchId(DST_SWITCH_ID).build();
Switch transitSwitch = Switch.builder().switchId(TRANSIT_SWITCH_ID).build();
return new TestFlowBuilder().srcSwitch(srcSwitch).addTransitionEndpoint(srcSwitch, 2).addTransitionEndpoint(transitSwitch, 1).addTransitionEndpoint(transitSwitch, 2).addTransitionEndpoint(destSwitch, 1).unmaskedCookie(FLOW_UNMASKED_COOKIE).forwardMeterId(FORWARD_METER_ID).reverseMeterId(REVERSE_METER_ID).addProtectedTransitionEndpoint(srcSwitch, 3).addProtectedTransitionEndpoint(transitSwitch, 3).addProtectedTransitionEndpoint(transitSwitch, 4).addProtectedTransitionEndpoint(destSwitch, 3).protectedUnmaskedCookie(FLOW_PROTECTED_UNMASKED_COOKIE).protectedForwardMeterId(PROTECTED_FORWARD_METER_ID).protectedReverseMeterId(PROTECTED_REVERSE_METER_ID).destSwitch(destSwitch).build();
}
use of org.openkilda.wfm.share.flow.TestFlowBuilder in project open-kilda by telstra.
the class KildaEntryCacheServiceTest method shouldRefreshYFlowSubFlowCookieCache.
@Test
public void shouldRefreshYFlowSubFlowCookieCache() {
Switch srcSwitch = Switch.builder().switchId(SRC_SWITCH_ID).build();
Switch destSwitch = Switch.builder().switchId(DST_SWITCH_ID).build();
Switch transitSwitch = Switch.builder().switchId(TRANSIT_SWITCH_ID).build();
Flow flow = new TestFlowBuilder().yFlowId("dummy-y-flow-id").srcSwitch(srcSwitch).addTransitionEndpoint(srcSwitch, 2).addTransitionEndpoint(transitSwitch, 1).addTransitionEndpoint(transitSwitch, 2).addTransitionEndpoint(destSwitch, 1).unmaskedCookie(FLOW_UNMASKED_COOKIE).forwardMeterId(FORWARD_METER_ID).reverseMeterId(REVERSE_METER_ID).destSwitch(destSwitch).build();
when(flowRepository.findAll()).thenReturn(Collections.singletonList(flow));
when(yFlowRepository.findAll()).thenReturn(Collections.emptyList());
service.refreshCache();
final FlowSegmentCookie forwardPathCookie = flow.getForwardPath().getCookie();
final FlowSegmentCookie reversePathCookie = flow.getReversePath().getCookie();
// source switch
service.completeAndForwardFlowStats(new FlowStatsData(flow.getSrcSwitchId(), asList(new FlowStatsEntry(0, forwardPathCookie.getValue(), 0, 0, 0, 0), new FlowStatsEntry(0, reversePathCookie.getValue(), 0, 0, 0, 0))));
verify(carrier, atLeastOnce()).emitFlowStats(cookieCacheCaptor.capture());
List<FlowStatsAndDescriptor> statsEntries = cookieCacheCaptor.getValue().getStatsEntries();
assertDescriptionPopulation(statsEntries, 2, 2);
assertCookieCache(statsEntries, forwardPathCookie, new YFlowSubDescriptor(flow.getSrcSwitchId(), INGRESS, flow.getYFlowId(), flow.getFlowId(), forwardPathCookie, flow.getForwardPath().getMeterId()));
assertCookieCache(statsEntries, reversePathCookie, new YFlowSubDescriptor(flow.getSrcSwitchId(), EGRESS, flow.getYFlowId(), flow.getFlowId(), reversePathCookie, null));
// transit
service.completeAndForwardFlowStats(new FlowStatsData(transitSwitch.getSwitchId(), asList(new FlowStatsEntry(0, forwardPathCookie.getValue(), 0, 0, 0, 0), new FlowStatsEntry(0, reversePathCookie.getValue(), 0, 0, 0, 0))));
verify(carrier, atLeastOnce()).emitFlowStats(cookieCacheCaptor.capture());
statsEntries = cookieCacheCaptor.getValue().getStatsEntries();
assertDescriptionPopulation(statsEntries, 2, 2);
assertCookieCache(statsEntries, forwardPathCookie, new YFlowSubDescriptor(transitSwitch.getSwitchId(), TRANSIT, flow.getYFlowId(), flow.getFlowId(), forwardPathCookie, null));
assertCookieCache(statsEntries, reversePathCookie, new YFlowSubDescriptor(transitSwitch.getSwitchId(), TRANSIT, flow.getYFlowId(), flow.getFlowId(), reversePathCookie, null));
// egress
service.completeAndForwardFlowStats(new FlowStatsData(flow.getDestSwitchId(), asList(new FlowStatsEntry(0, forwardPathCookie.getValue(), 0, 0, 0, 0), new FlowStatsEntry(0, reversePathCookie.getValue(), 0, 0, 0, 0))));
verify(carrier, atLeastOnce()).emitFlowStats(cookieCacheCaptor.capture());
statsEntries = cookieCacheCaptor.getValue().getStatsEntries();
assertDescriptionPopulation(statsEntries, 2, 2);
assertCookieCache(statsEntries, forwardPathCookie, new YFlowSubDescriptor(flow.getDestSwitchId(), EGRESS, flow.getYFlowId(), flow.getFlowId(), forwardPathCookie, null));
assertCookieCache(statsEntries, reversePathCookie, new YFlowSubDescriptor(flow.getDestSwitchId(), INGRESS, flow.getYFlowId(), flow.getFlowId(), reversePathCookie, flow.getReversePath().getMeterId()));
}
use of org.openkilda.wfm.share.flow.TestFlowBuilder in project open-kilda by telstra.
the class KildaEntryCacheServiceTest method shouldRefreshYFlowMeterCache.
@Test
public void shouldRefreshYFlowMeterCache() {
FlowEndpoint sharedEndpoint = new FlowEndpoint(SRC_SWITCH_ID, 1);
FlowEndpoint splitEndEndpoint = new FlowEndpoint(DST_SWITCH_ID, 2);
Switch sharedSwitch = Switch.builder().switchId(sharedEndpoint.getSwitchId()).build();
Switch splitEndSwitch = Switch.builder().switchId(splitEndEndpoint.getSwitchId()).build();
Switch yPointSwitch = Switch.builder().switchId(TRANSIT_SWITCH_ID).build();
Flow subFlowAlpha = new TestFlowBuilder().srcSwitch(sharedSwitch).destSwitch(splitEndSwitch).addTransitionEndpoint(sharedSwitch, sharedEndpoint.getPortNumber()).addTransitionEndpoint(yPointSwitch, 1).addTransitionEndpoint(yPointSwitch, 2).addTransitionEndpoint(splitEndSwitch, sharedEndpoint.getPortNumber()).build();
Flow subFlowBeta = new TestFlowBuilder().srcSwitch(sharedSwitch).destSwitch(splitEndSwitch).addTransitionEndpoint(sharedSwitch, sharedEndpoint.getPortNumber()).addTransitionEndpoint(yPointSwitch, 1).addTransitionEndpoint(yPointSwitch, 2).addTransitionEndpoint(splitEndSwitch, sharedEndpoint.getPortNumber()).build();
YFlow yFlow = new TestYFlowBuilder().sharedEndpoint(new YFlow.SharedEndpoint(sharedEndpoint.getSwitchId(), sharedEndpoint.getPortNumber())).sharedEndpointMeterId(new MeterId(100)).yPoint(yPointSwitch.getSwitchId()).meterId(new MeterId(110)).subFlow(new TestYSubFlowBuilder().flow(subFlowAlpha).sharedEndpointVlan(10).endpoint(new FlowEndpoint(DST_SWITCH_ID, 2, 30))).subFlow(new TestYSubFlowBuilder().flow(subFlowBeta).sharedEndpointVlan(20).endpoint(new FlowEndpoint(DST_SWITCH_ID, 2, 40))).build();
when(flowRepository.findAll()).thenReturn(Collections.emptyList());
when(yFlowRepository.findAll()).thenReturn(Collections.singletonList(yFlow));
service.refreshCache();
// shared endpoint
service.completeAndForwardMeterStats(new MeterStatsData(yFlow.getSharedEndpoint().getSwitchId(), Collections.singletonList(new MeterStatsEntry(yFlow.getSharedEndpointMeterId().getValue(), 0, 0))));
verify(carrier, atLeastOnce()).emitMeterStats(meterCacheCaptor.capture());
List<MeterStatsAndDescriptor> statsEntries = meterCacheCaptor.getValue().getStatsEntries();
assertDescriptionPopulation(statsEntries, 1, 1);
assertMeterCache(statsEntries, yFlow.getSharedEndpointMeterId().getValue(), new YFlowDescriptor(yFlow.getSharedEndpoint().getSwitchId(), Y_FLOW_SHARED, yFlow.getYFlowId(), yFlow.getSharedEndpointMeterId()));
// y-point
service.completeAndForwardMeterStats(new MeterStatsData(yFlow.getYPoint(), Collections.singletonList(new MeterStatsEntry(yFlow.getMeterId().getValue(), 0, 0))));
verify(carrier, atLeastOnce()).emitMeterStats(meterCacheCaptor.capture());
statsEntries = meterCacheCaptor.getValue().getStatsEntries();
assertDescriptionPopulation(statsEntries, 1, 1);
assertMeterCache(statsEntries, yFlow.getMeterId().getValue(), new YFlowDescriptor(yFlow.getYPoint(), Y_FLOW_Y_POINT, yFlow.getYFlowId(), yFlow.getMeterId()));
}
Aggregations