diff --git a/pom.xml b/pom.xml
index 9468a4d..eef429e 100644
--- a/pom.xml
+++ b/pom.xml
@@ -28,6 +28,7 @@
UTF-8
+ 5.13.2
1.8
1.8
@@ -107,6 +108,15 @@
micrometer-registry-jmx
1.0.6
+
+ io.zipkin.brave
+ brave-instrumentation-okhttp3
+
+
+ io.zipkin.reporter2
+ zipkin-sender-okhttp3
+ 2.16.2
+
@@ -139,4 +149,16 @@
https://oss.jfrog.org/artifactory/oss-snapshot-local
+
+
+
+
+ io.zipkin.brave
+ brave-bom
+ ${brave.version}
+ pom
+ import
+
+
+
diff --git a/src/main/java/brave/RealSpan.java b/src/main/java/brave/RealSpan.java
new file mode 100644
index 0000000..21f4070
--- /dev/null
+++ b/src/main/java/brave/RealSpan.java
@@ -0,0 +1,195 @@
+/*
+ * Copyright 2013-2020 The OpenZipkin Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
+ * in compliance with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software distributed under the License
+ * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
+ * or implied. See the License for the specific language governing permissions and limitations under
+ * the License.
+ */
+package brave;
+
+import brave.handler.MutableSpan;
+import brave.internal.recorder.PendingSpans;
+import brave.propagation.TraceContext;
+
+/** This wraps the public api and guards access to a mutable span. */
+public final class RealSpan extends Span {
+ final TraceContext context;
+ final PendingSpans pendingSpans;
+ final MutableSpan state;
+ final Clock clock;
+
+ RealSpan(TraceContext context,
+ PendingSpans pendingSpans,
+ MutableSpan state,
+ Clock clock
+ ) {
+ this.context = context;
+ this.pendingSpans = pendingSpans;
+ this.state = state;
+ this.clock = clock;
+ }
+
+ @Override public boolean isNoop() {
+ return false;
+ }
+
+ @Override public TraceContext context() {
+ return context;
+ }
+
+ @Override public SpanCustomizer customizer() {
+ return new SpanCustomizerShield(this);
+ }
+
+ @Override public Span start() {
+ return start(clock.currentTimeMicroseconds());
+ }
+
+ @Override public Span start(long timestamp) {
+ synchronized (state) {
+ state.startTimestamp(timestamp);
+ }
+ return this;
+ }
+
+ @Override public Span name(String name) {
+ synchronized (state) {
+ state.name(name);
+ }
+ return this;
+ }
+
+ @Override public Span kind(Kind kind) {
+ synchronized (state) {
+ state.kind(kind);
+ }
+ return this;
+ }
+
+ @Override public Span annotate(String value) {
+ return annotate(clock.currentTimeMicroseconds(), value);
+ }
+
+ @Override public Span annotate(long timestamp, String value) {
+ // Modern instrumentation should not send annotations such as this, but we leniently
+ // accept them rather than fail. This for example allows old bridges like to Brave v3 to work
+ if ("cs".equals(value)) {
+ synchronized (state) {
+ state.kind(Span.Kind.CLIENT);
+ state.startTimestamp(timestamp);
+ }
+ } else if ("sr".equals(value)) {
+ synchronized (state) {
+ state.kind(Span.Kind.SERVER);
+ state.startTimestamp(timestamp);
+ }
+ } else if ("cr".equals(value)) {
+ synchronized (state) {
+ state.kind(Span.Kind.CLIENT);
+ }
+ finish(timestamp);
+ } else if ("ss".equals(value)) {
+ synchronized (state) {
+ state.kind(Span.Kind.SERVER);
+ }
+ finish(timestamp);
+ } else {
+ synchronized (state) {
+ state.annotate(timestamp, value);
+ }
+ }
+ return this;
+ }
+
+ @Override public Span tag(String key, String value) {
+ synchronized (state) {
+ state.tag(key, value);
+ }
+ return this;
+ }
+
+ @Override public Span error(Throwable throwable) {
+ synchronized (state) {
+ state.error(throwable);
+ }
+ return this;
+ }
+
+ public Span localServiceName(String localServiceName) {
+ synchronized (state) {
+ state.localServiceName(localServiceName);
+ }
+ return this;
+ }
+
+ public String remoteServiceName() {
+ synchronized (state) {
+ return state.remoteServiceName();
+ }
+ }
+
+ @Override public Span remoteServiceName(String remoteServiceName) {
+ synchronized (state) {
+ state.remoteServiceName(remoteServiceName);
+ }
+ return this;
+ }
+
+ @Override public boolean remoteIpAndPort(String remoteIp, int remotePort) {
+ synchronized (state) {
+ return state.remoteIpAndPort(remoteIp, remotePort);
+ }
+ }
+
+ @Override public void finish() {
+ finish(0L);
+ }
+
+ @Override public void finish(long timestamp) {
+ synchronized (state) {
+ pendingSpans.finish(context, timestamp);
+ }
+ }
+
+ @Override public void abandon() {
+ pendingSpans.abandon(context);
+ }
+
+ @Override public void flush() {
+ pendingSpans.flush(context);
+ }
+
+ @Override public String toString() {
+ return "RealSpan(" + context + ")";
+ }
+
+ /**
+ * This also matches equals against a lazy span. The rationale is least surprise to the user, as
+ * code should not act differently given an instance of lazy or {@link RealSpan}.
+ */
+ @Override public boolean equals(Object o) {
+ if (o == this) return true;
+ return isEqualToRealOrLazySpan(context, o);
+ }
+
+ // We don't compare a RealSpan vs a NoopSpan as they can never equal each other.
+ // RealSpan's are always locally sampled and Noop ones are always not.
+ static boolean isEqualToRealOrLazySpan(TraceContext context, Object o) {
+ if (o instanceof LazySpan) {
+ return context.equals(((LazySpan) o).context);
+ } else if (o instanceof RealSpan) {
+ return context.equals(((RealSpan) o).context);
+ }
+ return false;
+ }
+
+ @Override public int hashCode() {
+ return context.hashCode();
+ }
+}
diff --git a/src/main/java/com/github/Test.java b/src/main/java/com/github/Test.java
new file mode 100644
index 0000000..112750b
--- /dev/null
+++ b/src/main/java/com/github/Test.java
@@ -0,0 +1,58 @@
+package com.github;
+
+import io.vlingo.actors.Actor;
+import io.vlingo.actors.Definition;
+import io.vlingo.actors.World;
+
+public class Test {
+ public interface Ping {
+ void ping();
+ }
+
+ public static class PingActor extends Actor implements Ping {
+ @Override
+ public void ping() {
+ System.out.println("Ping!");
+
+ stage().actorOf(Pong.class, stage().addressFactory().from("100"))
+ .andFinallyConsume(Pong::pong);
+ }
+ }
+
+ public interface Pong {
+ void pong();
+ }
+
+ public static class PongActor extends Actor implements Pong {
+ @Override
+ public void pong() {
+ System.out.println("Pong!");
+
+ stage().actorOf(Foo.class, stage().addressFactory().from("200"))
+ .andFinallyConsume(Foo::foo);
+ }
+ }
+
+ public interface Foo {
+ void foo();
+ }
+
+ public static class FooActor extends Actor implements Foo {
+ @Override
+ public void foo() {
+ System.out.println("Foo!");
+ }
+ }
+
+
+ public static void main(String[] args) {
+ World world = World.start("test");
+
+ Ping ping = world.actorFor(Ping.class, PingActor.class);
+
+ world.stage().actorFor(Pong.class, Definition.has(PongActor.class, Definition.NoParameters), world.addressFactory().from("100"));
+ world.stage().actorFor(Foo.class, Definition.has(FooActor.class, Definition.NoParameters), world.addressFactory().from("200"));
+
+ ping.ping();
+ }
+}
diff --git a/src/main/java/io/vlingo/telemetry/plugin/mailbox/MailboxTelemetryPlugin.java b/src/main/java/io/vlingo/telemetry/plugin/mailbox/MailboxTelemetryPlugin.java
index d5e70cb..713254b 100644
--- a/src/main/java/io/vlingo/telemetry/plugin/mailbox/MailboxTelemetryPlugin.java
+++ b/src/main/java/io/vlingo/telemetry/plugin/mailbox/MailboxTelemetryPlugin.java
@@ -9,6 +9,8 @@
import java.util.Properties;
+import brave.Tracer;
+import brave.Tracing;
import io.vlingo.actors.Configuration;
import io.vlingo.actors.Registrar;
import io.vlingo.actors.plugin.Plugin;
@@ -16,6 +18,10 @@
import io.vlingo.actors.plugin.PluginProperties;
import io.vlingo.actors.plugin.mailbox.DefaultMailboxProviderKeeper;
import io.vlingo.telemetry.Telemetry;
+import io.vlingo.telemetry.tracing.TracingBaggage;
+import zipkin2.reporter.brave.AsyncZipkinSpanHandler;
+import zipkin2.reporter.brave.ZipkinSpanHandler;
+import zipkin2.reporter.okhttp3.OkHttpSender;
public class MailboxTelemetryPlugin implements Plugin {
public static class MailboxTelemetryPluginConfiguration implements PluginConfiguration {
@@ -65,7 +71,21 @@ public int pass() {
@Override
public void start(final Registrar registrar) {
Telemetry> telemetry = Telemetry.from(registrar.world());
- registrar.registerMailboxProviderKeeper(new TelemetryMailboxProviderKeeper(new DefaultMailboxProviderKeeper(), new DefaultMailboxTelemetry(telemetry)));
+ OkHttpSender sender = OkHttpSender.create("http://127.0.0.1:9411/api/v2/spans");
+// (this dependency is io.zipkin.reporter2:zipkin-reporter-brave)
+ ZipkinSpanHandler zipkinSpanHandler = AsyncZipkinSpanHandler.create(sender);
+
+// Create a tracing component with the service name you want to see in Zipkin.
+ Tracing tracing = Tracing.newBuilder()
+ .traceId128Bit(true)
+ .addSpanHandler(zipkinSpanHandler)
+ .build();
+
+// Tracing exposes objects you might need, most importantly the tracer
+ Tracer tracer = tracing.tracer();
+ TracingBaggage baggage = TracingBaggage.withTracer(tracer);
+
+ registrar.registerMailboxProviderKeeper(new TelemetryMailboxProviderKeeper(new DefaultMailboxProviderKeeper(), new DefaultMailboxTelemetry(telemetry), baggage));
}
@Override
diff --git a/src/main/java/io/vlingo/telemetry/plugin/mailbox/TelemetryMailbox.java b/src/main/java/io/vlingo/telemetry/plugin/mailbox/TelemetryMailbox.java
index 6b4de6f..f989dd2 100644
--- a/src/main/java/io/vlingo/telemetry/plugin/mailbox/TelemetryMailbox.java
+++ b/src/main/java/io/vlingo/telemetry/plugin/mailbox/TelemetryMailbox.java
@@ -12,14 +12,17 @@
import io.vlingo.actors.Message;
import io.vlingo.actors.Returns;
import io.vlingo.common.SerializableConsumer;
+import io.vlingo.telemetry.tracing.TracingBaggage;
public class TelemetryMailbox implements Mailbox {
private final MailboxTelemetry telemetry;
private final Mailbox delegate;
+ private final TracingBaggage baggage;
- public TelemetryMailbox(final MailboxTelemetry telemetry, final Mailbox delegate) {
+ public TelemetryMailbox(final MailboxTelemetry telemetry, final Mailbox delegate, final TracingBaggage baggage) {
this.telemetry = telemetry;
this.delegate = delegate;
+ this.baggage = baggage;
}
@Override
@@ -50,7 +53,7 @@ public void resume(final String name) {
@Override
public void send(final Message message) {
try {
- delegate.send(new TelemetryMessage(message, telemetry));
+ delegate.send(new TelemetryMessage(message, telemetry, baggage));
telemetry.onSendMessage(message.actor());
} catch (Exception e) {
telemetry.onSendMessageFailed(message.actor(), e);
diff --git a/src/main/java/io/vlingo/telemetry/plugin/mailbox/TelemetryMailboxProvider.java b/src/main/java/io/vlingo/telemetry/plugin/mailbox/TelemetryMailboxProvider.java
index 880c197..50446f9 100644
--- a/src/main/java/io/vlingo/telemetry/plugin/mailbox/TelemetryMailboxProvider.java
+++ b/src/main/java/io/vlingo/telemetry/plugin/mailbox/TelemetryMailboxProvider.java
@@ -10,14 +10,17 @@
import io.vlingo.actors.Dispatcher;
import io.vlingo.actors.Mailbox;
import io.vlingo.actors.MailboxProvider;
+import io.vlingo.telemetry.tracing.TracingBaggage;
public class TelemetryMailboxProvider implements MailboxProvider {
private final MailboxTelemetry telemetry;
private final MailboxProvider delegate;
+ private final TracingBaggage baggage;
- public TelemetryMailboxProvider(final MailboxTelemetry telemetry, final MailboxProvider delegate) {
+ public TelemetryMailboxProvider(final MailboxTelemetry telemetry, final MailboxProvider delegate, final TracingBaggage baggage) {
this.telemetry = telemetry;
this.delegate = delegate;
+ this.baggage = baggage;
}
@Override
@@ -27,11 +30,11 @@ public void close() {
@Override
public Mailbox provideMailboxFor(final int hashCode) {
- return new TelemetryMailbox(telemetry, delegate.provideMailboxFor(hashCode));
+ return new TelemetryMailbox(telemetry, delegate.provideMailboxFor(hashCode), baggage);
}
@Override
public Mailbox provideMailboxFor(final int hashCode, final Dispatcher dispatcher) {
- return new TelemetryMailbox(telemetry, delegate.provideMailboxFor(hashCode, dispatcher));
+ return new TelemetryMailbox(telemetry, delegate.provideMailboxFor(hashCode, dispatcher), baggage);
}
}
diff --git a/src/main/java/io/vlingo/telemetry/plugin/mailbox/TelemetryMailboxProviderKeeper.java b/src/main/java/io/vlingo/telemetry/plugin/mailbox/TelemetryMailboxProviderKeeper.java
index d539258..a073932 100644
--- a/src/main/java/io/vlingo/telemetry/plugin/mailbox/TelemetryMailboxProviderKeeper.java
+++ b/src/main/java/io/vlingo/telemetry/plugin/mailbox/TelemetryMailboxProviderKeeper.java
@@ -10,14 +10,17 @@
import io.vlingo.actors.Mailbox;
import io.vlingo.actors.MailboxProvider;
import io.vlingo.actors.MailboxProviderKeeper;
+import io.vlingo.telemetry.tracing.TracingBaggage;
public class TelemetryMailboxProviderKeeper implements MailboxProviderKeeper {
private final MailboxProviderKeeper delegate;
private final MailboxTelemetry telemetry;
+ private final TracingBaggage baggage;
- public TelemetryMailboxProviderKeeper(final MailboxProviderKeeper delegate, final MailboxTelemetry telemetry) {
+ public TelemetryMailboxProviderKeeper(final MailboxProviderKeeper delegate, final MailboxTelemetry telemetry, final TracingBaggage baggage) {
this.delegate = delegate;
this.telemetry = telemetry;
+ this.baggage = baggage;
}
@Override
@@ -37,7 +40,7 @@ public String findDefault() {
@Override
public void keep(final String name, final boolean isDefault, final MailboxProvider mailboxProvider) {
- delegate.keep(name, isDefault, new TelemetryMailboxProvider(telemetry, mailboxProvider));
+ delegate.keep(name, isDefault, new TelemetryMailboxProvider(telemetry, mailboxProvider, baggage));
}
@Override
diff --git a/src/main/java/io/vlingo/telemetry/plugin/mailbox/TelemetryMessage.java b/src/main/java/io/vlingo/telemetry/plugin/mailbox/TelemetryMessage.java
index ac974bb..564ddcf 100644
--- a/src/main/java/io/vlingo/telemetry/plugin/mailbox/TelemetryMessage.java
+++ b/src/main/java/io/vlingo/telemetry/plugin/mailbox/TelemetryMessage.java
@@ -11,14 +11,20 @@
import io.vlingo.actors.Message;
import io.vlingo.actors.Returns;
import io.vlingo.common.SerializableConsumer;
+import io.vlingo.telemetry.tracing.TracingBaggage;
+import io.vlingo.telemetry.tracing.TracingContext;
public class TelemetryMessage implements Message {
private final Message delegate;
private final MailboxTelemetry telemetry;
+ private final TracingBaggage tracingBaggage;
+ private final TracingContext tracingContext;
- public TelemetryMessage(final Message delegate, final MailboxTelemetry telemetry) {
+ public TelemetryMessage(final Message delegate, final MailboxTelemetry telemetry, final TracingBaggage tracingBaggage) {
this.delegate = delegate;
this.telemetry = telemetry;
+ this.tracingBaggage = tracingBaggage;
+ this.tracingContext = tracingBaggage != null ? tracingBaggage.baggageState() : null;
}
@Override
@@ -26,13 +32,21 @@ public Actor actor() {
return delegate.actor();
}
+ public TracingContext tracingContext() {
+ return tracingContext;
+ }
+
@Override
public void deliver() {
+ TracingContext nextTracingContext = tracingBaggage.storeInBaggage(this);
try {
delegate.deliver();
telemetry.onReceiveMessage(delegate.actor());
} catch (RuntimeException ex) {
telemetry.onDeliverMessageFailed(delegate.actor(), ex);
+ nextTracingContext.failed(ex);
+ } finally {
+ nextTracingContext.flush();
}
}
diff --git a/src/main/java/io/vlingo/telemetry/tracing/TracingBaggage.java b/src/main/java/io/vlingo/telemetry/tracing/TracingBaggage.java
new file mode 100644
index 0000000..6e91aca
--- /dev/null
+++ b/src/main/java/io/vlingo/telemetry/tracing/TracingBaggage.java
@@ -0,0 +1,37 @@
+package io.vlingo.telemetry.tracing;
+
+import brave.Tracer;
+import io.vlingo.telemetry.plugin.mailbox.TelemetryMessage;
+
+public final class TracingBaggage {
+ private final ThreadLocal currentContext;
+ private final ThreadLocal previousMessage;
+ private final Tracer tracer;
+
+ private TracingBaggage(final Tracer tracer) {
+ this.tracer = tracer;
+ this.currentContext = ThreadLocal.withInitial(TracingContext::empty);
+ this.previousMessage = ThreadLocal.withInitial(() -> new TelemetryMessage(null, null, null));
+ }
+
+ public static TracingBaggage withTracer(final Tracer tracer) {
+ return new TracingBaggage(tracer);
+ }
+
+ public TracingContext baggageState() {
+ return currentContext.get();
+ }
+
+ public TracingContext storeInBaggage(final TelemetryMessage message) {
+ if (message.tracingContext() == null || message.tracingContext().isEmpty()) {
+ final TracingContext tracingContext = TracingContext.newContext(tracer, message);
+ currentContext.set(tracingContext);
+ previousMessage.set(message);
+ return tracingContext;
+ }
+
+ final TracingContext tracingContext = TracingContext.nextOf(tracer, message.tracingContext(), message);
+ currentContext.set(tracingContext);
+ return tracingContext;
+ }
+}
diff --git a/src/main/java/io/vlingo/telemetry/tracing/TracingContext.java b/src/main/java/io/vlingo/telemetry/tracing/TracingContext.java
new file mode 100644
index 0000000..e1a09f5
--- /dev/null
+++ b/src/main/java/io/vlingo/telemetry/tracing/TracingContext.java
@@ -0,0 +1,80 @@
+package io.vlingo.telemetry.tracing;
+
+import brave.RealSpan;
+import brave.Span;
+import brave.Tracer;
+import brave.propagation.TraceContextOrSamplingFlags;
+import io.vlingo.actors.Actor;
+import io.vlingo.telemetry.plugin.mailbox.TelemetryMessage;
+
+public final class TracingContext {
+ private final RealSpan span;
+
+ private TracingContext(final RealSpan span, final TelemetryMessage message, final Span.Kind spanKind, final RealSpan previousSpan) {
+ this.span = span;
+ if (span != null) {
+ span.kind(spanKind);
+ span.name(message.representation());
+ span.tag("ActorAddress", message.actor().address().name());
+ span.remoteServiceName(message.actor().getClass().getSimpleName());
+ if (previousSpan != null) {
+ span.localServiceName(previousSpan.remoteServiceName());
+ } else {
+ span.localServiceName(message.actor().getClass().getSimpleName());
+ }
+ span.start();
+ }
+ }
+
+ public static TracingContext empty() {
+ return new TracingContext(null, null, Span.Kind.SERVER, null);
+ }
+
+ public void flush() {
+ if (span == null) {
+ return;
+ }
+
+ span.finish();
+ span.flush();
+ }
+
+ public void failed(Throwable ex) {
+ if (span == null) {
+ return;
+ }
+
+ span.error(ex);
+ span.finish();
+ span.flush();
+ }
+
+ public static TracingContext newContext(final Tracer tracer, final TelemetryMessage message) {
+ if (message.actor().getClass().getCanonicalName().startsWith("io.vlingo") || message.representation().startsWith("start")) {
+ return TracingContext.empty();
+ }
+
+ final Span span = tracer.newTrace();
+ return new TracingContext((RealSpan) span, message, Span.Kind.SERVER, null);
+ }
+
+ public static TracingContext nextOf(final Tracer tracer, final TracingContext context, final TelemetryMessage message) {
+ if (message.actor().getClass().getCanonicalName().startsWith("io.vlingo") || message.representation().startsWith("start")) {
+ return TracingContext.empty();
+ }
+
+ context.flush();
+ final Span nextSpan = tracer.nextSpan(TraceContextOrSamplingFlags.newBuilder(context.span.context()).build());
+ return new TracingContext((RealSpan) nextSpan, message, Span.Kind.CLIENT, context.span);
+ }
+
+ public boolean isEmpty() {
+ return span == null;
+ }
+
+ @Override
+ public String toString() {
+ return span == null ? "" : span.toString();
+ }
+
+}
diff --git a/src/main/resources/vlingo-actors.properties b/src/main/resources/vlingo-actors.properties
new file mode 100644
index 0000000..a6de37a
--- /dev/null
+++ b/src/main/resources/vlingo-actors.properties
@@ -0,0 +1,56 @@
+# Copyright 2012-2018 Vaughn Vernon
+#
+# This Source Code Form is subject to the terms of the
+# Mozilla Public License, v. 2.0. If a copy of the MPL
+# was not distributed with this file, You can obtain
+# one at https://mozilla.org/MPL/2.0/.
+
+# vlingo/actors startup properties
+
+plugin.name.pooledCompletes = true
+plugin.pooledCompletes.classname = io.vlingo.actors.plugin.completes.PooledCompletesPlugin
+plugin.pooledCompletes.pool = 10
+plugin.pooledCompletes.mailbox = queueMailbox
+
+plugin.name.ringMailbox = true
+plugin.ringMailbox.classname = io.vlingo.actors.plugin.mailbox.sharedringbuffer.SharedRingBufferMailboxPlugin
+plugin.ringMailbox.defaultMailbox = false
+plugin.ringMailbox.size = 65535
+plugin.ringMailbox.fixedBackoff = 2
+plugin.ringMailbox.dispatcherThrottlingCount = 1
+
+plugin.name.arrayQueueMailbox = true
+plugin.arrayQueueMailbox.classname = io.vlingo.actors.plugin.mailbox.agronampscarrayqueue.ManyToOneConcurrentArrayQueuePlugin
+plugin.arrayQueueMailbox.defaultMailbox = false
+plugin.arrayQueueMailbox.size = 65535
+plugin.arrayQueueMailbox.fixedBackoff = 2
+plugin.arrayQueueMailbox.dispatcherThrottlingCount = 1
+plugin.arrayQueueMailbox.sendRetires = 10
+
+plugin.name.queueMailbox = true
+plugin.queueMailbox.classname = io.vlingo.actors.plugin.mailbox.concurrentqueue.ConcurrentQueueMailboxPlugin
+plugin.queueMailbox.defaultMailbox = true
+plugin.queueMailbox.numberOfDispatchersFactor = 1.5
+plugin.queueMailbox.dispatcherThrottlingCount = 1
+
+plugin.name.slf4jLogger = true
+plugin.slf4jLogger.classname = io.vlingo.actors.plugin.logging.slf4j.Slf4jLoggerPlugin
+plugin.slf4jLogger.name = vlingo/actors(test)
+plugin.slf4jLogger.defaultLogger = true
+
+plugin.name.telemetry = true
+plugin.telemetry.classname = io.vlingo.telemetry.TelemetryPlugin
+plugin.telemetry.providerClass = io.vlingo.telemetry.TelemetryPlugin
+
+plugin.name.mailboxTelemetry = true
+plugin.mailboxTelemetry.classname = io.vlingo.telemetry.plugin.mailbox.MailboxTelemetryPlugin
+
+plugin.name.override_supervisor = true
+plugin.override_supervisor.classname = io.vlingo.actors.plugin.supervision.DefaultSupervisorOverridePlugin
+plugin.override_supervisor.types =\
+ [stage=default name=overrideSupervisor supervisor=io.vlingo.actors.plugin.supervision.DefaultSupervisorOverride]
+
+proxy.generated.classes.main = target/classes/
+proxy.generated.sources.main = target/generated-sources/
+proxy.generated.classes.test = target/test-classes/
+proxy.generated.sources.test = target/generated-test-sources/
diff --git a/src/test/java/io/vlingo/telemetry/plugin/mailbox/TelemetryMailboxProviderKeeperTest.java b/src/test/java/io/vlingo/telemetry/plugin/mailbox/TelemetryMailboxProviderKeeperTest.java
index 4907208..a7b9749 100644
--- a/src/test/java/io/vlingo/telemetry/plugin/mailbox/TelemetryMailboxProviderKeeperTest.java
+++ b/src/test/java/io/vlingo/telemetry/plugin/mailbox/TelemetryMailboxProviderKeeperTest.java
@@ -36,7 +36,7 @@ public void setUp() throws Exception {
telemetry = mock(MailboxTelemetry.class);
provider = mock(MailboxProvider.class);
- telemetryMailboxProviderKeeper = new TelemetryMailboxProviderKeeper(delegate, telemetry);
+ telemetryMailboxProviderKeeper = new TelemetryMailboxProviderKeeper(delegate, telemetry, null);
}
@Test
diff --git a/src/test/java/io/vlingo/telemetry/plugin/mailbox/TelemetryMailboxProviderTest.java b/src/test/java/io/vlingo/telemetry/plugin/mailbox/TelemetryMailboxProviderTest.java
index b7c331e..3061c6d 100644
--- a/src/test/java/io/vlingo/telemetry/plugin/mailbox/TelemetryMailboxProviderTest.java
+++ b/src/test/java/io/vlingo/telemetry/plugin/mailbox/TelemetryMailboxProviderTest.java
@@ -34,7 +34,7 @@ public void setUp() {
telemetry = mock(MailboxTelemetry.class);
dispatcher = mock(Dispatcher.class);
- telemetryMailboxProvider = new TelemetryMailboxProvider(telemetry, delegate);
+ telemetryMailboxProvider = new TelemetryMailboxProvider(telemetry, delegate, null);
doReturn(delegateMailbox).when(delegate).provideMailboxFor(anyInt());
doReturn(delegateMailbox).when(delegate).provideMailboxFor(anyInt(), any());
diff --git a/src/test/java/io/vlingo/telemetry/plugin/mailbox/TelemetryMailboxTest.java b/src/test/java/io/vlingo/telemetry/plugin/mailbox/TelemetryMailboxTest.java
index 5e9e799..8ee28f7 100644
--- a/src/test/java/io/vlingo/telemetry/plugin/mailbox/TelemetryMailboxTest.java
+++ b/src/test/java/io/vlingo/telemetry/plugin/mailbox/TelemetryMailboxTest.java
@@ -30,7 +30,7 @@ public void setUp() {
delegate = mock(Mailbox.class);
message = mock(Message.class);
- telemetryMailbox = new TelemetryMailbox(telemetry, delegate);
+ telemetryMailbox = new TelemetryMailbox(telemetry, delegate, null);
}
@Test
diff --git a/src/test/java/io/vlingo/telemetry/plugin/mailbox/TelemetryMessageTest.java b/src/test/java/io/vlingo/telemetry/plugin/mailbox/TelemetryMessageTest.java
index b0d3b0b..2168c02 100644
--- a/src/test/java/io/vlingo/telemetry/plugin/mailbox/TelemetryMessageTest.java
+++ b/src/test/java/io/vlingo/telemetry/plugin/mailbox/TelemetryMessageTest.java
@@ -28,7 +28,7 @@ public void setUp() throws Exception {
delegate = mock(Message.class);
telemetry = mock(MailboxTelemetry.class);
- telemetryMessage = new TelemetryMessage(delegate, telemetry);
+ telemetryMessage = new TelemetryMessage(delegate, telemetry, null);
}
@Test