Skip to content

Commit 8f58742

Browse files
authored
Add metrics tags and set correct data converter in test worker creation (#170)
* update gradle build script to prepare for publishing to maven central * do not sign archives if key is missing * Add domain and task list metric tags, use correct data converter in test worker creation
1 parent ee1d9ee commit 8f58742

File tree

4 files changed

+44
-20
lines changed

4 files changed

+44
-20
lines changed

build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ googleJavaFormat {
3737
}
3838

3939
group = 'com.uber.cadence'
40-
version = '0.2.0-SNAPSHOT'
40+
version = '0.2.1'
4141

4242
description = """Uber Cadence Java Client"""
4343

src/main/java/com/uber/cadence/internal/sync/TestWorkflowEnvironmentInternal.java

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -110,16 +110,16 @@ public TestWorkflowEnvironmentInternal(TestEnvironmentOptions options) {
110110

111111
@Override
112112
public Worker newWorker(String taskList) {
113+
WorkerOptions.Builder builder =
114+
new WorkerOptions.Builder()
115+
.setInterceptorFactory(testEnvironmentOptions.getInterceptorFactory())
116+
.setMetricsScope(testEnvironmentOptions.getMetricsScope())
117+
.setEnableLoggingInReplay(testEnvironmentOptions.isLoggingEnabledInReplay());
118+
if (testEnvironmentOptions.getDataConverter() != null) {
119+
builder.setDataConverter(testEnvironmentOptions.getDataConverter());
120+
}
113121
Worker result =
114-
new Worker(
115-
service,
116-
testEnvironmentOptions.getDomain(),
117-
taskList,
118-
new WorkerOptions.Builder()
119-
.setInterceptorFactory(testEnvironmentOptions.getInterceptorFactory())
120-
.setMetricsScope(testEnvironmentOptions.getMetricsScope())
121-
.setEnableLoggingInReplay(testEnvironmentOptions.isLoggingEnabledInReplay())
122-
.build());
122+
new Worker(service, testEnvironmentOptions.getDomain(), taskList, builder.build());
123123
workers.add(result);
124124
return result;
125125
}

src/main/java/com/uber/cadence/worker/Worker.java

Lines changed: 21 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
import com.uber.cadence.WorkflowExecution;
2222
import com.uber.cadence.client.WorkflowClient;
2323
import com.uber.cadence.converter.DataConverter;
24+
import com.uber.cadence.internal.metrics.MetricsTag;
2425
import com.uber.cadence.internal.sync.SyncActivityWorker;
2526
import com.uber.cadence.internal.sync.SyncWorkflowWorker;
2627
import com.uber.cadence.internal.worker.SingleWorkerOptions;
@@ -29,7 +30,9 @@
2930
import com.uber.cadence.worker.WorkerOptions.Builder;
3031
import com.uber.cadence.workflow.Functions.Func;
3132
import com.uber.cadence.workflow.WorkflowMethod;
33+
import com.uber.m3.util.ImmutableMap;
3234
import java.time.Duration;
35+
import java.util.Map;
3336
import java.util.Objects;
3437
import java.util.concurrent.TimeUnit;
3538
import java.util.concurrent.atomic.AtomicBoolean;
@@ -115,13 +118,13 @@ public Worker(IWorkflowService service, String domain, String taskList, WorkerOp
115118
options = new Builder().build();
116119
}
117120
this.options = options;
118-
SingleWorkerOptions activityOptions = toActivityOptions(options);
121+
SingleWorkerOptions activityOptions = toActivityOptions(options, domain, taskList);
119122
if (!options.isDisableActivityWorker()) {
120123
activityWorker = new SyncActivityWorker(service, domain, taskList, activityOptions);
121124
} else {
122125
activityWorker = null;
123126
}
124-
SingleWorkerOptions workflowOptions = toWorkflowOptions(options);
127+
SingleWorkerOptions workflowOptions = toWorkflowOptions(options, domain, taskList);
125128
if (!options.isDisableWorkflowWorker()) {
126129
workflowWorker =
127130
new SyncWorkflowWorker(
@@ -136,28 +139,40 @@ public Worker(IWorkflowService service, String domain, String taskList, WorkerOp
136139
}
137140
}
138141

139-
private SingleWorkerOptions toActivityOptions(WorkerOptions options) {
142+
private SingleWorkerOptions toActivityOptions(
143+
WorkerOptions options, String domain, String taskList) {
144+
Map<String, String> tags =
145+
new ImmutableMap.Builder<String, String>(2)
146+
.put(MetricsTag.DOMAIN, domain)
147+
.put(MetricsTag.TASK_LIST, taskList)
148+
.build();
140149
return new SingleWorkerOptions.Builder()
141150
.setDataConverter(options.getDataConverter())
142151
.setIdentity(options.getIdentity())
143152
.setPollerOptions(options.getActivityPollerOptions())
144153
.setReportCompletionRetryOptions(options.getReportActivityCompletionRetryOptions())
145154
.setReportFailureRetryOptions(options.getReportActivityFailureRetryOptions())
146155
.setTaskExecutorThreadPoolSize(options.getMaxConcurrentActivityExecutionSize())
147-
.setMetricsScope(options.getMetricsScope())
156+
.setMetricsScope(options.getMetricsScope().tagged(tags))
148157
.setEnableLoggingInReplay(options.getEnableLoggingInReplay())
149158
.build();
150159
}
151160

152-
private SingleWorkerOptions toWorkflowOptions(WorkerOptions options) {
161+
private SingleWorkerOptions toWorkflowOptions(
162+
WorkerOptions options, String domain, String taskList) {
163+
Map<String, String> tags =
164+
new ImmutableMap.Builder<String, String>(2)
165+
.put(MetricsTag.DOMAIN, domain)
166+
.put(MetricsTag.TASK_LIST, taskList)
167+
.build();
153168
return new SingleWorkerOptions.Builder()
154169
.setDataConverter(options.getDataConverter())
155170
.setIdentity(options.getIdentity())
156171
.setPollerOptions(options.getWorkflowPollerOptions())
157172
.setReportCompletionRetryOptions(options.getReportWorkflowCompletionRetryOptions())
158173
.setReportFailureRetryOptions(options.getReportWorkflowFailureRetryOptions())
159174
.setTaskExecutorThreadPoolSize(options.getMaxConcurrentWorklfowExecutionSize())
160-
.setMetricsScope(options.getMetricsScope())
175+
.setMetricsScope(options.getMetricsScope().tagged(tags))
161176
.setEnableLoggingInReplay(options.getEnableLoggingInReplay())
162177
.build();
163178
}

src/test/java/com/uber/cadence/workflow/MetricsTest.java

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626

2727
import com.uber.cadence.client.WorkflowClient;
2828
import com.uber.cadence.client.WorkflowOptions;
29+
import com.uber.cadence.internal.metrics.MetricsTag;
2930
import com.uber.cadence.testing.TestEnvironmentOptions;
3031
import com.uber.cadence.testing.TestEnvironmentOptions.Builder;
3132
import com.uber.cadence.testing.TestWorkflowEnvironment;
@@ -34,7 +35,9 @@
3435
import com.uber.m3.tally.Scope;
3536
import com.uber.m3.tally.StatsReporter;
3637
import com.uber.m3.tally.Stopwatch;
38+
import com.uber.m3.util.ImmutableMap;
3739
import java.time.Duration;
40+
import java.util.Map;
3841
import org.junit.Before;
3942
import org.junit.Rule;
4043
import org.junit.Test;
@@ -132,10 +135,16 @@ public void testWorkflowMetrics() throws InterruptedException {
132135

133136
Thread.sleep(200);
134137

135-
verify(reporter, times(1)).reportCounter("test-started", null, 1);
136-
verify(reporter, times(1)).reportCounter("test-done", null, 1);
137-
verify(reporter, times(1)).reportCounter("test-child-started", null, 1);
138-
verify(reporter, times(1)).reportCounter("test-child-done", null, 1);
138+
Map<String, String> tags =
139+
new ImmutableMap.Builder<String, String>(2)
140+
.put(MetricsTag.DOMAIN, WorkflowTest.DOMAIN)
141+
.put(MetricsTag.TASK_LIST, taskList)
142+
.build();
143+
144+
verify(reporter, times(1)).reportCounter("test-started", tags, 1);
145+
verify(reporter, times(1)).reportCounter("test-done", tags, 1);
146+
verify(reporter, times(1)).reportCounter("test-child-started", tags, 1);
147+
verify(reporter, times(1)).reportCounter("test-child-done", tags, 1);
139148

140149
ArgumentCaptor<com.uber.m3.util.Duration> sleepDurationCaptor =
141150
ArgumentCaptor.forClass(com.uber.m3.util.Duration.class);

0 commit comments

Comments
 (0)