From e09242f03c149db2d32654e303750ee43f74e19e Mon Sep 17 00:00:00 2001 From: Eric Martin Date: Fri, 2 Jan 2015 19:49:47 +0000 Subject: [PATCH 01/47] [maven-release-plugin] prepare release stackify-metrics-1.0.4 --- pom.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pom.xml b/pom.xml index bcb3c69..aa0bd1e 100644 --- a/pom.xml +++ b/pom.xml @@ -3,7 +3,7 @@ com.stackify stackify-metrics - 1.0.4-SNAPSHOT + 1.0.4 Stackify Metrics Stackify Metrics @@ -80,7 +80,7 @@ com.stackify stackify-api-java - 2.0.2-SNAPSHOT + 2.0.2 From 0b94007a813995a27e40002d7134c40f539478ef Mon Sep 17 00:00:00 2001 From: Eric Martin Date: Fri, 2 Jan 2015 19:49:49 +0000 Subject: [PATCH 02/47] [maven-release-plugin] prepare for next development iteration --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index aa0bd1e..2126577 100644 --- a/pom.xml +++ b/pom.xml @@ -3,7 +3,7 @@ com.stackify stackify-metrics - 1.0.4 + 1.0.5-SNAPSHOT Stackify Metrics Stackify Metrics From 28e0ea9572e2cdbed4eb25562de328c18f99ca9b Mon Sep 17 00:00:00 2001 From: Eric Martin Date: Tue, 6 Jan 2015 18:55:28 +0000 Subject: [PATCH 03/47] Guava 13.0.1 --- README.md | 4 +--- pom.xml | 4 ++-- .../metric/impl/MetricBackgroundService.java | 12 ++---------- .../com/stackify/metric/impl/MetricCollector.java | 5 ++--- .../metric/impl/MetricBackgroundServiceTest.java | 1 - 5 files changed, 7 insertions(+), 19 deletions(-) diff --git a/README.md b/README.md index 87ecd37..1e33292 100644 --- a/README.md +++ b/README.md @@ -186,12 +186,10 @@ Add it as a maven dependency: com.stackify stackify-metrics - 1.0.4 + 1.0.5 ``` -Note: *We are dependent on the Guava project from Google. We require version 14.0.1 (or beyond) for the background thread that sends data back to Stackify.* - ## License Copyright 2014 Stackify, LLC. diff --git a/pom.xml b/pom.xml index 2126577..ffe1dc2 100644 --- a/pom.xml +++ b/pom.xml @@ -50,7 +50,7 @@ com.google.guava guava - 14.0.1 + 13.0.1 @@ -80,7 +80,7 @@ com.stackify stackify-api-java - 2.0.2 + 2.0.3-SNAPSHOT diff --git a/src/main/java/com/stackify/metric/impl/MetricBackgroundService.java b/src/main/java/com/stackify/metric/impl/MetricBackgroundService.java index a893f3a..4bb0108 100644 --- a/src/main/java/com/stackify/metric/impl/MetricBackgroundService.java +++ b/src/main/java/com/stackify/metric/impl/MetricBackgroundService.java @@ -19,13 +19,13 @@ import org.slf4j.LoggerFactory; import com.google.common.base.Preconditions; -import com.google.common.util.concurrent.AbstractScheduledService; +import com.stackify.api.common.concurrent.BackgroundService; /** * MetricBackgroundService * @author Eric Martin */ -public class MetricBackgroundService extends AbstractScheduledService { +public class MetricBackgroundService extends BackgroundService { /** * Logger @@ -59,14 +59,6 @@ public MetricBackgroundService(final MetricCollector collector, final MetricSend this.sender = sender; } - /** - * @see com.google.common.util.concurrent.AbstractScheduledService#serviceName() - */ - @Override - protected String serviceName() { - return "Stackify_MetricBackgroundService"; - } - /** * @see com.google.common.util.concurrent.AbstractScheduledService#scheduler() */ diff --git a/src/main/java/com/stackify/metric/impl/MetricCollector.java b/src/main/java/com/stackify/metric/impl/MetricCollector.java index 79a31af..9235c97 100644 --- a/src/main/java/com/stackify/metric/impl/MetricCollector.java +++ b/src/main/java/com/stackify/metric/impl/MetricCollector.java @@ -26,10 +26,9 @@ import com.google.common.base.Preconditions; import com.google.common.collect.Maps; -import com.google.common.collect.Queues; import com.google.common.collect.Sets; +import com.stackify.api.common.collect.SynchronizedEvictingQueue; import com.stackify.api.common.http.HttpException; -import com.stackify.api.common.lang.EvictingQueue; /** * MetricCollector @@ -50,7 +49,7 @@ public class MetricCollector { /** * The queue of objects to be transmitted */ - private final Queue queue = Queues.synchronizedQueue(new EvictingQueue(1000)); + private final Queue queue = new SynchronizedEvictingQueue(1000); /** * Initial values for the next iteration diff --git a/src/test/java/com/stackify/metric/impl/MetricBackgroundServiceTest.java b/src/test/java/com/stackify/metric/impl/MetricBackgroundServiceTest.java index 081960e..f209a27 100644 --- a/src/test/java/com/stackify/metric/impl/MetricBackgroundServiceTest.java +++ b/src/test/java/com/stackify/metric/impl/MetricBackgroundServiceTest.java @@ -38,7 +38,6 @@ public void testConstructor() { MetricSender sender = Mockito.mock(MetricSender.class); MetricBackgroundService service = new MetricBackgroundService(collector, sender); - Assert.assertEquals("Stackify_MetricBackgroundService", service.serviceName()); Assert.assertNotNull(service.scheduler()); } From 26279d474256b4763be67cdf52f1483e523820a7 Mon Sep 17 00:00:00 2001 From: Eric Martin Date: Tue, 6 Jan 2015 19:08:13 +0000 Subject: [PATCH 04/47] [maven-release-plugin] prepare release stackify-metrics-1.0.5 --- pom.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pom.xml b/pom.xml index ffe1dc2..f8677e0 100644 --- a/pom.xml +++ b/pom.xml @@ -3,7 +3,7 @@ com.stackify stackify-metrics - 1.0.5-SNAPSHOT + 1.0.5 Stackify Metrics Stackify Metrics @@ -80,7 +80,7 @@ com.stackify stackify-api-java - 2.0.3-SNAPSHOT + 2.0.3 From a99fccaa287d09d6888195d2ed4a07cb681d5afd Mon Sep 17 00:00:00 2001 From: Eric Martin Date: Tue, 6 Jan 2015 19:08:15 +0000 Subject: [PATCH 05/47] [maven-release-plugin] prepare for next development iteration --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index f8677e0..14e3ee7 100644 --- a/pom.xml +++ b/pom.xml @@ -3,7 +3,7 @@ com.stackify stackify-metrics - 1.0.5 + 1.0.6-SNAPSHOT Stackify Metrics Stackify Metrics From 9a0f61c9e7682cb8a4d3e696283a8e41663fdf14 Mon Sep 17 00:00:00 2001 From: Eric Martin Date: Tue, 20 Jan 2015 18:50:26 +0000 Subject: [PATCH 06/47] Get host name from HOSTNAME environment variable --- README.md | 2 +- pom.xml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 1e33292..08f2b5c 100644 --- a/README.md +++ b/README.md @@ -186,7 +186,7 @@ Add it as a maven dependency: com.stackify stackify-metrics - 1.0.5 + 1.0.6 ``` diff --git a/pom.xml b/pom.xml index 14e3ee7..4f964cd 100644 --- a/pom.xml +++ b/pom.xml @@ -80,7 +80,7 @@ com.stackify stackify-api-java - 2.0.3 + 2.0.4 From f36a2a5eb3c0a27322a598c4b3b5a8fbe0912ce6 Mon Sep 17 00:00:00 2001 From: Eric Martin Date: Tue, 20 Jan 2015 20:08:34 +0000 Subject: [PATCH 07/47] [maven-release-plugin] prepare release stackify-metrics-1.0.6 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 4f964cd..f23ed95 100644 --- a/pom.xml +++ b/pom.xml @@ -3,7 +3,7 @@ com.stackify stackify-metrics - 1.0.6-SNAPSHOT + 1.0.6 Stackify Metrics Stackify Metrics From 238acbce218132571cb38c9756937379ed8bd28b Mon Sep 17 00:00:00 2001 From: Eric Martin Date: Tue, 20 Jan 2015 20:08:36 +0000 Subject: [PATCH 08/47] [maven-release-plugin] prepare for next development iteration --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index f23ed95..0eaaca0 100644 --- a/pom.xml +++ b/pom.xml @@ -3,7 +3,7 @@ com.stackify stackify-metrics - 1.0.6 + 1.0.7-SNAPSHOT Stackify Metrics Stackify Metrics From 83a096a75dfe853cd08374390c449ba0890dc206 Mon Sep 17 00:00:00 2001 From: Eric Martin Date: Mon, 26 Jan 2015 20:49:22 +0000 Subject: [PATCH 09/47] Remove dependency on google guava --- README.md | 2 +- pom.xml | 14 ++--- .../com/stackify/metric/MetricManager.java | 10 ++-- .../java/com/stackify/metric/impl/Metric.java | 12 +--- .../stackify/metric/impl/MetricAggregate.java | 14 ++--- .../metric/impl/MetricAggregator.java | 12 ++-- .../metric/impl/MetricBackgroundService.java | 17 ++++-- .../MetricBackgroundServiceScheduler.java | 12 +--- .../stackify/metric/impl/MetricCollector.java | 12 ++-- .../stackify/metric/impl/MetricIdentity.java | 58 ++++++++++--------- .../metric/impl/MetricMonitorService.java | 23 ++++---- .../stackify/metric/impl/MetricSender.java | 13 ++--- .../stackify/metric/MetricManagerTest.java | 3 - .../metric/impl/MetricAggregatorTest.java | 23 +++++--- .../MetricBackgroundServiceSchedulerTest.java | 8 --- .../impl/MetricBackgroundServiceTest.java | 2 +- .../metric/impl/MetricMonitorServiceTest.java | 25 ++++---- .../metric/impl/MetricSenderTest.java | 5 +- 18 files changed, 115 insertions(+), 150 deletions(-) diff --git a/README.md b/README.md index 08f2b5c..916c4ee 100644 --- a/README.md +++ b/README.md @@ -186,7 +186,7 @@ Add it as a maven dependency: com.stackify stackify-metrics - 1.0.6 + 1.1.0 ``` diff --git a/pom.xml b/pom.xml index 0eaaca0..41f691a 100644 --- a/pom.xml +++ b/pom.xml @@ -3,7 +3,7 @@ com.stackify stackify-metrics - 1.0.7-SNAPSHOT + 1.1.0-SNAPSHOT Stackify Metrics Stackify Metrics @@ -11,7 +11,7 @@ org.sonatype.oss oss-parent - 7 + 9 @@ -46,13 +46,7 @@ - - - com.google.guava - guava - 13.0.1 - - + org.slf4j slf4j-api @@ -80,7 +74,7 @@ com.stackify stackify-api-java - 2.0.4 + 2.1.0 diff --git a/src/main/java/com/stackify/metric/MetricManager.java b/src/main/java/com/stackify/metric/MetricManager.java index 31e3d4f..94d2272 100644 --- a/src/main/java/com/stackify/metric/MetricManager.java +++ b/src/main/java/com/stackify/metric/MetricManager.java @@ -15,14 +15,12 @@ */ package com.stackify.metric; -import java.util.concurrent.TimeUnit; import java.util.concurrent.atomic.AtomicBoolean; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import com.fasterxml.jackson.databind.ObjectMapper; -import com.google.common.base.Throwables; import com.stackify.api.common.ApiConfiguration; import com.stackify.api.common.ApiConfigurations; import com.stackify.api.common.AppIdentityService; @@ -90,7 +88,7 @@ private static synchronized void startup() { MetricSender sender = new MetricSender(CONFIG, objectMapper, monitorService); BACKGROUND_SERVICE = new MetricBackgroundService(COLLECTOR, sender); - BACKGROUND_SERVICE.start().get(5, TimeUnit.SECONDS); + BACKGROUND_SERVICE.start(); } catch (Throwable t) { LOGGER.error("Exception starting Stackify Metrics API service", t); @@ -103,9 +101,9 @@ private static synchronized void startup() { public static synchronized void shutdown() { if (BACKGROUND_SERVICE != null) { try { - BACKGROUND_SERVICE.stop().get(5, TimeUnit.SECONDS); - } catch (Exception e) { - Throwables.propagate(e); + BACKGROUND_SERVICE.stop(); + } catch (Throwable t) { + LOGGER.error("Exception stopping Stackify Metrics API service", t); } } } diff --git a/src/main/java/com/stackify/metric/impl/Metric.java b/src/main/java/com/stackify/metric/impl/Metric.java index eb065db..1a92d0c 100644 --- a/src/main/java/com/stackify/metric/impl/Metric.java +++ b/src/main/java/com/stackify/metric/impl/Metric.java @@ -15,7 +15,6 @@ */ package com.stackify.metric.impl; -import com.google.common.base.Objects; /** * Metric @@ -147,16 +146,11 @@ public Metric build() { /** * @see java.lang.Object#toString() - * @return A string representation of the object */ @Override public String toString() { - return Objects.toStringHelper(this) - .omitNullValues() - .add("identity", identity) - .add("occurredMillis", occurredMillis) - .add("value", value) - .add("isIncrement", isIncrement) - .toString(); + return "Metric [identity=" + identity + ", occurredMillis=" + + occurredMillis + ", value=" + value + ", isIncrement=" + + isIncrement + "]"; } } diff --git a/src/main/java/com/stackify/metric/impl/MetricAggregate.java b/src/main/java/com/stackify/metric/impl/MetricAggregate.java index 92cdfea..dd25641 100644 --- a/src/main/java/com/stackify/metric/impl/MetricAggregate.java +++ b/src/main/java/com/stackify/metric/impl/MetricAggregate.java @@ -15,8 +15,7 @@ */ package com.stackify.metric.impl; -import com.google.common.base.Objects; -import com.google.common.base.Preconditions; +import com.stackify.api.common.util.Preconditions; /** * MetricAggregate @@ -111,16 +110,11 @@ public long getOccurredMillis() { /** * @see java.lang.Object#toString() - * @return A string representation of the object */ @Override public String toString() { - return Objects.toStringHelper(this) - .omitNullValues() - .add("identity", identity) - .add("occurredMillis", occurredMillis) - .add("value", value) - .add("count", count) - .toString(); + return "MetricAggregate [identity=" + identity + ", occurredMillis=" + + occurredMillis + ", value=" + value + ", count=" + count + + "]"; } } diff --git a/src/main/java/com/stackify/metric/impl/MetricAggregator.java b/src/main/java/com/stackify/metric/impl/MetricAggregator.java index c916005..fa72b66 100644 --- a/src/main/java/com/stackify/metric/impl/MetricAggregator.java +++ b/src/main/java/com/stackify/metric/impl/MetricAggregator.java @@ -15,6 +15,8 @@ */ package com.stackify.metric.impl; +import java.util.ArrayList; +import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Set; @@ -22,9 +24,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import com.google.common.base.Preconditions; -import com.google.common.collect.Lists; -import com.google.common.collect.Maps; +import com.stackify.api.common.util.Preconditions; /** * MetricAggregator @@ -40,7 +40,7 @@ public class MetricAggregator { /** * Map from metric key to utc minute to metric aggregate) */ - private final Map> aggregates = Maps.newHashMap(); + private final Map> aggregates = new HashMap>(); /** * Current minute @@ -69,7 +69,7 @@ public MetricAggregator(final long currentMinute, final Map getAggregates() { - List flatAggregates = Lists.newArrayList(); + List flatAggregates = new ArrayList(); for (Map metricAggregates : aggregates.values()) { for (MetricAggregate aggregate : metricAggregates.values()) { @@ -180,7 +180,7 @@ private MetricAggregate getAggregate(final MetricIdentity identity) { // get the map from utc minute to aggregate for this metric if (!aggregates.containsKey(identity)) { - aggregates.put(identity, Maps.newHashMap()); + aggregates.put(identity, new HashMap()); } Map metricAggregates = aggregates.get(identity); diff --git a/src/main/java/com/stackify/metric/impl/MetricBackgroundService.java b/src/main/java/com/stackify/metric/impl/MetricBackgroundService.java index 4bb0108..333dedf 100644 --- a/src/main/java/com/stackify/metric/impl/MetricBackgroundService.java +++ b/src/main/java/com/stackify/metric/impl/MetricBackgroundService.java @@ -18,8 +18,8 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import com.google.common.base.Preconditions; import com.stackify.api.common.concurrent.BackgroundService; +import com.stackify.api.common.util.Preconditions; /** * MetricBackgroundService @@ -60,11 +60,10 @@ public MetricBackgroundService(final MetricCollector collector, final MetricSend } /** - * @see com.google.common.util.concurrent.AbstractScheduledService#scheduler() + * @see com.stackify.api.common.concurrent.BackgroundService#startUp() */ @Override - protected Scheduler scheduler() { - return scheduler; + protected void startUp() { } /** @@ -81,6 +80,14 @@ protected void runOneIteration() { } } + /** + * @see com.stackify.api.common.concurrent.BackgroundService#getNextScheduleDelayMilliseconds() + */ + @Override + protected long getNextScheduleDelayMilliseconds() { + return scheduler.getScheduleDelay(); + } + /** * @see com.google.common.util.concurrent.AbstractScheduledService#shutDown() */ @@ -91,7 +98,5 @@ protected void shutDown() throws Exception { } catch (Throwable t) { LOGGER.info("Exception flushing metrics collector during shut down", t); } - - super.shutDown(); } } diff --git a/src/main/java/com/stackify/metric/impl/MetricBackgroundServiceScheduler.java b/src/main/java/com/stackify/metric/impl/MetricBackgroundServiceScheduler.java index 10c6787..356d87e 100644 --- a/src/main/java/com/stackify/metric/impl/MetricBackgroundServiceScheduler.java +++ b/src/main/java/com/stackify/metric/impl/MetricBackgroundServiceScheduler.java @@ -16,9 +16,7 @@ package com.stackify.metric.impl; import java.net.HttpURLConnection; -import java.util.concurrent.TimeUnit; -import com.google.common.util.concurrent.AbstractScheduledService.CustomScheduler; import com.stackify.api.common.http.HttpException; /** @@ -26,7 +24,7 @@ * * @author Eric Martin */ -public class MetricBackgroundServiceScheduler extends CustomScheduler { +public class MetricBackgroundServiceScheduler { /** * Five seconds (milliseconds) @@ -99,12 +97,4 @@ public void update(final Throwable t) { public long getScheduleDelay() { return scheduleDelay; } - - /** - * @see com.google.common.util.concurrent.AbstractScheduledService.CustomScheduler#getNextSchedule() - */ - @Override - protected Schedule getNextSchedule() { - return new Schedule(scheduleDelay, TimeUnit.MILLISECONDS); - } } diff --git a/src/main/java/com/stackify/metric/impl/MetricCollector.java b/src/main/java/com/stackify/metric/impl/MetricCollector.java index 9235c97..fb9fd5f 100644 --- a/src/main/java/com/stackify/metric/impl/MetricCollector.java +++ b/src/main/java/com/stackify/metric/impl/MetricCollector.java @@ -16,6 +16,8 @@ package com.stackify.metric.impl; import java.io.IOException; +import java.util.HashMap; +import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Queue; @@ -24,11 +26,9 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import com.google.common.base.Preconditions; -import com.google.common.collect.Maps; -import com.google.common.collect.Sets; import com.stackify.api.common.collect.SynchronizedEvictingQueue; import com.stackify.api.common.http.HttpException; +import com.stackify.api.common.util.Preconditions; /** * MetricCollector @@ -54,17 +54,17 @@ public class MetricCollector { /** * Initial values for the next iteration */ - private final Map lastValues = Maps.newHashMap(); + private final Map lastValues = new HashMap(); /** * Metrics that should auto report zero if there isn't a current value */ - private final Set autoReportZeroMetrics = Sets.newHashSet(); + private final Set autoReportZeroMetrics = new HashSet(); /** * Metrics that should auto report the last value if there isn't a current value */ - private final Set autoReportLastMetrics = Sets.newHashSet(); + private final Set autoReportLastMetrics = new HashSet(); /** * The last time the collector was flushed diff --git a/src/main/java/com/stackify/metric/impl/MetricIdentity.java b/src/main/java/com/stackify/metric/impl/MetricIdentity.java index 08576e9..c29611c 100644 --- a/src/main/java/com/stackify/metric/impl/MetricIdentity.java +++ b/src/main/java/com/stackify/metric/impl/MetricIdentity.java @@ -15,8 +15,7 @@ */ package com.stackify.metric.impl; -import com.google.common.base.Objects; -import com.google.common.base.Preconditions; +import com.stackify.api.common.util.Preconditions; /** * MetricIdentity @@ -80,46 +79,51 @@ public MetricMonitorType getType() { /** * @see java.lang.Object#hashCode() - * @return A hash code of this object */ @Override public int hashCode() { - return Objects.hashCode(category, name, type); + final int prime = 31; + int result = 1; + result = prime * result + + ((category == null) ? 0 : category.hashCode()); + result = prime * result + ((name == null) ? 0 : name.hashCode()); + result = prime * result + ((type == null) ? 0 : type.hashCode()); + return result; } /** * @see java.lang.Object#equals(java.lang.Object) - * @param other The reference object with which to compare - * @return True if this object is the same as the other object, false otherwise */ @Override - public boolean equals(final Object other) { - if (other == this) { - return true; - } - - if (!(other instanceof MetricIdentity)) { - return false; - } - - final MetricIdentity otherMetricIdentity = (MetricIdentity) other; - - return Objects.equal(category, otherMetricIdentity.category) - && Objects.equal(name, otherMetricIdentity.name) - && Objects.equal(type, otherMetricIdentity.type); + public boolean equals(Object obj) { + if (this == obj) + return true; + if (obj == null) + return false; + if (!(obj instanceof MetricIdentity)) + return false; + MetricIdentity other = (MetricIdentity) obj; + if (category == null) { + if (other.category != null) + return false; + } else if (!category.equals(other.category)) + return false; + if (name == null) { + if (other.name != null) + return false; + } else if (!name.equals(other.name)) + return false; + if (type != other.type) + return false; + return true; } /** * @see java.lang.Object#toString() - * @return A string representation of the object */ @Override public String toString() { - return Objects.toStringHelper(this) - .omitNullValues() - .add("category", category) - .add("name", name) - .add("type", type) - .toString(); + return "MetricIdentity [category=" + category + ", name=" + name + + ", type=" + type + "]"; } } diff --git a/src/main/java/com/stackify/metric/impl/MetricMonitorService.java b/src/main/java/com/stackify/metric/impl/MetricMonitorService.java index bf44490..e165fc4 100644 --- a/src/main/java/com/stackify/metric/impl/MetricMonitorService.java +++ b/src/main/java/com/stackify/metric/impl/MetricMonitorService.java @@ -16,6 +16,7 @@ package com.stackify.metric.impl; import java.io.IOException; +import java.util.HashMap; import java.util.Map; import org.slf4j.Logger; @@ -24,14 +25,12 @@ import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.ObjectReader; -import com.google.common.base.Optional; -import com.google.common.base.Preconditions; -import com.google.common.collect.Maps; import com.stackify.api.AppIdentity; import com.stackify.api.common.ApiConfiguration; import com.stackify.api.common.AppIdentityService; import com.stackify.api.common.http.HttpClient; import com.stackify.api.common.http.HttpException; +import com.stackify.api.common.util.Preconditions; /** * MetricMonitorService @@ -52,12 +51,12 @@ public class MetricMonitorService { /** * Timestamp of the last queries */ - private final Map lastQueries = Maps.newHashMap(); + private final Map lastQueries = new HashMap(); /** * The cached monitor ids */ - private Map monitorIds = Maps.newHashMap(); + private Map monitorIds = new HashMap(); /** * API configuration @@ -96,11 +95,11 @@ public MetricMonitorService(final ApiConfiguration apiConfig, final ObjectMapper * @throws IOException * @throws HttpException */ - public Optional getMonitorId(final MetricIdentity identity) throws IOException, HttpException { + public Integer getMonitorId(final MetricIdentity identity) throws IOException, HttpException { Preconditions.checkNotNull(identity); if (monitorIds.containsKey(identity)) { - return Optional.of(monitorIds.get(identity)); + return monitorIds.get(identity); } long lastQuery = 0; @@ -115,11 +114,11 @@ public Optional getMonitorId(final MetricIdentity identity) throws IOEx try { lastQueries.put(identity, lastQuery); - Optional appIdentity = appIdentityService.getAppIdentity(); + AppIdentity appIdentity = appIdentityService.getAppIdentity(); - if (appIdentity.isPresent()) { + if (appIdentity != null) { - int monitorId = getMetricInfo(identity, appIdentity.get()); + int monitorId = getMetricInfo(identity, appIdentity); LOGGER.debug("Metric {} monitor id: {}", identity, monitorId); @@ -133,10 +132,10 @@ public Optional getMonitorId(final MetricIdentity identity) throws IOEx } if (monitorIds.containsKey(identity)) { - return Optional.of(monitorIds.get(identity)); + return monitorIds.get(identity); } - return Optional.absent(); + return null; } /** diff --git a/src/main/java/com/stackify/metric/impl/MetricSender.java b/src/main/java/com/stackify/metric/impl/MetricSender.java index d94b275..448fd51 100644 --- a/src/main/java/com/stackify/metric/impl/MetricSender.java +++ b/src/main/java/com/stackify/metric/impl/MetricSender.java @@ -16,6 +16,7 @@ package com.stackify.metric.impl; import java.io.IOException; +import java.util.ArrayList; import java.util.Date; import java.util.List; @@ -23,12 +24,10 @@ import org.slf4j.LoggerFactory; import com.fasterxml.jackson.databind.ObjectMapper; -import com.google.common.base.Optional; -import com.google.common.base.Preconditions; -import com.google.common.collect.Lists; import com.stackify.api.common.ApiConfiguration; import com.stackify.api.common.http.HttpClient; import com.stackify.api.common.http.HttpException; +import com.stackify.api.common.util.Preconditions; /** * MetricSender @@ -81,15 +80,15 @@ public void send(final List aggregates) throws IOException, Htt // build the json objects - List metrics = Lists.newArrayListWithCapacity(aggregates.size()); + List metrics = new ArrayList(aggregates.size()); for (MetricAggregate aggregate : aggregates) { - Optional monitorId = monitorService.getMonitorId(aggregate.getIdentity()); + Integer monitorId = monitorService.getMonitorId(aggregate.getIdentity()); - if (monitorId.isPresent()) { + if (monitorId != null) { JsonMetric.Builder builder = JsonMetric.newBuilder(); - builder.monitorId(monitorId.get()); + builder.monitorId(monitorId); builder.value(Double.valueOf(aggregate.getValue())); builder.count(Integer.valueOf(aggregate.getCount())); builder.occurredUtc(new Date(aggregate.getOccurredMillis())); diff --git a/src/test/java/com/stackify/metric/MetricManagerTest.java b/src/test/java/com/stackify/metric/MetricManagerTest.java index 7cbd74c..0c770be 100644 --- a/src/test/java/com/stackify/metric/MetricManagerTest.java +++ b/src/test/java/com/stackify/metric/MetricManagerTest.java @@ -23,7 +23,6 @@ import org.powermock.core.classloader.annotations.PrepareForTest; import org.powermock.modules.junit4.PowerMockRunner; -import com.google.common.util.concurrent.ListenableFuture; import com.stackify.api.common.AppIdentityService; import com.stackify.metric.impl.MetricBackgroundService; import com.stackify.metric.impl.MetricCollector; @@ -54,8 +53,6 @@ public void testGetCollectorAndShutdown() throws Exception { PowerMockito.whenNew(MetricSender.class).withAnyArguments().thenReturn(sender); MetricBackgroundService background = PowerMockito.mock(MetricBackgroundService.class); - Mockito.when(background.start()).thenReturn(Mockito.mock(ListenableFuture.class)); - Mockito.when(background.stop()).thenReturn(Mockito.mock(ListenableFuture.class)); PowerMockito.whenNew(MetricBackgroundService.class).withAnyArguments().thenReturn(background); MetricManager.shutdown(); diff --git a/src/test/java/com/stackify/metric/impl/MetricAggregatorTest.java b/src/test/java/com/stackify/metric/impl/MetricAggregatorTest.java index 79151c9..10c1089 100644 --- a/src/test/java/com/stackify/metric/impl/MetricAggregatorTest.java +++ b/src/test/java/com/stackify/metric/impl/MetricAggregatorTest.java @@ -16,15 +16,14 @@ package com.stackify.metric.impl; import java.util.HashMap; +import java.util.HashSet; import java.util.List; import java.util.Map; +import java.util.Set; import org.junit.Assert; import org.junit.Test; -import com.google.common.collect.Maps; -import com.google.common.collect.Sets; - /** * MetricAggregatorTest * @author Eric Martin @@ -105,12 +104,14 @@ public void testAddGauge() { public void testAutoReportZero() { MetricIdentity identity = new MetricIdentity("category", "name", MetricMonitorType.COUNTER); - Map lastValues = Maps.newHashMap(); + Map lastValues = new HashMap(); lastValues.put(identity, Double.valueOf(14.0)); MetricAggregator aggregator = new MetricAggregator(System.currentTimeMillis(), lastValues); - aggregator.autoReportZero(Sets.newHashSet(identity)); + Set arz = new HashSet(); + arz.add(identity); + aggregator.autoReportZero(arz); List aggregates = aggregator.getAggregates(); @@ -129,12 +130,14 @@ public void testAutoReportZero() { public void testAutoReportLast() { MetricIdentity identity = new MetricIdentity("category", "name", MetricMonitorType.COUNTER); - Map lastValues = Maps.newHashMap(); + Map lastValues = new HashMap(); lastValues.put(identity, Double.valueOf(14.0)); MetricAggregator aggregator = new MetricAggregator(System.currentTimeMillis(), lastValues); - aggregator.autoReportLast(Sets.newHashSet(identity)); + Set arl = new HashSet(); + arl.add(identity); + aggregator.autoReportLast(arl); List aggregates = aggregator.getAggregates(); @@ -153,11 +156,13 @@ public void testAutoReportLast() { public void testAutoReportLastWithoutLast() { MetricIdentity identity = new MetricIdentity("category", "name", MetricMonitorType.COUNTER); - Map lastValues = Maps.newHashMap(); + Map lastValues = new HashMap(); MetricAggregator aggregator = new MetricAggregator(System.currentTimeMillis(), lastValues); - aggregator.autoReportLast(Sets.newHashSet(identity)); + Set arl = new HashSet(); + arl.add(identity); + aggregator.autoReportLast(arl); List aggregates = aggregator.getAggregates(); diff --git a/src/test/java/com/stackify/metric/impl/MetricBackgroundServiceSchedulerTest.java b/src/test/java/com/stackify/metric/impl/MetricBackgroundServiceSchedulerTest.java index c7d6df8..3cbfc9f 100644 --- a/src/test/java/com/stackify/metric/impl/MetricBackgroundServiceSchedulerTest.java +++ b/src/test/java/com/stackify/metric/impl/MetricBackgroundServiceSchedulerTest.java @@ -27,8 +27,6 @@ * * @author Eric Martin */ -//@RunWith(PowerMockRunner.class) -//@PrepareForTest({MetricBackgroundServiceScheduler.class, System.class}) public class MetricBackgroundServiceSchedulerTest { /** @@ -39,7 +37,6 @@ public void testNoUpdate() { MetricBackgroundServiceScheduler scheduler = new MetricBackgroundServiceScheduler(); Assert.assertEquals(5000, scheduler.getScheduleDelay()); - Assert.assertNotNull(scheduler.getNextSchedule()); } /** @@ -52,7 +49,6 @@ public void testUpdateOk() { scheduler.update(50); Assert.assertEquals(5000, scheduler.getScheduleDelay()); - Assert.assertNotNull(scheduler.getNextSchedule()); } /** @@ -65,7 +61,6 @@ public void testUpdateUnauthorized() { scheduler.update(new HttpException(HttpURLConnection.HTTP_UNAUTHORIZED)); Assert.assertEquals(300000, scheduler.getScheduleDelay()); - Assert.assertNotNull(scheduler.getNextSchedule()); } /** @@ -78,7 +73,6 @@ public void testUpdateError() { scheduler.update(new HttpException(HttpURLConnection.HTTP_INTERNAL_ERROR)); Assert.assertEquals(15000, scheduler.getScheduleDelay()); - Assert.assertNotNull(scheduler.getNextSchedule()); } /** @@ -91,11 +85,9 @@ public void testUpdateErrorAndClear() { scheduler.update(new HttpException(HttpURLConnection.HTTP_INTERNAL_ERROR)); Assert.assertEquals(15000, scheduler.getScheduleDelay()); - Assert.assertNotNull(scheduler.getNextSchedule()); scheduler.update(50); Assert.assertEquals(5000, scheduler.getScheduleDelay()); - Assert.assertNotNull(scheduler.getNextSchedule()); } } diff --git a/src/test/java/com/stackify/metric/impl/MetricBackgroundServiceTest.java b/src/test/java/com/stackify/metric/impl/MetricBackgroundServiceTest.java index f209a27..cc841ce 100644 --- a/src/test/java/com/stackify/metric/impl/MetricBackgroundServiceTest.java +++ b/src/test/java/com/stackify/metric/impl/MetricBackgroundServiceTest.java @@ -38,7 +38,7 @@ public void testConstructor() { MetricSender sender = Mockito.mock(MetricSender.class); MetricBackgroundService service = new MetricBackgroundService(collector, sender); - Assert.assertNotNull(service.scheduler()); + Assert.assertFalse(service.isRunning()); } /** diff --git a/src/test/java/com/stackify/metric/impl/MetricMonitorServiceTest.java b/src/test/java/com/stackify/metric/impl/MetricMonitorServiceTest.java index 2c86f75..d1cfcc6 100644 --- a/src/test/java/com/stackify/metric/impl/MetricMonitorServiceTest.java +++ b/src/test/java/com/stackify/metric/impl/MetricMonitorServiceTest.java @@ -24,7 +24,6 @@ import org.powermock.modules.junit4.PowerMockRunner; import com.fasterxml.jackson.databind.ObjectMapper; -import com.google.common.base.Optional; import com.stackify.api.AppIdentity; import com.stackify.api.common.ApiConfiguration; import com.stackify.api.common.AppIdentityService; @@ -47,7 +46,7 @@ public void testNoAppIdentity() throws Exception { ApiConfiguration apiConfig = Mockito.mock(ApiConfiguration.class); ObjectMapper objectMapper = new ObjectMapper(); AppIdentityService appIdentityService = Mockito.mock(AppIdentityService.class); - Mockito.when(appIdentityService.getAppIdentity()).thenReturn(Optional.absent()); + Mockito.when(appIdentityService.getAppIdentity()).thenReturn(null); HttpClient httpClient = PowerMockito.mock(HttpClient.class); PowerMockito.whenNew(HttpClient.class).withAnyArguments().thenReturn(httpClient); @@ -57,10 +56,9 @@ public void testNoAppIdentity() throws Exception { MetricIdentity identity = new MetricIdentity("category", "name", MetricMonitorType.COUNTER); - Optional id = service.getMonitorId(identity); + Integer id = service.getMonitorId(identity); - Assert.assertNotNull(id); - Assert.assertFalse(id.isPresent()); + Assert.assertNull(id); Mockito.verifyZeroInteractions(httpClient); } @@ -74,7 +72,7 @@ public void testGetMonitorId() throws Exception { ApiConfiguration apiConfig = Mockito.mock(ApiConfiguration.class); ObjectMapper objectMapper = new ObjectMapper(); AppIdentityService appIdentityService = Mockito.mock(AppIdentityService.class); - Mockito.when(appIdentityService.getAppIdentity()).thenReturn(Optional.of(Mockito.mock(AppIdentity.class))); + Mockito.when(appIdentityService.getAppIdentity()).thenReturn(Mockito.mock(AppIdentity.class)); HttpClient httpClient = PowerMockito.mock(HttpClient.class); PowerMockito.whenNew(HttpClient.class).withAnyArguments().thenReturn(httpClient); @@ -84,21 +82,18 @@ public void testGetMonitorId() throws Exception { MetricIdentity identity = new MetricIdentity("category", "name", MetricMonitorType.COUNTER); - Optional id = service.getMonitorId(identity); + Integer id = service.getMonitorId(identity); Assert.assertNotNull(id); - Assert.assertTrue(id.isPresent()); - Assert.assertEquals(14, id.get().intValue()); + Assert.assertEquals(14, id.intValue()); - Optional cachedId = service.getMonitorId(identity); + Integer cachedId = service.getMonitorId(identity); Assert.assertNotNull(cachedId); - Assert.assertTrue(cachedId.isPresent()); - Assert.assertEquals(14, cachedId.get().intValue()); + Assert.assertEquals(14, cachedId.intValue()); - Optional absentId = service.getMonitorId(new MetricIdentity("does-not", "exist", MetricMonitorType.COUNTER)); + Integer absentId = service.getMonitorId(new MetricIdentity("does-not", "exist", MetricMonitorType.COUNTER)); - Assert.assertNotNull(absentId); - Assert.assertFalse(absentId.isPresent()); + Assert.assertNull(absentId); } } diff --git a/src/test/java/com/stackify/metric/impl/MetricSenderTest.java b/src/test/java/com/stackify/metric/impl/MetricSenderTest.java index cffbdad..faa6fad 100644 --- a/src/test/java/com/stackify/metric/impl/MetricSenderTest.java +++ b/src/test/java/com/stackify/metric/impl/MetricSenderTest.java @@ -25,7 +25,6 @@ import org.powermock.modules.junit4.PowerMockRunner; import com.fasterxml.jackson.databind.ObjectMapper; -import com.google.common.base.Optional; import com.stackify.api.common.ApiConfiguration; import com.stackify.api.common.http.HttpClient; @@ -48,7 +47,7 @@ public void testSend() throws Exception { ObjectMapper objectMapper = new ObjectMapper(); MetricMonitorService monitorService = Mockito.mock(MetricMonitorService.class); - Mockito.when(monitorService.getMonitorId(Mockito.any(MetricIdentity.class))).thenReturn(Optional.of(14)); + Mockito.when(monitorService.getMonitorId(Mockito.any(MetricIdentity.class))).thenReturn(14); HttpClient httpClient = PowerMockito.mock(HttpClient.class); PowerMockito.whenNew(HttpClient.class).withAnyArguments().thenReturn(httpClient); @@ -75,7 +74,7 @@ public void testSendWithoutMonitorId() throws Exception { ObjectMapper objectMapper = new ObjectMapper(); MetricMonitorService monitorService = Mockito.mock(MetricMonitorService.class); - Mockito.when(monitorService.getMonitorId(Mockito.any(MetricIdentity.class))).thenReturn(Optional.absent()); + Mockito.when(monitorService.getMonitorId(Mockito.any(MetricIdentity.class))).thenReturn(null); HttpClient httpClient = PowerMockito.mock(HttpClient.class); PowerMockito.whenNew(HttpClient.class).withAnyArguments().thenReturn(httpClient); From 7b78a3df5a9a60a24c14264e9911f4eb602ff5b6 Mon Sep 17 00:00:00 2001 From: Eric Martin Date: Mon, 26 Jan 2015 20:51:18 +0000 Subject: [PATCH 10/47] [maven-release-plugin] prepare release stackify-metrics-1.1.0 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 41f691a..1d48342 100644 --- a/pom.xml +++ b/pom.xml @@ -3,7 +3,7 @@ com.stackify stackify-metrics - 1.1.0-SNAPSHOT + 1.1.0 Stackify Metrics Stackify Metrics From a3720470ab6dc1d9c9fa1287ae958d0cefa88148 Mon Sep 17 00:00:00 2001 From: Eric Martin Date: Mon, 26 Jan 2015 20:51:20 +0000 Subject: [PATCH 11/47] [maven-release-plugin] prepare for next development iteration --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 1d48342..aee846f 100644 --- a/pom.xml +++ b/pom.xml @@ -3,7 +3,7 @@ com.stackify stackify-metrics - 1.1.0 + 1.1.1-SNAPSHOT Stackify Metrics Stackify Metrics From d95e7a72516b46ca0401b92cbe5ff020b6a09b2c Mon Sep 17 00:00:00 2001 From: Eric Martin Date: Mon, 2 Mar 2015 21:57:42 +0000 Subject: [PATCH 12/47] HTTPS Proxy Support --- README.md | 2 +- pom.xml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 916c4ee..bfd5e52 100644 --- a/README.md +++ b/README.md @@ -186,7 +186,7 @@ Add it as a maven dependency: com.stackify stackify-metrics - 1.1.0 + 1.1.1 ``` diff --git a/pom.xml b/pom.xml index aee846f..1b3efa3 100644 --- a/pom.xml +++ b/pom.xml @@ -74,7 +74,7 @@ com.stackify stackify-api-java - 2.1.0 + 2.1.1 From 0fb32b96e198ff6e9705e815e52072966115291b Mon Sep 17 00:00:00 2001 From: Eric Martin Date: Mon, 2 Mar 2015 22:03:27 +0000 Subject: [PATCH 13/47] [maven-release-plugin] prepare release stackify-metrics-1.1.1 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 1b3efa3..cee96f3 100644 --- a/pom.xml +++ b/pom.xml @@ -3,7 +3,7 @@ com.stackify stackify-metrics - 1.1.1-SNAPSHOT + 1.1.1 Stackify Metrics Stackify Metrics From 350bc7772103a770ce882414730d43af7f3c929e Mon Sep 17 00:00:00 2001 From: Eric Martin Date: Mon, 2 Mar 2015 22:03:30 +0000 Subject: [PATCH 14/47] [maven-release-plugin] prepare for next development iteration --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index cee96f3..3f16edc 100644 --- a/pom.xml +++ b/pom.xml @@ -3,7 +3,7 @@ com.stackify stackify-metrics - 1.1.1 + 1.1.2-SNAPSHOT Stackify Metrics Stackify Metrics From b87c77a7cb90d46b33e0699ef0a136122c00f28d Mon Sep 17 00:00:00 2001 From: Eric Martin Date: Fri, 20 Mar 2015 20:51:23 +0000 Subject: [PATCH 15/47] Improvements to app identity for metrics --- pom.xml | 2 +- src/main/java/com/stackify/metric/MetricManager.java | 2 +- .../com/stackify/metric/impl/MetricMonitorService.java | 7 +++++++ 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/pom.xml b/pom.xml index 3f16edc..80ac0a5 100644 --- a/pom.xml +++ b/pom.xml @@ -74,7 +74,7 @@ com.stackify stackify-api-java - 2.1.1 + 2.1.2-SNAPSHOT diff --git a/src/main/java/com/stackify/metric/MetricManager.java b/src/main/java/com/stackify/metric/MetricManager.java index 94d2272..2b5de67 100644 --- a/src/main/java/com/stackify/metric/MetricManager.java +++ b/src/main/java/com/stackify/metric/MetricManager.java @@ -81,7 +81,7 @@ private static synchronized void startup() { ObjectMapper objectMapper = new ObjectMapper(); - AppIdentityService appIdentityService = new AppIdentityService(CONFIG, objectMapper); + AppIdentityService appIdentityService = new AppIdentityService(CONFIG, objectMapper, true); MetricMonitorService monitorService = new MetricMonitorService(CONFIG, objectMapper, appIdentityService); diff --git a/src/main/java/com/stackify/metric/impl/MetricMonitorService.java b/src/main/java/com/stackify/metric/impl/MetricMonitorService.java index e165fc4..5f36696 100644 --- a/src/main/java/com/stackify/metric/impl/MetricMonitorService.java +++ b/src/main/java/com/stackify/metric/impl/MetricMonitorService.java @@ -165,11 +165,18 @@ private int getMetricInfo(final MetricIdentity identity, final AppIdentity appId byte[] jsonBytes = objectMapper.writer().writeValueAsBytes(request); + if (LOGGER.isDebugEnabled()) + { + LOGGER.debug("GetMetricInfo Request: {}", new String(jsonBytes, "UTF-8")); + } + // post to stackify HttpClient httpClient = new HttpClient(apiConfig); String responseString = httpClient.post("/Metrics/GetMetricInfo", jsonBytes); + LOGGER.debug("GetMetricInfo Response: {}", responseString); + // deserialize the response and return the monitor id ObjectReader jsonReader = objectMapper.reader(new TypeReference(){}); From 759287b523f82b0819d23e766ee7c93c5b6d1b1c Mon Sep 17 00:00:00 2001 From: Eric Martin Date: Fri, 20 Mar 2015 21:13:57 +0000 Subject: [PATCH 16/47] [maven-release-plugin] prepare release stackify-metrics-1.1.2 --- pom.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pom.xml b/pom.xml index 80ac0a5..a57f072 100644 --- a/pom.xml +++ b/pom.xml @@ -3,7 +3,7 @@ com.stackify stackify-metrics - 1.1.2-SNAPSHOT + 1.1.2 Stackify Metrics Stackify Metrics @@ -74,7 +74,7 @@ com.stackify stackify-api-java - 2.1.2-SNAPSHOT + 2.1.2 From d4add8e685930037a2a396f0df077d650e258628 Mon Sep 17 00:00:00 2001 From: Eric Martin Date: Fri, 20 Mar 2015 21:13:59 +0000 Subject: [PATCH 17/47] [maven-release-plugin] prepare for next development iteration --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index a57f072..d336ff2 100644 --- a/pom.xml +++ b/pom.xml @@ -3,7 +3,7 @@ com.stackify stackify-metrics - 1.1.2 + 1.1.3-SNAPSHOT Stackify Metrics Stackify Metrics From 10ad61d0cc2fb2aa2b757fefece9655ec8747ae4 Mon Sep 17 00:00:00 2001 From: Eric Martin Date: Fri, 20 Mar 2015 16:22:56 -0500 Subject: [PATCH 18/47] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index bfd5e52..eb1c349 100644 --- a/README.md +++ b/README.md @@ -186,7 +186,7 @@ Add it as a maven dependency: com.stackify stackify-metrics - 1.1.1 + 1.1.2 ``` From 86af32ef7b516b31552a90776979a78656ed405f Mon Sep 17 00:00:00 2001 From: Eric Martin Date: Wed, 25 Mar 2015 21:55:14 +0000 Subject: [PATCH 19/47] Improve queue/retry logic --- .../stackify/metric/impl/MetricCollector.java | 5 +- .../stackify/metric/impl/MetricSender.java | 52 +++++++++++++++++-- 2 files changed, 50 insertions(+), 7 deletions(-) diff --git a/src/main/java/com/stackify/metric/impl/MetricCollector.java b/src/main/java/com/stackify/metric/impl/MetricCollector.java index fb9fd5f..dbb3b92 100644 --- a/src/main/java/com/stackify/metric/impl/MetricCollector.java +++ b/src/main/java/com/stackify/metric/impl/MetricCollector.java @@ -22,11 +22,11 @@ import java.util.Map; import java.util.Queue; import java.util.Set; +import java.util.concurrent.ConcurrentLinkedQueue; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import com.stackify.api.common.collect.SynchronizedEvictingQueue; import com.stackify.api.common.http.HttpException; import com.stackify.api.common.util.Preconditions; @@ -49,7 +49,7 @@ public class MetricCollector { /** * The queue of objects to be transmitted */ - private final Queue queue = new SynchronizedEvictingQueue(1000); + private final Queue queue = new ConcurrentLinkedQueue(); /** * Initial values for the next iteration @@ -115,6 +115,7 @@ public int flush(final MetricSender sender) throws IOException, HttpException { long currentMinute = (System.currentTimeMillis() / MS_IN_MIN) * MS_IN_MIN; LOGGER.debug("Flushing metrics < {}", currentMinute); + LOGGER.debug("Metrics queue size {}", queue.size()); MetricAggregator aggregator = new MetricAggregator(currentMinute, lastValues); diff --git a/src/main/java/com/stackify/metric/impl/MetricSender.java b/src/main/java/com/stackify/metric/impl/MetricSender.java index 448fd51..e041843 100644 --- a/src/main/java/com/stackify/metric/impl/MetricSender.java +++ b/src/main/java/com/stackify/metric/impl/MetricSender.java @@ -19,12 +19,14 @@ import java.util.ArrayList; import java.util.Date; import java.util.List; +import java.util.Queue; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import com.fasterxml.jackson.databind.ObjectMapper; import com.stackify.api.common.ApiConfiguration; +import com.stackify.api.common.collect.SynchronizedEvictingQueue; import com.stackify.api.common.http.HttpClient; import com.stackify.api.common.http.HttpException; import com.stackify.api.common.util.Preconditions; @@ -55,6 +57,11 @@ public class MetricSender { */ private final MetricMonitorService monitorService; + /** + * The queue of requests to be transmitted (60 minutes) + */ + private final Queue resendQueue = new SynchronizedEvictingQueue(60); + /** * Constructor * @param apiConfig API configuration @@ -78,6 +85,16 @@ public MetricSender(final ApiConfiguration apiConfig, final ObjectMapper objectM */ public void send(final List aggregates) throws IOException, HttpException { + HttpClient httpClient = new HttpClient(apiConfig); + + // retransmit any metrics on the resend queue + + try { + drainResendQueue(httpClient); + } catch (Throwable t) { + LOGGER.warn("Failure retransmitting queued metric requests", t); + } + // build the json objects List metrics = new ArrayList(aggregates.size()); @@ -104,13 +121,38 @@ public void send(final List aggregates) throws IOException, Htt return; } - // convert to json bytes - + // post metrics to stackify + byte[] jsonBytes = objectMapper.writer().writeValueAsBytes(metrics); - // post to stackify + try { + httpClient.post("/Metrics/SubmitMetricsByID", jsonBytes); + } catch (IOException t) { + LOGGER.info("Queueing metrics for retransmission due to IOException"); + resendQueue.offer(jsonBytes); + throw t; + } catch (HttpException t) { + LOGGER.info("Queueing metrics for retransmission due to HttpException"); + resendQueue.offer(jsonBytes); + throw t; + } + } - HttpClient httpClient = new HttpClient(apiConfig); - httpClient.post("/Metrics/SubmitMetricsByID", jsonBytes); + /** + * Drains the resend queue + * @param httpClient HTTP Client + * @throws IOException + * @throws HttpException + */ + private void drainResendQueue(final HttpClient httpClient) throws IOException, HttpException { + if (!resendQueue.isEmpty()) { + LOGGER.info("Attempting to retransmit {} queued metric requests", resendQueue.size()); + + while (!resendQueue.isEmpty()) { + byte[] jsonBytes = resendQueue.peek(); + httpClient.post("/Metrics/SubmitMetricsByID", jsonBytes); + resendQueue.remove(); + } + } } } From 25120be2b4b23fd84dfa608343aa17006073acb5 Mon Sep 17 00:00:00 2001 From: Eric Martin Date: Thu, 26 Mar 2015 03:07:26 +0000 Subject: [PATCH 20/47] [maven-release-plugin] prepare release stackify-metrics-1.1.3 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index d336ff2..bf7f153 100644 --- a/pom.xml +++ b/pom.xml @@ -3,7 +3,7 @@ com.stackify stackify-metrics - 1.1.3-SNAPSHOT + 1.1.3 Stackify Metrics Stackify Metrics From d7cbebf0ff912d8d5e6700763357ff38d033d6e7 Mon Sep 17 00:00:00 2001 From: Eric Martin Date: Thu, 26 Mar 2015 03:07:30 +0000 Subject: [PATCH 21/47] [maven-release-plugin] prepare for next development iteration --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index bf7f153..3867845 100644 --- a/pom.xml +++ b/pom.xml @@ -3,7 +3,7 @@ com.stackify stackify-metrics - 1.1.3 + 1.1.4-SNAPSHOT Stackify Metrics Stackify Metrics From 9cd32aab5c12963214dbdd3c4e0a1d9c240ffff1 Mon Sep 17 00:00:00 2001 From: Eric Martin Date: Wed, 25 Mar 2015 22:11:49 -0500 Subject: [PATCH 22/47] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index eb1c349..3ae084e 100644 --- a/README.md +++ b/README.md @@ -186,7 +186,7 @@ Add it as a maven dependency: com.stackify stackify-metrics - 1.1.2 + 1.1.3 ``` From 342a329fad0343899f4c14521441bf2dcf894c19 Mon Sep 17 00:00:00 2001 From: Eric Martin Date: Thu, 26 Mar 2015 13:46:39 +0000 Subject: [PATCH 23/47] Safety valve on metrics queue --- README.md | 2 +- src/main/java/com/stackify/metric/impl/MetricCollector.java | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 3ae084e..df5f738 100644 --- a/README.md +++ b/README.md @@ -186,7 +186,7 @@ Add it as a maven dependency: com.stackify stackify-metrics - 1.1.3 + 1.1.4 ``` diff --git a/src/main/java/com/stackify/metric/impl/MetricCollector.java b/src/main/java/com/stackify/metric/impl/MetricCollector.java index dbb3b92..eaf5fa3 100644 --- a/src/main/java/com/stackify/metric/impl/MetricCollector.java +++ b/src/main/java/com/stackify/metric/impl/MetricCollector.java @@ -22,11 +22,11 @@ import java.util.Map; import java.util.Queue; import java.util.Set; -import java.util.concurrent.ConcurrentLinkedQueue; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import com.stackify.api.common.collect.SynchronizedEvictingQueue; import com.stackify.api.common.http.HttpException; import com.stackify.api.common.util.Preconditions; @@ -49,7 +49,7 @@ public class MetricCollector { /** * The queue of objects to be transmitted */ - private final Queue queue = new ConcurrentLinkedQueue(); + private final Queue queue = new SynchronizedEvictingQueue(100000); /** * Initial values for the next iteration From 50901e17d98f044fd16547e78d9abb27809b6b3a Mon Sep 17 00:00:00 2001 From: Eric Martin Date: Thu, 26 Mar 2015 13:48:09 +0000 Subject: [PATCH 24/47] [maven-release-plugin] prepare release stackify-metrics-1.1.4 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 3867845..953ca1a 100644 --- a/pom.xml +++ b/pom.xml @@ -3,7 +3,7 @@ com.stackify stackify-metrics - 1.1.4-SNAPSHOT + 1.1.4 Stackify Metrics Stackify Metrics From 06d038e217db0f2e00ad899f43919447c4e0553c Mon Sep 17 00:00:00 2001 From: Eric Martin Date: Thu, 26 Mar 2015 13:48:11 +0000 Subject: [PATCH 25/47] [maven-release-plugin] prepare for next development iteration --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 953ca1a..7534e6c 100644 --- a/pom.xml +++ b/pom.xml @@ -3,7 +3,7 @@ com.stackify stackify-metrics - 1.1.4 + 1.1.5-SNAPSHOT Stackify Metrics Stackify Metrics From d34689dcb1aa48b2784a63d1581e61b6edd8ff8b Mon Sep 17 00:00:00 2001 From: Eric Martin Date: Mon, 30 Mar 2015 12:42:18 -0500 Subject: [PATCH 26/47] Update README.md --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index df5f738..c0ab770 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,6 @@ # stackify-metrics +[![Maven Central](https://img.shields.io/maven-central/v/com.stackify/stackify-metrics.svg)](http://mvnrepository.com/artifact/com.stackify/stackify-metrics) [![Build Status](https://travis-ci.org/stackify/stackify-metrics.png)](https://travis-ci.org/stackify/stackify-metrics) [![Coverage Status](https://coveralls.io/repos/stackify/stackify-metrics/badge.png?branch=master)](https://coveralls.io/r/stackify/stackify-metrics?branch=master) From 68f2cf979ace5f5bbb7e3f31abeb4a2d3ca72249 Mon Sep 17 00:00:00 2001 From: Eric Martin Date: Mon, 30 Mar 2015 13:53:34 -0500 Subject: [PATCH 27/47] Update README.md --- README.md | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/README.md b/README.md index c0ab770..a8c8e04 100644 --- a/README.md +++ b/README.md @@ -14,6 +14,17 @@ Sign Up for a Trial: http://www.stackify.com/sign-up/ +## Installation + +Add it as a maven dependency: +```xml + + com.stackify + stackify-metrics + INSERT_LATEST_MAVEN_CENTRAL_VERSION + +``` + ## Usage There are four different types of metrics: @@ -180,17 +191,6 @@ counterAndTimer.autoReportZeroValue(); ... ``` -## Installation - -Add it as a maven dependency: -```xml - - com.stackify - stackify-metrics - 1.1.4 - -``` - ## License Copyright 2014 Stackify, LLC. From 37b6c274a332199f1f57096285aabd6d0258abb5 Mon Sep 17 00:00:00 2001 From: Eric Martin Date: Tue, 12 May 2015 14:00:57 +0000 Subject: [PATCH 28/47] Add client device id when posting aggregate metrics --- pom.xml | 2 +- .../com/stackify/metric/impl/JsonMetric.java | 30 +++++++++++++++ .../metric/impl/MetricMonitorService.java | 13 +++++++ .../stackify/metric/impl/MetricSender.java | 38 ++++--------------- 4 files changed, 52 insertions(+), 31 deletions(-) diff --git a/pom.xml b/pom.xml index 7534e6c..9d1863e 100644 --- a/pom.xml +++ b/pom.xml @@ -74,7 +74,7 @@ com.stackify stackify-api-java - 2.1.2 + 2.1.3 diff --git a/src/main/java/com/stackify/metric/impl/JsonMetric.java b/src/main/java/com/stackify/metric/impl/JsonMetric.java index 96d4f3f..7b93083 100644 --- a/src/main/java/com/stackify/metric/impl/JsonMetric.java +++ b/src/main/java/com/stackify/metric/impl/JsonMetric.java @@ -62,6 +62,12 @@ public class JsonMetric { @JsonProperty("MonitorTypeID") private final Integer monitorTypeId; + /** + * Client device id + */ + @JsonProperty("ClientDeviceID") + private final Integer clientDeviceId; + /** * @return the monitorId */ @@ -97,6 +103,13 @@ public Integer getMonitorTypeId() { return monitorTypeId; } + /** + * @return the clientDeviceId + */ + public Integer getClientDeviceId() { + return clientDeviceId; + } + /** * @param builder The Builder object that contains all of the values for initialization */ @@ -106,6 +119,7 @@ private JsonMetric(final Builder builder) { this.count = builder.count; this.occurredUtc = builder.occurredUtc; this.monitorTypeId = builder.monitorTypeId; + this.clientDeviceId = builder.clientDeviceId; } /** @@ -152,6 +166,12 @@ public static class Builder { @JsonProperty("MonitorTypeID") private Integer monitorTypeId; + /** + * The builder's clientDeviceId + */ + @JsonProperty("ClientDeviceID") + private Integer clientDeviceId; + /** * Sets the builder's monitorId * @param monitorId The monitorId to be set @@ -202,6 +222,16 @@ public Builder monitorTypeId(final Integer monitorTypeId) { return this; } + /** + * Sets the builder's clientDeviceId + * @param clientDeviceId The clientDeviceId to be set + * @return Reference to the current object + */ + public Builder clientDeviceId(final Integer clientDeviceId) { + this.clientDeviceId = clientDeviceId; + return this; + } + /** * @return A new object constructed from this builder */ diff --git a/src/main/java/com/stackify/metric/impl/MetricMonitorService.java b/src/main/java/com/stackify/metric/impl/MetricMonitorService.java index 5f36696..d863172 100644 --- a/src/main/java/com/stackify/metric/impl/MetricMonitorService.java +++ b/src/main/java/com/stackify/metric/impl/MetricMonitorService.java @@ -88,6 +88,19 @@ public MetricMonitorService(final ApiConfiguration apiConfig, final ObjectMapper this.appIdentityService = appIdentityService; } + /** + * @return Client device id + */ + public Integer getDeviceId() { + AppIdentity appIdentity = appIdentityService.getAppIdentity(); + + if (appIdentity != null) { + return appIdentity.getDeviceId(); + } + + return null; + } + /** * Gets the monitor id for this metric * @param identity The metric identity diff --git a/src/main/java/com/stackify/metric/impl/MetricSender.java b/src/main/java/com/stackify/metric/impl/MetricSender.java index e041843..2f92500 100644 --- a/src/main/java/com/stackify/metric/impl/MetricSender.java +++ b/src/main/java/com/stackify/metric/impl/MetricSender.java @@ -19,16 +19,15 @@ import java.util.ArrayList; import java.util.Date; import java.util.List; -import java.util.Queue; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import com.fasterxml.jackson.databind.ObjectMapper; import com.stackify.api.common.ApiConfiguration; -import com.stackify.api.common.collect.SynchronizedEvictingQueue; import com.stackify.api.common.http.HttpClient; import com.stackify.api.common.http.HttpException; +import com.stackify.api.common.http.HttpResendQueue; import com.stackify.api.common.util.Preconditions; /** @@ -58,9 +57,9 @@ public class MetricSender { private final MetricMonitorService monitorService; /** - * The queue of requests to be transmitted (60 minutes) + * The queue of requests to be retransmitted (60 minutes of metric aggregates) */ - private final Queue resendQueue = new SynchronizedEvictingQueue(60); + private final HttpResendQueue resendQueue = new HttpResendQueue(60); /** * Constructor @@ -89,12 +88,8 @@ public void send(final List aggregates) throws IOException, Htt // retransmit any metrics on the resend queue - try { - drainResendQueue(httpClient); - } catch (Throwable t) { - LOGGER.warn("Failure retransmitting queued metric requests", t); - } - + resendQueue.drain(httpClient, "/Metrics/SubmitMetricsByID"); + // build the json objects List metrics = new ArrayList(aggregates.size()); @@ -110,6 +105,7 @@ public void send(final List aggregates) throws IOException, Htt builder.count(Integer.valueOf(aggregate.getCount())); builder.occurredUtc(new Date(aggregate.getOccurredMillis())); builder.monitorTypeId(Integer.valueOf(aggregate.getIdentity().getType().getId())); + builder.clientDeviceId(monitorService.getDeviceId()); metrics.add(builder.build()); } else { @@ -129,30 +125,12 @@ public void send(final List aggregates) throws IOException, Htt httpClient.post("/Metrics/SubmitMetricsByID", jsonBytes); } catch (IOException t) { LOGGER.info("Queueing metrics for retransmission due to IOException"); - resendQueue.offer(jsonBytes); + resendQueue.offer(jsonBytes, t); throw t; } catch (HttpException t) { LOGGER.info("Queueing metrics for retransmission due to HttpException"); - resendQueue.offer(jsonBytes); + resendQueue.offer(jsonBytes, t); throw t; } } - - /** - * Drains the resend queue - * @param httpClient HTTP Client - * @throws IOException - * @throws HttpException - */ - private void drainResendQueue(final HttpClient httpClient) throws IOException, HttpException { - if (!resendQueue.isEmpty()) { - LOGGER.info("Attempting to retransmit {} queued metric requests", resendQueue.size()); - - while (!resendQueue.isEmpty()) { - byte[] jsonBytes = resendQueue.peek(); - httpClient.post("/Metrics/SubmitMetricsByID", jsonBytes); - resendQueue.remove(); - } - } - } } From b5280a2dcaa0ce813d1e1845877c05fdcc040ce2 Mon Sep 17 00:00:00 2001 From: Eric Martin Date: Tue, 12 May 2015 14:03:16 +0000 Subject: [PATCH 29/47] [maven-release-plugin] prepare release stackify-metrics-1.1.5 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 9d1863e..5926ce8 100644 --- a/pom.xml +++ b/pom.xml @@ -3,7 +3,7 @@ com.stackify stackify-metrics - 1.1.5-SNAPSHOT + 1.1.5 Stackify Metrics Stackify Metrics From c468f39a258d0c1fbe9d9686d368443f062dde98 Mon Sep 17 00:00:00 2001 From: Eric Martin Date: Tue, 12 May 2015 14:03:19 +0000 Subject: [PATCH 30/47] [maven-release-plugin] prepare for next development iteration --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 5926ce8..10a23cc 100644 --- a/pom.xml +++ b/pom.xml @@ -3,7 +3,7 @@ com.stackify stackify-metrics - 1.1.5 + 1.1.6-SNAPSHOT Stackify Metrics Stackify Metrics From 8e074e5c6388ff7981e5a438e196f5acfeec078a Mon Sep 17 00:00:00 2001 From: Eric Martin Date: Fri, 10 Jul 2015 20:34:31 +0000 Subject: [PATCH 31/47] Ability to configure metrics API programmatically --- README.md | 17 +++++++ .../com/stackify/metric/MetricManager.java | 34 ++++++++++++- .../stackify/metric/MetricManagerTest.java | 49 ++++++++++++++++++- 3 files changed, 97 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index a8c8e04..db41768 100644 --- a/README.md +++ b/README.md @@ -56,6 +56,23 @@ stackify.environment=YOUR_ENVIRONMENT Note: *If you are logging from a device that has the stackify-agent installed, the environment setting is optional. We will use the environment associated to your device in Stackify.* +#### Programmatic Configuration (Optional) + +Instead of providing a properties file in your classpath, you can configure the Metrics API programmatically: +``` +ApiConfiguration.Builder builder = ApiConfiguration.newBuilder(); +builder.apiKey("YOUR_API_KEY"); +builder.application("YOUR_APPLICATION_NAME"); +builder.environment("YOUR_ENVIRONMENT"); +ApiConfiguration config = builder.build(); + +MetricManager.configure(config); +``` + +This needs to be done at application startup before any other interactions with the Metrics API. + +Note: *If you are logging from a device that has the stackify-agent installed, the environment setting is optional. We will use the environment associated to your device in Stackify.* + #### Gauge Metric ```java diff --git a/src/main/java/com/stackify/metric/MetricManager.java b/src/main/java/com/stackify/metric/MetricManager.java index 2b5de67..0b0c36d 100644 --- a/src/main/java/com/stackify/metric/MetricManager.java +++ b/src/main/java/com/stackify/metric/MetricManager.java @@ -24,6 +24,7 @@ import com.stackify.api.common.ApiConfiguration; import com.stackify.api.common.ApiConfigurations; import com.stackify.api.common.AppIdentityService; +import com.stackify.api.common.EnvironmentDetails; import com.stackify.metric.impl.MetricBackgroundService; import com.stackify.metric.impl.MetricCollector; import com.stackify.metric.impl.MetricMonitorService; @@ -70,15 +71,42 @@ public static MetricCollector getCollector() { return COLLECTOR; } + + /** + * Manually configure the metrics api + * @param config API configuration + */ + public static synchronized void configure(final ApiConfiguration config) { + + ApiConfiguration.Builder builder = ApiConfiguration.newBuilder(); + builder.apiUrl(config.getApiUrl()); + builder.apiKey(config.getApiKey()); + builder.application(config.getApplication()); + builder.environment(config.getEnvironment()); + + if (config.getEnvDetail() == null) + { + builder.envDetail(EnvironmentDetails.getEnvironmentDetail(config.getApplication(), config.getEnvironment())); + } + else + { + builder.envDetail(config.getEnvDetail()); + } + + CONFIG = builder.build(); + } + /** * Start up the background thread that is processing metrics */ private static synchronized void startup() { try { - CONFIG = ApiConfigurations.fromProperties(); - + if (CONFIG == null) { + CONFIG = ApiConfigurations.fromProperties(); + } + ObjectMapper objectMapper = new ObjectMapper(); AppIdentityService appIdentityService = new AppIdentityService(CONFIG, objectMapper, true); @@ -105,6 +133,8 @@ public static synchronized void shutdown() { } catch (Throwable t) { LOGGER.error("Exception stopping Stackify Metrics API service", t); } + + INITIALIZED.compareAndSet(true, false); } } diff --git a/src/test/java/com/stackify/metric/MetricManagerTest.java b/src/test/java/com/stackify/metric/MetricManagerTest.java index 0c770be..7c1cfed 100644 --- a/src/test/java/com/stackify/metric/MetricManagerTest.java +++ b/src/test/java/com/stackify/metric/MetricManagerTest.java @@ -15,6 +15,7 @@ */ package com.stackify.metric; +import org.junit.After; import org.junit.Assert; import org.junit.Test; import org.junit.runner.RunWith; @@ -23,6 +24,8 @@ import org.powermock.core.classloader.annotations.PrepareForTest; import org.powermock.modules.junit4.PowerMockRunner; +import com.stackify.api.common.ApiConfiguration; +import com.stackify.api.common.ApiConfigurations; import com.stackify.api.common.AppIdentityService; import com.stackify.metric.impl.MetricBackgroundService; import com.stackify.metric.impl.MetricCollector; @@ -34,9 +37,17 @@ * @author Eric Martin */ @RunWith(PowerMockRunner.class) -@PrepareForTest({MetricManager.class, AppIdentityService.class, MetricMonitorService.class, MetricSender.class, MetricBackgroundService.class}) +@PrepareForTest({MetricManager.class, AppIdentityService.class, MetricMonitorService.class, MetricSender.class, MetricBackgroundService.class, ApiConfigurations.class}) public class MetricManagerTest { + /** + * tearDown + */ + @After + public void tearDown() { + MetricManager.shutdown(); + } + /** * testGetCollectorAndShutdown * @throws Exception @@ -73,4 +84,40 @@ public void testGetCollectorAndShutdown() throws Exception { Mockito.verify(background).stop(); } + + /** + * testManualConfig + * @throws Exception + */ + @Test + public void testManualConfig() throws Exception { + + PowerMockito.mockStatic(ApiConfigurations.class); + PowerMockito.when(ApiConfigurations.fromProperties()).thenThrow(new RuntimeException()); + + ApiConfiguration config = Mockito.mock(ApiConfiguration.class); + + MetricManager.configure(config); + + AppIdentityService ais = Mockito.mock(AppIdentityService.class); + PowerMockito.whenNew(AppIdentityService.class).withAnyArguments().thenReturn(ais); + + MetricMonitorService mms = Mockito.mock(MetricMonitorService.class); + PowerMockito.whenNew(MetricMonitorService.class).withAnyArguments().thenReturn(mms); + + MetricSender sender = Mockito.mock(MetricSender.class); + PowerMockito.whenNew(MetricSender.class).withAnyArguments().thenReturn(sender); + + MetricBackgroundService background = PowerMockito.mock(MetricBackgroundService.class); + PowerMockito.whenNew(MetricBackgroundService.class).withAnyArguments().thenReturn(background); + + MetricCollector collector = MetricManager.getCollector(); + Assert.assertNotNull(collector); + + Mockito.verify(background).start(); + + MetricManager.shutdown(); + + Mockito.verify(background).stop(); + } } From de28e715e9ad6627cf2ffd1913b23ebee0089415 Mon Sep 17 00:00:00 2001 From: Eric Martin Date: Fri, 10 Jul 2015 20:45:48 +0000 Subject: [PATCH 32/47] [maven-release-plugin] prepare release stackify-metrics-1.1.6 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 10a23cc..de1ba2e 100644 --- a/pom.xml +++ b/pom.xml @@ -3,7 +3,7 @@ com.stackify stackify-metrics - 1.1.6-SNAPSHOT + 1.1.6 Stackify Metrics Stackify Metrics From 48a0415bcc84d1e5b7e6309f4453a6394c9505f0 Mon Sep 17 00:00:00 2001 From: Eric Martin Date: Fri, 10 Jul 2015 20:45:52 +0000 Subject: [PATCH 33/47] [maven-release-plugin] prepare for next development iteration --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index de1ba2e..7c29b81 100644 --- a/pom.xml +++ b/pom.xml @@ -3,7 +3,7 @@ com.stackify stackify-metrics - 1.1.6 + 1.1.7-SNAPSHOT Stackify Metrics Stackify Metrics From 276e0b46bf188489ba5a8e96a7fb50921597c676 Mon Sep 17 00:00:00 2001 From: jmichaelis Date: Mon, 3 Aug 2015 11:01:48 -0500 Subject: [PATCH 34/47] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index db41768..93d76ed 100644 --- a/README.md +++ b/README.md @@ -8,7 +8,7 @@ API for sending custom metrics to Stackify. Custom Metrics Overview: -http://docs.stackify.com/m/7787/l/232533 +http://support.stackify.com/hc/en-us/articles/205419705-Custom-Metrics-Overview Sign Up for a Trial: From 578cd7d9a616695e1960a512b83f0868807649cb Mon Sep 17 00:00:00 2001 From: Eric Martin Date: Wed, 7 Oct 2015 19:42:28 +0000 Subject: [PATCH 35/47] Upgrade stackify-api-java to fix retransmission failures --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 7c29b81..77674f9 100644 --- a/pom.xml +++ b/pom.xml @@ -74,7 +74,7 @@ com.stackify stackify-api-java - 2.1.3 + 2.1.5-SNAPSHOT From 31199af82e0712dd627acd0a37666a02f6898e4d Mon Sep 17 00:00:00 2001 From: Eric Martin Date: Wed, 21 Oct 2015 18:03:13 +0000 Subject: [PATCH 36/47] Upgrade stackify-api-java for http/retry improvements --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 77674f9..2a4e79f 100644 --- a/pom.xml +++ b/pom.xml @@ -74,7 +74,7 @@ com.stackify stackify-api-java - 2.1.5-SNAPSHOT + 2.1.6 From fdbe36d8a418d02bc591f7511ab3760bcb387978 Mon Sep 17 00:00:00 2001 From: Eric Martin Date: Wed, 21 Oct 2015 18:14:59 +0000 Subject: [PATCH 37/47] [maven-release-plugin] prepare release stackify-metrics-1.1.7 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 2a4e79f..35b75f0 100644 --- a/pom.xml +++ b/pom.xml @@ -3,7 +3,7 @@ com.stackify stackify-metrics - 1.1.7-SNAPSHOT + 1.1.7 Stackify Metrics Stackify Metrics From ea8ab311d0088662523e75a2c3ea0ec4600dc55d Mon Sep 17 00:00:00 2001 From: Eric Martin Date: Wed, 21 Oct 2015 18:15:02 +0000 Subject: [PATCH 38/47] [maven-release-plugin] prepare for next development iteration --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 35b75f0..d078644 100644 --- a/pom.xml +++ b/pom.xml @@ -3,7 +3,7 @@ com.stackify stackify-metrics - 1.1.7 + 1.1.8-SNAPSHOT Stackify Metrics Stackify Metrics From dcc1961c2c22b6f433a2bdbb5e1d68af73e03563 Mon Sep 17 00:00:00 2001 From: Eric Martin Date: Fri, 5 Aug 2016 15:27:59 -0500 Subject: [PATCH 39/47] Update .travis.yml --- .travis.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.travis.yml b/.travis.yml index dab6fd1..8aa3715 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,3 +1,4 @@ +sudo: false language: java jdk: - openjdk6 From 58bb9f9880f1de09c923ef443edf772c0627aca1 Mon Sep 17 00:00:00 2001 From: Eric Martin Date: Wed, 20 Dec 2017 11:36:07 -0600 Subject: [PATCH 40/47] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 93d76ed..a6edb71 100644 --- a/README.md +++ b/README.md @@ -8,7 +8,7 @@ API for sending custom metrics to Stackify. Custom Metrics Overview: -http://support.stackify.com/hc/en-us/articles/205419705-Custom-Metrics-Overview +http://support.stackify.com/custom-metrics-overview/ Sign Up for a Trial: From 5c7289d15d86511016356f9ae46c1952e21d4091 Mon Sep 17 00:00:00 2001 From: Eric Martin Date: Mon, 5 Feb 2018 15:24:32 -0600 Subject: [PATCH 41/47] Update .travis.yml --- .travis.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 8aa3715..dab6fd1 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,4 +1,3 @@ -sudo: false language: java jdk: - openjdk6 From 5d977c0da7018a4041dc70ade665ab4b6e54dfab Mon Sep 17 00:00:00 2001 From: Darin Howard Date: Wed, 31 Oct 2018 14:26:45 -0500 Subject: [PATCH 42/47] updating jackson and stackify api versions. --- .gitignore | 4 +- pom.xml | 109 +++++++++++++++++++++++++++++------------------------ 2 files changed, 62 insertions(+), 51 deletions(-) diff --git a/.gitignore b/.gitignore index 1940f2a..9006e87 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,7 @@ .classpath .project .settings +.idea target -coverage.ec \ No newline at end of file +coverage.ec +*.iml diff --git a/pom.xml b/pom.xml index d078644..0a8a6b3 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ com.stackify stackify-metrics 1.1.8-SNAPSHOT - + Stackify Metrics Stackify Metrics https://github.com/stackify/stackify-metrics @@ -13,7 +13,7 @@ oss-parent 9 - + The Apache Software License, Version 2.0 @@ -31,56 +31,60 @@ Stackify, LLC http://www.stackify.com - + eric-martin Eric Martin + + darinhoward + Darin Howard + - + 1.6 - + - + + + com.stackify + stackify-api-java + 3.1.0 + + org.slf4j slf4j-api 1.7.5 - + com.fasterxml.jackson.core jackson-core - 2.1.3 + 2.8.11 - - - com.fasterxml.jackson.core - jackson-annotations - 2.1.2 - - + - com.fasterxml.jackson.core - jackson-databind - 2.1.3 + com.fasterxml.jackson.core + jackson-annotations + 2.8.11 - + - com.stackify - stackify-api-java - 2.1.6 + com.fasterxml.jackson.core + jackson-databind + 2.8.11.1 - + - + org.slf4j slf4j-log4j12 @@ -94,53 +98,53 @@ 4.11 test - + org.mockito mockito-core 1.9.5 test - + org.powermock powermock-core 1.5.6 test - + org.powermock powermock-module-junit4 1.5.6 test - + org.powermock powermock-api-mockito 1.5.6 test - + nl.jqno.equalsverifier equalsverifier 1.4.1 test - + - + - + src/main/resources true - + org.apache.maven.wagon @@ -148,9 +152,9 @@ 2.2 - + - + org.apache.maven.plugins maven-compiler-plugin @@ -160,7 +164,7 @@ ${java.version} - + org.apache.maven.plugins maven-jar-plugin @@ -171,20 +175,25 @@ - + org.apache.maven.plugins maven-javadoc-plugin + 2.9.1 attach-javadocs jar + + false + -Xdoclint:none + - + org.apache.maven.plugins maven-source-plugin @@ -197,7 +206,7 @@ - + org.apache.felix maven-bundle-plugin @@ -212,7 +221,7 @@ - + org.codehaus.mojo cobertura-maven-plugin @@ -223,31 +232,31 @@ - + org.eluder.coveralls coveralls-maven-plugin 2.2.0 - + - + - + - + org.apache.maven.plugins maven-javadoc-plugin 2.9.1 - + - + - + release-sign-artifacts @@ -277,5 +286,5 @@ - - \ No newline at end of file + + From 8ca7fdac1bc1413bb0686645644dd5db461a7099 Mon Sep 17 00:00:00 2001 From: Darin Howard Date: Wed, 31 Oct 2018 14:27:55 -0500 Subject: [PATCH 43/47] [maven-release-plugin] prepare release stackify-metrics-2.1.0 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 0a8a6b3..d801d84 100644 --- a/pom.xml +++ b/pom.xml @@ -3,7 +3,7 @@ com.stackify stackify-metrics - 1.1.8-SNAPSHOT + 2.1.0 Stackify Metrics Stackify Metrics From 6827d516085e4b29a3e54da963eebb2955822a5c Mon Sep 17 00:00:00 2001 From: Darin Howard Date: Wed, 31 Oct 2018 14:28:11 -0500 Subject: [PATCH 44/47] [maven-release-plugin] prepare for next development iteration --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index d801d84..d676535 100644 --- a/pom.xml +++ b/pom.xml @@ -3,7 +3,7 @@ com.stackify stackify-metrics - 2.1.0 + 2.1.1-SNAPSHOT Stackify Metrics Stackify Metrics From d49e4c4e0c8515c981501c59c1e3cb2cbd50a62a Mon Sep 17 00:00:00 2001 From: Darin Howard Date: Tue, 7 Jul 2020 16:29:51 -0500 Subject: [PATCH 45/47] update dependency version --- README.md | 4 ++-- pom.xml | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index a6edb71..9427e53 100644 --- a/README.md +++ b/README.md @@ -21,7 +21,7 @@ Add it as a maven dependency: com.stackify stackify-metrics - INSERT_LATEST_MAVEN_CENTRAL_VERSION + 2.1.1 ``` @@ -210,7 +210,7 @@ counterAndTimer.autoReportZeroValue(); ## License -Copyright 2014 Stackify, LLC. +Copyright 2020 Stackify, LLC. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/pom.xml b/pom.xml index d676535..ba4c796 100644 --- a/pom.xml +++ b/pom.xml @@ -66,19 +66,19 @@ com.fasterxml.jackson.core jackson-core - 2.8.11 + 2.9.10 com.fasterxml.jackson.core jackson-annotations - 2.8.11 + 2.9.10 com.fasterxml.jackson.core jackson-databind - 2.8.11.1 + 2.9.10.5 From 92c873ddc534d844ef8dc7e21331ec1c6c6cf21d Mon Sep 17 00:00:00 2001 From: Darin Howard Date: Tue, 7 Jul 2020 16:30:40 -0500 Subject: [PATCH 46/47] [maven-release-plugin] prepare release stackify-metrics-2.1.1 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index ba4c796..e066961 100644 --- a/pom.xml +++ b/pom.xml @@ -3,7 +3,7 @@ com.stackify stackify-metrics - 2.1.1-SNAPSHOT + 2.1.1 Stackify Metrics Stackify Metrics From 2c672deb0ee48fc4a6c79ba68f53bb5f571ce267 Mon Sep 17 00:00:00 2001 From: Darin Howard Date: Tue, 7 Jul 2020 16:30:52 -0500 Subject: [PATCH 47/47] [maven-release-plugin] prepare for next development iteration --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index e066961..c754e9a 100644 --- a/pom.xml +++ b/pom.xml @@ -3,7 +3,7 @@ com.stackify stackify-metrics - 2.1.1 + 2.1.2-SNAPSHOT Stackify Metrics Stackify Metrics