use of org.openkilda.messaging.info.stats.UpdateFlowPathInfo in project open-kilda by telstra.
the class NotifyFlowStatsOnNewPathsAction method perform.
@Override
protected void perform(S from, S to, E event, C context, T stateMachine) {
Stream.of(stateMachine.getNewPrimaryForwardPath(), stateMachine.getNewPrimaryReversePath(), stateMachine.getNewProtectedForwardPath(), stateMachine.getNewProtectedReversePath()).map(flowPathRepository::findById).filter(Optional::isPresent).map(Optional::get).forEach(flowPath -> {
Flow flow = flowPath.getFlow();
UpdateFlowPathInfo pathInfo = new UpdateFlowPathInfo(flow.getFlowId(), flow.getYFlowId(), flowPath.getCookie(), flowPath.getMeterId(), FlowPathMapper.INSTANCE.mapToPathNodes(flowPath));
carrier.sendNotifyFlowStats(pathInfo);
});
}
use of org.openkilda.messaging.info.stats.UpdateFlowPathInfo in project open-kilda by telstra.
the class NotifyFlowStatsAction method perform.
@Override
protected void perform(State from, State to, Event event, FlowCreateContext context, FlowCreateFsm stateMachine) {
String flowId = stateMachine.getFlowId();
flowPathRepository.findByFlowId(flowId).forEach(flowPath -> {
Flow flow = flowPath.getFlow();
UpdateFlowPathInfo pathInfo = new UpdateFlowPathInfo(flow.getFlowId(), flow.getYFlowId(), flowPath.getCookie(), flowPath.getMeterId(), FlowPathMapper.INSTANCE.mapToPathNodes(flowPath));
carrier.sendNotifyFlowStats(pathInfo);
});
}
use of org.openkilda.messaging.info.stats.UpdateFlowPathInfo in project open-kilda by telstra.
the class StatsTopologyTest method sendUpdateFlowPathInfo.
private void sendUpdateFlowPathInfo(FlowPath flowPath) {
UpdateFlowPathInfo pathInfo = new UpdateFlowPathInfo(flowPath.getFlowId(), null, flowPath.getCookie(), flowPath.getMeterId(), FlowPathMapper.INSTANCE.mapToPathNodes(flowPath));
InfoMessage infoMessage = new InfoMessage(pathInfo, timestamp, UUID.randomUUID().toString(), null, null);
sendMessage(infoMessage, statsTopologyConfig.getFlowStatsNotifyTopic());
}
use of org.openkilda.messaging.info.stats.UpdateFlowPathInfo in project open-kilda by telstra.
the class KildaEntryCacheServiceTest method shouldHandleRemovingFlowFromCache.
@Test
public void shouldHandleRemovingFlowFromCache() {
Flow flow = buildFlow();
FlowStatsData statsOrigin = getFlowStatsDataSrcSwitch();
service.completeAndForwardFlowStats(statsOrigin);
verify(carrier, atLeastOnce()).emitFlowStats(cookieCacheCaptor.capture());
List<FlowStatsAndDescriptor> statsEntries = cookieCacheCaptor.getValue().getStatsEntries();
assertDescriptionPopulation(statsEntries, statsOrigin.getStats().size(), 0);
FlowPath forwardPath = flow.getForwardPath();
UpdateFlowPathInfo pathInfo = new UpdateFlowPathInfo(flow.getFlowId(), flow.getYFlowId(), forwardPath.getCookie(), forwardPath.getMeterId(), FlowPathMapper.INSTANCE.mapToPathNodes(forwardPath));
service.addOrUpdateCache(pathInfo);
service.completeAndForwardFlowStats(statsOrigin);
verify(carrier, atLeastOnce()).emitFlowStats(cookieCacheCaptor.capture());
statsEntries = cookieCacheCaptor.getValue().getStatsEntries();
assertDescriptionPopulation(statsEntries, statsOrigin.getStats().size(), 1);
assertCookieCache(statsEntries, forwardPath.getCookie(), new CommonFlowDescriptor(flow.getSrcSwitchId(), INGRESS, flow.getFlowId(), forwardPath.getCookie(), forwardPath.getMeterId()));
RemoveFlowPathInfo pathInfo2 = new RemoveFlowPathInfo(flow.getFlowId(), flow.getYFlowId(), forwardPath.getCookie(), forwardPath.getMeterId(), FlowPathMapper.INSTANCE.mapToPathNodes(forwardPath));
service.removeCached(pathInfo2);
service.completeAndForwardFlowStats(statsOrigin);
verify(carrier, atLeastOnce()).emitFlowStats(cookieCacheCaptor.capture());
statsEntries = cookieCacheCaptor.getValue().getStatsEntries();
assertDescriptionPopulation(statsEntries, statsOrigin.getStats().size(), 0);
}
use of org.openkilda.messaging.info.stats.UpdateFlowPathInfo in project open-kilda by telstra.
the class KildaEntryCacheServiceTest method shouldHandleRemovingMeterFromCache.
@Test
public void shouldHandleRemovingMeterFromCache() {
Flow flow = buildFlow();
MeterStatsData statsOrigin = getMeterStatsDataSrcSwitch();
service.completeAndForwardMeterStats(statsOrigin);
verify(carrier, atLeastOnce()).emitMeterStats(meterCacheCaptor.capture());
List<MeterStatsAndDescriptor> statsEntries = meterCacheCaptor.getValue().getStatsEntries();
assertDescriptionPopulation(statsEntries, statsOrigin.getStats().size(), 0);
FlowPath forwardPath = flow.getForwardPath();
UpdateFlowPathInfo pathInfo = new UpdateFlowPathInfo(flow.getFlowId(), flow.getYFlowId(), forwardPath.getCookie(), forwardPath.getMeterId(), FlowPathMapper.INSTANCE.mapToPathNodes(forwardPath));
service.addOrUpdateCache(pathInfo);
service.completeAndForwardMeterStats(statsOrigin);
verify(carrier, atLeastOnce()).emitMeterStats(meterCacheCaptor.capture());
statsEntries = meterCacheCaptor.getValue().getStatsEntries();
assertDescriptionPopulation(statsEntries, statsOrigin.getStats().size(), 1);
assertMeterCache(statsEntries, forwardPath.getMeterId().getValue(), new CommonFlowDescriptor(flow.getSrcSwitchId(), INGRESS, flow.getFlowId(), forwardPath.getCookie(), forwardPath.getMeterId()));
RemoveFlowPathInfo pathInfo2 = new RemoveFlowPathInfo(flow.getFlowId(), flow.getYFlowId(), forwardPath.getCookie(), forwardPath.getMeterId(), FlowPathMapper.INSTANCE.mapToPathNodes(forwardPath));
service.removeCached(pathInfo2);
service.completeAndForwardMeterStats(statsOrigin);
verify(carrier, atLeastOnce()).emitMeterStats(meterCacheCaptor.capture());
statsEntries = meterCacheCaptor.getValue().getStatsEntries();
assertDescriptionPopulation(statsEntries, statsOrigin.getStats().size(), 0);
}
Aggregations