You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jmeter.apache.org by vl...@apache.org on 2019/10/02 10:52:51 UTC

[jmeter] 02/02: Use Collections.singletonMap and List, created variables and use lambdas to aid readability

This is an automated email from the ASF dual-hosted git repository.

vladimirsitnikov pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/jmeter.git

commit 24e95b4c2013fe60dee3aab89528a4c687c393b0
Author: Graham Russell <gr...@ham1.co.uk>
AuthorDate: Mon Aug 26 18:52:56 2019 +0100

    Use Collections.singletonMap and List, created variables and use lambdas to aid readability
---
 .../graph/impl/ActiveThreadsGraphConsumer.java     | 52 ++++++++--------
 .../graph/impl/BytesThroughputGraphConsumer.java   | 50 +++++++--------
 .../graph/impl/CodesPerSecondGraphConsumer.java    | 17 ++---
 .../impl/ConnectTimeOverTimeGraphConsumer.java     | 13 ++--
 .../processor/graph/impl/CustomGraphConsumer.java  | 72 +++++++++++-----------
 .../graph/impl/HitsPerSecondGraphConsumer.java     | 14 ++---
 .../graph/impl/LatencyOverTimeGraphConsumer.java   | 14 ++---
 .../graph/impl/LatencyVSRequestGraphConsumer.java  | 27 ++++----
 .../impl/ResponseCustomGraphGraphConsumer.java     | 14 ++---
 .../ResponseTimeDistributionGraphConsumer.java     | 27 +++-----
 .../impl/ResponseTimeOverTimeGraphConsumer.java    | 14 ++---
 .../impl/ResponseTimePerSampleGraphConsumer.java   |  2 +-
 .../impl/ResponseTimePercentilesGraphConsumer.java | 25 +++-----
 .../impl/ResponseTimeVSRequestGraphConsumer.java   | 25 +++-----
 ...heticResponseTimeDistributionGraphConsumer.java | 44 ++++++-------
 .../graph/impl/TimeVSThreadGraphConsumer.java      | 25 +++-----
 .../graph/impl/TotalTPSGraphConsumer.java          | 26 ++++----
 .../impl/TransactionsPerSecondGraphConsumer.java   | 27 ++++----
 18 files changed, 223 insertions(+), 265 deletions(-)

diff --git a/src/core/src/main/java/org/apache/jmeter/report/processor/graph/impl/ActiveThreadsGraphConsumer.java b/src/core/src/main/java/org/apache/jmeter/report/processor/graph/impl/ActiveThreadsGraphConsumer.java
index c1c7105..2ad660a 100644
--- a/src/core/src/main/java/org/apache/jmeter/report/processor/graph/impl/ActiveThreadsGraphConsumer.java
+++ b/src/core/src/main/java/org/apache/jmeter/report/processor/graph/impl/ActiveThreadsGraphConsumer.java
@@ -19,7 +19,6 @@
 package org.apache.jmeter.report.processor.graph.impl;
 
 import java.util.Collections;
-import java.util.HashMap;
 import java.util.Map;
 
 import org.apache.jmeter.report.core.Sample;
@@ -27,6 +26,7 @@ import org.apache.jmeter.report.processor.MeanAggregatorFactory;
 import org.apache.jmeter.report.processor.graph.AbstractGraphConsumer;
 import org.apache.jmeter.report.processor.graph.AbstractOverTimeGraphConsumer;
 import org.apache.jmeter.report.processor.graph.AbstractSeriesSelector;
+import org.apache.jmeter.report.processor.graph.GraphValueSelector;
 import org.apache.jmeter.report.processor.graph.GroupInfo;
 import org.apache.jmeter.report.processor.graph.TimeStampKeysSelector;
 
@@ -60,31 +60,33 @@ public class ActiveThreadsGraphConsumer extends AbstractOverTimeGraphConsumer {
      */
     @Override
     protected Map<String, GroupInfo> createGroupInfos() {
-        HashMap<String, GroupInfo> groupInfos = new HashMap<>(1);
-        groupInfos.put(AbstractGraphConsumer.DEFAULT_GROUP, new GroupInfo(
-                new MeanAggregatorFactory(), new AbstractSeriesSelector() {
+        AbstractSeriesSelector seriesSelector = new AbstractSeriesSelector() {
 
-                    @Override
-                    public Iterable<String> select(Sample sample) {
-                        if (!sample.isEmptyController()) {
-                            String threadName = sample.getThreadName();
-                            int index = threadName.lastIndexOf(' ');
-                            if (index >= 0) {
-                                threadName = threadName.substring(0, index);
-                            }
-                            return Collections.singletonList(threadName);
-                        } else {
-                            return Collections.emptyList();
-                        }
-                    }
-                }, (series, sample) -> {
-                    if (!sample.isEmptyController()) {
-                        return Double.valueOf(sample.getGroupThreads());
-                    } else {
-                        return null;
-                    }
-                }, false, false));
-        return groupInfos;
+            @Override
+            public Iterable<String> select(Sample sample) {
+                if (sample.isEmptyController()) {
+                    return Collections.emptyList();
+                }
+                String threadName = sample.getThreadName();
+                int index = threadName.lastIndexOf(' ');
+                if (index >= 0) {
+                    threadName = threadName.substring(0, index);
+                }
+                return Collections.singletonList(threadName);
+            }
+        };
+
+        GraphValueSelector graphValueSelector = (series, sample) -> {
+            if (!sample.isEmptyController()) {
+                return Double.valueOf(sample.getGroupThreads());
+            } else {
+                return null;
+            }
+        };
+
+        return Collections.singletonMap(
+                AbstractGraphConsumer.DEFAULT_GROUP,
+                new GroupInfo(new MeanAggregatorFactory(), seriesSelector, graphValueSelector, false, false));
     }
 
 }
