X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=openflowplugin-impl%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fopenflowplugin%2Fimpl%2Fstatistics%2Fofpspecific%2FMessageIntelligenceAgencyImpl.java;h=9e7cd4383ab8cb5376f69037d935d738af5d0615;hb=05f8db12159673d0e0a95642fe86e62c14b7dc7b;hp=9316c385a1f4794a5f8402653bdf45e0842a1572;hpb=08f065cf0f9379d4a8327a728b8a10c79f7e4ac2;p=openflowplugin.git diff --git a/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/statistics/ofpspecific/MessageIntelligenceAgencyImpl.java b/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/statistics/ofpspecific/MessageIntelligenceAgencyImpl.java index 9316c385a1..9e7cd4383a 100644 --- a/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/statistics/ofpspecific/MessageIntelligenceAgencyImpl.java +++ b/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/statistics/ofpspecific/MessageIntelligenceAgencyImpl.java @@ -8,6 +8,7 @@ package org.opendaylight.openflowplugin.impl.statistics.ofpspecific; +import com.google.common.base.Preconditions; import java.util.ArrayList; import java.util.List; import java.util.Map; @@ -20,16 +21,18 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** - * Implementation of {@link org.opendaylight.openflowplugin.api.openflow.statistics.ofpspecific.MessageIntelligenceAgency}. - * Class counts message of {@link org.opendaylight.openflowplugin.api.openflow.statistics.ofpspecific.MessageSpy.STATISTIC_GROUP} type - * and provides info as debug log. + * Implementation of + * {@link org.opendaylight.openflowplugin.api.openflow.statistics.ofpspecific.MessageIntelligenceAgency}. + * Class counts message of {@link StatisticsGroup} type and provides info as debug log. */ -public class MessageIntelligenceAgencyImpl implements MessageIntelligenceAgency { +public class MessageIntelligenceAgencyImpl implements MessageIntelligenceAgency, MessageIntelligenceAgencyMXBean { private static final Logger LOG = LoggerFactory.getLogger(MessageIntelligenceAgencyImpl.class); private static final class MessageCounters { - private static final AtomicLongFieldUpdater UPDATER = AtomicLongFieldUpdater.newUpdater(MessageCounters.class, "current"); + private static final AtomicLongFieldUpdater UPDATER = + AtomicLongFieldUpdater.newUpdater(MessageCounters.class, "current"); + @SuppressWarnings("unused") private volatile long current; private long cumulative; @@ -48,35 +51,29 @@ public class MessageIntelligenceAgencyImpl implements MessageIntelligenceAgency< } } - private final ConcurrentMap> inputStats = new ConcurrentHashMap<>(); + private ConcurrentMap, MessageCounters>> inputStats = + new ConcurrentHashMap<>(); @Override - public void spyIn(final Class message) { - getCounters(message, STATISTIC_GROUP.FROM_SWITCH_TRANSLATE_IN_SUCCESS).increment(); - } - - @Override - public void spyOut(final Class message) { - getCounters(message, STATISTIC_GROUP.FROM_SWITCH_TRANSLATE_OUT_SUCCESS).increment(); - } - - @Override - public void spyMessage(final Class message, final STATISTIC_GROUP statGroup) { + public void spyMessage(final Class message, final StatisticsGroup statGroup) { + Preconditions.checkNotNull(message, "Message can't be null."); getCounters(message, statGroup).increment(); } /** - * @param message - * @param statGroup TODO - * @return + * Get counters. + * @param message counted element + * @param statGroup statistic counter group + * @return corresponding counter */ - private MessageCounters getCounters(final Class message, final STATISTIC_GROUP statGroup) { - ConcurrentMap groupData = getOrCreateGroupData(statGroup); + private MessageCounters getCounters(final Class message, final StatisticsGroup statGroup) { + ConcurrentMap, MessageCounters> groupData = getOrCreateGroupData(statGroup); MessageCounters counters = getOrCreateCountersPair(message, groupData); return counters; } - private static MessageCounters getOrCreateCountersPair(final Class msgType, final ConcurrentMap groupData) { + private static MessageCounters getOrCreateCountersPair(final Class msgType, + final ConcurrentMap, MessageCounters> groupData) { final MessageCounters lookup = groupData.get(msgType); if (lookup != null) { return lookup; @@ -88,14 +85,14 @@ public class MessageIntelligenceAgencyImpl implements MessageIntelligenceAgency< } - private ConcurrentMap getOrCreateGroupData(final STATISTIC_GROUP statGroup) { - final ConcurrentMap lookup = inputStats.get(statGroup); + private ConcurrentMap, MessageCounters> getOrCreateGroupData(final StatisticsGroup statGroup) { + final ConcurrentMap, MessageCounters> lookup = inputStats.get(statGroup); if (lookup != null) { return lookup; } - final ConcurrentMap newmap = new ConcurrentHashMap<>(); - final ConcurrentMap check = inputStats.putIfAbsent(statGroup, newmap); + final ConcurrentMap, MessageCounters> newmap = new ConcurrentHashMap<>(); + final ConcurrentMap, MessageCounters> check = inputStats.putIfAbsent(statGroup, newmap); return check == null ? newmap : check; } @@ -105,7 +102,7 @@ public class MessageIntelligenceAgencyImpl implements MessageIntelligenceAgency< // log current counters and cleans it if (LOG.isDebugEnabled()) { for (String counterItem : provideIntelligence()) { - LOG.debug(counterItem); + LOG.debug("Counter: {}", counterItem); } } } @@ -114,10 +111,10 @@ public class MessageIntelligenceAgencyImpl implements MessageIntelligenceAgency< public List provideIntelligence() { List dump = new ArrayList<>(); - for (STATISTIC_GROUP statGroup : STATISTIC_GROUP.values()) { - Map groupData = inputStats.get(statGroup); + for (StatisticsGroup statGroup : StatisticsGroup.values()) { + Map, MessageCounters> groupData = inputStats.get(statGroup); if (groupData != null) { - for (Entry statEntry : groupData.entrySet()) { + for (Entry, MessageCounters> statEntry : groupData.entrySet()) { long amountPerInterval = statEntry.getValue().accumulate(); long cumulativeAmount = statEntry.getValue().getCumulative(); dump.add(String.format("%s: MSG[%s] -> +%d | %d", @@ -131,4 +128,9 @@ public class MessageIntelligenceAgencyImpl implements MessageIntelligenceAgency< } return dump; } + + @Override + public void resetStatistics() { + inputStats = new ConcurrentHashMap<>(); + } }