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

krisden pushed a commit to branch branch_9_0
in repository https://gitbox.apache.org/repos/asf/solr.git


The following commit(s) were added to refs/heads/branch_9_0 by this push:
     new f75104c  SOLR-16035: Enable spotless for prometheus-exporter
f75104c is described below

commit f75104c61537b5d54befd5e842048bfd2506e765
Author: Kevin Risden <[email protected]>
AuthorDate: Sat Feb 19 11:05:20 2022 -0500

    SOLR-16035: Enable spotless for prometheus-exporter
---
 gradle/validation/spotless.gradle                  |   1 -
 .../prometheus/collector/CollectionsCollector.java |   1 -
 .../solr/prometheus/collector/MetricSamples.java   |  10 +-
 .../prometheus/collector/MetricsCollector.java     |   5 +-
 .../collector/MetricsCollectorFactory.java         |  35 +++--
 .../solr/prometheus/collector/PingCollector.java   |   7 +-
 .../collector/SchedulerMetricsCollector.java       |  36 +++--
 .../solr/prometheus/collector/SearchCollector.java |   1 -
 .../solr/prometheus/collector/package-info.java    |   4 +-
 .../exporter/CachedPrometheusCollector.java        |   7 +-
 .../prometheus/exporter/MetricsConfiguration.java  |  46 ++++---
 .../solr/prometheus/exporter/MetricsQuery.java     |  28 +---
 .../prometheus/exporter/MetricsQueryTemplate.java  |  12 +-
 .../exporter/PrometheusExporterSettings.java       |  13 +-
 .../prometheus/exporter/SolrClientFactory.java     |  21 ++-
 .../solr/prometheus/exporter/SolrExporter.java     | 151 +++++++++++++--------
 .../exporter/SolrScrapeConfiguration.java          |   4 +-
 .../solr/prometheus/exporter/package-info.java     |   4 +-
 .../solr/prometheus/scraper/SolrCloudScraper.java  |  99 ++++++++------
 .../solr/prometheus/scraper/SolrScraper.java       |  80 ++++++-----
 .../prometheus/scraper/SolrStandaloneScraper.java  |  23 ++--
 .../solr/prometheus/scraper/package-info.java      |   4 +-
 .../prometheus/PrometheusExporterTestBase.java     |  37 +++--
 .../prometheus/collector/MetricSamplesTest.java    |  71 +++++-----
 .../exporter/MetricsQueryTemplateTest.java         |  97 +++++++------
 .../exporter/SolrExporterIntegrationTest.java      |  41 +++---
 .../prometheus/exporter/SolrExporterTestBase.java  |  28 ++--
 .../prometheus/scraper/SolrCloudScraperTest.java   |  80 ++++++-----
 .../scraper/SolrStandaloneScraperTest.java         |  50 +++----
 .../org/apache/solr/prometheus/utils/Helpers.java  |   9 +-
 30 files changed, 535 insertions(+), 470 deletions(-)