diff --git a/src/core/src/main/java/org/apache/jmeter/report/processor/graph/impl/BytesThroughputGraphConsumer.java b/src/core/src/main/java/org/apache/jmeter/report/processor/graph/impl/BytesThroughputGraphConsumer.java
index 155e967..9208b7b 100644
--- a/src/core/src/main/java/org/apache/jmeter/report/processor/graph/impl/BytesThroughputGraphConsumer.java
+++ b/src/core/src/main/java/org/apache/jmeter/report/processor/graph/impl/BytesThroughputGraphConsumer.java
@@ -19,7 +19,7 @@
 package org.apache.jmeter.report.processor.graph.impl;
 
 import java.util.Arrays;
-import java.util.HashMap;
+import java.util.Collections;
 import java.util.Map;
 
 import org.apache.jmeter.report.core.Sample;
@@ -64,32 +64,32 @@ public class BytesThroughputGraphConsumer extends AbstractOverTimeGraphConsumer
      */
     @Override
     protected Map<String, GroupInfo> createGroupInfos() {
-        HashMap<String, GroupInfo> groupInfos = new HashMap<>(2);
-        groupInfos.put(AbstractGraphConsumer.DEFAULT_GROUP, new GroupInfo(
-                new TimeRateAggregatorFactory(), new AbstractSeriesSelector() {
-                    private final Iterable<String> values = Arrays.asList(
-                            RECEIVED_BYTES_SERIES_LABEL,
-                            SENT_BYTES_SERIES_LABEL);
+        AbstractSeriesSelector seriesSelector = new AbstractSeriesSelector() {
+            private final Iterable<String> values = Arrays.asList(
+                    RECEIVED_BYTES_SERIES_LABEL,
+                    SENT_BYTES_SERIES_LABEL);
 
-                    @Override
-                    public Iterable<String> select(Sample sample) {
-                        return values;
-                    }
-                }, new GraphValueSelector() {
+            @Override
+            public Iterable<String> select(Sample sample) {
+                return values;
+            }
+        };
 
-                    @Override
-                    public Double select(String series, Sample sample) {
-                        // We ignore Transaction Controller results
-                        if(!sample.isController()) {
-                            return Double.valueOf(
-                                RECEIVED_BYTES_SERIES_LABEL.equals(series) ? sample
-                                .getReceivedBytes() : sample.getSentBytes());
-                        } else {
-                            return null;
-                        }
-                    }
-                }, false, false));
-        return groupInfos;
+        GraphValueSelector graphValueSelector = (series, sample) -> {
+            // Ignore Transaction Controller results
+            if (sample.isController()) {
+                return null;
+            } else {
+                return Double.valueOf(
+                        RECEIVED_BYTES_SERIES_LABEL.equals(series)
+                                ? sample.getReceivedBytes()
+                                : sample.getSentBytes());
+            }
+        };
+
+        return Collections.singletonMap(
+                AbstractGraphConsumer.DEFAULT_GROUP,
+                new GroupInfo(new TimeRateAggregatorFactory(), seriesSelector, graphValueSelector, false, false));
     }
 
     /*
diff --git a/src/core/src/main/java/org/apache/jmeter/report/processor/graph/impl/CodesPerSecondGraphConsumer.java b/src/core/src/main/java/org/apache/jmeter/report/processor/graph/impl/CodesPerSecondGraphConsumer.java
index 26cbc83..d16393f 100644
--- a/src/core/src/main/java/org/apache/jmeter/report/processor/graph/impl/CodesPerSecondGraphConsumer.java
+++ b/src/core/src/main/java/org/apache/jmeter/report/processor/graph/impl/CodesPerSecondGraphConsumer.java
@@ -18,7 +18,7 @@
 
 package org.apache.jmeter.report.processor.graph.impl;
 
-import java.util.HashMap;
+import java.util.Collections;
 import java.util.Map;
 
 import org.apache.jmeter.report.processor.TimeRateAggregatorFactory;
@@ -59,12 +59,15 @@ public class CodesPerSecondGraphConsumer extends AbstractOverTimeGraphConsumer {
      */
     @Override
     protected Map<String, GroupInfo> createGroupInfos() {
-        HashMap<String, GroupInfo> groupInfos = new HashMap<>(1);
-        groupInfos.put(AbstractGraphConsumer.DEFAULT_GROUP, new GroupInfo(
-                new TimeRateAggregatorFactory(), new CodeSeriesSelector(),
-                // We ignore Transaction Controller results
-                new CountValueSelector(true), false, false));
-        return groupInfos;
+        return Collections.singletonMap(
+                AbstractGraphConsumer.DEFAULT_GROUP,
+                new GroupInfo(
+                        new TimeRateAggregatorFactory(),
+                        new CodeSeriesSelector(),
+                        // We ignore Transaction Controller results
+                        new CountValueSelector(true),
+                        false,
+                        false));
     }
 
     @Override
diff --git a/src/core/src/main/java/org/apache/jmeter/report/processor/graph/impl/ConnectTimeOverTimeGraphConsumer.java b/src/core/src/main/java/org/apache/jmeter/report/processor/graph/impl/ConnectTimeOverTimeGraphConsumer.java
index ea47f64..d38b3e5 100644
--- a/src/core/src/main/java/org/apache/jmeter/report/processor/graph/impl/ConnectTimeOverTimeGraphConsumer.java
+++ b/src/core/src/main/java/org/apache/jmeter/report/processor/graph/impl/ConnectTimeOverTimeGraphConsumer.java
@@ -19,7 +19,6 @@
 package org.apache.jmeter.report.processor.graph.impl;
 
 import java.util.Collections;
