/******************************************************************************* * gMix open source project - https://svs.informatik.uni-hamburg.de/gmix/ * Copyright (C) 2014 SVS * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. *******************************************************************************/ package userGeneratedContent.simulatorPlugIns.pluginRegistry; import staticContent.evaluation.simulator.annotations.helper.PossibleValues; import staticContent.evaluation.simulator.core.statistics.aggregator.Aggregator; import staticContent.evaluation.simulator.core.statistics.aggregator.Aggregator.InputDataType; import staticContent.evaluation.simulator.core.statistics.plotEngine.PlotScale; import staticContent.evaluation.simulator.core.statistics.postProcessor.PostProcessor; @PossibleValues(id="StatisticsType") public enum StatisticsType { AVG_CLIENT_RTT_LAYER5MESSAGE( "plot_clientLatencyLayer5", PlotType.LINE_CHART_ABS, PlotScale.LINEAR, Unit.ms, Aggregator.AVG, new Aggregator[]{ Aggregator.MIN, Aggregator.MAX, Aggregator.AVG, Aggregator.MEDIAN }, new PostProcessor[] {PostProcessor.NONE}), AVG_CLIENT_LATENCY_LAYER5MESSAGE( "plot_clientLatencyLayer5", PlotType.HISTOGRAM, PlotScale.LINEAR, Unit.ms, Aggregator.AVG, new Aggregator[]{ Aggregator.MIN, Aggregator.MAX, Aggregator.AVG, Aggregator.MEDIAN }, new PostProcessor[] {PostProcessor.NONE}), // used in: example_outputStrategy_synchronous.txt AVG_CLIENT_LATENCY_LAYER5MESSAGE_HIST( "plot_clientLatencyLayer5hist", PlotType.HISTOGRAM, PlotScale.NONE, Unit.ms, Aggregator.AVG, new Aggregator[]{ Aggregator.MIN, Aggregator.MAX, Aggregator.AVG, Aggregator.MEDIAN }, new PostProcessor[] {PostProcessor.NONE}), // used in: example_plotType_histogram.txt AVG_BATCH_SIZE( "plot_batchSize", PlotType.LINE_CHART_ABS, PlotScale.LINEAR, Unit.event, Aggregator.AVG, new Aggregator[]{ Aggregator.MIN, Aggregator.MAX, Aggregator.AVG, Aggregator.MEDIAN }, new PostProcessor[] {PostProcessor.NONE}), // used in: example_plotType_lineChart.txt, example_outputStrategy_batch.txt, example_outputStrategy_pool.txt, example_outputStrategy_batchWithTimeout.txt ... AVG_CLIENT_LATENCY_REQUESTMIXMESSAGE( "plot_clientLatencyMixMessage", PlotType.LINE_CHART_ABS, PlotScale.LINEAR, Unit.ms, Aggregator.AVG, new Aggregator[]{ Aggregator.MIN, Aggregator.MAX, Aggregator.AVG, Aggregator.MEDIAN }, new PostProcessor[] {PostProcessor.NONE}), // used in: example_plotType_lineChart.txt, example_outputStrategy_batch.txt, example_outputStrategy_pool.txt, example_outputStrategy_batchWithTimeout.txt ... MAX_CLIENT_LATENCY_REQUESTMIXMESSAGE( "plot_clientLatencyMixMessage", PlotType.LINE_CHART_ABS, PlotScale.LINEAR, Unit.ms, Aggregator.MAX, new Aggregator[]{ Aggregator.MIN, Aggregator.MAX, Aggregator.AVG, Aggregator.MEDIAN }, new PostProcessor[] {PostProcessor.NONE}), // used in: example_plotType_lineChart.txt, example_outputStrategy_batch.txt, example_outputStrategy_pool.txt, example_outputStrategy_batchWithTimeout.txt ... MIN_CLIENT_LATENCY_REQUESTMIXMESSAGE( "plot_clientLatencyMixMessage", PlotType.LINE_CHART_ABS, PlotScale.LINEAR, Unit.ms, Aggregator.MIN, new Aggregator[]{ Aggregator.MIN, Aggregator.MAX, Aggregator.AVG, Aggregator.MEDIAN }, new PostProcessor[] {PostProcessor.NONE}), AVG_CLIENT_LATENCY_REPLYMIXMESSAGE( "plot_clientLatencyMixMessage", PlotType.LINE_CHART_ABS, PlotScale.LINEAR, Unit.ms, Aggregator.AVG, new Aggregator[]{ Aggregator.MIN, Aggregator.MAX, Aggregator.AVG, Aggregator.MEDIAN }, new PostProcessor[] {PostProcessor.NONE}), SUM_CLIENT_DATAVOLUME_SEND( "clientPlot_datavolume", PlotType.LINE_CHART_ABS, PlotScale.LINEAR, Unit.byte_, Aggregator.SUM, new Aggregator[]{ Aggregator.SUM }, new PostProcessor[] {PostProcessor.NONE}), SUM_CLIENT_DATAVOLUME_RECEIVE( "clientPlot_datavolume", PlotType.LINE_CHART_ABS, PlotScale.LINEAR, Unit.byte_, Aggregator.SUM, new Aggregator[]{ Aggregator.SUM }, new PostProcessor[] {PostProcessor.NONE}), SUM_CLIENT_DATAVOLUME_SENDANDRECEIVE( "clientPlot_datavolume", PlotType.LINE_CHART_ABS, PlotScale.LINEAR, Unit.byte_, Aggregator.SUM, new Aggregator[]{ Aggregator.SUM }, new PostProcessor[] {PostProcessor.NONE}), SUM_CLIENT_PAYLOADVOLUME_SEND( "clientPlot_datavolume", PlotType.LINE_CHART_ABS, PlotScale.LINEAR, Unit.byte_, Aggregator.SUM, new Aggregator[]{ Aggregator.SUM }, new PostProcessor[] {PostProcessor.NONE}), SUM_CLIENT_PAYLOADVOLUME_RECEIVE( "clientPlot_datavolume", PlotType.LINE_CHART_ABS, PlotScale.LINEAR, Unit.byte_, Aggregator.SUM, new Aggregator[]{ Aggregator.SUM }, new PostProcessor[] {PostProcessor.NONE}), SUM_CLIENT_PAYLOADVOLUME_SENDANDRECEIVE( "clientPlot_datavolume", PlotType.LINE_CHART_ABS, PlotScale.LINEAR, Unit.byte_, Aggregator.SUM, new Aggregator[]{ Aggregator.SUM }, new PostProcessor[] {PostProcessor.NONE}), SUM_CLIENT_DATAVOLUME_PER_SECOND_SEND( "clientPlot_datavolumePerSecond", PlotType.LINE_CHART_ABS, PlotScale.LINEAR, Unit.byte_, Aggregator.SUM, new Aggregator[]{ Aggregator.SUM }, new PostProcessor[] {PostProcessor.PER_SECOND}), SUM_CLIENT_DATAVOLUME_PER_SECOND_RECEIVE( "clientPlot_datavolumePerSecond", PlotType.LINE_CHART_ABS, PlotScale.LINEAR, Unit.byte_, Aggregator.SUM, new Aggregator[]{ Aggregator.SUM }, new PostProcessor[] {PostProcessor.PER_SECOND}), SUM_CLIENT_DATAVOLUME_PER_SECOND_SENDANDRECEIVE( "clientPlot_datavolumePerSecond", PlotType.LINE_CHART_ABS, PlotScale.LINEAR, Unit.byte_, Aggregator.SUM, new Aggregator[]{ Aggregator.SUM }, new PostProcessor[] {PostProcessor.PER_SECOND}), SUM_CLIENT_PAYLOADVOLUME_PER_SECOND_AND_CLIENT_SEND( "clientPlot_datavolume_per_second_and_client", PlotType.LINE_CHART_ABS, PlotScale.LINEAR, Unit.byte_, Aggregator.SUM, new Aggregator[]{ Aggregator.SUM }, new PostProcessor[] {PostProcessor.PER_SECOND, PostProcessor.PER_CLIENT}), SUM_CLIENT_PAYLOADVOLUME_PER_SECOND_AND_CLIENT_RECEIVE( "clientPlot_datavolume_per_second_and_client", PlotType.LINE_CHART_ABS, PlotScale.LINEAR, Unit.byte_, Aggregator.SUM, new Aggregator[]{ Aggregator.SUM }, new PostProcessor[] {PostProcessor.PER_SECOND, PostProcessor.PER_CLIENT}), SUM_CLIENT_PAYLOADVOLUME_PER_SECOND_AND_CLIENT_SENDANDRECEIVE( "clientPlot_datavolume_per_second_and_client", PlotType.LINE_CHART_ABS, PlotScale.LINEAR, Unit.byte_, Aggregator.SUM, new Aggregator[]{ Aggregator.SUM }, new PostProcessor[] {PostProcessor.PER_SECOND, PostProcessor.PER_CLIENT}), AVG_CLIENT_PAYLOADPERCENTAGE_SEND( "clientPlot_utilization", PlotType.LINE_CHART_ABS, PlotScale.LINEAR, Unit.percent, Aggregator.AVG, new Aggregator[]{ Aggregator.AVG }, new PostProcessor[] {PostProcessor.NONE}), AVG_CLIENT_PAYLOADPERCENTAGE_RECEIVE( "clientPlot_utilization", PlotType.LINE_CHART_ABS, PlotScale.LINEAR, Unit.percent, Aggregator.AVG, new Aggregator[]{ Aggregator.AVG }, new PostProcessor[] {PostProcessor.NONE}), AVG_CLIENT_PAYLOADPERCENTAGE_SENDANDRECEIVE( "clientPlot_utilization", PlotType.LINE_CHART_ABS, PlotScale.LINEAR, Unit.percent, Aggregator.AVG, new Aggregator[]{ Aggregator.AVG }, new PostProcessor[] {PostProcessor.NONE}), AVG_CLIENT_PADDINGPERCENTAGE_SEND( "clientPlot_utilization", PlotType.LINE_CHART_ABS, PlotScale.LINEAR, Unit.percent, Aggregator.AVG, new Aggregator[]{ Aggregator.AVG }, new PostProcessor[] {PostProcessor.NONE}), AVG_CLIENT_PADDINGPERCENTAGE_RECEIVE( "clientPlot_utilization", PlotType.LINE_CHART_ABS, PlotScale.LINEAR, Unit.percent, Aggregator.AVG, new Aggregator[]{ Aggregator.AVG }, new PostProcessor[] {PostProcessor.NONE}), AVG_CLIENT_PADDINGPERCENTAGE_SENDANDRECEIVE( "clientPlot_utilization", PlotType.LINE_CHART_ABS, PlotScale.LINEAR, Unit.percent, Aggregator.AVG, new Aggregator[]{ Aggregator.AVG }, new PostProcessor[] {PostProcessor.NONE}), SUM_CLIENT_MIXMESSAGES_SENT( "clientPlot_messagesSent", PlotType.LINE_CHART_ABS, PlotScale.LINEAR, Unit.event, Aggregator.SUM, new Aggregator[]{ Aggregator.SUM }, new PostProcessor[] {PostProcessor.NONE}), SUM_CLIENT_MIXMESSAGES_RECEIVED( "clientPlot_messagesSent", PlotType.LINE_CHART_ABS, PlotScale.LINEAR, Unit.event, Aggregator.SUM, new Aggregator[]{ Aggregator.SUM }, new PostProcessor[] {PostProcessor.NONE}), SUM_CLIENT_MIXMESSAGES_SENTANDRECEIVED( "clientPlot_messagesSent", PlotType.LINE_CHART_ABS, PlotScale.LINEAR, Unit.event, Aggregator.SUM, new Aggregator[]{ Aggregator.SUM }, new PostProcessor[] {PostProcessor.NONE}), SUM_CLIENT_LAYER5MESSAGES_SENT( "clientPlot_messagesSent", PlotType.LINE_CHART_ABS, PlotScale.LINEAR, Unit.event, Aggregator.SUM, new Aggregator[]{ Aggregator.SUM }, new PostProcessor[] {PostProcessor.NONE}), SUM_CLIENT_LAYER5MESSAGES_RECEIVED( "clientPlot_messagesSent", PlotType.LINE_CHART_ABS, PlotScale.LINEAR, Unit.event, Aggregator.SUM, new Aggregator[]{ Aggregator.SUM }, new PostProcessor[] {PostProcessor.NONE}), SUM_CLIENT_LAYER5MESSAGES_SENTANDRECEIVED( "clientPlot_messagesSent", PlotType.LINE_CHART_ABS, PlotScale.LINEAR, Unit.event, Aggregator.SUM, new Aggregator[]{ Aggregator.SUM }, new PostProcessor[] {PostProcessor.NONE}), ADU_SIZE_SEND( "display_aduSize", PlotType.TXT_ONLY, PlotScale.NONE, Unit.byte_, Aggregator.NONE, new Aggregator[]{ Aggregator.NONE }, new PostProcessor[] {PostProcessor.SORT}), ADU_SIZE_RECEIVE( "display_aduSize", PlotType.TXT_ONLY, PlotScale.NONE, Unit.byte_, Aggregator.NONE, new Aggregator[]{ Aggregator.NONE }, new PostProcessor[] {PostProcessor.SORT}), ADU_SIZE_SENDANDRECEIVE( "display_aduSize", PlotType.TXT_ONLY, PlotScale.NONE, Unit.byte_, Aggregator.NONE, new Aggregator[]{ Aggregator.NONE }, new PostProcessor[] {PostProcessor.SORT}), CF_ADU_SIZE_SEND( "plot_cfAduSize", PlotType.LINE_CHART_CF, PlotScale.LINEAR, Unit.byte_, Aggregator.NONE, new Aggregator[]{ Aggregator.NONE }, new PostProcessor[] {PostProcessor.NONE}), CF_ADU_SIZE_RECEIVE( "plot_cfAduSize", PlotType.LINE_CHART_CF, PlotScale.LINEAR, Unit.byte_, Aggregator.NONE, new Aggregator[]{ Aggregator.NONE }, new PostProcessor[] {PostProcessor.NONE}), CF_ADU_SIZE_SENDANDRECEIVE( "plot_cfAduSize", PlotType.LINE_CHART_CF, PlotScale.LINEAR, Unit.byte_, Aggregator.NONE, new Aggregator[]{ Aggregator.NONE }, new PostProcessor[] {PostProcessor.NONE}), // used in: lgpaper_aduSizeAU10.txt, lgpaper_aduSizeAU8.txt CF_AVG_THROUGHPUT_PER_CLIENT_SEND( "plot_cfThroughputPerClient", PlotType.LINE_CHART_CF, PlotScale.LINEAR, Unit.kbyte, Aggregator.SUM, new Aggregator[]{ Aggregator.NONE }, new PostProcessor[] {PostProcessor.PER_SECOND}), CF_AVG_THROUGHPUT_PER_CLIENT_RECEIVE( "plot_cfThroughputPerClient", PlotType.LINE_CHART_CF, PlotScale.LINEAR, Unit.kbyte, Aggregator.SUM, new Aggregator[]{ Aggregator.NONE }, new PostProcessor[] {PostProcessor.PER_SECOND}), CF_AVG_THROUGHPUT_PER_CLIENT_SENDANDRECEIVE( "plot_cfThroughputPerClient", PlotType.LINE_CHART_CF, PlotScale.LINEAR, Unit.kbyte, Aggregator.SUM, new Aggregator[]{ Aggregator.NONE }, new PostProcessor[] {PostProcessor.PER_SECOND}), // used in: lgpaper_mixMessageSendingRateClients.txt, lgpaper_throughputZero.txt CF_AVG_LATENCY_PER_CLIENT_SEND( "plot_cfLatencyPerClient", PlotType.LINE_CHART_CF, PlotScale.LINEAR, Unit.ms, Aggregator.AVG, new Aggregator[]{ Aggregator.NONE }, new PostProcessor[] {PostProcessor.NONE}), // used in: example_plotType_cumulativeFraction.txt SUM_DATAVOLUME_PER_MIX_SEND( "mixPlot_datavolume", PlotType.LINE_CHART_ABS, PlotScale.LINEAR, Unit.byte_, Aggregator.SUM, new Aggregator[]{ Aggregator.SUM }, new PostProcessor[] {PostProcessor.PER_MIX}), SUM_DATAVOLUME_PER_MIX_RECEIVE( "mixPlot_datavolume", PlotType.LINE_CHART_ABS, PlotScale.LINEAR, Unit.byte_, Aggregator.SUM, new Aggregator[]{ Aggregator.SUM }, new PostProcessor[] {PostProcessor.PER_MIX}), SUM_DATAVOLUME_PER_MIX_SENDANDRECEIVE( "mixPlot_datavolume", PlotType.LINE_CHART_ABS, PlotScale.LINEAR, Unit.byte_, Aggregator.SUM, new Aggregator[]{ Aggregator.SUM }, new PostProcessor[] {PostProcessor.PER_MIX}), DLPA_REQUEST_SENDING_RATE_PER_MIX( "dlpaPlot_events_per_second", PlotType.LINE_CHART_ABS, PlotScale.LINEAR, Unit.event, Aggregator.SUM, new Aggregator[]{ Aggregator.SUM }, new PostProcessor[] {PostProcessor.PER_SECOND, PostProcessor.PER_MIX}), DLPA_REPLY_SENDING_RATE_PER_MIX( "dlpaPlot_events_per_second", PlotType.LINE_CHART_ABS, PlotScale.LINEAR, Unit.event, Aggregator.SUM, new Aggregator[]{ Aggregator.SUM }, new PostProcessor[] {PostProcessor.PER_SECOND, PostProcessor.PER_MIX}), DLPA_REQUEST_AND_REPLY_SENDING_RATE_PER_MIX( "dlpaPlot_events_per_second", PlotType.LINE_CHART_ABS, PlotScale.LINEAR, Unit.event, Aggregator.SUM, new Aggregator[]{ Aggregator.SUM }, new PostProcessor[] {PostProcessor.PER_SECOND, PostProcessor.PER_MIX}), DLPA_REQUEST_SENDING_RATE_PER_MIX_AND_CLIENT( "dlpaPlot_events_per_second", PlotType.LINE_CHART_ABS, PlotScale.LINEAR, Unit.event, Aggregator.SUM, new Aggregator[]{ Aggregator.SUM }, new PostProcessor[] {PostProcessor.PER_SECOND, PostProcessor.PER_MIX, PostProcessor.PER_CLIENT}), // used in: exampleExperiment.txt, example_outputStrategy_DLPA.txt DLPA_REPLY_SENDING_RATE_PER_MIX_AND_CLIENT( "dlpaPlot_events_per_second", PlotType.LINE_CHART_ABS, PlotScale.LINEAR, Unit.event, Aggregator.SUM, new Aggregator[]{ Aggregator.SUM }, new PostProcessor[] {PostProcessor.PER_SECOND, PostProcessor.PER_MIX, PostProcessor.PER_CLIENT}), DLPA_REQUEST_AND_REPLY_SENDING_RATE_PER_MIX_AND_CLIENT( "dlpaPlot_events_per_second", PlotType.LINE_CHART_ABS, PlotScale.LINEAR, Unit.event, Aggregator.SUM, new Aggregator[]{ Aggregator.SUM }, new PostProcessor[] {PostProcessor.PER_SECOND, PostProcessor.PER_MIX, PostProcessor.PER_CLIENT}), DLPA_REQUEST_DUMMY_PERCENTAGE_PER_MIX( "dlpaPlot_dummyPercentage", PlotType.LINE_CHART_ABS, PlotScale.LOG_X, Unit.percent, Aggregator.AVG, new Aggregator[]{ Aggregator.AVG }, new PostProcessor[] {PostProcessor.NONE}), // used in: lgpaper_dlpaDummyPercentagePoi.txt, lgpaper_dlpaDummyPercentageDPE.txt, lgpaper_dlpaDummyPercentageDLPAE.txt DLPA_REPLY_DUMMY_PERCENTAGE_PER_MIX( "dlpaPlot_dummyPercentage", PlotType.LINE_CHART_ABS, PlotScale.LOG_X, Unit.percent, Aggregator.AVG, new Aggregator[]{ Aggregator.AVG }, new PostProcessor[] {PostProcessor.NONE}), // used in: lgpaper_dlpaDummyPercentagePoi.txt, lgpaper_dlpaDummyPercentageDPE.txt, lgpaper_dlpaDummyPercentageDLPAE.txt DLPA_DUMMY_PERCENTAGE_PER_MIX( "dlpaPlot_dummyPercentage", PlotType.LINE_CHART_ABS, PlotScale.LOG_X, Unit.percent, Aggregator.AVG, new Aggregator[]{ Aggregator.AVG }, new PostProcessor[] {PostProcessor.NONE}), // used in: lgpaper_dlpaDummyPercentagePoi.txt, lgpaper_dlpaDummyPercentageDPE.txt, lgpaper_dlpaDummyPercentageDLPAE.txt DLPA_REQUEST_MESSAGE_DROP_PERCENTAGE( "dlpaPlot_dropPercentage", PlotType.LINE_CHART_ABS, PlotScale.LINEAR, Unit.percent, Aggregator.NONE, new Aggregator[]{ Aggregator.BERNOULLI }, new PostProcessor[] {PostProcessor.NONE}), DLPA_REPLY_MESSAGE_DROP_PERCENTAGE( "dlpaPlot_dropPercentage", PlotType.LINE_CHART_ABS, PlotScale.LINEAR, Unit.percent, Aggregator.NONE, new Aggregator[]{ Aggregator.BERNOULLI }, new PostProcessor[] {PostProcessor.NONE}), DLPA_MESSAGE_DROP_PERCENTAGE( "dlpaPlot_dropPercentage", PlotType.LINE_CHART_ABS, PlotScale.LINEAR, Unit.percent, Aggregator.NONE, new Aggregator[]{ Aggregator.BERNOULLI }, new PostProcessor[] {PostProcessor.NONE}), DLPA_REQUEST_MESSAGE_DROP_PERCENTAGE_INCL_DUMMIES( "dlpaPlot_dropPercentage", PlotType.LINE_CHART_ABS, PlotScale.LINEAR, Unit.percent, Aggregator.NONE, new Aggregator[]{ Aggregator.BERNOULLI }, new PostProcessor[] {PostProcessor.NONE}), DLPA_REPLY_MESSAGE_DROP_PERCENTAGE_INCL_DUMMIES( "dlpaPlot_dropPercentage", PlotType.LINE_CHART_ABS, PlotScale.LINEAR, Unit.percent, Aggregator.NONE, new Aggregator[]{ Aggregator.BERNOULLI }, new PostProcessor[] {PostProcessor.NONE}), DLPA_MESSAGE_DROP_PERCENTAGE_INCL_DUMMIES( "dlpaPlot_dropPercentage", PlotType.LINE_CHART_ABS, PlotScale.LINEAR, Unit.percent, Aggregator.NONE, new Aggregator[]{ Aggregator.BERNOULLI }, new PostProcessor[] {PostProcessor.NONE}), SUM_DISTANTPROXY_DATAVOLUME_SENDANDRECEIVE( "dpPlot_datavolume", PlotType.LINE_CHART_ABS, PlotScale.LINEAR, Unit.byte_, Aggregator.SUM, new Aggregator[]{ Aggregator.SUM }, new PostProcessor[] {PostProcessor.NONE}), SUM_DISTANTPROXY_MIXMESSAGES_RECEIVED( "clientPlot_messagesSent", PlotType.LINE_CHART_ABS, PlotScale.LINEAR, Unit.event, Aggregator.SUM, new Aggregator[]{ Aggregator.SUM }, new PostProcessor[] {PostProcessor.NONE}), AVG_TRAFFICSOURCE_SENDING_RATE_PER_CLIENT( "dlpaPlot_events_per_second", PlotType.LINE_CHART_ABS, PlotScale.LINEAR, Unit.event, Aggregator.SUM, new Aggregator[]{ Aggregator.SUM }, new PostProcessor[] {PostProcessor.PER_SECOND, PostProcessor.PER_CLIENT}), AVG_MIXMESSAGE_SENDING_RATE_PER_CLIENT( "dlpaPlot_events_per_second", PlotType.LINE_CHART_ABS, PlotScale.LINEAR, Unit.event, Aggregator.SUM, new Aggregator[]{ Aggregator.SUM }, new PostProcessor[] {PostProcessor.PER_SECOND, PostProcessor.PER_CLIENT}), // used in: exampleExperiment.txt, example_outputStrategy_DLPA.txt AVG_TRAFFICSOURCE_SENDING_RATE_PER_CLIENT_IN_BYTE( "sendingRatePerClient_bytes_per_second", PlotType.LINE_CHART_ABS, PlotScale.LINEAR, Unit.byte_, Aggregator.SUM, new Aggregator[]{ Aggregator.SUM }, new PostProcessor[] {PostProcessor.PER_SECOND, PostProcessor.PER_CLIENT}), AVG_TRAFFICSOURCE_SENDING_RATE_PER_CLIENT_IN_BYTE_SEND( "sendingRatePerClient_bytes_per_second", PlotType.LINE_CHART_ABS, PlotScale.LINEAR, Unit.byte_, Aggregator.SUM, new Aggregator[]{ Aggregator.SUM }, new PostProcessor[] {PostProcessor.PER_SECOND, PostProcessor.PER_CLIENT}), AVG_TRAFFICSOURCE_SENDING_RATE_PER_CLIENT_IN_BYTE_RECEIVE( "sendingRatePerClient_bytes_per_second", PlotType.LINE_CHART_ABS, PlotScale.LINEAR, Unit.byte_, Aggregator.SUM, new Aggregator[]{ Aggregator.SUM }, new PostProcessor[] {PostProcessor.PER_SECOND, PostProcessor.PER_CLIENT}), // added by Stefan Rode: TB_MIN_THROUGHPUT_SEND("plot_Throughput_Send", PlotType.LINE_CHART_ABS, PlotScale.LINEAR, Unit.mbyte, Aggregator.MIN, new Aggregator[]{ Aggregator.NONE }, new PostProcessor[] {PostProcessor.PER_SECOND}), TB_MAX_THROUGHPUT_SEND("plot_Throughput_Send", PlotType.LINE_CHART_ABS, PlotScale.LINEAR, Unit.mbyte, Aggregator.MAX, new Aggregator[]{ Aggregator.NONE }, new PostProcessor[] {PostProcessor.PER_SECOND}), TB_AVG_THROUGHPUT_SEND("plot_Throughput_Send", PlotType.LINE_CHART_ABS, PlotScale.LINEAR, Unit.mbyte, Aggregator.AVG, new Aggregator[]{ Aggregator.NONE }, new PostProcessor[] {PostProcessor.PER_SECOND}), TB_MIN_THROUGHPUT_RECEIVE("plot_Throughput_Receive", PlotType.LINE_CHART_ABS, PlotScale.LINEAR, Unit.mbyte, Aggregator.MIN, new Aggregator[]{ Aggregator.NONE }, new PostProcessor[] {PostProcessor.PER_SECOND}), TB_MAX_THROUGHPUT_RECEIVE("plot_Throughput_Receive", PlotType.LINE_CHART_ABS, PlotScale.LINEAR, Unit.mbyte, Aggregator.MAX, new Aggregator[]{ Aggregator.NONE }, new PostProcessor[] {PostProcessor.PER_SECOND}), TB_AVG_THROUGHPUT_RECEIVE("plot_Throughput_Receive", PlotType.LINE_CHART_ABS, PlotScale.LINEAR, Unit.mbyte, Aggregator.AVG, new Aggregator[]{ Aggregator.NONE }, new PostProcessor[] {PostProcessor.PER_SECOND}), TB_MIN_THROUGHPUT_SEND_AND_RECEIVE( "plot_Throughput_Send_And_Receive", PlotType.LINE_CHART_ABS, PlotScale.LINEAR, Unit.mbyte, Aggregator.MIN, new Aggregator[]{ Aggregator.NONE }, new PostProcessor[] {PostProcessor.PER_SECOND}), TB_MAX_THROUGHPUT_SEND_AND_RECEIVE( "plot_Throughput_Send_And_Receive", PlotType.LINE_CHART_ABS, PlotScale.LINEAR, Unit.mbyte, Aggregator.MAX, new Aggregator[]{ Aggregator.NONE }, new PostProcessor[] {PostProcessor.PER_SECOND}), TB_AVG_THROUGHPUT_SEND_AND_RECEIVE( "plot_Throughput_Send_And_Receive", PlotType.LINE_CHART_ABS, PlotScale.LINEAR, Unit.mbyte, Aggregator.AVG, new Aggregator[]{ Aggregator.NONE }, new PostProcessor[] {PostProcessor.PER_SECOND}) ; public String destinationPlot; public PlotType plotType; public PlotScale plotScale; public Unit unit; public String unitAsString; public Aggregator sourceValueAggregator; public Aggregator[] sourceAggregators; public PostProcessor[] postProcessors; public boolean isActivated = false; public enum Unit { sec, ms, byte_, kbyte, mbyte, gbyte, percent, event }; private StatisticsType( String destinationPlot, PlotType plotType, PlotScale plotScale, Unit unit, Aggregator sourceValueAggregator, Aggregator[] sourceAggregators, PostProcessor[] postProcessors ) { this.destinationPlot = destinationPlot; this.plotType = plotType; this.plotScale = plotScale; this.unit = unit; this.unitAsString = unit.name(); for (PostProcessor pp:postProcessors) if (pp != PostProcessor.NONE && !pp.getUnit().equals("")) unitAsString += "_per_" + pp.getUnit(); this.sourceValueAggregator = sourceValueAggregator; if (sourceValueAggregator == Aggregator.NONE) { // all sourceAggregators must support the same data input format if no sourceValueAggregator is selected InputDataType idt = sourceAggregators[0].getInputDataType(); for (Aggregator agg: sourceAggregators) if (agg.getInputDataType() != idt) throw new RuntimeException("ERROR: the selected Aggregator " +agg +" cannot be combined with the Aggregator " +sourceAggregators[0] +". All sourceAggregators must support the same InputDataType if no SourceValueAggregator is selected!"); } this.sourceAggregators = sourceAggregators; this.postProcessors = postProcessors; } public static void reset() { for (StatisticsType st:StatisticsType.values()) st.isActivated = false; } }