You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@edgent.apache.org by vd...@apache.org on 2016/03/09 04:23:47 UTC
incubator-quarks git commit: QUARKS-17 SingleMetricAbstractOplet
always creates metric name
Repository: incubator-quarks
Updated Branches:
refs/heads/QUARKS-17-vdogaru [created] 2ca0f8802
QUARKS-17 SingleMetricAbstractOplet always creates metric name
Project: http://git-wip-us.apache.org/repos/asf/incubator-quarks/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-quarks/commit/2ca0f880
Tree: http://git-wip-us.apache.org/repos/asf/incubator-quarks/tree/2ca0f880
Diff: http://git-wip-us.apache.org/repos/asf/incubator-quarks/diff/2ca0f880
Branch: refs/heads/QUARKS-17-vdogaru
Commit: 2ca0f8802533234a993b44ce33399054cff8febb
Parents: 5c4db58
Author: Victor Dogaru <vd...@apache.org>
Authored: Tue Mar 8 19:20:51 2016 -0800
Committer: Victor Dogaru <vd...@apache.org>
Committed: Tue Mar 8 19:23:21 2016 -0800
----------------------------------------------------------------------
.../oplets/SingleMetricAbstractOplet.java | 6 +-
.../quarks/test/metrics/MetricsCommonTest.java | 103 +++++++++++++++++++
2 files changed, 108 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-quarks/blob/2ca0f880/utils/metrics/src/main/java/quarks/metrics/oplets/SingleMetricAbstractOplet.java
----------------------------------------------------------------------
diff --git a/utils/metrics/src/main/java/quarks/metrics/oplets/SingleMetricAbstractOplet.java b/utils/metrics/src/main/java/quarks/metrics/oplets/SingleMetricAbstractOplet.java
index 21b5e95..bd88f60 100644
--- a/utils/metrics/src/main/java/quarks/metrics/oplets/SingleMetricAbstractOplet.java
+++ b/utils/metrics/src/main/java/quarks/metrics/oplets/SingleMetricAbstractOplet.java
@@ -26,6 +26,10 @@ public abstract class SingleMetricAbstractOplet<T> extends Peek<T> {
/**
* Returns the name of the metric used by this oplet for registration.
* The name uniquely identifies the metric in the {@link MetricRegistry}.
+ * <p>
+ * The name of the metric is {@code null} prior to oplet initialization,
+ * or if this oplet has not been initialized with a
+ * {@code MetricRegistry}.
*
* @return the name of the metric used by this oplet.
*/
@@ -39,9 +43,9 @@ public abstract class SingleMetricAbstractOplet<T> extends Peek<T> {
public final void initialize(OpletContext<T, T> context) {
super.initialize(context);
- this.metricName = context.uniquify(shortMetricName);
MetricRegistry registry = context.getService(MetricRegistry.class);
if (registry != null) {
+ this.metricName = context.uniquify(shortMetricName);
registry.register(getMetricName(), getMetric());
}
}
http://git-wip-us.apache.org/repos/asf/incubator-quarks/blob/2ca0f880/utils/metrics/src/test/java/quarks/test/metrics/MetricsCommonTest.java
----------------------------------------------------------------------
diff --git a/utils/metrics/src/test/java/quarks/test/metrics/MetricsCommonTest.java b/utils/metrics/src/test/java/quarks/test/metrics/MetricsCommonTest.java
index 17d86c1..0bf6c81 100644
--- a/utils/metrics/src/test/java/quarks/test/metrics/MetricsCommonTest.java
+++ b/utils/metrics/src/test/java/quarks/test/metrics/MetricsCommonTest.java
@@ -4,13 +4,25 @@
*/
package quarks.test.metrics;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
import org.junit.Test;
+import com.codahale.metrics.MetricRegistry;
+
+import quarks.function.Consumer;
import quarks.metrics.oplets.CounterOp;
import quarks.metrics.oplets.RateMeter;
+import quarks.oplet.JobContext;
import quarks.oplet.Oplet;
+import quarks.oplet.OpletContext;
import quarks.oplet.core.AbstractOplet;
import quarks.oplet.core.Peek;
@@ -28,4 +40,95 @@ public class MetricsCommonTest {
assertTrue(AbstractOplet.class.isAssignableFrom(RateMeter.class));
assertTrue(Peek.class.isAssignableFrom(RateMeter.class));
}
+
+ @Test
+ public void metricNameRateMeter() throws Exception {
+ Context<Object,Object> ctx = new Context<>();
+ ctx.addService(MetricRegistry.class, new MetricRegistry());
+
+ RateMeter<Object> op = new RateMeter<>();
+ op.initialize(ctx);
+ assertNotNull(op.getMetricName());
+ op.close();
+ }
+
+ @Test
+ public void metricNullNameRateMeter() throws Exception {
+ Context<Object,Object> ctx = new Context<>();
+ RateMeter<Object> op = new RateMeter<>();
+
+ op.initialize(ctx);
+ assertNull(op.getMetricName());
+ op.close();
+ }
+
+ @Test
+ public void metricNameCounter() throws Exception {
+ Context<Object,Object> ctx = new Context<>();
+ ctx.addService(MetricRegistry.class, new MetricRegistry());
+
+ CounterOp<Object> op = new CounterOp<>();
+ op.initialize(ctx);
+ assertNotNull(op.getMetricName());
+ op.close();
+ }
+
+ @Test
+ public void metricNullNameCounter() throws Exception {
+ Context<Object,Object> ctx = new Context<>();
+ CounterOp<Object> op = new CounterOp<>();
+
+ op.initialize(ctx);
+ assertNull(op.getMetricName());
+ op.close();
+ }
+
+ private static class Context<I, O> implements OpletContext<I, O> {
+ private final Map<Class<?>, Object> services = new HashMap<>();
+
+ public <T> T addService(Class<T> serviceClass, T service) {
+ return serviceClass.cast(services.put(serviceClass, service));
+ }
+
+ @Override
+ public String getId() {
+ throw new UnsupportedOperationException();
+ }
+
+ @Override
+ public <T> T getService(Class<T> serviceClass) {
+ return serviceClass.cast(services.get(serviceClass));
+ }
+
+ @Override
+ public int getInputCount() {
+ throw new UnsupportedOperationException();
+ }
+
+ @Override
+ public int getOutputCount() {
+ throw new UnsupportedOperationException();
+ }
+
+ @SuppressWarnings("serial")
+ @Override
+ public List<? extends Consumer<O>> getOutputs() {
+ List<Consumer<O>> outputs = new ArrayList<>();
+ outputs.add(0, new Consumer<O>() {
+ @Override
+ public void accept(O value) {}
+ });
+ return outputs;
+ }
+
+ @Override
+ public JobContext getJobContext() {
+ throw new UnsupportedOperationException();
+ }
+
+ @Override
+ public String uniquify(String name) {
+ return "unique." + name;
+ }
+ }
}