-import java.util.HashMap;
 import java.util.Map;
 
 import org.apache.jmeter.report.processor.MeanAggregatorFactory;
@@ -66,11 +65,11 @@ public class ConnectTimeOverTimeGraphConsumer extends AbstractOverTimeGraphConsu
         if (!CONNECT_TIME_SAVED) {
             return Collections.emptyMap();
         }
-        HashMap<String, GroupInfo> groupInfos = new HashMap<>();
-        groupInfos.put(AbstractGraphConsumer.DEFAULT_GROUP, new GroupInfo(
-                new MeanAggregatorFactory(), new NameSeriesSelector(),
-                // We ignore Transaction Controller results
-                new ConnectTimeValueSelector(false), false, false));
-        return groupInfos;
+        return Collections.singletonMap(
+                AbstractGraphConsumer.DEFAULT_GROUP,
+                new GroupInfo(
+                        new MeanAggregatorFactory(), new NameSeriesSelector(),
+                        // We ignore Transaction Controller results
+                        new ConnectTimeValueSelector(false), false, false));
     }
 }
diff --git a/src/core/src/main/java/org/apache/jmeter/report/processor/graph/impl/CustomGraphConsumer.java b/src/core/src/main/java/org/apache/jmeter/report/processor/graph/impl/CustomGraphConsumer.java
index 3204969..2f7bf7a 100644
--- a/src/core/src/main/java/org/apache/jmeter/report/processor/graph/impl/CustomGraphConsumer.java
+++ b/src/core/src/main/java/org/apache/jmeter/report/processor/graph/impl/CustomGraphConsumer.java
@@ -19,7 +19,7 @@
 package org.apache.jmeter.report.processor.graph.impl;
 
 import java.util.Arrays;
-import java.util.HashMap;
+import java.util.Collections;
 import java.util.HashSet;
 import java.util.Map;
 import java.util.Set;
@@ -192,42 +192,40 @@ public class CustomGraphConsumer extends AbstractOverTimeGraphConsumer implement
      */
     @Override
     protected Map<String, GroupInfo> createGroupInfos() {
-
-        HashMap<String, GroupInfo> groupInfos = new HashMap<>();
-        groupInfos.put(AbstractGraphConsumer.DEFAULT_GROUP,
+        AbstractSeriesSelector seriesSelector = new AbstractSeriesSelector() {
+            @Override
+            public Iterable<String> select(Sample sample) {
+                return Collections.singletonList(sampleVariableName);
+            }
+        };
+
+        GraphValueSelector graphValueSelector = (series, sample) -> {
+            String value;
+            if (isNativeSampleVariableName) {
+                value = sample.getData(sampleVariableName);
+            } else {
+                value = sample.getData(CSVSaveService.VARIABLE_NAME_QUOTE_CHAR
+                        + sampleVariableName
+                        + CSVSaveService.VARIABLE_NAME_QUOTE_CHAR);
+            }
+
+            if (StringUtils.isEmpty(value) || "null".equals(value)) {
+                return null;
+            }
+
+            try {
+                return Converters.convert(Double.class, value);
+            } catch (ConvertException e) {
+                throw new IllegalArgumentException("Double converter failed", e);
+            }
+        };
+
+        return Collections.singletonMap(
+                AbstractGraphConsumer.DEFAULT_GROUP,
                 new GroupInfo(
-                new MeanAggregatorFactory(),
-                new AbstractSeriesSelector() {
-                    private final Iterable<String> values = Arrays.asList(sampleVariableName);
-
-                  @Override
-                  public Iterable<String> select(Sample sample) {
-                      return values;
-                  }
-                },
-                // We ignore Transaction Controller results
-                new GraphValueSelector() {
-                  @Override
-                  public Double select(String series, Sample sample) {
-                      String value;
-                      if(isNativeSampleVariableName) {
-                          value = sample.getData(sampleVariableName);
-                      }else {
-                          value = sample.getData(CSVSaveService.VARIABLE_NAME_QUOTE_CHAR
-                                  + sampleVariableName
-                                  + CSVSaveService.VARIABLE_NAME_QUOTE_CHAR);
-                      }
-                      if(StringUtils.isEmpty(value) || "null".equals(value)) {
-                          return null;
-                      }
-                      else {
-                          try {
-                            return Converters.convert(Double.class, value);
-                        } catch (ConvertException e) {
-                            throw new IllegalArgumentException("Double converter failed : {}",e);
-                        }
-                      }
-              }}, false, false));
-        return groupInfos;
+                        new MeanAggregatorFactory(),
+                        seriesSelector,
+                        // We ignore Transaction Controller results
+                        graphValueSelector, false, false));
     }
 }
diff --git a/src/core/src/main/java/org/apache/jmeter/report/processor/graph/impl/HitsPerSecondGraphConsumer.java b/src/core/src/main/java/org/apache/jmeter/report/processor/graph/impl/HitsPerSecondGraphConsumer.java
index 7e6e434..5067074 100644
--- a/src/core/src/main/java/org/apache/jmeter/report/processor/graph/impl/HitsPerSecondGraphConsumer.java
+++ b/src/core/src/main/java/org/apache/jmeter/report/processor/graph/impl/HitsPerSecondGraphConsumer.java
@@ -18,7 +18,7 @@
 
 package org.apache.jmeter.report.processor.graph.impl;
 
-import java.util.HashMap;
+import java.util.Collections;
 import java.util.Map;
 
 import org.apache.jmeter.report.processor.TimeRateAggregatorFactory;