diff --git a/gradle/validation/spotless.gradle 
b/gradle/validation/spotless.gradle
index 8f4f0f5..bfb00bc 100644
--- a/gradle/validation/spotless.gradle
+++ b/gradle/validation/spotless.gradle
@@ -54,7 +54,6 @@ configure(project(":solr").subprojects) { prj ->
           case ":solr:modules:langid":
           case ":solr:modules:ltr":
           case ":solr:modules:scripting":
-          case ":solr:prometheus-exporter":
           case ":solr:core":
           case ":solr:solrj":
           case ":solr:solr-ref-guide":
diff --git 
a/solr/prometheus-exporter/src/java/org/apache/solr/prometheus/collector/CollectionsCollector.java
 
b/solr/prometheus-exporter/src/java/org/apache/solr/prometheus/collector/CollectionsCollector.java
index fa8f1ce..c6262b7 100644
--- 
a/solr/prometheus-exporter/src/java/org/apache/solr/prometheus/collector/CollectionsCollector.java
+++ 
b/solr/prometheus-exporter/src/java/org/apache/solr/prometheus/collector/CollectionsCollector.java
@@ -34,5 +34,4 @@ public class CollectionsCollector implements MetricCollector {
   public MetricSamples collect() throws Exception {
     return solrClient.collections(metricsQuery);
   }
-
 }
diff --git 
a/solr/prometheus-exporter/src/java/org/apache/solr/prometheus/collector/MetricSamples.java
 
b/solr/prometheus-exporter/src/java/org/apache/solr/prometheus/collector/MetricSamples.java
index d71616c..9fae6ce 100644
--- 
a/solr/prometheus-exporter/src/java/org/apache/solr/prometheus/collector/MetricSamples.java
+++ 
b/solr/prometheus-exporter/src/java/org/apache/solr/prometheus/collector/MetricSamples.java
@@ -17,13 +17,12 @@
 
 package org.apache.solr.prometheus.collector;
 
+import io.prometheus.client.Collector;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.stream.Collectors;
 
-import io.prometheus.client.Collector;
-
 public class MetricSamples {
 
   private final Map<String, Collector.MetricFamilySamples> samplesByMetricName;
@@ -40,7 +39,8 @@ public class MetricSamples {
     samplesByMetricName.putIfAbsent(metricName, samples);
   }
 
-  public void addSampleIfMetricExists(String metricName, 
Collector.MetricFamilySamples.Sample sample) {
+  public void addSampleIfMetricExists(
+      String metricName, Collector.MetricFamilySamples.Sample sample) {
     Collector.MetricFamilySamples sampleFamily = 
samplesByMetricName.get(metricName);
 
     if (sampleFamily == null) {
@@ -53,7 +53,8 @@ public class MetricSamples {
   }
 
   public void addAll(MetricSamples other) {
-    for (Map.Entry<String, Collector.MetricFamilySamples> entry : 
other.samplesByMetricName.entrySet()) {
+    for (Map.Entry<String, Collector.MetricFamilySamples> entry :
+        other.samplesByMetricName.entrySet()) {
       String key = entry.getKey();
       if (this.samplesByMetricName.containsKey(key)) {
         for (Collector.MetricFamilySamples.Sample sample : 
entry.getValue().samples) {
@@ -70,5 +71,4 @@ public class MetricSamples {
         .filter(value -> !value.samples.isEmpty())
         .collect(Collectors.toList());
   }
-
 }
diff --git 
a/solr/prometheus-exporter/src/java/org/apache/solr/prometheus/collector/MetricsCollector.java
 
b/solr/prometheus-exporter/src/java/org/apache/solr/prometheus/collector/MetricsCollector.java
index 4fee6c8..c96b70c 100644
--- 
a/solr/prometheus-exporter/src/java/org/apache/solr/prometheus/collector/MetricsCollector.java
+++ 
b/solr/prometheus-exporter/src/java/org/apache/solr/prometheus/collector/MetricsCollector.java
@@ -34,11 +34,8 @@ public class MetricsCollector implements MetricCollector {
   public MetricSamples collect() throws Exception {
     MetricSamples results = new MetricSamples();
 
-    solrClient.metricsForAllHosts(metricsQuery)
-        .forEach((host, samples) -> results.addAll(samples));
+    solrClient.metricsForAllHosts(metricsQuery).forEach((host, samples) -> 
results.addAll(samples));
 
     return results;
   }
-
-
 }
diff --git 
a/solr/prometheus-exporter/src/java/org/apache/solr/prometheus/collector/MetricsCollectorFactory.java
 
b/solr/prometheus-exporter/src/java/org/apache/solr/prometheus/collector/MetricsCollectorFactory.java
index fdf8c8e..bbb2dd7 100644
--- 
a/solr/prometheus-exporter/src/java/org/apache/solr/prometheus/collector/MetricsCollectorFactory.java
+++ 
b/solr/prometheus-exporter/src/java/org/apache/solr/prometheus/collector/MetricsCollectorFactory.java
@@ -22,7 +22,6 @@ import java.util.concurrent.ExecutorService;
 import java.util.concurrent.TimeUnit;
 import java.util.stream.Collectors;
 import java.util.stream.Stream;
-
 import org.apache.solr.prometheus.exporter.MetricsConfiguration;
 import org.apache.solr.prometheus.scraper.SolrScraper;
 
@@ -45,28 +44,28 @@ public class MetricsCollectorFactory {
   }
 
   public SchedulerMetricsCollector create() {
-    Stream<MetricCollector> pings = metricsConfiguration.getPingConfiguration()
-        .stream()
-        .map(query -> new PingCollector(solrScraper, query));
+    Stream<MetricCollector> pings =
+        metricsConfiguration.getPingConfiguration().stream()
+            .map(query -> new PingCollector(solrScraper, query));
 
-    Stream<MetricCollector> metrics = 
metricsConfiguration.getMetricsConfiguration()
-        .stream()
-        .map(query -> new MetricsCollector(solrScraper, query));
+    Stream<MetricCollector> metrics =
+        metricsConfiguration.getMetricsConfiguration().stream()
+            .map(query -> new MetricsCollector(solrScraper, query));
 
-    Stream<MetricCollector> searches = 
metricsConfiguration.getSearchConfiguration()
-        .stream()
-        .map(query -> new SearchCollector(solrScraper, query));
+    Stream<MetricCollector> searches =
+        metricsConfiguration.getSearchConfiguration().stream()
+            .map(query -> new SearchCollector(solrScraper, query));
 
-    Stream<MetricCollector> collections = 
metricsConfiguration.getCollectionsConfiguration()
-        .stream()
-        .map(query -> new CollectionsCollector(solrScraper, query));
+    Stream<MetricCollector> collections =
+        metricsConfiguration.getCollectionsConfiguration().stream()
+            .map(query -> new CollectionsCollector(solrScraper, query));
 
-    List<MetricCollector> collectors = Stream.of(pings, metrics, searches, 
collections)
-        .reduce(Stream::concat)
-        .orElseGet(Stream::empty)
-        .collect(Collectors.toList());
+    List<MetricCollector> collectors =
+        Stream.of(pings, metrics, searches, collections)
+            .reduce(Stream::concat)
+            .orElseGet(Stream::empty)
+            .collect(Collectors.toList());
 
     return new SchedulerMetricsCollector(executor, refreshInSeconds, 
TimeUnit.SECONDS, collectors);
   }
-
 }
diff --git 
a/solr/prometheus-exporter/src/java/org/apache/solr/prometheus/collector/PingCollector.java
 
b/solr/prometheus-exporter/src/java/org/apache/solr/prometheus/collector/PingCollector.java
index c35c570..c0fed75 100644
--- 
a/solr/prometheus-exporter/src/java/org/apache/solr/prometheus/collector/PingCollector.java
+++ 
b/solr/prometheus-exporter/src/java/org/apache/solr/prometheus/collector/PingCollector.java
@@ -34,13 +34,14 @@ public class PingCollector implements MetricCollector {
   public MetricSamples collect() throws Exception {
     MetricSamples results = new MetricSamples();
 
-    solrScraper.pingAllCollections(metricsQuery)
+    solrScraper
+        .pingAllCollections(metricsQuery)
         .forEach((collection, metrics) -> results.addAll(metrics));
 
-    solrScraper.pingAllCores(metricsQuery)
+    solrScraper
+        .pingAllCores(metricsQuery)
         .forEach((collection, metrics) -> results.addAll(metrics));
 
     return results;
   }
-
 }
diff --git 
a/solr/prometheus-exporter/src/java/org/apache/solr/prometheus/collector/SchedulerMetricsCollector.java
 
b/solr/prometheus-exporter/src/java/org/apache/solr/prometheus/collector/SchedulerMetricsCollector.java
index f258932..8a1a3f6 100644
--- 
a/solr/prometheus-exporter/src/java/org/apache/solr/prometheus/collector/SchedulerMetricsCollector.java
+++ 
b/solr/prometheus-exporter/src/java/org/apache/solr/prometheus/collector/SchedulerMetricsCollector.java
@@ -17,6 +17,8 @@
 
 package org.apache.solr.prometheus.collector;
 
+import io.prometheus.client.Collector;
+import io.prometheus.client.Histogram;
 import java.io.Closeable;
 import java.lang.invoke.MethodHandles;
 import java.util.List;
@@ -29,11 +31,8 @@ import java.util.concurrent.Future;
 import java.util.concurrent.ScheduledExecutorService;
 import java.util.concurrent.TimeUnit;
 import java.util.stream.Collectors;
-
-import io.prometheus.client.Collector;
-import io.prometheus.client.Histogram;
-import org.apache.solr.prometheus.exporter.SolrExporter;
 import org.apache.solr.common.util.SolrNamedThreadFactory;
+import org.apache.solr.prometheus.exporter.SolrExporter;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -49,18 +48,19 @@ public class SchedulerMetricsCollector implements Closeable 
{
   private final int duration;
   private final TimeUnit timeUnit;
 
-  private final ScheduledExecutorService scheduler = 
Executors.newScheduledThreadPool(
-      1,
-      new SolrNamedThreadFactory("scheduled-metrics-collector"));
+  private final ScheduledExecutorService scheduler =
+      Executors.newScheduledThreadPool(
+          1, new SolrNamedThreadFactory("scheduled-metrics-collector"));
 
   private final ExecutorService executor;
 
   private final List<Observer> observers = new CopyOnWriteArrayList<>();
 
-  private static final Histogram metricsCollectionTime = Histogram.build()
-      .name("solr_exporter_duration_seconds")
-      .help("Duration taken to record all metrics")
-      .register(SolrExporter.defaultRegistry);
+  private static final Histogram metricsCollectionTime =
+      Histogram.build()
+          .name("solr_exporter_duration_seconds")
+          .help("Duration taken to record all metrics")
+          .register(SolrExporter.defaultRegistry);
 
   public SchedulerMetricsCollector(
       ExecutorService executor,
@@ -82,17 +82,17 @@ public class SchedulerMetricsCollector implements Closeable 
{
     try (Histogram.Timer timer = metricsCollectionTime.startTimer()) {
       log.info("Beginning metrics collection");
 
-      final List<Future<MetricSamples>> futures = executor.invokeAll(
-          metricCollectors.stream()
-              .map(metricCollector -> (Callable<MetricSamples>) 
metricCollector::collect)
-              .collect(Collectors.toList())
-      );
+      final List<Future<MetricSamples>> futures =
+          executor.invokeAll(
+              metricCollectors.stream()
+                  .map(metricCollector -> (Callable<MetricSamples>) 
metricCollector::collect)
+                  .collect(Collectors.toList()));
       MetricSamples metricSamples = new MetricSamples();
       for (Future<MetricSamples> future : futures) {
         try {
           metricSamples.addAll(future.get());
         } catch (ExecutionException e) {
-          log.error("Error occurred during metrics collection", 
e.getCause());//nowarn
+          log.error("Error occurred during metrics collection", e.getCause()); 
// nowarn
           // continue any ways; do not fail
         }
       }
@@ -104,7 +104,6 @@ public class SchedulerMetricsCollector implements Closeable 
{
       log.warn("Interrupted waiting for metric collection to complete", e);
       Thread.currentThread().interrupt();
     }
-
   }
 
   public void addObserver(Observer observer) {
@@ -123,5 +122,4 @@ public class SchedulerMetricsCollector implements Closeable 
{
   public void close() {
     scheduler.shutdownNow();
   }
-
 }
diff --git 
a/solr/prometheus-exporter/src/java/org/apache/solr/prometheus/collector/SearchCollector.java
 
b/solr/prometheus-exporter/src/java/org/apache/solr/prometheus/collector/SearchCollector.java
index 4300f75..b33ddf9 100644
--- 
a/solr/prometheus-exporter/src/java/org/apache/solr/prometheus/collector/SearchCollector.java
+++ 
b/solr/prometheus-exporter/src/java/org/apache/solr/prometheus/collector/SearchCollector.java
@@ -34,5 +34,4 @@ public class SearchCollector implements MetricCollector {
   public MetricSamples collect() throws Exception {
     return solrClient.search(metricsQuery);
   }
-
 }
diff --git 
a/solr/prometheus-exporter/src/java/org/apache/solr/prometheus/collector/package-info.java
 
b/solr/prometheus-exporter/src/java/org/apache/solr/prometheus/collector/package-info.java
index e49fdac..8d7c28c 100644
--- 
a/solr/prometheus-exporter/src/java/org/apache/solr/prometheus/collector/package-info.java
+++ 
b/solr/prometheus-exporter/src/java/org/apache/solr/prometheus/collector/package-info.java
@@ -15,7 +15,5 @@
  * limitations under the License.
  */
 
-/**
- * Collects metrics from Solr via various endpoints.
- */
+/** Collects metrics from Solr via various endpoints. */
 package org.apache.solr.prometheus.collector;
diff --git 
a/solr/prometheus-exporter/src/java/org/apache/solr/prometheus/exporter/CachedPrometheusCollector.java
 
b/solr/prometheus-exporter/src/java/org/apache/solr/prometheus/exporter/CachedPrometheusCollector.java
index 73fd9f5..835b170 100644
--- 
a/solr/prometheus-exporter/src/java/org/apache/solr/prometheus/exporter/CachedPrometheusCollector.java
+++ 
b/solr/prometheus-exporter/src/java/org/apache/solr/prometheus/exporter/CachedPrometheusCollector.java
@@ -17,12 +17,12 @@
 
 package org.apache.solr.prometheus.exporter;
 
-import java.util.List;
-
 import io.prometheus.client.Collector;
+import java.util.List;
 import org.apache.solr.prometheus.collector.SchedulerMetricsCollector;
 
-public class CachedPrometheusCollector extends Collector implements 
SchedulerMetricsCollector.Observer {
+public class CachedPrometheusCollector extends Collector
+    implements SchedulerMetricsCollector.Observer {
 
   private volatile List<MetricFamilySamples> samples;
 
@@ -35,5 +35,4 @@ public class CachedPrometheusCollector extends Collector 
implements SchedulerMet
   public void metricsUpdated(List<MetricFamilySamples> samples) {
     this.samples = samples;
   }
-
 }
diff --git 
a/solr/prometheus-exporter/src/java/org/apache/solr/prometheus/exporter/MetricsConfiguration.java
 
b/solr/prometheus-exporter/src/java/org/apache/solr/prometheus/exporter/MetricsConfiguration.java
index 1e3ec01..28b923b 100644
--- 
a/solr/prometheus-exporter/src/java/org/apache/solr/prometheus/exporter/MetricsConfiguration.java
+++ 
b/solr/prometheus-exporter/src/java/org/apache/solr/prometheus/exporter/MetricsConfiguration.java
@@ -17,10 +17,6 @@
 
 package org.apache.solr.prometheus.exporter;
 
-import javax.xml.parsers.DocumentBuilderFactory;
-import javax.xml.xpath.XPath;
-import javax.xml.xpath.XPathConstants;
-import javax.xml.xpath.XPathFactory;
 import java.io.File;
 import java.io.InputStream;
 import java.lang.invoke.MethodHandles;
@@ -30,7 +26,10 @@ import java.util.Collections;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
-
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.xpath.XPath;
+import javax.xml.xpath.XPathConstants;
+import javax.xml.xpath.XPathFactory;
 import net.thisptr.jackson.jq.exception.JsonQueryException;
 import org.apache.solr.common.StringUtils;
 import org.slf4j.Logger;
@@ -98,7 +97,11 @@ public class MetricsConfiguration {
     if (Files.exists(path)) {
       document = dbf.newDocumentBuilder().parse(path.toUri().toASCIIString());
     } else {
-      try (InputStream configInputStream = 
MethodHandles.lookup().lookupClass().getClassLoader().getResourceAsStream(resource.replace(File.separatorChar,
 '/'))) {
+      try (InputStream configInputStream =
+          MethodHandles.lookup()
+              .lookupClass()
+              .getClassLoader()
+              .getResourceAsStream(resource.replace(File.separatorChar, '/'))) 
{
         document = dbf.newDocumentBuilder().parse(configInputStream);
       }
     }
@@ -110,9 +113,13 @@ public class MetricsConfiguration {
     Node settings = getNode(config, "/config/settings");
 
     NodeList jqTemplates =
-        
(NodeList)(xpathFactory.newXPath()).evaluate("/config/jq-templates/template", 
config, XPathConstants.NODESET);
-    Map<String,MetricsQueryTemplate> jqTemplatesMap =
-        (jqTemplates != null && jqTemplates.getLength() > 0) ? 
loadJqTemplates(jqTemplates) : Collections.emptyMap();
+        (NodeList)
+            (xpathFactory.newXPath())
+                .evaluate("/config/jq-templates/template", config, 
XPathConstants.NODESET);
+    Map<String, MetricsQueryTemplate> jqTemplatesMap =
+        (jqTemplates != null && jqTemplates.getLength() > 0)
+            ? loadJqTemplates(jqTemplates)
+            : Collections.emptyMap();
 
     Node pingConfig = getNode(config, "/config/rules/ping");
     Node metricsConfig = getNode(config, "/config/rules/metrics");
@@ -120,12 +127,13 @@ public class MetricsConfiguration {
     Node searchConfiguration = getNode(config, "/config/rules/search");
 
     return new MetricsConfiguration(
-        settings == null ? PrometheusExporterSettings.builder().build() : 
PrometheusExporterSettings.from(settings),
+        settings == null
+            ? PrometheusExporterSettings.builder().build()
+            : PrometheusExporterSettings.from(settings),
         toMetricQueries(pingConfig, jqTemplatesMap),
         toMetricQueries(metricsConfig, jqTemplatesMap),
         toMetricQueries(collectionsConfig, jqTemplatesMap),
-        toMetricQueries(searchConfiguration, jqTemplatesMap)
-    );
+        toMetricQueries(searchConfiguration, jqTemplatesMap));
   }
 
   static final XPathFactory xpathFactory = XPathFactory.newInstance();
@@ -133,11 +141,10 @@ public class MetricsConfiguration {
   private static Node getNode(Document doc, String path) {
     // Copied from solr-core XmlConfigFile.getNode with simplifications
     XPath xpath = xpathFactory.newXPath();
-    String xstr = path; //normalize(path);
+    String xstr = path; // normalize(path);
 
     try {
-      NodeList nodes = (NodeList) xpath.evaluate(xstr, doc,
-          XPathConstants.NODESET);
+      NodeList nodes = (NodeList) xpath.evaluate(xstr, doc, 
XPathConstants.NODESET);
       if (nodes == null || 0 == nodes.getLength()) {
         return null;
       }
@@ -150,7 +157,8 @@ public class MetricsConfiguration {
     }
   }
 
-  private static List<MetricsQuery> toMetricQueries(Node node, 
Map<String,MetricsQueryTemplate> jqTemplatesMap) throws JsonQueryException {
+  private static List<MetricsQuery> toMetricQueries(
+      Node node, Map<String, MetricsQueryTemplate> jqTemplatesMap) throws 
JsonQueryException {
     if (node == null) {
       return Collections.emptyList();
     }
@@ -158,9 +166,9 @@ public class MetricsConfiguration {
     return MetricsQuery.from(node, jqTemplatesMap);
   }
 
-  static Map<String,MetricsQueryTemplate> loadJqTemplates(NodeList 
jqTemplates) {
-    Map<String,MetricsQueryTemplate> map = new HashMap<>();
-    for (int t=0; t < jqTemplates.getLength(); t++) {
+  static Map<String, MetricsQueryTemplate> loadJqTemplates(NodeList 
jqTemplates) {
+    Map<String, MetricsQueryTemplate> map = new HashMap<>();
+    for (int t = 0; t < jqTemplates.getLength(); t++) {
       Node template = jqTemplates.item(t);
       if (template.getNodeType() == Node.ELEMENT_NODE && 
template.hasAttributes()) {
         Node nameAttr = template.getAttributes().getNamedItem("name");
diff --git 
a/solr/prometheus-exporter/src/java/org/apache/solr/prometheus/exporter/MetricsQuery.java
 
b/solr/prometheus-exporter/src/java/org/apache/solr/prometheus/exporter/MetricsQuery.java
index 8de9693..5c3ba1f 100644
--- 
a/solr/prometheus-exporter/src/java/org/apache/solr/prometheus/exporter/MetricsQuery.java
+++ 
b/solr/prometheus-exporter/src/java/org/apache/solr/prometheus/exporter/MetricsQuery.java
@@ -23,7 +23,6 @@ import java.util.List;
 import java.util.Map;
 import java.util.Optional;
 import java.util.regex.Matcher;
-
 import net.thisptr.jackson.jq.JsonQuery;
 import net.thisptr.jackson.jq.exception.JsonQueryException;
 import org.apache.solr.client.solrj.request.QueryRequest;
@@ -55,22 +54,12 @@ public class MetricsQuery {
 
   public MetricsQuery withCore(String core) {
     return new MetricsQuery(
-        getPath(),
-        getParameters(),
-        core,
-        getCollection().orElse(null),
-        getJsonQueries()
-    );
+        getPath(), getParameters(), core, getCollection().orElse(null), 
getJsonQueries());
   }
 
   public MetricsQuery withCollection(String collection) {
     return new MetricsQuery(
-        getPath(),
-        getParameters(),
-        getCore().orElse(null),
-        collection,
-        getJsonQueries()
-    );
+        getPath(), getParameters(), getCore().orElse(null), collection, 
getJsonQueries());
   }
 
   public String getPath() {
@@ -89,7 +78,8 @@ public class MetricsQuery {
     return jsonQueries;
   }
 
-  public static List<MetricsQuery> from(Node node, 
Map<String,MetricsQueryTemplate> jqTemplates) throws JsonQueryException {
+  public static List<MetricsQuery> from(Node node, Map<String, 
MetricsQueryTemplate> jqTemplates)
+      throws JsonQueryException {
     List<MetricsQuery> metricsQueries = new ArrayList<>();
 
     NamedList<?> config = DOMUtil.childNodesToNamedList(node);
@@ -137,7 +127,8 @@ public class MetricsQuery {
               String templateName = matcher.group("TEMPLATE");
               MetricsQueryTemplate template = jqTemplates.get(templateName);
               if (template == null) {
-                throw new IllegalStateException("jq template '" + 
matcher.group("TEMPLATE") + "' not found!");
+                throw new IllegalStateException(
+                    "jq template '" + matcher.group("TEMPLATE") + "' not 
found!");
               }
 
               jsonQuery = template.applyTemplate(matcher);
@@ -149,12 +140,7 @@ public class MetricsQuery {
         }
       }
 
-      metricsQueries.add(new MetricsQuery(
-          path,
-          params,
-          core,
-          collection,
-          compiledQueries));
+      metricsQueries.add(new MetricsQuery(path, params, core, collection, 
compiledQueries));
     }
 
     return metricsQueries;
diff --git 
a/solr/prometheus-exporter/src/java/org/apache/solr/prometheus/exporter/MetricsQueryTemplate.java
 
b/solr/prometheus-exporter/src/java/org/apache/solr/prometheus/exporter/MetricsQueryTemplate.java
index 0b89455..336dc28 100644
--- 
a/solr/prometheus-exporter/src/java/org/apache/solr/prometheus/exporter/MetricsQueryTemplate.java
+++ 
b/solr/prometheus-exporter/src/java/org/apache/solr/prometheus/exporter/MetricsQueryTemplate.java
@@ -39,7 +39,8 @@ public class MetricsQueryTemplate {
   TYPE = COUNTER
   */
   private static final Pattern matchJqTemplate =
-      
Pattern.compile("^\\$jq:(?<TEMPLATE>.*?)\\(\\s?(?<UNIQUE>[^,]*),\\s?(?<KEYSELECTOR>[^,]*)(,\\s?(?<METRIC>[^,]*)\\s?)?(,\\s?(?<TYPE>[^,]*)\\s?)?\\)$");
+      Pattern.compile(
+          
"^\\$jq:(?<TEMPLATE>.*?)\\(\\s?(?<UNIQUE>[^,]*),\\s?(?<KEYSELECTOR>[^,]*)(,\\s?(?<METRIC>[^,]*)\\s?)?(,\\s?(?<TYPE>[^,]*)\\s?)?\\)$");
 
   public static Optional<Matcher> matches(String jsonQuery) {
     Optional<Matcher> maybe = Optional.empty();
@@ -103,7 +104,8 @@ public class MetricsQueryTemplate {
           metric = "$object.value." + metric;
         }
       } // else some kind of function, pass thru as-is
-    } // else there's a $ so just assume it is a fully qualified reference to 
the desired value, leave as-is
+    } // else there's a $ so just assume it is a fully qualified reference to 
the desired value,
+    // leave as-is
 
     return template
         .replace("{UNIQUE}", unique)
@@ -117,9 +119,9 @@ public class MetricsQueryTemplate {
     if (this == o) return true;
     if (o == null || getClass() != o.getClass()) return false;
     MetricsQueryTemplate that = (MetricsQueryTemplate) o;
-    return name.equals(that.name) &&
-        Objects.equals(defaultType, that.defaultType) &&
-        template.equals(that.template);
+    return name.equals(that.name)
+        && Objects.equals(defaultType, that.defaultType)
+        && template.equals(that.template);
   }
 
   @Override
diff --git 
a/solr/prometheus-exporter/src/java/org/apache/solr/prometheus/exporter/PrometheusExporterSettings.java
 
b/solr/prometheus-exporter/src/java/org/apache/solr/prometheus/exporter/PrometheusExporterSettings.java
index 964dfe3..e6caea2 100644
--- 
a/solr/prometheus-exporter/src/java/org/apache/solr/prometheus/exporter/PrometheusExporterSettings.java
+++ 
b/solr/prometheus-exporter/src/java/org/apache/solr/prometheus/exporter/PrometheusExporterSettings.java
@@ -18,9 +18,8 @@
 package org.apache.solr.prometheus.exporter;
 
 import java.util.List;
-
-import org.apache.solr.common.util.NamedList;
 import org.apache.solr.common.util.DOMUtil;
+import org.apache.solr.common.util.NamedList;
 import org.w3c.dom.Node;
 
 public class PrometheusExporterSettings {
@@ -36,9 +35,7 @@ public class PrometheusExporterSettings {
     private int httpConnectionTimeout = 10000;
     private int httpReadTimeout = 60000;
 
-    private Builder() {
-
-    }
+    private Builder() {}
 
     public Builder withConnectionHttpTimeout(int httpConnectionTimeout) {
       this.httpConnectionTimeout = httpConnectionTimeout;
@@ -53,7 +50,6 @@ public class PrometheusExporterSettings {
     public PrometheusExporterSettings build() {
       return new PrometheusExporterSettings(httpConnectionTimeout, 
httpReadTimeout);
     }
-
   }
 
   public static PrometheusExporterSettings from(Node settings) {
@@ -79,9 +75,7 @@ public class PrometheusExporterSettings {
     return builder.build();
   }
 
-  private PrometheusExporterSettings(
-      int httpConnectionTimeout,
-      int httpReadTimeout) {
+  private PrometheusExporterSettings(int httpConnectionTimeout, int 
httpReadTimeout) {
     this.httpConnectionTimeout = httpConnectionTimeout;
     this.httpReadTimeout = httpReadTimeout;
   }
@@ -93,5 +87,4 @@ public class PrometheusExporterSettings {
   public int getHttpReadTimeout() {
     return httpReadTimeout;
   }
-
 }
diff --git 
a/solr/prometheus-exporter/src/java/org/apache/solr/prometheus/exporter/SolrClientFactory.java
 
b/solr/prometheus-exporter/src/java/org/apache/solr/prometheus/exporter/SolrClientFactory.java
index 102d649..2c7d2c3 100644
--- 
a/solr/prometheus-exporter/src/java/org/apache/solr/prometheus/exporter/SolrClientFactory.java
+++ 
b/solr/prometheus-exporter/src/java/org/apache/solr/prometheus/exporter/SolrClientFactory.java
@@ -17,10 +17,8 @@
 
 package org.apache.solr.prometheus.exporter;
 
-import java.util.Locale;
 import java.util.Optional;
 import java.util.stream.Collectors;
-
 import org.apache.solr.client.solrj.impl.CloudSolrClient;
 import org.apache.solr.client.solrj.impl.HttpSolrClient;
 import org.apache.solr.client.solrj.impl.NoOpResponseParser;
@@ -42,7 +40,8 @@ public class SolrClientFactory {
 
     standaloneBuilder.withBaseSolrUrl(solrHost);
 
-    
standaloneBuilder.withConnectionTimeout(settings.getHttpConnectionTimeout())
+    standaloneBuilder
+        .withConnectionTimeout(settings.getHttpConnectionTimeout())
         .withSocketTimeout(settings.getHttpReadTimeout());
 
     HttpSolrClient httpSolrClient = standaloneBuilder.build();
@@ -57,13 +56,15 @@ public class SolrClientFactory {
 
     ConnectStringParser parser = new 
ConnectStringParser(zookeeperConnectionString);
 
-    CloudSolrClient.Builder cloudBuilder = new CloudSolrClient.Builder(
-        parser.getServerAddresses().stream()
-            .map(address -> String.format(Locale.ROOT, "%s:%s", 
address.getHostString(), address.getPort()))
-            .collect(Collectors.toList()),
-        Optional.ofNullable(parser.getChrootPath()));
+    CloudSolrClient.Builder cloudBuilder =
+        new CloudSolrClient.Builder(
+            parser.getServerAddresses().stream()
+                .map(address -> address.getHostString() + ":" + 
address.getPort())
+                .collect(Collectors.toList()),
+            Optional.ofNullable(parser.getChrootPath()));
 
-    cloudBuilder.withConnectionTimeout(settings.getHttpConnectionTimeout())
+    cloudBuilder
+        .withConnectionTimeout(settings.getHttpConnectionTimeout())
         .withSocketTimeout(settings.getHttpReadTimeout());
 
     CloudSolrClient client = cloudBuilder.build();
@@ -73,6 +74,4 @@ public class SolrClientFactory {
 
     return client;
   }
-
-
 }
diff --git 
a/solr/prometheus-exporter/src/java/org/apache/solr/prometheus/exporter/SolrExporter.java
 
b/solr/prometheus-exporter/src/java/org/apache/solr/prometheus/exporter/SolrExporter.java
index 3a60580..eedddd1 100644
--- 
a/solr/prometheus-exporter/src/java/org/apache/solr/prometheus/exporter/SolrExporter.java
+++ 
b/solr/prometheus-exporter/src/java/org/apache/solr/prometheus/exporter/SolrExporter.java
@@ -16,26 +16,24 @@
  */
 package org.apache.solr.prometheus.exporter;
 
+import io.prometheus.client.CollectorRegistry;
+import io.prometheus.client.exporter.HTTPServer;
 import java.io.IOException;
 import java.lang.invoke.MethodHandles;
 import java.net.InetSocketAddress;
-import java.util.Locale;
 import java.util.concurrent.ExecutorService;
-
-import io.prometheus.client.CollectorRegistry;
-import io.prometheus.client.exporter.HTTPServer;
 import net.sourceforge.argparse4j.ArgumentParsers;
 import net.sourceforge.argparse4j.inf.ArgumentParser;
 import net.sourceforge.argparse4j.inf.ArgumentParserException;
 import net.sourceforge.argparse4j.inf.Namespace;
 import org.apache.solr.common.util.ExecutorUtil;
 import org.apache.solr.common.util.IOUtils;
+import org.apache.solr.common.util.SolrNamedThreadFactory;
 import org.apache.solr.prometheus.collector.MetricsCollectorFactory;
 import org.apache.solr.prometheus.collector.SchedulerMetricsCollector;
 import org.apache.solr.prometheus.scraper.SolrCloudScraper;
 import org.apache.solr.prometheus.scraper.SolrScraper;
 import org.apache.solr.prometheus.scraper.SolrStandaloneScraper;
-import org.apache.solr.common.util.SolrNamedThreadFactory;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -47,37 +45,47 @@ public class SolrExporter {
   private static final String ARG_PORT_METAVAR = "PORT";
   private static final String ARG_PORT_DEST = "port";
   private static final int ARG_PORT_DEFAULT = 8989;
-  private static final String ARG_PORT_HELP = "Specify the solr-exporter HTTP 
listen port; default is " + ARG_PORT_DEFAULT + ".";
+  private static final String ARG_PORT_HELP =
+      "Specify the solr-exporter HTTP listen port; default is " + 
ARG_PORT_DEFAULT + ".";
 
   private static final String[] ARG_BASE_URL_FLAGS = {"-b", "--baseurl"};
   private static final String ARG_BASE_URL_METAVAR = "BASE_URL";
   private static final String ARG_BASE_URL_DEST = "baseUrl";
   private static final String ARG_BASE_URL_DEFAULT = 
"http://localhost:8983/solr";;
-  private static final String ARG_BASE_URL_HELP = "Specify the Solr base URL 
when connecting to Solr in standalone mode. If omitted both the -b parameter 
and the -z parameter, connect to http://localhost:8983/solr. For example 
'http://localhost:8983/solr'.";
+  private static final String ARG_BASE_URL_HELP =
+      "Specify the Solr base URL when connecting to Solr in standalone mode. 
If omitted both the -b parameter and the -z parameter, connect to 
http://localhost:8983/solr. For example 'http://localhost:8983/solr'.";
 
   private static final String[] ARG_ZK_HOST_FLAGS = {"-z", "--zkhost"};
   private static final String ARG_ZK_HOST_METAVAR = "ZK_HOST";
   private static final String ARG_ZK_HOST_DEST = "zkHost";
   private static final String ARG_ZK_HOST_DEFAULT = "";
-  private static final String ARG_ZK_HOST_HELP = "Specify the ZooKeeper 
connection string when connecting to Solr in SolrCloud mode. If omitted both 
the -b parameter and the -z parameter, connect to http://localhost:8983/solr. 
For example 'localhost:2181/solr'.";
+  private static final String ARG_ZK_HOST_HELP =
+      "Specify the ZooKeeper connection string when connecting to Solr in 
SolrCloud mode. If omitted both the -b parameter and the -z parameter, connect 
to http://localhost:8983/solr. For example 'localhost:2181/solr'.";
 
   private static final String[] ARG_CONFIG_FLAGS = {"-f", "--config-file"};
   private static final String ARG_CONFIG_METAVAR = "CONFIG";
   private static final String ARG_CONFIG_DEST = "configFile";
   private static final String ARG_CONFIG_DEFAULT = "solr-exporter-config.xml";
-  private static final String ARG_CONFIG_HELP = "Specify the configuration 
file; the default is " + ARG_CONFIG_DEFAULT + ".";
+  private static final String ARG_CONFIG_HELP =
+      "Specify the configuration file; the default is " + ARG_CONFIG_DEFAULT + 
".";
 
   private static final String[] ARG_SCRAPE_INTERVAL_FLAGS = {"-s", 
"--scrape-interval"};
   private static final String ARG_SCRAPE_INTERVAL_METAVAR = "SCRAPE_INTERVAL";
   private static final String ARG_SCRAPE_INTERVAL_DEST = "scrapeInterval";
   private static final int ARG_SCRAPE_INTERVAL_DEFAULT = 60;
-  private static final String ARG_SCRAPE_INTERVAL_HELP = "Specify the delay 
between scraping Solr metrics; the default is " + ARG_SCRAPE_INTERVAL_DEFAULT + 
" seconds.";
+  private static final String ARG_SCRAPE_INTERVAL_HELP =
+      "Specify the delay between scraping Solr metrics; the default is "
+          + ARG_SCRAPE_INTERVAL_DEFAULT
+          + " seconds.";
 
   private static final String[] ARG_NUM_THREADS_FLAGS = {"-n", 
"--num-threads"};
   private static final String ARG_NUM_THREADS_METAVAR = "NUM_THREADS";
   private static final String ARG_NUM_THREADS_DEST = "numThreads";
   private static final Integer ARG_NUM_THREADS_DEFAULT = 1;
-  private static final String ARG_NUM_THREADS_HELP = "Specify the number of 
threads. solr-exporter creates a thread pools for request to Solr. If you need 
to improve request latency via solr-exporter, you can increase the number of 
threads; the default is " + ARG_NUM_THREADS_DEFAULT + ".";
+  private static final String ARG_NUM_THREADS_HELP =
+      "Specify the number of threads. solr-exporter creates a thread pools for 
request to Solr. If you need to improve request latency via solr-exporter, you 
can increase the number of threads; the default is "
+          + ARG_NUM_THREADS_DEFAULT
+          + ".";
 
   public static final CollectorRegistry defaultRegistry = new 
CollectorRegistry();
 
@@ -99,16 +107,19 @@ public class SolrExporter {
       MetricsConfiguration metricsConfiguration) {
     this.port = port;
 
-    this.metricCollectorExecutor = ExecutorUtil.newMDCAwareFixedThreadPool(
-        numberThreads,
-        new SolrNamedThreadFactory("solr-exporter-collectors"));
+    this.metricCollectorExecutor =
+        ExecutorUtil.newMDCAwareFixedThreadPool(
+            numberThreads, new 
SolrNamedThreadFactory("solr-exporter-collectors"));
 
-    this.requestExecutor = ExecutorUtil.newMDCAwareFixedThreadPool(
-        numberThreads,
-        new SolrNamedThreadFactory("solr-exporter-requests"));
+    this.requestExecutor =
+        ExecutorUtil.newMDCAwareFixedThreadPool(
+            numberThreads, new 
SolrNamedThreadFactory("solr-exporter-requests"));
 
     this.solrScraper = createScraper(scrapeConfiguration, 
metricsConfiguration.getSettings());
-    this.metricsCollector = new 
MetricsCollectorFactory(metricCollectorExecutor, scrapeInterval, solrScraper, 
metricsConfiguration).create();
+    this.metricsCollector =
+        new MetricsCollectorFactory(
+                metricCollectorExecutor, scrapeInterval, solrScraper, 
metricsConfiguration)
+            .create();
     this.prometheusCollector = new CachedPrometheusCollector();
   }
 
@@ -135,7 +146,8 @@ public class SolrExporter {
     defaultRegistry.unregister(this.prometheusCollector);
   }
 
-  private SolrScraper createScraper(SolrScrapeConfiguration configuration, 
PrometheusExporterSettings settings) {
+  private SolrScraper createScraper(
+      SolrScrapeConfiguration configuration, PrometheusExporterSettings 
settings) {
     SolrClientFactory factory = new SolrClientFactory(settings);
 
     switch (configuration.getType()) {
@@ -144,39 +156,67 @@ public class SolrExporter {
             
factory.createStandaloneSolrClient(configuration.getSolrHost().get()), 
requestExecutor);
       case CLOUD:
         return new SolrCloudScraper(
-            
factory.createCloudSolrClient(configuration.getZookeeperConnectionString().get()),
 requestExecutor, factory);
+            
factory.createCloudSolrClient(configuration.getZookeeperConnectionString().get()),
+            requestExecutor,
+            factory);
       default:
-        throw new RuntimeException(String.format(Locale.ROOT, "Invalid type: 
%s", configuration.getType()));
+        throw new RuntimeException("Invalid type: " + configuration.getType());
     }
   }
 
   public static void main(String[] args) {
-    ArgumentParser parser = 
ArgumentParsers.newFor(SolrExporter.class.getSimpleName()).build()
-        .description("Prometheus exporter for Apache Solr.");
-
-    parser.addArgument(ARG_PORT_FLAGS)
-        .metavar(ARG_PORT_METAVAR).dest(ARG_PORT_DEST).type(Integer.class)
-        .setDefault(ARG_PORT_DEFAULT).help(ARG_PORT_HELP);
-
-    parser.addArgument(ARG_BASE_URL_FLAGS)
-        
.metavar(ARG_BASE_URL_METAVAR).dest(ARG_BASE_URL_DEST).type(String.class)
-        .setDefault(ARG_BASE_URL_DEFAULT).help(ARG_BASE_URL_HELP);
-
-    parser.addArgument(ARG_ZK_HOST_FLAGS)
-        .metavar(ARG_ZK_HOST_METAVAR).dest(ARG_ZK_HOST_DEST).type(String.class)
-        .setDefault(ARG_ZK_HOST_DEFAULT).help(ARG_ZK_HOST_HELP);
-
-    parser.addArgument(ARG_CONFIG_FLAGS)
-        .metavar(ARG_CONFIG_METAVAR).dest(ARG_CONFIG_DEST).type(String.class)
-        .setDefault(ARG_CONFIG_DEFAULT).help(ARG_CONFIG_HELP);
-
-    parser.addArgument(ARG_SCRAPE_INTERVAL_FLAGS)
-        
.metavar(ARG_SCRAPE_INTERVAL_METAVAR).dest(ARG_SCRAPE_INTERVAL_DEST).type(Integer.class)
-        
.setDefault(ARG_SCRAPE_INTERVAL_DEFAULT).help(ARG_SCRAPE_INTERVAL_HELP);
-
-    parser.addArgument(ARG_NUM_THREADS_FLAGS)
-        
.metavar(ARG_NUM_THREADS_METAVAR).dest(ARG_NUM_THREADS_DEST).type(Integer.class)
-        .setDefault(ARG_NUM_THREADS_DEFAULT).help(ARG_NUM_THREADS_HELP);
+    ArgumentParser parser =
+        ArgumentParsers.newFor(SolrExporter.class.getSimpleName())
+            .build()
+            .description("Prometheus exporter for Apache Solr.");
+
+    parser
+        .addArgument(ARG_PORT_FLAGS)
+        .metavar(ARG_PORT_METAVAR)
+        .dest(ARG_PORT_DEST)
+        .type(Integer.class)
+        .setDefault(ARG_PORT_DEFAULT)
+        .help(ARG_PORT_HELP);
+
+    parser
+        .addArgument(ARG_BASE_URL_FLAGS)
+        .metavar(ARG_BASE_URL_METAVAR)
+        .dest(ARG_BASE_URL_DEST)
+        .type(String.class)
+        .setDefault(ARG_BASE_URL_DEFAULT)
+        .help(ARG_BASE_URL_HELP);
+
+    parser
+        .addArgument(ARG_ZK_HOST_FLAGS)
+        .metavar(ARG_ZK_HOST_METAVAR)
+        .dest(ARG_ZK_HOST_DEST)
+        .type(String.class)
+        .setDefault(ARG_ZK_HOST_DEFAULT)
+        .help(ARG_ZK_HOST_HELP);
+
+    parser
+        .addArgument(ARG_CONFIG_FLAGS)
+        .metavar(ARG_CONFIG_METAVAR)
+        .dest(ARG_CONFIG_DEST)
+        .type(String.class)
+        .setDefault(ARG_CONFIG_DEFAULT)
+        .help(ARG_CONFIG_HELP);
+
+    parser
+        .addArgument(ARG_SCRAPE_INTERVAL_FLAGS)
+        .metavar(ARG_SCRAPE_INTERVAL_METAVAR)
+        .dest(ARG_SCRAPE_INTERVAL_DEST)
+        .type(Integer.class)
+        .setDefault(ARG_SCRAPE_INTERVAL_DEFAULT)
+        .help(ARG_SCRAPE_INTERVAL_HELP);
+
+    parser
+        .addArgument(ARG_NUM_THREADS_FLAGS)
+        .metavar(ARG_NUM_THREADS_METAVAR)
+        .dest(ARG_NUM_THREADS_DEST)
+        .type(Integer.class)
+        .setDefault(ARG_NUM_THREADS_DEFAULT)
+        .help(ARG_NUM_THREADS_HELP);
 
     try {
       Namespace res = parser.parseArgs(args);
@@ -194,16 +234,18 @@ public class SolrExporter {
       }
 
       int port = res.getInt(ARG_PORT_DEST);
-      SolrExporter solrExporter = new SolrExporter(
-          port,
-          res.getInt(ARG_NUM_THREADS_DEST),
-          res.getInt(ARG_SCRAPE_INTERVAL_DEST),
-          scrapeConfiguration,
-          loadMetricsConfiguration(res.getString(ARG_CONFIG_DEST)));
+      SolrExporter solrExporter =
+          new SolrExporter(
+              port,
+              res.getInt(ARG_NUM_THREADS_DEST),
+              res.getInt(ARG_SCRAPE_INTERVAL_DEST),
+              scrapeConfiguration,
+              loadMetricsConfiguration(res.getString(ARG_CONFIG_DEST)));
 
       log.info("Starting Solr Prometheus Exporting on port {}", port);
       solrExporter.start();
-      log.info("Solr Prometheus Exporter is running. Collecting metrics for 
{}", scrapeConfiguration);
+      log.info(
+          "Solr Prometheus Exporter is running. Collecting metrics for {}", 
scrapeConfiguration);
     } catch (IOException e) {
       log.error("Failed to start Solr Prometheus Exporter: ", e);
     } catch (ArgumentParserException e) {
@@ -219,5 +261,4 @@ public class SolrExporter {
       throw new RuntimeException(e);
     }
   }
-
 }
diff --git 
a/solr/prometheus-exporter/src/java/org/apache/solr/prometheus/exporter/SolrScrapeConfiguration.java
 
b/solr/prometheus-exporter/src/java/org/apache/solr/prometheus/exporter/SolrScrapeConfiguration.java
index 0ac400d..a1e1fbd 100644
--- 
a/solr/prometheus-exporter/src/java/org/apache/solr/prometheus/exporter/SolrScrapeConfiguration.java
+++ 
b/solr/prometheus-exporter/src/java/org/apache/solr/prometheus/exporter/SolrScrapeConfiguration.java
@@ -30,7 +30,8 @@ public class SolrScrapeConfiguration {
   private final String zookeeperConnectionString;
   private final String solrHost;
 
-  private SolrScrapeConfiguration(ConnectionType type, String 
zookeeperConnectionString, String solrHost) {
+  private SolrScrapeConfiguration(
+      ConnectionType type, String zookeeperConnectionString, String solrHost) {
     this.type = type;
     this.zookeeperConnectionString = zookeeperConnectionString;
     this.solrHost = solrHost;
@@ -66,5 +67,4 @@ public class SolrScrapeConfiguration {
       return "None";
     }
   }
-
 }
diff --git 
a/solr/prometheus-exporter/src/java/org/apache/solr/prometheus/exporter/package-info.java
 
b/solr/prometheus-exporter/src/java/org/apache/solr/prometheus/exporter/package-info.java
index c2e6886..8c85dee 100644
--- 
a/solr/prometheus-exporter/src/java/org/apache/solr/prometheus/exporter/package-info.java
+++ 
b/solr/prometheus-exporter/src/java/org/apache/solr/prometheus/exporter/package-info.java
@@ -15,7 +15,5 @@
  * limitations under the License.
  */
 
-/**
- * Prometheus Metrics Exporter.
- */
+/** Prometheus Metrics Exporter. */
 package org.apache.solr.prometheus.exporter;
diff --git 
a/solr/prometheus-exporter/src/java/org/apache/solr/prometheus/scraper/SolrCloudScraper.java
 
b/solr/prometheus-exporter/src/java/org/apache/solr/prometheus/scraper/SolrCloudScraper.java
index eedb216..188914f 100644
--- 
a/solr/prometheus-exporter/src/java/org/apache/solr/prometheus/scraper/SolrCloudScraper.java
+++ 
b/solr/prometheus-exporter/src/java/org/apache/solr/prometheus/scraper/SolrCloudScraper.java
@@ -16,6 +16,8 @@
  */
 package org.apache.solr.prometheus.scraper;
 
+import com.github.benmanes.caffeine.cache.Cache;
+import com.github.benmanes.caffeine.cache.Caffeine;
 import java.io.IOException;
 import java.util.List;
 import java.util.Map;
@@ -23,9 +25,6 @@ import java.util.Set;
 import java.util.concurrent.ExecutorService;
 import java.util.function.Function;
 import java.util.stream.Collectors;
-
-import com.github.benmanes.caffeine.cache.Cache;
-import com.github.benmanes.caffeine.cache.Caffeine;
 import org.apache.solr.client.solrj.impl.CloudSolrClient;
 import org.apache.solr.client.solrj.impl.HttpSolrClient;
 import org.apache.solr.common.cloud.DocCollection;
@@ -43,7 +42,8 @@ public class SolrCloudScraper extends SolrScraper {
 
   private Cache<String, HttpSolrClient> hostClientCache = 
Caffeine.newBuilder().build();
 
-  public SolrCloudScraper(CloudSolrClient solrClient, ExecutorService 
executor, SolrClientFactory solrClientFactory) {
+  public SolrCloudScraper(
+      CloudSolrClient solrClient, ExecutorService executor, SolrClientFactory 
solrClientFactory) {
     super(executor);
     this.solrClient = solrClient;
     this.solrClientFactory = solrClientFactory;
@@ -53,31 +53,34 @@ public class SolrCloudScraper extends SolrScraper {
   public Map<String, MetricSamples> pingAllCores(MetricsQuery query) throws 
IOException {
     Map<String, HttpSolrClient> httpSolrClients = createHttpSolrClients();
 
-    Map<String, DocCollection> collectionState = 
solrClient.getClusterStateProvider().getClusterState().getCollectionsMap();
-
-    List<Replica> replicas = collectionState.values()
-        .stream()
-        .map(DocCollection::getReplicas)
-        .flatMap(List::stream)
-        .collect(Collectors.toList());
-
-    List<String> coreNames = replicas
-        .stream()
-        .map(Replica::getCoreName)
-        .collect(Collectors.toList());
-
-    Map<String, HttpSolrClient> coreToClient = replicas
-        .stream()
-        .map(replica -> new Pair<>(replica.getCoreName(), 
httpSolrClients.get(replica.getBaseUrl())))
-        .collect(Collectors.toMap(Pair::first, Pair::second));
-
-    return sendRequestsInParallel(coreNames, core -> {
-      try {
-        return request(coreToClient.get(core), query.withCore(core));
-      } catch (IOException exception) {
-        throw new RuntimeException(exception);
-      }
-    });
+    Map<String, DocCollection> collectionState =
+        
solrClient.getClusterStateProvider().getClusterState().getCollectionsMap();
+
+    List<Replica> replicas =
+        collectionState.values().stream()
+            .map(DocCollection::getReplicas)
+            .flatMap(List::stream)
+            .collect(Collectors.toList());
+
+    List<String> coreNames =
+        
replicas.stream().map(Replica::getCoreName).collect(Collectors.toList());
+
+    Map<String, HttpSolrClient> coreToClient =
+        replicas.stream()
+            .map(
+                replica ->
+                    new Pair<>(replica.getCoreName(), 
httpSolrClients.get(replica.getBaseUrl())))
+            .collect(Collectors.toMap(Pair::first, Pair::second));
+
+    return sendRequestsInParallel(
+        coreNames,
+        core -> {
+          try {
+            return request(coreToClient.get(core), query.withCore(core));
+          } catch (IOException exception) {
+            throw new RuntimeException(exception);
+          }
+        });
   }
 
   private Map<String, HttpSolrClient> createHttpSolrClients() throws 
IOException {
@@ -88,26 +91,30 @@ public class SolrCloudScraper extends SolrScraper {
 
   @Override
   public Map<String, MetricSamples> pingAllCollections(MetricsQuery query) 
throws IOException {
-    return sendRequestsInParallel(getCollections(), (collection) -> {
-      try {
-        return request(solrClient, query.withCollection(collection));
-      } catch (IOException exception) {
-        throw new RuntimeException(exception);
-      }
-    });
+    return sendRequestsInParallel(
+        getCollections(),
+        (collection) -> {
+          try {
+            return request(solrClient, query.withCollection(collection));
+          } catch (IOException exception) {
+            throw new RuntimeException(exception);
+          }
+        });
   }
 
   @Override
   public Map<String, MetricSamples> metricsForAllHosts(MetricsQuery query) 
throws IOException {
     Map<String, HttpSolrClient> httpSolrClients = createHttpSolrClients();
 
-    return sendRequestsInParallel(httpSolrClients.keySet(), (baseUrl) -> {
-      try {
-        return request(httpSolrClients.get(baseUrl), query);
-      } catch (IOException exception) {
-        throw new RuntimeException(exception);
-      }
-    });
+    return sendRequestsInParallel(
+        httpSolrClients.keySet(),
+        (baseUrl) -> {
+          try {
+            return request(httpSolrClients.get(baseUrl), query);
+          } catch (IOException exception) {
+            throw new RuntimeException(exception);
+          }
+        });
   }
 
   @Override
@@ -121,7 +128,11 @@ public class SolrCloudScraper extends SolrScraper {
   }
 
   private Set<String> getBaseUrls() throws IOException {
-    return 
solrClient.getClusterStateProvider().getClusterState().getCollectionsMap().values()
+    return solrClient
+        .getClusterStateProvider()
+        .getClusterState()
+        .getCollectionsMap()
+        .values()
         .stream()
         .map(DocCollection::getReplicas)
         .flatMap(List::stream)
diff --git 
a/solr/prometheus-exporter/src/java/org/apache/solr/prometheus/scraper/SolrScraper.java
 
b/solr/prometheus-exporter/src/java/org/apache/solr/prometheus/scraper/SolrScraper.java
index c1ee6aa..2b86efb 100644
--- 
a/solr/prometheus-exporter/src/java/org/apache/solr/prometheus/scraper/SolrScraper.java
+++ 
b/solr/prometheus-exporter/src/java/org/apache/solr/prometheus/scraper/SolrScraper.java
@@ -16,6 +16,10 @@
  */
 package org.apache.solr.prometheus.scraper;
 
+import com.fasterxml.jackson.databind.JsonNode;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import io.prometheus.client.Collector;
+import io.prometheus.client.Counter;
 import java.io.Closeable;
 import java.io.IOException;
 import java.lang.invoke.MethodHandles;
@@ -28,11 +32,6 @@ import java.util.concurrent.Callable;
 import java.util.concurrent.ExecutorService;
 import java.util.function.Function;
 import java.util.stream.Collectors;
-
-import com.fasterxml.jackson.databind.JsonNode;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import io.prometheus.client.Collector;
-import io.prometheus.client.Counter;
 import net.thisptr.jackson.jq.JsonQuery;
 import net.thisptr.jackson.jq.exception.JsonQueryException;
 import org.apache.solr.client.solrj.SolrClient;
@@ -49,22 +48,27 @@ import org.slf4j.LoggerFactory;
 
 public abstract class SolrScraper implements Closeable {
 
-  private static final Counter scrapeErrorTotal = Counter.build()
-      .name("solr_exporter_scrape_error_total")
-      .help("Number of scrape error.")
-      .register(SolrExporter.defaultRegistry);
+  private static final Counter scrapeErrorTotal =
+      Counter.build()
+          .name("solr_exporter_scrape_error_total")
+          .help("Number of scrape error.")
+          .register(SolrExporter.defaultRegistry);
 
   protected static final ObjectMapper OBJECT_MAPPER = new ObjectMapper();
   private static final Logger log = 
LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
 
   protected final ExecutorService executor;
 
-  public abstract Map<String, MetricSamples> metricsForAllHosts(MetricsQuery 
query) throws IOException;
+  public abstract Map<String, MetricSamples> metricsForAllHosts(MetricsQuery 
query)
+      throws IOException;
 
   public abstract Map<String, MetricSamples> pingAllCores(MetricsQuery query) 
throws IOException;
-  public abstract Map<String, MetricSamples> pingAllCollections(MetricsQuery 
query) throws IOException;
+
+  public abstract Map<String, MetricSamples> pingAllCollections(MetricsQuery 
query)
+      throws IOException;
 
   public abstract MetricSamples search(MetricsQuery query) throws IOException;
+
   public abstract MetricSamples collections(MetricsQuery metricsQuery) throws 
IOException;
 
   public SolrScraper(ExecutorService executor) {
@@ -72,29 +76,32 @@ public abstract class SolrScraper implements Closeable {
   }
 
   protected Map<String, MetricSamples> sendRequestsInParallel(
-      Collection<String> items,
-      Function<String, MetricSamples> samplesCallable) throws IOException {
+      Collection<String> items, Function<String, MetricSamples> 
samplesCallable)
+      throws IOException {
 
     Map<String, MetricSamples> result = new HashMap<>(); // sync on this when 
adding to it below
 
     try {
-      // invoke each samplesCallable with each item and putting the results in 
the above "result" map.
+      // invoke each samplesCallable with each item and putting the results in 
the above "result"
+      // map.
       executor.invokeAll(
           items.stream()
-              .map(item -> (Callable<MetricSamples>) () -> {
-                try {
-                  final MetricSamples samples = samplesCallable.apply(item);
-                  synchronized (result) {
-                    result.put(item, samples);
-                  }
-                } catch (Exception e) {
-                  // do NOT totally fail; just log and move on
-                  log.warn("Error occurred during metrics collection", e);
-                }
-                return null;//not used
-              })
-              .collect(Collectors.toList())
-      );
+              .map(
+                  item ->
+                      (Callable<MetricSamples>)
+                          () -> {
+                            try {
+                              final MetricSamples samples = 
samplesCallable.apply(item);
+                              synchronized (result) {
+                                result.put(item, samples);
+                              }
+                            } catch (Exception e) {
+                              // do NOT totally fail; just log and move on
+                              log.warn("Error occurred during metrics 
collection", e);
+                            }
+                            return null; // not used
+                          })
+              .collect(Collectors.toList()));
     } catch (InterruptedException e) {
       Thread.currentThread().interrupt();
       throw new RuntimeException(e);
@@ -157,7 +164,10 @@ public abstract class SolrScraper implements Closeable {
           }
 
           // Deduce core if not there
-          if (labelNames.indexOf("core") < 0 && 
labelNames.indexOf("collection") >= 0 && labelNames.indexOf("shard") >= 0 && 
labelNames.indexOf("replica") >= 0) {
+          if (labelNames.indexOf("core") < 0
+              && labelNames.indexOf("collection") >= 0
+              && labelNames.indexOf("shard") >= 0
+              && labelNames.indexOf("replica") >= 0) {
             labelNames.add("core");
 
             String collection = 
labelValues.get(labelNames.indexOf("collection"));
@@ -167,14 +177,13 @@ public abstract class SolrScraper implements Closeable {
             labelValues.add(collection + "_" + shard + "_" + replica);
           }
 
-          samples.addSamplesIfNotPresent(name, new 
Collector.MetricFamilySamples(
+          samples.addSamplesIfNotPresent(
               name,
-              Collector.Type.valueOf(type),
-              help,
-              new ArrayList<>()));
+              new Collector.MetricFamilySamples(
+                  name, Collector.Type.valueOf(type), help, new 
ArrayList<>()));
 
-          samples.addSampleIfMetricExists(name, new 
Collector.MetricFamilySamples.Sample(
-              name, labelNames, labelValues, value));
+          samples.addSampleIfMetricExists(
+              name, new Collector.MetricFamilySamples.Sample(name, labelNames, 
labelValues, value));
         }
       } catch (JsonQueryException e) {
         log.error("Error apply JSON query={} to result", jsonQuery, e);
@@ -184,5 +193,4 @@ public abstract class SolrScraper implements Closeable {
 
     return samples;
   }
-
 }
diff --git 
a/solr/prometheus-exporter/src/java/org/apache/solr/prometheus/scraper/SolrStandaloneScraper.java
 
b/solr/prometheus-exporter/src/java/org/apache/solr/prometheus/scraper/SolrStandaloneScraper.java
index 4bd8370..7c87407 100644
--- 
a/solr/prometheus-exporter/src/java/org/apache/solr/prometheus/scraper/SolrStandaloneScraper.java
+++ 
b/solr/prometheus-exporter/src/java/org/apache/solr/prometheus/scraper/SolrStandaloneScraper.java
@@ -16,6 +16,7 @@
  */
 package org.apache.solr.prometheus.scraper;
 
+import com.fasterxml.jackson.databind.JsonNode;
 import java.io.IOException;
 import java.util.Collections;
 import java.util.HashMap;
@@ -23,8 +24,6 @@ import java.util.HashSet;
 import java.util.Map;
 import java.util.Set;
 import java.util.concurrent.ExecutorService;
-
-import com.fasterxml.jackson.databind.JsonNode;
 import org.apache.solr.client.solrj.SolrServerException;
 import org.apache.solr.client.solrj.impl.HttpSolrClient;
 import org.apache.solr.client.solrj.request.CoreAdminRequest;
@@ -45,13 +44,15 @@ public class SolrStandaloneScraper extends SolrScraper {
 
   @Override
   public Map<String, MetricSamples> pingAllCores(MetricsQuery query) throws 
IOException {
-    return sendRequestsInParallel(getCores(), core -> {
-      try {
-        return request(solrClient, query.withCore(core));
-      } catch (IOException e) {
-        throw new RuntimeException(e);
-      }
-    });
+    return sendRequestsInParallel(
+        getCores(),
+        core -> {
+          try {
+            return request(solrClient, query.withCore(core));
+          } catch (IOException e) {
+            throw new RuntimeException(e);
+          }
+        });
   }
 
   @Override
@@ -90,7 +91,8 @@ public class SolrStandaloneScraper extends SolrScraper {
       throw new IOException("Failed to get cores", e);
     }
 
-    JsonNode statusJsonNode = OBJECT_MAPPER.readTree((String) 
coreAdminResponse.get("response")).get("status");
+    JsonNode statusJsonNode =
+        OBJECT_MAPPER.readTree((String) 
coreAdminResponse.get("response")).get("status");
 
     for (JsonNode jsonNode : statusJsonNode) {
       cores.add(jsonNode.get("name").textValue());
@@ -103,5 +105,4 @@ public class SolrStandaloneScraper extends SolrScraper {
   public void close() {
     IOUtils.closeQuietly(solrClient);
   }
-
 }
diff --git 
a/solr/prometheus-exporter/src/java/org/apache/solr/prometheus/scraper/package-info.java
 
b/solr/prometheus-exporter/src/java/org/apache/solr/prometheus/scraper/package-info.java
index a1e0366..22683e3 100644
--- 
a/solr/prometheus-exporter/src/java/org/apache/solr/prometheus/scraper/package-info.java
+++ 
b/solr/prometheus-exporter/src/java/org/apache/solr/prometheus/scraper/package-info.java
@@ -15,7 +15,5 @@
  * limitations under the License.
  */
 
-/**
- * Send the raw requests to Solr endpoints.
- */
+/** Send the raw requests to Solr endpoints. */
 package org.apache.solr.prometheus.scraper;
diff --git 
a/solr/prometheus-exporter/src/test/org/apache/solr/prometheus/PrometheusExporterTestBase.java
 
b/solr/prometheus-exporter/src/test/org/apache/solr/prometheus/PrometheusExporterTestBase.java
index 9333125..5bfbca1 100644
--- 
a/solr/prometheus-exporter/src/test/org/apache/solr/prometheus/PrometheusExporterTestBase.java
+++ 
b/solr/prometheus-exporter/src/test/org/apache/solr/prometheus/PrometheusExporterTestBase.java
@@ -18,7 +18,6 @@
 package org.apache.solr.prometheus;
 
 import java.util.Map;
-
 import org.apache.solr.client.solrj.request.CollectionAdminRequest;
 import org.apache.solr.cloud.AbstractDistribZkTestBase;
 import org.apache.solr.cloud.SolrCloudTestCase;
@@ -35,17 +34,18 @@ public class PrometheusExporterTestBase extends 
SolrCloudTestCase {
   public static final int NUM_NODES = NUM_SHARDS * NUM_REPLICAS;
   public static final int TIMEOUT = 60;
 
-  public static final Map<String, Double> FACET_VALUES = Map.of(
-      "electronics", 14.0,
-      "currency", 4.0,
-      "memory", 3.0,
-      "and", 2.0,
-      "card", 2.0,
-      "connector", 2.0,
-      "drive", 2.0,
-      "graphics", 2.0,
-      "hard", 2.0,
-      "search", 2.0);
+  public static final Map<String, Double> FACET_VALUES =
+      Map.of(
+          "electronics", 14.0,
+          "currency", 4.0,
+          "memory", 3.0,
+          "and", 2.0,
+          "card", 2.0,
+          "connector", 2.0,
+          "drive", 2.0,
+          "graphics", 2.0,
+          "hard", 2.0,
+          "search", 2.0);
 
   @Override
   public void setUp() throws Exception {
@@ -60,19 +60,14 @@ public class PrometheusExporterTestBase extends 
SolrCloudTestCase {
   @BeforeClass
   public static void setupCluster() throws Exception {
     System.setProperty("metricsEnabled", "true");
-    configureCluster(NUM_NODES)
-        .addConfig(CONF_NAME, getFile(CONF_DIR).toPath())
-        .configure();
+    configureCluster(NUM_NODES).addConfig(CONF_NAME, 
getFile(CONF_DIR).toPath()).configure();
 
-    CollectionAdminRequest
-        .createCollection(COLLECTION, CONF_NAME, NUM_SHARDS, NUM_REPLICAS)
+    CollectionAdminRequest.createCollection(COLLECTION, CONF_NAME, NUM_SHARDS, 
NUM_REPLICAS)
         .process(cluster.getSolrClient());
 
-    AbstractDistribZkTestBase
-        .waitForRecoveriesToFinish(COLLECTION, 
cluster.getSolrClient().getZkStateReader(), true, true, TIMEOUT);
+    AbstractDistribZkTestBase.waitForRecoveriesToFinish(
+        COLLECTION, cluster.getSolrClient().getZkStateReader(), true, true, 
TIMEOUT);
 
     Helpers.indexAllDocs(cluster.getSolrClient());
   }
-
-
 }
diff --git 
a/solr/prometheus-exporter/src/test/org/apache/solr/prometheus/collector/MetricSamplesTest.java
 
b/solr/prometheus-exporter/src/test/org/apache/solr/prometheus/collector/MetricSamplesTest.java
index e33e75d..7e92547 100644
--- 
a/solr/prometheus-exporter/src/test/org/apache/solr/prometheus/collector/MetricSamplesTest.java
+++ 
b/solr/prometheus-exporter/src/test/org/apache/solr/prometheus/collector/MetricSamplesTest.java
@@ -17,33 +17,29 @@
 
 package org.apache.solr.prometheus.collector;
 
+import static org.junit.Assert.assertEquals;
+
+import io.prometheus.client.Collector;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collections;
 import java.util.HashMap;
 import java.util.List;
-import java.util.Locale;
 import java.util.Map;
 import java.util.stream.Collectors;
-
-import io.prometheus.client.Collector;
 import org.junit.Test;
 
-import static org.junit.Assert.assertEquals;
-
 public class MetricSamplesTest {
 
   private Collector.MetricFamilySamples.Sample sample(String name, Double 
value) {
-    return new Collector.MetricFamilySamples.Sample(name, 
Collections.emptyList(), Collections.emptyList(), value);
+    return new Collector.MetricFamilySamples.Sample(
+        name, Collections.emptyList(), Collections.emptyList(), value);
   }
 
-  private Collector.MetricFamilySamples samples(String metricName, 
Collector.Type type, Collector.MetricFamilySamples.Sample...samples) {
+  private Collector.MetricFamilySamples samples(
+      String metricName, Collector.Type type, 
Collector.MetricFamilySamples.Sample... samples) {
     return new Collector.MetricFamilySamples(
-        metricName,
-        type,
-        "help",
-        new ArrayList<>(Arrays.asList(samples))
-    );
+        metricName, type, "help", new ArrayList<>(Arrays.asList(samples)));
   }
 
   private void validateMetricSamples(
@@ -51,20 +47,25 @@ public class MetricSamplesTest {
       String metricName,
       List<Double> expectedValues) {
 
-    Collector.MetricFamilySamples test1 = allMetrics.stream()
-        .filter(s -> s.name.equals(metricName))
-        .findFirst()
-        .orElseThrow(() -> new RuntimeException(String.format(Locale.ROOT, 
"Unable to find item %s", metricName)));
+    Collector.MetricFamilySamples test1 =
+        allMetrics.stream()
+            .filter(s -> s.name.equals(metricName))
+            .findFirst()
+            .orElseThrow(() -> new RuntimeException("Unable to find item " + 
metricName));
 
-    assertEquals(expectedValues, test1.samples.stream().map(s -> 
s.value).collect(Collectors.toList()));
+    assertEquals(
+        expectedValues, test1.samples.stream().map(s -> 
s.value).collect(Collectors.toList()));
   }
 
   @Test
   public void asList() {
-    MetricSamples samples = new MetricSamples(Map.of(
-        "test1", samples("test1", Collector.Type.GAUGE, sample("test1", 1.0), 
sample("test1", 2.0)),
-        "test2", samples("test2", Collector.Type.GAUGE, sample("test2", 1.0))
-    ));
+    MetricSamples samples =
+        new MetricSamples(
+            Map.of(
+                "test1",
+                    samples(
+                        "test1", Collector.Type.GAUGE, sample("test1", 1.0), 
sample("test1", 2.0)),
+                "test2", samples("test2", Collector.Type.GAUGE, 
sample("test2", 1.0))));
 
     List<Collector.MetricFamilySamples> output = samples.asList();
 
@@ -76,15 +77,22 @@ public class MetricSamplesTest {
 
   @Test
   public void addAll() {
-    MetricSamples lhs = new MetricSamples(new HashMap<>(Map.of(
-        "same", samples("same", Collector.Type.GAUGE, sample("same", 1.0), 
sample("same", 2.0)),
-        "diff1", samples("diff1", Collector.Type.GAUGE, sample("diff1", 1.0))
-    )));
-
-    MetricSamples rhs = new MetricSamples(Map.of(
-        "same", samples("test1", Collector.Type.GAUGE, sample("test1", 3.0), 
sample("test1", 4.0)),
-        "diff2", samples("diff2", Collector.Type.GAUGE, sample("diff2", 1.0))
-    ));
+    MetricSamples lhs =
+        new MetricSamples(
+            new HashMap<>(
+                Map.of(
+                    "same",
+                        samples(
+                            "same", Collector.Type.GAUGE, sample("same", 1.0), 
sample("same", 2.0)),
+                    "diff1", samples("diff1", Collector.Type.GAUGE, 
sample("diff1", 1.0)))));
+
+    MetricSamples rhs =
+        new MetricSamples(
+            Map.of(
+                "same",
+                    samples(
+                        "test1", Collector.Type.GAUGE, sample("test1", 3.0), 
sample("test1", 4.0)),
+                "diff2", samples("diff2", Collector.Type.GAUGE, 
sample("diff2", 1.0))));
     lhs.addAll(rhs);
 
     List<Collector.MetricFamilySamples> output = lhs.asList();
@@ -93,5 +101,4 @@ public class MetricSamplesTest {
     validateMetricSamples(output, "diff1", Collections.singletonList(1.0));
     validateMetricSamples(output, "diff2", Collections.singletonList(1.0));
   }
-
-}
\ No newline at end of file
+}
diff --git 
a/solr/prometheus-exporter/src/test/org/apache/solr/prometheus/exporter/MetricsQueryTemplateTest.java
 
b/solr/prometheus-exporter/src/test/org/apache/solr/prometheus/exporter/MetricsQueryTemplateTest.java
index 5158715..c315a81 100644
--- 
a/solr/prometheus-exporter/src/test/org/apache/solr/prometheus/exporter/MetricsQueryTemplateTest.java
+++ 
b/solr/prometheus-exporter/src/test/org/apache/solr/prometheus/exporter/MetricsQueryTemplateTest.java
@@ -17,14 +17,18 @@
 
 package org.apache.solr.prometheus.exporter;
 
-import javax.xml.parsers.DocumentBuilderFactory;
-import javax.xml.xpath.XPathConstants;
-import java.util.List;
-import java.util.Optional;
-import java.util.regex.Matcher;
+import static 
org.apache.solr.prometheus.exporter.MetricsConfiguration.xpathFactory;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
 
 import com.fasterxml.jackson.databind.JsonNode;
 import com.fasterxml.jackson.databind.ObjectMapper;
+import java.util.List;
+import java.util.Optional;
+import java.util.regex.Matcher;
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.xpath.XPathConstants;
 import net.thisptr.jackson.jq.JsonQuery;
 import org.apache.solr.SolrTestCaseJ4;
 import org.apache.solr.prometheus.utils.Helpers;
@@ -32,11 +36,6 @@ import org.junit.Test;
 import org.w3c.dom.Document;
 import org.w3c.dom.NodeList;
 
-import static 
org.apache.solr.prometheus.exporter.MetricsConfiguration.xpathFactory;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
-
 public class MetricsQueryTemplateTest {
   @Test
   public void testTemplatesApplyDuringInit() throws Exception {
@@ -45,7 +44,8 @@ public class MetricsQueryTemplateTest {
     List<JsonQuery> jsonQueries = metrics.get(0).getJsonQueries();
     final int expectedJqQueriesInConfig = 6;
     assertEquals(expectedJqQueriesInConfig, jsonQueries.size());
-    // JsonQuery does not implement an equals so use the string expression 
with whitespace collapsed to a single space
+    // JsonQuery does not implement an equals so use the string expression 
with whitespace collapsed
+    // to a single space
     for (int q = 0; q < jsonQueries.size(); q += 2) {
       String expected = jsonQueries.get(q + 1).toString().replaceAll("\\s+", " 
").trim();
       String actual = jsonQueries.get(q).toString().replaceAll("\\s+", " 
").trim();
@@ -55,18 +55,20 @@ public class MetricsQueryTemplateTest {
 
   @Test
   public void testTemplateRegexMatchAndApply() {
-    final String[] matches = new String[]{
-        "$jq:jvm-item(memory_bytes,select(.key | 
startswith(\"memory.total.\")),object.value,\n\nGAUGE)",
-        "$jq:node( client_errors_total,     select(.key | 
endswith(\".clientErrors\")), count )",
-        "$jq:node(time_seconds_total,\nselect(.key == 
\"UPDATE.updateHandler.autoCommits\"), ($object.value / 1000))   ",
-        "$jq:core-query( 1minRate, select(.key | 
endswith(\".distrib.requestTimes\")) )"
-    };
-    final String[] expectedApply = new String[]{
-        "memory_bytes, select(.key | startswith(\"memory.total.\")), 
$object.value, GAUGE",
-        "client_errors_total, select(.key | endswith(\".clientErrors\")), 
$object.value.count, COUNTER",
-        "time_seconds_total, select(.key == 
\"UPDATE.updateHandler.autoCommits\"), ($object.value / 1000), COUNTER",
-        "1minRate, select(.key | endswith(\".distrib.requestTimes\")), 
$object.value[\"1minRate\"], COUNTER"
-    };
+    final String[] matches =
+        new String[] {
+          "$jq:jvm-item(memory_bytes,select(.key | 
startswith(\"memory.total.\")),object.value,\n\nGAUGE)",
+          "$jq:node( client_errors_total,     select(.key | 
endswith(\".clientErrors\")), count )",
+          "$jq:node(time_seconds_total,\nselect(.key == 
\"UPDATE.updateHandler.autoCommits\"), ($object.value / 1000))   ",
+          "$jq:core-query( 1minRate, select(.key | 
endswith(\".distrib.requestTimes\")) )"
+        };
+    final String[] expectedApply =
+        new String[] {
+          "memory_bytes, select(.key | startswith(\"memory.total.\")), 
$object.value, GAUGE",
+          "client_errors_total, select(.key | endswith(\".clientErrors\")), 
$object.value.count, COUNTER",
+          "time_seconds_total, select(.key == 
\"UPDATE.updateHandler.autoCommits\"), ($object.value / 1000), COUNTER",
+          "1minRate, select(.key | endswith(\".distrib.requestTimes\")), 
$object.value[\"1minRate\"], COUNTER"
+        };
 
     MetricsQueryTemplate template =
         new MetricsQueryTemplate("test", "{UNIQUE}, {KEYSELECTOR}, {METRIC}, 
{TYPE}", "COUNTER");
@@ -82,35 +84,42 @@ public class MetricsQueryTemplateTest {
   @Test
   public void testQueryMetricTemplate() throws Exception {
     Document config =
-        
DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(SolrTestCaseJ4.getFile("conf/test-config-with-templates.xml"));
+        DocumentBuilderFactory.newInstance()
+            .newDocumentBuilder()
+            
.parse(SolrTestCaseJ4.getFile("conf/test-config-with-templates.xml"));
     NodeList jqTemplates =
-        (NodeList) 
(xpathFactory.newXPath()).evaluate("/config/jq-templates/template", config, 
XPathConstants.NODESET);
+        (NodeList)
+            (xpathFactory.newXPath())
+                .evaluate("/config/jq-templates/template", config, 
XPathConstants.NODESET);
     assertNotNull(jqTemplates);
     assertTrue(jqTemplates.getLength() > 0);
-    MetricsQueryTemplate coreQueryTemplate = 
MetricsConfiguration.loadJqTemplates(jqTemplates).get("core-query");
+    MetricsQueryTemplate coreQueryTemplate =
+        MetricsConfiguration.loadJqTemplates(jqTemplates).get("core-query");
     assertNotNull(coreQueryTemplate);
 
     ObjectMapper objectMapper = new ObjectMapper();
     JsonNode parsedMetrics = 
objectMapper.readTree(SolrTestCaseJ4.getFile("query-metrics.json"));
-    final String[] queryMetrics = new String[]{
-        "$jq:core-query(1minRate, select(.key | 
endswith(\".distrib.requestTimes\")), 1minRate)",
-        "$jq:core-query(p75_ms, select(.key | 
endswith(\".distrib.requestTimes\")), p75_ms)",
-        "$jq:core-query(mean_rate, select(.key | 
endswith(\".distrib.requestTimes\")), meanRate)",
-        "$jq:core-query(local_5minRate, select(.key | 
endswith(\".local.requestTimes\")), 5minRate)",
-        "$jq:core-query(local_median_ms, select(.key | 
endswith(\".local.requestTimes\")), median_ms)",
-        "$jq:core-query(local_p95_ms, select(.key | 
endswith(\".local.requestTimes\")), p95_ms)",
-        "$jq:core-query(local_count, select(.key | 
endswith(\".local.requestTimes\")), count, COUNTER)"
-    };
+    final String[] queryMetrics =
+        new String[] {
+          "$jq:core-query(1minRate, select(.key | 
endswith(\".distrib.requestTimes\")), 1minRate)",
+          "$jq:core-query(p75_ms, select(.key | 
endswith(\".distrib.requestTimes\")), p75_ms)",
+          "$jq:core-query(mean_rate, select(.key | 
endswith(\".distrib.requestTimes\")), meanRate)",
+          "$jq:core-query(local_5minRate, select(.key | 
endswith(\".local.requestTimes\")), 5minRate)",
+          "$jq:core-query(local_median_ms, select(.key | 
endswith(\".local.requestTimes\")), median_ms)",
+          "$jq:core-query(local_p95_ms, select(.key | 
endswith(\".local.requestTimes\")), p95_ms)",
+          "$jq:core-query(local_count, select(.key | 
endswith(\".local.requestTimes\")), count, COUNTER)"
+        };
 
-    final double[] expectedMetrics = new double[]{
-        5.156897804421665,
-        1.31788,
-        0.0031956674240800156,
-        0.030666407244305586,
-        0.079579,
-        0.105268,
-        4712
-    };
+    final double[] expectedMetrics =
+        new double[] {
+          5.156897804421665,
+          1.31788,
+          0.0031956674240800156,
+          0.030666407244305586,
+          0.079579,
+          0.105268,
+          4712
+        };
 
     for (int m = 0; m < queryMetrics.length; m++) {
       Optional<Matcher> maybe = MetricsQueryTemplate.matches(queryMetrics[m]);
diff --git 
a/solr/prometheus-exporter/src/test/org/apache/solr/prometheus/exporter/SolrExporterIntegrationTest.java
 
b/solr/prometheus-exporter/src/test/org/apache/solr/prometheus/exporter/SolrExporterIntegrationTest.java
index fa65ec0..11c9e16 100644
--- 
a/solr/prometheus-exporter/src/test/org/apache/solr/prometheus/exporter/SolrExporterIntegrationTest.java
+++ 
b/solr/prometheus-exporter/src/test/org/apache/solr/prometheus/exporter/SolrExporterIntegrationTest.java
@@ -18,12 +18,11 @@ package org.apache.solr.prometheus.exporter;
 
 import java.util.Map;
 import java.util.stream.Collectors;
-
 import org.apache.lucene.util.LuceneTestCase.Slow;
 import org.junit.Before;
 import org.junit.Test;
 
-//@org.apache.lucene.util.LuceneTestCase.AwaitsFix(bugUrl="https://issues.apache.org/jira/browse/SOLR-13786";)
+// 
@org.apache.lucene.util.LuceneTestCase.AwaitsFix(bugUrl="https://issues.apache.org/jira/browse/SOLR-13786";)
 @Slow
 public class SolrExporterIntegrationTest extends SolrExporterTestBase {
 
@@ -31,12 +30,13 @@ public class SolrExporterIntegrationTest extends 
SolrExporterTestBase {
   @Before
   public void setUp() throws Exception {
     super.setUp();
-    
startMetricsExporterWithConfiguration("conf/prometheus-solr-exporter-integration-test-config.xml");
+    startMetricsExporterWithConfiguration(
+        "conf/prometheus-solr-exporter-integration-test-config.xml");
   }
 
-  private Map<String, Double> metricsWithName(Map<String, Double> allMetrics, 
String desiredMetricName) {
-    return allMetrics.entrySet()
-        .stream()
+  private Map<String, Double> metricsWithName(
+      Map<String, Double> allMetrics, String desiredMetricName) {
+    return allMetrics.entrySet().stream()
         .filter(entry -> entry.getKey().startsWith(desiredMetricName))
         .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue));
   }
@@ -54,7 +54,8 @@ public class SolrExporterIntegrationTest extends 
SolrExporterTestBase {
 
   @Test
   public void solrExporterDurationMetric() throws Exception {
-    Map<String, Double> durationHistogram = metricsWithName(getAllMetrics(), 
"solr_exporter_duration");
+    Map<String, Double> durationHistogram =
+        metricsWithName(getAllMetrics(), "solr_exporter_duration");
 
     assertTrue(durationHistogram.get("solr_exporter_duration_seconds_count") > 
0);
     assertTrue(durationHistogram.get("solr_exporter_duration_seconds_sum") > 
0);
@@ -65,13 +66,12 @@ public class SolrExporterIntegrationTest extends 
SolrExporterTestBase {
 
   @Test
   public void jvmMetrics() throws Exception {
-    Map<String, Double> jvmMetrics = metricsWithName(
-        getAllMetrics(), "solr_metrics_jvm_threads");
+    Map<String, Double> jvmMetrics = metricsWithName(getAllMetrics(), 
"solr_metrics_jvm_threads");
 
     // exact set of metrics can vary based on JVM impl (ie: windows)
     // but there should always be at least one per known thread state per 
node...
-    assertTrue(jvmMetrics.toString(),
-               (NUM_NODES * Thread.State.values().length) < jvmMetrics.size());
+    assertTrue(
+        jvmMetrics.toString(), (NUM_NODES * Thread.State.values().length) < 
jvmMetrics.size());
   }
 
   @Test
@@ -83,21 +83,22 @@ public class SolrExporterIntegrationTest extends 
SolrExporterTestBase {
   @Test
   public void collectionMetrics() throws Exception {
     Map<String, Double> allMetrics = getAllMetrics();
-    Map<String, Double> liveNodeMetrics = metricsWithName(allMetrics, 
"solr_collections_live_nodes");
+    Map<String, Double> liveNodeMetrics =
+        metricsWithName(allMetrics, "solr_collections_live_nodes");
 
     assertEquals(1, liveNodeMetrics.size());
-    liveNodeMetrics.forEach((metric, value) -> {
-      assertEquals((double) NUM_NODES, value, 0.001);
-    });
+    liveNodeMetrics.forEach(
+        (metric, value) -> {
+          assertEquals((double) NUM_NODES, value, 0.001);
+        });
 
-    Map<String, Double> shardLeaderMetrics = metricsWithName(allMetrics, 
"solr_collections_shard_leader");
+    Map<String, Double> shardLeaderMetrics =
+        metricsWithName(allMetrics, "solr_collections_shard_leader");
 
     assertEquals(NUM_NODES, shardLeaderMetrics.size());
 
-    double totalLeaderCount = shardLeaderMetrics.values()
-        .stream()
-        .mapToDouble(Double::doubleValue)
-        .sum();
+    double totalLeaderCount =
+        
shardLeaderMetrics.values().stream().mapToDouble(Double::doubleValue).sum();
 
     assertEquals(NUM_SHARDS, totalLeaderCount, 0.001);
   }
diff --git 
a/solr/prometheus-exporter/src/test/org/apache/solr/prometheus/exporter/SolrExporterTestBase.java
 
b/solr/prometheus-exporter/src/test/org/apache/solr/prometheus/exporter/SolrExporterTestBase.java
index aac2840..0e648fe 100644
--- 
a/solr/prometheus-exporter/src/test/org/apache/solr/prometheus/exporter/SolrExporterTestBase.java
+++ 
b/solr/prometheus-exporter/src/test/org/apache/solr/prometheus/exporter/SolrExporterTestBase.java
@@ -16,6 +16,7 @@
  */
 package org.apache.solr.prometheus.exporter;
 
+import com.carrotsearch.randomizedtesting.annotations.ThreadLeakScope;
 import java.io.BufferedReader;
 import java.io.IOException;
 import java.io.InputStreamReader;
@@ -25,8 +26,6 @@ import java.net.URISyntaxException;
 import java.nio.charset.StandardCharsets;
 import java.util.HashMap;
 import java.util.Map;
-
-import com.carrotsearch.randomizedtesting.annotations.ThreadLeakScope;
 import org.apache.commons.io.IOUtils;
 import org.apache.http.HttpStatus;
 import org.apache.http.client.methods.CloseableHttpResponse;
@@ -38,9 +37,7 @@ import org.apache.solr.prometheus.PrometheusExporterTestBase;
 import org.apache.solr.prometheus.utils.Helpers;
 import org.junit.After;
 
-/**
- * Test base class.
- */
+/** Test base class. */
 @ThreadLeakScope(ThreadLeakScope.Scope.NONE)
 public class SolrExporterTestBase extends PrometheusExporterTestBase {
 
@@ -58,17 +55,19 @@ public class SolrExporterTestBase extends 
PrometheusExporterTestBase {
     super.tearDown();
   }
 
-  protected void startMetricsExporterWithConfiguration(String 
scrapeConfiguration) throws Exception {
+  protected void startMetricsExporterWithConfiguration(String 
scrapeConfiguration)
+      throws Exception {
     try (ServerSocket socket = new ServerSocket(0)) {
       promtheusExporterPort = socket.getLocalPort();
     }
 
-    solrExporter = new SolrExporter(
-        promtheusExporterPort,
-        25,
-        10,
-        
SolrScrapeConfiguration.solrCloud(cluster.getZkServer().getZkAddress()),
-        Helpers.loadConfiguration(scrapeConfiguration));
+    solrExporter =
+        new SolrExporter(
+            promtheusExporterPort,
+            25,
+            10,
+            
SolrScrapeConfiguration.solrCloud(cluster.getZkServer().getZkAddress()),
+            Helpers.loadConfiguration(scrapeConfiguration));
 
     solrExporter.start();
     httpClient = HttpClients.createDefault();
@@ -97,7 +96,9 @@ public class SolrExporterTestBase extends 
PrometheusExporterTestBase {
 
     try (CloseableHttpResponse response = httpClient.execute(request)) {
       assertEquals(HttpStatus.SC_OK, response.getStatusLine().getStatusCode());
-      try (BufferedReader reader = new BufferedReader(new 
InputStreamReader(response.getEntity().getContent(), StandardCharsets.UTF_8))) {
+      try (BufferedReader reader =
+          new BufferedReader(
+              new InputStreamReader(response.getEntity().getContent(), 
StandardCharsets.UTF_8))) {
         String currentLine;
 
         while ((currentLine = reader.readLine()) != null) {
@@ -115,5 +116,4 @@ public class SolrExporterTestBase extends 
PrometheusExporterTestBase {
 
     return metrics;
   }
-
 }
diff --git 
a/solr/prometheus-exporter/src/test/org/apache/solr/prometheus/scraper/SolrCloudScraperTest.java
 
b/solr/prometheus-exporter/src/test/org/apache/solr/prometheus/scraper/SolrCloudScraperTest.java
index 68618eb..abeaf99 100644
--- 
a/solr/prometheus-exporter/src/test/org/apache/solr/prometheus/scraper/SolrCloudScraperTest.java
+++ 
b/solr/prometheus-exporter/src/test/org/apache/solr/prometheus/scraper/SolrCloudScraperTest.java
@@ -18,6 +18,7 @@
 package org.apache.solr.prometheus.scraper;
 
 import com.carrotsearch.randomizedtesting.annotations.ThreadLeakLingering;
+import io.prometheus.client.Collector;
 import java.util.Arrays;
 import java.util.Collection;
 import java.util.Collections;
@@ -27,8 +28,6 @@ import java.util.Optional;
 import java.util.Set;
 import java.util.concurrent.ExecutorService;
 import java.util.stream.Collectors;
-
-import io.prometheus.client.Collector;
 import org.apache.solr.client.solrj.impl.CloudSolrClient;
 import org.apache.solr.client.solrj.impl.NoOpResponseParser;
 import org.apache.solr.common.cloud.ClusterState;
@@ -37,13 +36,13 @@ import org.apache.solr.common.cloud.Replica;
 import org.apache.solr.common.cloud.Slice;
 import org.apache.solr.common.util.ExecutorUtil;
 import org.apache.solr.common.util.IOUtils;
+import org.apache.solr.common.util.SolrNamedThreadFactory;
 import org.apache.solr.prometheus.PrometheusExporterTestBase;
 import org.apache.solr.prometheus.collector.MetricSamples;
 import org.apache.solr.prometheus.exporter.MetricsConfiguration;
 import org.apache.solr.prometheus.exporter.PrometheusExporterSettings;
 import org.apache.solr.prometheus.exporter.SolrClientFactory;
 import org.apache.solr.prometheus.utils.Helpers;
-import org.apache.solr.common.util.SolrNamedThreadFactory;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
@@ -56,9 +55,10 @@ public class SolrCloudScraperTest extends 
PrometheusExporterTestBase {
   private ExecutorService executor;
 
   private SolrCloudScraper createSolrCloudScraper() {
-    CloudSolrClient solrClient = new CloudSolrClient.Builder(
-        Collections.singletonList(cluster.getZkServer().getZkAddress()), 
Optional.empty())
-        .build();
+    CloudSolrClient solrClient =
+        new CloudSolrClient.Builder(
+                
Collections.singletonList(cluster.getZkServer().getZkAddress()), 
Optional.empty())
+            .build();
 
     NoOpResponseParser responseParser = new NoOpResponseParser();
     responseParser.setWriterType("json");
@@ -84,8 +84,11 @@ public class SolrCloudScraperTest extends 
PrometheusExporterTestBase {
   @Before
   public void setUp() throws Exception {
     super.setUp();
-    executor = ExecutorUtil.newMDCAwareFixedThreadPool(25, new 
SolrNamedThreadFactory("solr-cloud-scraper-tests"));
-    configuration = 
Helpers.loadConfiguration("conf/prometheus-solr-exporter-scraper-test-config.xml");
+    executor =
+        ExecutorUtil.newMDCAwareFixedThreadPool(
+            25, new SolrNamedThreadFactory("solr-cloud-scraper-tests"));
+    configuration =
+        
Helpers.loadConfiguration("conf/prometheus-solr-exporter-scraper-test-config.xml");
     solrCloudScraper = createSolrCloudScraper();
   }
 
@@ -102,34 +105,38 @@ public class SolrCloudScraperTest extends 
PrometheusExporterTestBase {
 
   @Test
   public void pingCollections() throws Exception {
-    Map<String, MetricSamples> collectionMetrics = 
solrCloudScraper.pingAllCollections(
-        configuration.getPingConfiguration().get(0));
+    Map<String, MetricSamples> collectionMetrics =
+        
solrCloudScraper.pingAllCollections(configuration.getPingConfiguration().get(0));
 
     assertEquals(1, collectionMetrics.size());
     
assertTrue(collectionMetrics.containsKey(PrometheusExporterTestBase.COLLECTION));
 
-    List<Collector.MetricFamilySamples> collectionSamples = 
collectionMetrics.get(PrometheusExporterTestBase.COLLECTION).asList();
+    List<Collector.MetricFamilySamples> collectionSamples =
+        collectionMetrics.get(PrometheusExporterTestBase.COLLECTION).asList();
     assertEquals(1, collectionSamples.size());
     Collector.MetricFamilySamples collection1Metrics = 
collectionSamples.get(0);
     assertEquals("solr_ping", collection1Metrics.name);
     assertEquals(1, collection1Metrics.samples.size());
 
     assertEquals(1.0, collection1Metrics.samples.get(0).value, 0.001);
-    assertEquals(Collections.singletonList("zk_host"), 
collection1Metrics.samples.get(0).labelNames);
-    
assertEquals(Collections.singletonList(cluster.getZkServer().getZkAddress()), 
collection1Metrics.samples.get(0).labelValues);
+    assertEquals(
+        Collections.singletonList("zk_host"), 
collection1Metrics.samples.get(0).labelNames);
+    assertEquals(
+        Collections.singletonList(cluster.getZkServer().getZkAddress()),
+        collection1Metrics.samples.get(0).labelValues);
   }
 
   @Test
   public void pingCores() throws Exception {
-    Map<String, MetricSamples> allCoreMetrics = solrCloudScraper.pingAllCores(
-        configuration.getPingConfiguration().get(0));
+    Map<String, MetricSamples> allCoreMetrics =
+        
solrCloudScraper.pingAllCores(configuration.getPingConfiguration().get(0));
 
     Map<String, DocCollection> collectionStates = 
getClusterState().getCollectionsMap();
 
-    long coreCount = collectionStates.entrySet()
-        .stream()
-        .mapToInt(entry -> entry.getValue().getReplicas().size())
-        .sum();
+    long coreCount =
+        collectionStates.entrySet().stream()
+            .mapToInt(entry -> entry.getValue().getReplicas().size())
+            .sum();
 
     assertEquals(coreCount, allCoreMetrics.size());
 
@@ -146,18 +153,19 @@ public class SolrCloudScraperTest extends 
PrometheusExporterTestBase {
 
   @Test
   public void queryCollections() throws Exception {
-    List<Collector.MetricFamilySamples> collection1Metrics = 
solrCloudScraper.collections(
-        configuration.getCollectionsConfiguration().get(0)).asList();
+    List<Collector.MetricFamilySamples> collection1Metrics =
+        
solrCloudScraper.collections(configuration.getCollectionsConfiguration().get(0)).asList();
 
     assertEquals(2, collection1Metrics.size());
     Collector.MetricFamilySamples liveNodeSamples = collection1Metrics.get(0);
     assertEquals("solr_collections_live_nodes", liveNodeSamples.name);
-    assertEquals("See following URL: 
https://solr.apache.org/guide/collections-api.html#clusterstatus";, 
liveNodeSamples.help);
+    assertEquals(
+        "See following URL: 
https://solr.apache.org/guide/collections-api.html#clusterstatus";,
+        liveNodeSamples.help);
     assertEquals(1, liveNodeSamples.samples.size());
 
     assertEquals(
-        getClusterState().getLiveNodes().size(),
-        liveNodeSamples.samples.get(0).value, 0.001);
+        getClusterState().getLiveNodes().size(), 
liveNodeSamples.samples.get(0).value, 0.001);
 
     Collector.MetricFamilySamples shardLeaderSamples = 
collection1Metrics.get(1);
 
@@ -167,26 +175,32 @@ public class SolrCloudScraperTest extends 
PrometheusExporterTestBase {
 
     Collection<Slice> slices = getCollectionState().getSlices();
 
-    Set<String> leaderCoreNames = slices.stream()
-        .map(slice -> collection.getLeader(slice.getName()).getCoreName())
-        .collect(Collectors.toSet());
+    Set<String> leaderCoreNames =
+        slices.stream()
+            .map(slice -> collection.getLeader(slice.getName()).getCoreName())
+            .collect(Collectors.toSet());
 
     for (Collector.MetricFamilySamples.Sample sample : 
shardLeaderSamples.samples) {
       assertEquals("solr_collections_shard_leader", sample.name);
-      assertEquals(Arrays.asList("collection", "shard", "replica", "core", 
"type", "zk_host"), sample.labelNames);
-      assertEquals(leaderCoreNames.contains(sample.labelValues.get(3)) ? 1.0 : 
0.0, sample.value, 0.001);
+      assertEquals(
+          Arrays.asList("collection", "shard", "replica", "core", "type", 
"zk_host"),
+          sample.labelNames);
+      assertEquals(
+          leaderCoreNames.contains(sample.labelValues.get(3)) ? 1.0 : 0.0, 
sample.value, 0.001);
     }
   }
 
   @Test
   public void metricsForEachHost() throws Exception {
-    Map<String, MetricSamples> metricsByHost = 
solrCloudScraper.metricsForAllHosts(configuration.getMetricsConfiguration().get(0));
+    Map<String, MetricSamples> metricsByHost =
+        
solrCloudScraper.metricsForAllHosts(configuration.getMetricsConfiguration().get(0));
 
     List<Replica> replicas = getCollectionState().getReplicas();
     assertEquals(replicas.size(), metricsByHost.size());
 
     for (Replica replica : replicas) {
-      List<Collector.MetricFamilySamples> replicaSamples = 
metricsByHost.get(replica.getBaseUrl()).asList();
+      List<Collector.MetricFamilySamples> replicaSamples =
+          metricsByHost.get(replica.getBaseUrl()).asList();
       assertEquals(1, replicaSamples.size());
       assertEquals("solr_metrics_jvm_buffers", replicaSamples.get(0).name);
     }
@@ -194,7 +208,8 @@ public class SolrCloudScraperTest extends 
PrometheusExporterTestBase {
 
   @Test
   public void search() throws Exception {
-    List<Collector.MetricFamilySamples> samples = 
solrCloudScraper.search(configuration.getSearchConfiguration().get(0)).asList();
+    List<Collector.MetricFamilySamples> samples =
+        
solrCloudScraper.search(configuration.getSearchConfiguration().get(0)).asList();
 
     assertEquals(1, samples.size());
 
@@ -206,5 +221,4 @@ public class SolrCloudScraperTest extends 
PrometheusExporterTestBase {
       assertEquals(FACET_VALUES.get(sample.labelValues.get(0)), sample.value, 
0.001);
     }
   }
-
 }
diff --git 
a/solr/prometheus-exporter/src/test/org/apache/solr/prometheus/scraper/SolrStandaloneScraperTest.java
 
b/solr/prometheus-exporter/src/test/org/apache/solr/prometheus/scraper/SolrStandaloneScraperTest.java
index 7ca2d41..7442c44d 100644
--- 
a/solr/prometheus-exporter/src/test/org/apache/solr/prometheus/scraper/SolrStandaloneScraperTest.java
+++ 
b/solr/prometheus-exporter/src/test/org/apache/solr/prometheus/scraper/SolrStandaloneScraperTest.java
@@ -17,24 +17,23 @@
 
 package org.apache.solr.prometheus.scraper;
 
+import io.prometheus.client.Collector;
 import java.io.File;
 import java.io.IOException;
 import java.util.Collections;
 import java.util.List;
 import java.util.Map;
 import java.util.concurrent.ExecutorService;
-
-import io.prometheus.client.Collector;
 import org.apache.commons.io.FileUtils;
 import org.apache.solr.client.solrj.impl.HttpSolrClient;
 import org.apache.solr.client.solrj.impl.NoOpResponseParser;
 import org.apache.solr.common.util.ExecutorUtil;
 import org.apache.solr.common.util.IOUtils;
+import org.apache.solr.common.util.SolrNamedThreadFactory;
 import org.apache.solr.prometheus.PrometheusExporterTestBase;
 import org.apache.solr.prometheus.collector.MetricSamples;
 import org.apache.solr.prometheus.exporter.MetricsConfiguration;
 import org.apache.solr.prometheus.utils.Helpers;
-import org.apache.solr.common.util.SolrNamedThreadFactory;
 import org.apache.solr.util.RestTestBase;
 import org.junit.AfterClass;
 import org.junit.BeforeClass;
@@ -57,15 +56,13 @@ public class SolrStandaloneScraperTest extends RestTestBase 
{
     initCore("solrconfig.xml", "managed-schema");
 
     createJettyAndHarness(
-        tmpSolrHome.getAbsolutePath(),
-        "solrconfig.xml",
-        "managed-schema",
-        "/solr",
-        true,
-        null);
+        tmpSolrHome.getAbsolutePath(), "solrconfig.xml", "managed-schema", 
"/solr", true, null);
 
-    executor = ExecutorUtil.newMDCAwareFixedThreadPool(25, new 
SolrNamedThreadFactory("solr-cloud-scraper-tests"));
-    configuration = 
Helpers.loadConfiguration("conf/prometheus-solr-exporter-scraper-test-config.xml");
+    executor =
+        ExecutorUtil.newMDCAwareFixedThreadPool(
+            25, new SolrNamedThreadFactory("solr-cloud-scraper-tests"));
+    configuration =
+        
Helpers.loadConfiguration("conf/prometheus-solr-exporter-scraper-test-config.xml");
 
     solrClient = getHttpSolrClient(restTestHarness.getAdminURL());
     solrScraper = new SolrStandaloneScraper(solrClient, executor);
@@ -97,16 +94,16 @@ public class SolrStandaloneScraperTest extends RestTestBase 
{
 
   @Test
   public void pingCollections() throws IOException {
-    Map<String, MetricSamples> collectionMetrics = 
solrScraper.pingAllCollections(
-        configuration.getPingConfiguration().get(0));
+    Map<String, MetricSamples> collectionMetrics =
+        
solrScraper.pingAllCollections(configuration.getPingConfiguration().get(0));
 
     assertTrue(collectionMetrics.isEmpty());
   }
 
   @Test
   public void pingCores() throws Exception {
-    Map<String, MetricSamples> allCoreMetrics = solrScraper.pingAllCores(
-        configuration.getPingConfiguration().get(0));
+    Map<String, MetricSamples> allCoreMetrics =
+        solrScraper.pingAllCores(configuration.getPingConfiguration().get(0));
 
     assertEquals(1, allCoreMetrics.size());
 
@@ -117,24 +114,28 @@ public class SolrStandaloneScraperTest extends 
RestTestBase {
     assertEquals(1, samples.samples.size());
     assertEquals(1.0, samples.samples.get(0).value, 0.001);
     assertEquals(Collections.singletonList("base_url"), 
samples.samples.get(0).labelNames);
-    assertEquals(Collections.singletonList(restTestHarness.getAdminURL()), 
samples.samples.get(0).labelValues);
+    assertEquals(
+        Collections.singletonList(restTestHarness.getAdminURL()),
+        samples.samples.get(0).labelValues);
   }
 
   @Test
   public void queryCollections() throws Exception {
-    List<Collector.MetricFamilySamples> collection1Metrics = 
solrScraper.collections(
-        configuration.getCollectionsConfiguration().get(0)).asList();
+    List<Collector.MetricFamilySamples> collection1Metrics =
+        
solrScraper.collections(configuration.getCollectionsConfiguration().get(0)).asList();
 
     assertTrue(collection1Metrics.isEmpty());
   }
 
   @Test
   public void metricsForHost() throws Exception {
-    Map<String, MetricSamples> metricsByHost = 
solrScraper.metricsForAllHosts(configuration.getMetricsConfiguration().get(0));
+    Map<String, MetricSamples> metricsByHost =
+        
solrScraper.metricsForAllHosts(configuration.getMetricsConfiguration().get(0));
 
     assertEquals(1, metricsByHost.size());
 
-    List<Collector.MetricFamilySamples> replicaSamples = 
metricsByHost.get(restTestHarness.getAdminURL()).asList();
+    List<Collector.MetricFamilySamples> replicaSamples =
+        metricsByHost.get(restTestHarness.getAdminURL()).asList();
 
     assertEquals(1, replicaSamples.size());
 
@@ -144,7 +145,8 @@ public class SolrStandaloneScraperTest extends RestTestBase 
{
 
   @Test
   public void search() throws Exception {
-    List<Collector.MetricFamilySamples> samples = 
solrScraper.search(configuration.getSearchConfiguration().get(0)).asList();
+    List<Collector.MetricFamilySamples> samples =
+        
solrScraper.search(configuration.getSearchConfiguration().get(0)).asList();
 
     assertEquals(1, samples.size());
 
@@ -153,8 +155,10 @@ public class SolrStandaloneScraperTest extends 
RestTestBase {
     assertEquals(PrometheusExporterTestBase.FACET_VALUES.size(), 
sampleFamily.samples.size());
 
     for (Collector.MetricFamilySamples.Sample sample : sampleFamily.samples) {
-      
assertEquals(PrometheusExporterTestBase.FACET_VALUES.get(sample.labelValues.get(0)),
 sample.value, 0.001);
+      assertEquals(
+          
PrometheusExporterTestBase.FACET_VALUES.get(sample.labelValues.get(0)),
+          sample.value,
+          0.001);
     }
   }
-
 }
diff --git 
a/solr/prometheus-exporter/src/test/org/apache/solr/prometheus/utils/Helpers.java
 
b/solr/prometheus-exporter/src/test/org/apache/solr/prometheus/utils/Helpers.java
index cb8d24c..0ab7a03 100644
--- 
a/solr/prometheus-exporter/src/test/org/apache/solr/prometheus/utils/Helpers.java
+++ 
b/solr/prometheus-exporter/src/test/org/apache/solr/prometheus/utils/Helpers.java
@@ -20,7 +20,6 @@ package org.apache.solr.prometheus.utils;
 import java.io.File;
 import java.io.IOException;
 import java.util.Objects;
-
 import org.apache.solr.SolrTestCaseJ4;
 import org.apache.solr.client.solrj.SolrClient;
 import org.apache.solr.client.solrj.SolrServerException;
@@ -37,7 +36,8 @@ public class Helpers {
 
   public static void indexAllDocs(SolrClient client) throws IOException, 
SolrServerException {
     File exampleDocsDir = new 
File(SolrTestCaseJ4.getFile("exampledocs").getAbsolutePath());
-    File[] xmlFiles = Objects.requireNonNull(exampleDocsDir.listFiles((dir, 
name) -> name.endsWith(".xml")));
+    File[] xmlFiles =
+        Objects.requireNonNull(exampleDocsDir.listFiles((dir, name) -> 
name.endsWith(".xml")));
     for (File xml : xmlFiles) {
       ContentStreamUpdateRequest req = new 
ContentStreamUpdateRequest("/update");
       req.addFile(xml, "application/xml");
@@ -52,8 +52,9 @@ public class Helpers {
   public static Pair<String, Double> parseMetricsLine(String line) {
     int spaceIdx = line.lastIndexOf(" ");
     if (spaceIdx == -1) {
-      throw new IllegalArgumentException("Failed parsing metrics line, must 
contain a space. Line was: " + line);
+      throw new IllegalArgumentException(
+          "Failed parsing metrics line, must contain a space. Line was: " + 
line);
     }
-    return new Pair<>(line.substring(0,spaceIdx), 
Double.parseDouble(line.substring(spaceIdx)));
+    return new Pair<>(line.substring(0, spaceIdx), 
Double.parseDouble(line.substring(spaceIdx)));
   }
 }

Reply via email to