@@ -59,12 +59,12 @@ public class HitsPerSecondGraphConsumer extends AbstractOverTimeGraphConsumer {
      */
     @Override
     protected Map<String, GroupInfo> createGroupInfos() {
-        HashMap<String, GroupInfo> groupInfos = new HashMap<>(1);
-        groupInfos.put(AbstractGraphConsumer.DEFAULT_GROUP, new GroupInfo(
-                new TimeRateAggregatorFactory(), new StaticSeriesSelector(),
-                // We ignore Transaction Controller results
-                new CountValueSelector(true), false, false));
-        return groupInfos;
+        return Collections.singletonMap(
+                AbstractGraphConsumer.DEFAULT_GROUP,
+                new GroupInfo(
+                        new TimeRateAggregatorFactory(), new StaticSeriesSelector(),
+                        // We ignore Transaction Controller results
+                        new CountValueSelector(true), false, false));
     }
 
     /*
diff --git a/src/core/src/main/java/org/apache/jmeter/report/processor/graph/impl/LatencyOverTimeGraphConsumer.java b/src/core/src/main/java/org/apache/jmeter/report/processor/graph/impl/LatencyOverTimeGraphConsumer.java
index e0ae171..e4bc280 100644
--- a/src/core/src/main/java/org/apache/jmeter/report/processor/graph/impl/LatencyOverTimeGraphConsumer.java
+++ b/src/core/src/main/java/org/apache/jmeter/report/processor/graph/impl/LatencyOverTimeGraphConsumer.java
@@ -18,7 +18,7 @@
 
 package org.apache.jmeter.report.processor.graph.impl;
 
-import java.util.HashMap;
+import java.util.Collections;
 import java.util.Map;
 
 import org.apache.jmeter.report.processor.MeanAggregatorFactory;
@@ -59,11 +59,11 @@ public class LatencyOverTimeGraphConsumer extends AbstractOverTimeGraphConsumer
      */
     @Override
     protected Map<String, GroupInfo> createGroupInfos() {
-        HashMap<String, GroupInfo> groupInfos = new HashMap<>();
-        groupInfos.put(AbstractGraphConsumer.DEFAULT_GROUP, new GroupInfo(
-                new MeanAggregatorFactory(), new NameSeriesSelector(),
-                // We ignore Transaction Controller results
-                new LatencyValueSelector(false), false, false));
-        return groupInfos;
+        return Collections.singletonMap(
+                AbstractGraphConsumer.DEFAULT_GROUP,
+                new GroupInfo(
+                        new MeanAggregatorFactory(), new NameSeriesSelector(),
+                        // We ignore Transaction Controller results
+                        new LatencyValueSelector(false), false, false));
     }
 }
diff --git a/src/core/src/main/java/org/apache/jmeter/report/processor/graph/impl/LatencyVSRequestGraphConsumer.java b/src/core/src/main/java/org/apache/jmeter/report/processor/graph/impl/LatencyVSRequestGraphConsumer.java
index d83fb76..395bf3d 100644
--- a/src/core/src/main/java/org/apache/jmeter/report/processor/graph/impl/LatencyVSRequestGraphConsumer.java
+++ b/src/core/src/main/java/org/apache/jmeter/report/processor/graph/impl/LatencyVSRequestGraphConsumer.java
@@ -18,10 +18,9 @@
 
 package org.apache.jmeter.report.processor.graph.impl;
 
-import java.util.HashMap;
+import java.util.Collections;
 import java.util.Map;
 
-import org.apache.jmeter.report.core.Sample;
 import org.apache.jmeter.report.processor.MedianAggregatorFactory;
 import org.apache.jmeter.report.processor.graph.AbstractGraphConsumer;
 import org.apache.jmeter.report.processor.graph.AbstractVersusRequestsGraphConsumer;
@@ -47,14 +46,10 @@ public class LatencyVSRequestGraphConsumer extends
      */
     @Override
     protected GraphKeysSelector createKeysSelector() {
-        return new GraphKeysSelector() {
-
-            @Override
-            public Double select(Sample sample) {
-                return sample
-                        .getData(Double.class, AbstractVersusRequestsGraphConsumer.TIME_INTERVAL_LABEL);
-            }
-        };
+        return sample ->
+                sample.getData(
+                        Double.class,
+                        AbstractVersusRequestsGraphConsumer.TIME_INTERVAL_LABEL);
     }
 
     /*
@@ -65,11 +60,11 @@ public class LatencyVSRequestGraphConsumer extends
      */
     @Override
     protected Map<String, GroupInfo> createGroupInfos() {
-        HashMap<String, GroupInfo> groupInfos = new HashMap<>(1);
-        groupInfos.put(AbstractGraphConsumer.DEFAULT_GROUP, new GroupInfo(
-                new MedianAggregatorFactory(), new StatusSeriesSelector(),
-                // We ignore Transaction Controller results
-                new LatencyValueSelector(true), false, false));
-        return groupInfos;
+        return Collections.singletonMap(
+                AbstractGraphConsumer.DEFAULT_GROUP,
+                new GroupInfo(
+                        new MedianAggregatorFactory(), new StatusSeriesSelector(),
+                        // We ignore Transaction Controller results
+                        new LatencyValueSelector(true), false, false));
     }
 }
diff --git a/src/core/src/main/java/org/apache/jmeter/report/processor/graph/impl/ResponseCustomGraphGraphConsumer.java b/src/core/src/main/java/org/apache/jmeter/report/processor/graph/impl/ResponseCustomGraphGraphConsumer.java
index 561a015..028906b 100644
--- a/src/core/src/main/java/org/apache/jmeter/report/processor/graph/impl/ResponseCustomGraphGraphConsumer.java
+++ b/src/core/src/main/java/org/apache/jmeter/report/processor/graph/impl/ResponseCustomGraphGraphConsumer.java
@@ -18,7 +18,7 @@
 
 package org.apache.jmeter.report.processor.graph.impl;
 
-import java.util.HashMap;
+import java.util.Collections;
 import java.util.Map;
 
 import org.apache.jmeter.report.processor.MeanAggregatorFactory;
@@ -60,11 +60,11 @@ public class ResponseCustomGraphGraphConsumer extends
      */
     @Override
     protected Map<String, GroupInfo> createGroupInfos() {
-        HashMap<String, GroupInfo> groupInfos = new HashMap<>(1);
-        groupInfos.put(AbstractGraphConsumer.DEFAULT_GROUP, new GroupInfo(
-                new MeanAggregatorFactory(), new NameSeriesSelector(),
-                // We include Transaction Controller results
-                new ElapsedTimeValueSelector(false), false, false));
-        return groupInfos;
+        return Collections.singletonMap(
+                AbstractGraphConsumer.DEFAULT_GROUP,
+                new GroupInfo(
+                        new MeanAggregatorFactory(), new NameSeriesSelector(),
+                        // We include Transaction Controller results
+                        new ElapsedTimeValueSelector(false), false, false));
     }
 }
diff --git a/src/core/src/main/java/org/apache/jmeter/report/processor/graph/impl/ResponseTimeDistributionGraphConsumer.java b/src/core/src/main/java/org/apache/jmeter/report/processor/graph/impl/ResponseTimeDistributionGraphConsumer.java
index a45e00b..ca8764d 100644
--- a/src/core/src/main/java/org/apache/jmeter/report/processor/graph/impl/ResponseTimeDistributionGraphConsumer.java
+++ b/src/core/src/main/java/org/apache/jmeter/report/processor/graph/impl/ResponseTimeDistributionGraphConsumer.java
@@ -18,10 +18,9 @@
 
 package org.apache.jmeter.report.processor.graph.impl;
 
-import java.util.HashMap;
+import java.util.Collections;
 import java.util.Map;
 
-import org.apache.jmeter.report.core.Sample;
 import org.apache.jmeter.report.processor.MapResultData;
 import org.apache.jmeter.report.processor.SumAggregatorFactory;
 import org.apache.jmeter.report.processor.ValueResultData;
@@ -67,13 +66,9 @@ public class ResponseTimeDistributionGraphConsumer extends
      */
     @Override
     protected final GraphKeysSelector createKeysSelector() {
-        return new GraphKeysSelector() {
-
-            @Override
-            public Double select(Sample sample) {
-                long elapsed = sample.getElapsedTime();
-                return Double.valueOf((double) elapsed - elapsed % granularity);
-            }
+        return sample -> {
+            long elapsed = sample.getElapsedTime();
+            return Double.valueOf((double) elapsed - elapsed % granularity);
         };
     }
 
@@ -85,14 +80,12 @@ public class ResponseTimeDistributionGraphConsumer extends
      */
     @Override
     protected Map<String, GroupInfo> createGroupInfos() {
-        HashMap<String, GroupInfo> groupInfos = new HashMap<>(1);
-
-        groupInfos.put(AbstractGraphConsumer.DEFAULT_GROUP, new GroupInfo(
-                new SumAggregatorFactory(), new NameSeriesSelector(),
-                // We include Transaction Controller results
-                new CountValueSelector(false), false, false));
-
-        return groupInfos;
+        return Collections.singletonMap(
+                AbstractGraphConsumer.DEFAULT_GROUP,
+                new GroupInfo(
+                        new SumAggregatorFactory(), new NameSeriesSelector(),
+                        // We include Transaction Controller results
+                        new CountValueSelector(false), false, false));
     }
 
     /*
diff --git a/src/core/src/main/java/org/apache/jmeter/report/processor/graph/impl/ResponseTimeOverTimeGraphConsumer.java b/src/core/src/main/java/org/apache/jmeter/report/processor/graph/impl/ResponseTimeOverTimeGraphConsumer.java
index 2945a6f..8a7e051 100644
--- a/src/core/src/main/java/org/apache/jmeter/report/processor/graph/impl/ResponseTimeOverTimeGraphConsumer.java
+++ b/src/core/src/main/java/org/apache/jmeter/report/processor/graph/impl/ResponseTimeOverTimeGraphConsumer.java
@@ -18,7 +18,7 @@
 
 package org.apache.jmeter.report.processor.graph.impl;
 
-import java.util.HashMap;
+import java.util.Collections;
 import java.util.Map;
 
 import org.apache.jmeter.report.processor.MeanAggregatorFactory;
@@ -60,11 +60,11 @@ public class ResponseTimeOverTimeGraphConsumer extends
      */
     @Override
     protected Map<String, GroupInfo> createGroupInfos() {
-        HashMap<String, GroupInfo> groupInfos = new HashMap<>(1);
-        groupInfos.put(AbstractGraphConsumer.DEFAULT_GROUP, new GroupInfo(
-                new MeanAggregatorFactory(), new NameSeriesSelector(),
-                // We include Transaction Controller results
-                new ElapsedTimeValueSelector(false), false, false));
-        return groupInfos;
+        return Collections.singletonMap(
+                AbstractGraphConsumer.DEFAULT_GROUP,
+                new GroupInfo(
+                        new MeanAggregatorFactory(), new NameSeriesSelector(),
+                        // We include Transaction Controller results
+                        new ElapsedTimeValueSelector(false), false, false));
     }
 }
diff --git a/src/core/src/main/java/org/apache/jmeter/report/processor/graph/impl/ResponseTimePerSampleGraphConsumer.java b/src/core/src/main/java/org/apache/jmeter/report/processor/graph/impl/ResponseTimePerSampleGraphConsumer.java
index ac973d5..37b5363 100644
--- a/src/core/src/main/java/org/apache/jmeter/report/processor/graph/impl/ResponseTimePerSampleGraphConsumer.java
+++ b/src/core/src/main/java/org/apache/jmeter/report/processor/graph/impl/ResponseTimePerSampleGraphConsumer.java
@@ -96,7 +96,7 @@ public class ResponseTimePerSampleGraphConsumer extends AbstractGraphConsumer {
      */
     @Override
     protected Map<String, GroupInfo> createGroupInfos() {
-        HashMap<String, GroupInfo> groupInfos = new HashMap<>(2);
+        HashMap<String, GroupInfo> groupInfos = new HashMap<>(6);
 
         groupInfos.put("aggregate_rpt_pct1",
                 createGroupInfo("aggregate_rpt_pct1", 90));
diff --git a/src/core/src/main/java/org/apache/jmeter/report/processor/graph/impl/ResponseTimePercentilesGraphConsumer.java b/src/core/src/main/java/org/apache/jmeter/report/processor/graph/impl/ResponseTimePercentilesGraphConsumer.java
index 2ec8c1d..9bc4847 100644
--- a/src/core/src/main/java/org/apache/jmeter/report/processor/graph/impl/ResponseTimePercentilesGraphConsumer.java
+++ b/src/core/src/main/java/org/apache/jmeter/report/processor/graph/impl/ResponseTimePercentilesGraphConsumer.java
@@ -18,10 +18,9 @@
 
 package org.apache.jmeter.report.processor.graph.impl;
 
-import java.util.HashMap;
+import java.util.Collections;
 import java.util.Map;
 
-import org.apache.jmeter.report.core.Sample;
 import org.apache.jmeter.report.processor.MapResultData;
 import org.apache.jmeter.report.processor.SumAggregatorFactory;
 import org.apache.jmeter.report.processor.graph.AbstractGraphConsumer;
@@ -58,13 +57,7 @@ public class ResponseTimePercentilesGraphConsumer extends AbstractGraphConsumer
      */
     @Override
     protected final GraphKeysSelector createKeysSelector() {
-        return new GraphKeysSelector() {
-
-            @Override
-            public Double select(Sample sample) {
-                return Double.valueOf(sample.getElapsedTime());
-            }
-        };
+        return sample -> Double.valueOf(sample.getElapsedTime());
     }
 
     /*
@@ -75,14 +68,12 @@ public class ResponseTimePercentilesGraphConsumer extends AbstractGraphConsumer
      */
     @Override
     protected Map<String, GroupInfo> createGroupInfos() {
-        HashMap<String, GroupInfo> groupInfos = new HashMap<>(1);
-
-        groupInfos.put(AbstractGraphConsumer.DEFAULT_GROUP, new GroupInfo(
-                new SumAggregatorFactory(), new NameSeriesSelector(),
-                // We include Transaction Controller results
-                new CountValueSelector(false), false, false));
-
-        return groupInfos;
+        return Collections.singletonMap(
+                AbstractGraphConsumer.DEFAULT_GROUP,
+                new GroupInfo(
+                        new SumAggregatorFactory(), new NameSeriesSelector(),
+                        // We include Transaction Controller results
+                        new CountValueSelector(false), false, false));
     }
 
     /*
diff --git a/src/core/src/main/java/org/apache/jmeter/report/processor/graph/impl/ResponseTimeVSRequestGraphConsumer.java b/src/core/src/main/java/org/apache/jmeter/report/processor/graph/impl/ResponseTimeVSRequestGraphConsumer.java
index 528aba6..52583a1 100644
--- a/src/core/src/main/java/org/apache/jmeter/report/processor/graph/impl/ResponseTimeVSRequestGraphConsumer.java
+++ b/src/core/src/main/java/org/apache/jmeter/report/processor/graph/impl/ResponseTimeVSRequestGraphConsumer.java
@@ -18,10 +18,9 @@
 
 package org.apache.jmeter.report.processor.graph.impl;
 
-import java.util.HashMap;
+import java.util.Collections;
 import java.util.Map;
 
-import org.apache.jmeter.report.core.Sample;
 import org.apache.jmeter.report.processor.MedianAggregatorFactory;
 import org.apache.jmeter.report.processor.graph.AbstractGraphConsumer;
 import org.apache.jmeter.report.processor.graph.AbstractVersusRequestsGraphConsumer;
@@ -47,14 +46,8 @@ public class ResponseTimeVSRequestGraphConsumer extends
      */
     @Override
     protected GraphKeysSelector createKeysSelector() {
-        return new GraphKeysSelector() {
-
-            @Override
-            public Double select(Sample sample) {
-                return sample
-                        .getData(Double.class, AbstractVersusRequestsGraphConsumer.TIME_INTERVAL_LABEL);
-            }
-        };
+        return sample -> sample.getData(
+                Double.class, AbstractVersusRequestsGraphConsumer.TIME_INTERVAL_LABEL);
     }
 
     /*
@@ -65,11 +58,11 @@ public class ResponseTimeVSRequestGraphConsumer extends
      */
     @Override
     protected Map<String, GroupInfo> createGroupInfos() {
-        HashMap<String, GroupInfo> groupInfos = new HashMap<>(1);
-        groupInfos.put(AbstractGraphConsumer.DEFAULT_GROUP, new GroupInfo(
-                new MedianAggregatorFactory(), new StatusSeriesSelector(),
-                // We ignore Transaction Controller results
-                new ElapsedTimeValueSelector(true), false, false));
-        return groupInfos;
+        return Collections.singletonMap(
+                AbstractGraphConsumer.DEFAULT_GROUP,
+                new GroupInfo(
+                        new MedianAggregatorFactory(), new StatusSeriesSelector(),
+                        // We ignore Transaction Controller results
+                        new ElapsedTimeValueSelector(true), false, false));
     }
 }
diff --git a/src/core/src/main/java/org/apache/jmeter/report/processor/graph/impl/SyntheticResponseTimeDistributionGraphConsumer.java b/src/core/src/main/java/org/apache/jmeter/report/processor/graph/impl/SyntheticResponseTimeDistributionGraphConsumer.java
index 30b1179..16582f5 100644
--- a/src/core/src/main/java/org/apache/jmeter/report/processor/graph/impl/SyntheticResponseTimeDistributionGraphConsumer.java
+++ b/src/core/src/main/java/org/apache/jmeter/report/processor/graph/impl/SyntheticResponseTimeDistributionGraphConsumer.java
@@ -19,9 +19,7 @@
 package org.apache.jmeter.report.processor.graph.impl;
 
 import java.text.MessageFormat;
-import java.util.Arrays;
 import java.util.Collections;
-import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
@@ -68,8 +66,8 @@ public class SyntheticResponseTimeDistributionGraphConsumer extends
     private class SyntheticSeriesSelector extends AbstractSeriesSelector {
         @Override
         public Iterable<String> select(Sample sample) {
-            if(!sample.getSuccess()) {
-                return Arrays.asList(FAILED_LABEL);
+            if (!sample.getSuccess()) {
+                return Collections.singletonList(FAILED_LABEL);
             } else {
                 long elapsedTime = sample.getElapsedTime();
                 if (elapsedTime <= getSatisfiedThreshold()) {
@@ -91,22 +89,18 @@ public class SyntheticResponseTimeDistributionGraphConsumer extends
      */
     @Override
     protected final GraphKeysSelector createKeysSelector() {
-        return new GraphKeysSelector() {
-
-            @Override
-            public Double select(Sample sample) {
-                if(sample.getSuccess()) {
-                    long elapsedTime = sample.getElapsedTime();
-                    if(elapsedTime<=satisfiedThreshold) {
-                        return Double.valueOf(0);
-                    } else if(elapsedTime <= toleratedThreshold) {
-                        return Double.valueOf(1);
-                    } else {
-                        return Double.valueOf(2);
-                    }
+        return sample -> {
+            if (sample.getSuccess()) {
+                long elapsedTime = sample.getElapsedTime();
+                if (elapsedTime <= satisfiedThreshold) {
+                    return Double.valueOf(0);
+                } else if (elapsedTime <= toleratedThreshold) {
+                    return Double.valueOf(1);
                 } else {
-                    return Double.valueOf(3);
+                    return Double.valueOf(2);
                 }
+            } else {
+                return Double.valueOf(3);
             }
         };
     }
@@ -119,14 +113,12 @@ public class SyntheticResponseTimeDistributionGraphConsumer extends
      */
     @Override
     protected Map<String, GroupInfo> createGroupInfos() {
-        Map<String, GroupInfo> groupInfos = new HashMap<>(1);
-        SyntheticSeriesSelector syntheticSeriesSelector = new SyntheticSeriesSelector();
-        groupInfos.put(AbstractGraphConsumer.DEFAULT_GROUP, new GroupInfo(
-                new SumAggregatorFactory(), syntheticSeriesSelector,
-                // We ignore Transaction Controller results
-                new CountValueSelector(true), false, false));
-
-        return groupInfos;
+        return Collections.singletonMap(
+                AbstractGraphConsumer.DEFAULT_GROUP,
+                new GroupInfo(
+                        new SumAggregatorFactory(), new SyntheticSeriesSelector(),
+                        // We ignore Transaction Controller results
+                        new CountValueSelector(true), false, false));
     }
 
     @Override
diff --git a/src/core/src/main/java/org/apache/jmeter/report/processor/graph/impl/TimeVSThreadGraphConsumer.java b/src/core/src/main/java/org/apache/jmeter/report/processor/graph/impl/TimeVSThreadGraphConsumer.java
index 783ca5f..bd1c07e 100644
--- a/src/core/src/main/java/org/apache/jmeter/report/processor/graph/impl/TimeVSThreadGraphConsumer.java
+++ b/src/core/src/main/java/org/apache/jmeter/report/processor/graph/impl/TimeVSThreadGraphConsumer.java
@@ -18,10 +18,9 @@
 
 package org.apache.jmeter.report.processor.graph.impl;
 
-import java.util.HashMap;
+import java.util.Collections;
 import java.util.Map;
 
-import org.apache.jmeter.report.core.Sample;
 import org.apache.jmeter.report.processor.MapResultData;
 import org.apache.jmeter.report.processor.MeanAggregatorFactory;
 import org.apache.jmeter.report.processor.graph.AbstractGraphConsumer;
@@ -46,13 +45,7 @@ public class TimeVSThreadGraphConsumer extends AbstractGraphConsumer {
      */
     @Override
     protected final GraphKeysSelector createKeysSelector() {
-        return new GraphKeysSelector() {
-
-            @Override
-            public Double select(Sample sample) {
-                return Double.valueOf(sample.getAllThreads());
-            }
-        };
+        return sample -> Double.valueOf(sample.getAllThreads());
     }
 
     /*
@@ -63,14 +56,12 @@ public class TimeVSThreadGraphConsumer extends AbstractGraphConsumer {
      */
     @Override
     protected Map<String, GroupInfo> createGroupInfos() {
-        HashMap<String, GroupInfo> groupInfos = new HashMap<>(1);
-
-        groupInfos.put(AbstractGraphConsumer.DEFAULT_GROUP, new GroupInfo(
-                new MeanAggregatorFactory(), new NameSeriesSelector(),
-                // We include Transaction Controller results
-                new ElapsedTimeValueSelector(false), false, true));
-
-        return groupInfos;
+        return Collections.singletonMap(
+                AbstractGraphConsumer.DEFAULT_GROUP,
+                new GroupInfo(
+                        new MeanAggregatorFactory(), new NameSeriesSelector(),
+                        // We include Transaction Controller results
+                        new ElapsedTimeValueSelector(false), false, true));
     }
 
     /*
diff --git a/src/core/src/main/java/org/apache/jmeter/report/processor/graph/impl/TotalTPSGraphConsumer.java b/src/core/src/main/java/org/apache/jmeter/report/processor/graph/impl/TotalTPSGraphConsumer.java
index 6725561..274454b 100644
--- a/src/core/src/main/java/org/apache/jmeter/report/processor/graph/impl/TotalTPSGraphConsumer.java
+++ b/src/core/src/main/java/org/apache/jmeter/report/processor/graph/impl/TotalTPSGraphConsumer.java
@@ -18,8 +18,7 @@
 
 package org.apache.jmeter.report.processor.graph.impl;
 
-import java.util.Arrays;
-import java.util.HashMap;
+import java.util.Collections;
 import java.util.Map;
 
 import org.apache.jmeter.report.core.Sample;
@@ -70,17 +69,18 @@ public class TotalTPSGraphConsumer extends AbstractOverTimeGraphConsumer {
      */
     @Override
     protected Map<String, GroupInfo> createGroupInfos() {
-        Map<String, GroupInfo> groupInfos = new HashMap<>(1);
-        groupInfos.put(AbstractGraphConsumer.DEFAULT_GROUP,
-                new GroupInfo(new TimeRateAggregatorFactory(), new AbstractSeriesSelector(true) {
-                    @Override
-                    public Iterable<String> select(Sample sample) {
-                        return Arrays.asList(sample.getSuccess() ? TRANSACTION_SUCCESS_LABEL : TRANSACTION_FAILURE_LABEL);
-                    }
-                },
+        AbstractSeriesSelector seriesSelector = new AbstractSeriesSelector(true) {
+            @Override
+            public Iterable<String> select(Sample sample) {
+                return Collections.singletonList(sample.getSuccess() ? TRANSACTION_SUCCESS_LABEL : TRANSACTION_FAILURE_LABEL);
+            }
+        };
+        return Collections.singletonMap(
+                AbstractGraphConsumer.DEFAULT_GROUP,
+                new GroupInfo(
+                        new TimeRateAggregatorFactory(), seriesSelector,
                         // We include Transaction Controller results
                         new CountValueSelector(false), false, false));
-        return groupInfos;
     }
 
     /*
@@ -115,8 +115,8 @@ public class TotalTPSGraphConsumer extends AbstractOverTimeGraphConsumer {
 
     private void initializeSeries(MapResultData parentResult, String[] series) {
         ListResultData listResultData = (ListResultData) parentResult.getResult("series");
-        for (int i = 0; i < series.length; i++) {
-            listResultData.addResult(create(series[i]));
+        for (String s : series) {
+            listResultData.addResult(create(s));
         }
     }
 
diff --git a/src/core/src/main/java/org/apache/jmeter/report/processor/graph/impl/TransactionsPerSecondGraphConsumer.java b/src/core/src/main/java/org/apache/jmeter/report/processor/graph/impl/TransactionsPerSecondGraphConsumer.java
index 6885f38..aaa516c 100644
--- a/src/core/src/main/java/org/apache/jmeter/report/processor/graph/impl/TransactionsPerSecondGraphConsumer.java
+++ b/src/core/src/main/java/org/apache/jmeter/report/processor/graph/impl/TransactionsPerSecondGraphConsumer.java
@@ -64,20 +64,21 @@ public class TransactionsPerSecondGraphConsumer extends AbstractOverTimeGraphCon
      */
     @Override
     protected Map<String, GroupInfo> createGroupInfos() {
-        GroupInfo value = new GroupInfo(
-                new TimeRateAggregatorFactory(),
-                new AbstractSeriesSelector(true) {
+        AbstractSeriesSelector seriesSelector = new AbstractSeriesSelector(true) {
+            @Override
+            public Iterable<String> select(Sample sample) {
+                String success = sample.getSuccess() ? SUCCESS_SERIES_SUFFIX : FAILURE_SERIES_SUFFIX;
+                String label = sample.getName() + "-" + success;
+                return Arrays.asList(label);
+            }
+        };
 
-                    @Override
-                    public Iterable<String> select(Sample sample) {
-                        String success = sample.getSuccess() ? SUCCESS_SERIES_SUFFIX : FAILURE_SERIES_SUFFIX;
-                        String label = sample.getName() + "-" + success;
-                        return Arrays.asList(label);
-                    }
-                },
-                // We include Transaction Controller results
-                new CountValueSelector(false), false, false);
-        return Collections.singletonMap(AbstractGraphConsumer.DEFAULT_GROUP, value);
+        return Collections.singletonMap(
+                AbstractGraphConsumer.DEFAULT_GROUP,
+                new GroupInfo(
+                        new TimeRateAggregatorFactory(), seriesSelector,
+                        // We include Transaction Controller results
+                        new CountValueSelector(false), false, false));
     }
 
     @Override