Skip to content

Commit daa6211

Browse files
authored
fix some flaky unit test and make test run faster on CI (#1007)
1 parent bfe1039 commit daa6211

File tree

12 files changed

+46
-52
lines changed

12 files changed

+46
-52
lines changed

.buildkite/pipeline.yml

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ container:
2626
resources:
2727
requests:
2828
cpu: 7500m
29-
memory: 30G
29+
memory: 60G
3030
volumes:
3131
- name: docker-sock
3232
emptyDir: {}
@@ -52,6 +52,7 @@ steps:
5252

5353
- label: ":java: Unit test with test services"
5454
artifact_paths:
55+
- "build/reports/tests/test/**/*"
5556
- "build/reports/jacoco/test/jacocoTestReport.xml"
5657
- "build/reports/metadata.txt"
5758
timeout_in_minutes: 30
@@ -80,6 +81,8 @@ steps:
8081
automatic:
8182
- exit_status: "*"
8283
limit: 3
84+
artifact_paths:
85+
- "build/reports/tests/test/**/*"
8386
plugins:
8487
- kubernetes:
8588
<<: *kubernetes
@@ -100,6 +103,8 @@ steps:
100103
automatic:
101104
- exit_status: "*"
102105
limit: 3
106+
artifact_paths:
107+
- "build/reports/tests/test/**/*"
103108
plugins:
104109
- kubernetes:
105110
<<: *kubernetes

build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -351,7 +351,7 @@ test {
351351
events 'passed', 'skipped', 'failed'
352352
exceptionFormat 'full'
353353
// Uncomment the following line if you want to see test logs in gradlew run.
354-
showStandardStreams true
354+
showStandardStreams false
355355
}
356356
}
357357

src/test/java/com/uber/cadence/RegisterTestDomain.java

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,22 +3,20 @@
33
import static com.uber.cadence.testUtils.TestEnvironment.DOMAIN;
44
import static com.uber.cadence.testUtils.TestEnvironment.DOMAIN2;
55

6-
import com.uber.cadence.serviceclient.ClientOptions;
76
import com.uber.cadence.serviceclient.IWorkflowService;
8-
import com.uber.cadence.serviceclient.WorkflowServiceTChannel;
7+
import com.uber.cadence.testUtils.TestEnvironment;
98
import org.apache.thrift.TException;
109

1110
/** Waits for local service to become available and registers UnitTest domain. */
1211
public class RegisterTestDomain {
13-
private static final boolean useDockerService =
14-
Boolean.parseBoolean(System.getenv("USE_DOCKER_SERVICE"));
12+
private static final boolean useDockerService = TestEnvironment.isUseDockerService();
1513

1614
public static void main(String[] args) throws InterruptedException {
1715
if (!useDockerService) {
1816
return;
1917
}
2018

21-
IWorkflowService service = new WorkflowServiceTChannel(ClientOptions.defaultInstance());
19+
IWorkflowService service = TestEnvironment.getDockerService();
2220
registerDomain(service, DOMAIN);
2321
registerDomain(service, DOMAIN2);
2422
System.exit(0);

src/test/java/com/uber/cadence/internal/tracing/StartWorkflowTest.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030
import com.uber.cadence.serviceclient.ClientOptions;
3131
import com.uber.cadence.serviceclient.IWorkflowService;
3232
import com.uber.cadence.serviceclient.WorkflowServiceTChannel;
33+
import com.uber.cadence.testUtils.TestEnvironment;
3334
import com.uber.cadence.worker.Worker;
3435
import com.uber.cadence.worker.WorkerFactory;
3536
import com.uber.cadence.worker.WorkerFactoryOptions;
@@ -138,8 +139,7 @@ public Integer Double(Integer n) {
138139
}
139140
}
140141

141-
private static final boolean useDockerService =
142-
Boolean.parseBoolean(System.getenv("USE_DOCKER_SERVICE"));
142+
private static final boolean useDockerService = TestEnvironment.isUseDockerService();
143143
private static final Logger logger = LoggerFactory.getLogger(StartWorkflowTest.class);
144144
private static final String DOMAIN = "test-domain";
145145
private static final String TASK_LIST = "test-tasklist";

src/test/java/com/uber/cadence/testUtils/CadenceTestContext.java

Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -14,13 +14,10 @@
1414
*/
1515
package com.uber.cadence.testUtils;
1616

17-
import com.uber.cadence.FeatureFlags;
1817
import com.uber.cadence.client.WorkflowClient;
1918
import com.uber.cadence.client.WorkflowClientOptions;
2019
import com.uber.cadence.internal.worker.PollerOptions;
21-
import com.uber.cadence.serviceclient.ClientOptions;
2220
import com.uber.cadence.serviceclient.IWorkflowService;
23-
import com.uber.cadence.serviceclient.WorkflowServiceTChannel;
2421
import com.uber.cadence.testing.TestEnvironmentOptions;
2522
import com.uber.cadence.testing.TestWorkflowEnvironment;
2623
import com.uber.cadence.worker.Worker;
@@ -223,12 +220,7 @@ public static CadenceTestContext forRealService(
223220
WorkerFactoryOptions workerFactoryOptions) {
224221
TracingWorkflowInterceptorFactory tracer = new TracingWorkflowInterceptorFactory();
225222

226-
IWorkflowService wfService =
227-
new WorkflowServiceTChannel(
228-
ClientOptions.newBuilder()
229-
.setFeatureFlags(
230-
new FeatureFlags().setWorkflowExecutionAlreadyCompletedErrorEnabled(true))
231-
.build());
223+
IWorkflowService wfService = TestEnvironment.getDockerService();
232224
WorkflowClient workflowClient = WorkflowClient.newInstance(wfService, clientOptions);
233225
WorkerFactory workerFactory = new WorkerFactory(workflowClient, workerFactoryOptions);
234226
ScheduledExecutorService scheduledExecutor = new ScheduledThreadPoolExecutor(1);

src/test/java/com/uber/cadence/testUtils/TestEnvironment.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,11 @@
1414
*/
1515
package com.uber.cadence.testUtils;
1616

17+
import com.uber.cadence.internal.compatibility.Thrift2ProtoAdapter;
18+
import com.uber.cadence.internal.compatibility.proto.serviceclient.IGrpcServiceStubs;
19+
import com.uber.cadence.serviceclient.ClientOptions;
20+
import com.uber.cadence.serviceclient.IWorkflowService;
21+
1722
public final class TestEnvironment {
1823
public static final String DOMAIN = "UnitTest";
1924
public static final String DOMAIN2 = "UnitTest2";
@@ -35,4 +40,9 @@ public static boolean isDebuggerTimeouts() {
3540
public static boolean isUseDockerService() {
3641
return USE_DOCKER_SERVICE;
3742
}
43+
44+
public static IWorkflowService getDockerService() {
45+
return new Thrift2ProtoAdapter(
46+
IGrpcServiceStubs.newInstance(ClientOptions.newBuilder().setPort(7833).build()));
47+
}
3848
}

src/test/java/com/uber/cadence/worker/CleanWorkerShutdownTest.java

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -32,9 +32,8 @@
3232
import com.uber.cadence.client.WorkflowClient;
3333
import com.uber.cadence.client.WorkflowClientOptions;
3434
import com.uber.cadence.client.WorkflowOptions;
35-
import com.uber.cadence.serviceclient.ClientOptions;
3635
import com.uber.cadence.serviceclient.IWorkflowService;
37-
import com.uber.cadence.serviceclient.WorkflowServiceTChannel;
36+
import com.uber.cadence.testUtils.TestEnvironment;
3837
import com.uber.cadence.testing.TestEnvironmentOptions;
3938
import com.uber.cadence.testing.TestWorkflowEnvironment;
4039
import com.uber.cadence.workflow.Workflow;
@@ -57,8 +56,7 @@
5756
@RunWith(Parameterized.class)
5857
public class CleanWorkerShutdownTest {
5958

60-
private static final boolean useDockerService =
61-
Boolean.parseBoolean(System.getenv("USE_DOCKER_SERVICE"));
59+
private static final boolean useDockerService = TestEnvironment.isUseDockerService();
6260

6361
@Parameterized.Parameter public boolean useExternalService;
6462

@@ -81,7 +79,7 @@ public static Object[] data() {
8179
@Before
8280
public void setUp() {
8381
if (useExternalService) {
84-
service = new WorkflowServiceTChannel(ClientOptions.defaultInstance());
82+
service = TestEnvironment.getDockerService();
8583
}
8684
}
8785

src/test/java/com/uber/cadence/worker/StickyWorkerTest.java

Lines changed: 11 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -36,8 +36,8 @@
3636
import com.uber.cadence.internal.metrics.MetricsType;
3737
import com.uber.cadence.internal.metrics.NoopScope;
3838
import com.uber.cadence.internal.replay.DeciderCache;
39-
import com.uber.cadence.serviceclient.ClientOptions;
40-
import com.uber.cadence.serviceclient.WorkflowServiceTChannel;
39+
import com.uber.cadence.serviceclient.IWorkflowService;
40+
import com.uber.cadence.testUtils.TestEnvironment;
4141
import com.uber.cadence.testing.TestEnvironmentOptions;
4242
import com.uber.cadence.testing.TestWorkflowEnvironment;
4343
import com.uber.cadence.workflow.Async;
@@ -71,8 +71,7 @@
7171
@RunWith(Parameterized.class)
7272
public class StickyWorkerTest {
7373

74-
private static final boolean useDockerService =
75-
Boolean.parseBoolean(System.getenv("USE_DOCKER_SERVICE"));
74+
private static final boolean useDockerService = TestEnvironment.isUseDockerService();
7675
private static final String STICKY_TASK_LIST_METRIC_TAG = "__sticky__";
7776

7877
@Parameterized.Parameter public boolean useExternalService;
@@ -91,12 +90,12 @@ public static Object[] data() {
9190

9291
@Rule public TestName testName = new TestName();
9392

94-
private static WorkflowServiceTChannel service;
93+
private static IWorkflowService service;
9594

9695
@BeforeClass
9796
public static void setUp() {
9897
if (useDockerService) {
99-
service = new WorkflowServiceTChannel(ClientOptions.defaultInstance());
98+
service = TestEnvironment.getDockerService();
10099
}
101100
}
102101

@@ -479,12 +478,6 @@ public void workflowsCanBeQueried() throws Exception {
479478
// Act
480479
WorkflowClient.start(workflow::getGreeting);
481480

482-
Thread.sleep(200); // Wait for workflow to start
483-
484-
DeciderCache cache = factory.getCache();
485-
assertNotNull(cache);
486-
assertEquals(1, cache.size());
487-
488481
// Assert
489482
assertEquals(workflow.getProgress(), GreetingSignalWorkflow.Status.WAITING_FOR_NAME);
490483

@@ -493,7 +486,13 @@ public void workflowsCanBeQueried() throws Exception {
493486

494487
assertEquals("Hello World!", greeting);
495488
assertEquals(workflow.getProgress(), GreetingSignalWorkflow.Status.GREETING_GENERATED);
489+
490+
DeciderCache cache = factory.getCache();
491+
assertNotNull(cache);
492+
assertEquals(1, cache.size());
493+
496494
wrapper.close();
495+
factory.shutdown();
497496
}
498497

499498
@Test

src/test/java/com/uber/cadence/worker/WorkerStressTests.java

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -26,9 +26,8 @@
2626
import com.uber.cadence.client.WorkflowClientOptions;
2727
import com.uber.cadence.client.WorkflowOptions;
2828
import com.uber.cadence.client.WorkflowStub;
29-
import com.uber.cadence.serviceclient.ClientOptions;
3029
import com.uber.cadence.serviceclient.IWorkflowService;
31-
import com.uber.cadence.serviceclient.WorkflowServiceTChannel;
30+
import com.uber.cadence.testUtils.TestEnvironment;
3231
import com.uber.cadence.testing.TestEnvironmentOptions;
3332
import com.uber.cadence.testing.TestWorkflowEnvironment;
3433
import com.uber.cadence.workflow.Async;
@@ -53,8 +52,7 @@
5352
@RunWith(Parameterized.class)
5453
public class WorkerStressTests {
5554

56-
private static final boolean useDockerService =
57-
Boolean.parseBoolean(System.getenv("USE_DOCKER_SERVICE"));
55+
private static final boolean useDockerService = TestEnvironment.isUseDockerService();
5856

5957
@Parameterized.Parameter public boolean useExternalService;
6058

@@ -181,7 +179,7 @@ public TestEnvironmentWrapper(WorkerFactoryOptions options) {
181179
WorkflowClientOptions clientOptions =
182180
WorkflowClientOptions.newBuilder().setDomain(DOMAIN).build();
183181
if (useDockerService) {
184-
IWorkflowService service = new WorkflowServiceTChannel(ClientOptions.defaultInstance());
182+
IWorkflowService service = TestEnvironment.getDockerService();
185183
WorkflowClient client = WorkflowClient.newInstance(service, clientOptions);
186184
factory = WorkerFactory.newInstance(client, options);
187185
} else {

src/test/java/com/uber/cadence/workerFactory/WorkerFactoryTests.java

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -20,9 +20,8 @@
2020
import static org.junit.Assert.*;
2121

2222
import com.uber.cadence.client.WorkflowClient;
23-
import com.uber.cadence.serviceclient.ClientOptions;
2423
import com.uber.cadence.serviceclient.IWorkflowService;
25-
import com.uber.cadence.serviceclient.WorkflowServiceTChannel;
24+
import com.uber.cadence.testUtils.TestEnvironment;
2625
import com.uber.cadence.worker.WorkerFactory;
2726
import java.util.concurrent.TimeUnit;
2827
import org.junit.After;
@@ -33,8 +32,7 @@
3332

3433
public class WorkerFactoryTests {
3534

36-
private static final boolean useDockerService =
37-
Boolean.parseBoolean(System.getenv("USE_DOCKER_SERVICE"));
35+
private static final boolean useDockerService = TestEnvironment.isUseDockerService();
3836

3937
@BeforeClass
4038
public static void beforeClass() {
@@ -47,7 +45,7 @@ public static void beforeClass() {
4745

4846
@Before
4947
public void setUp() {
50-
service = new WorkflowServiceTChannel(ClientOptions.defaultInstance());
48+
service = TestEnvironment.getDockerService();
5149
client = WorkflowClient.newInstance(service);
5250
factory = WorkerFactory.newInstance(client);
5351
}

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

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -177,13 +177,6 @@ public void run() {
177177

178178
activities.reset();
179179

180-
result = Async.function(activities::asyncActivity);
181-
activities.failAsyncActivityById("4");
182-
expectFailureWithDetails(result, "4");
183-
expectFailure(() -> activities.failAsyncActivityById("again"));
184-
185-
activities.reset();
186-
187180
// Need to request cancellation, then the activity can respond with the cancel
188181
CompletablePromise<String> completablePromise = Workflow.newPromise();
189182
CancellationScope scope =

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

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@
3232
import com.uber.cadence.migration.MigrationInterceptorFactory;
3333
import com.uber.cadence.serviceclient.IWorkflowService;
3434
import com.uber.cadence.testUtils.CadenceTestRule;
35+
import com.uber.cadence.testUtils.RequiresDockerService;
3536
import com.uber.cadence.worker.Worker;
3637
import com.uber.cadence.worker.WorkerFactory;
3738
import com.uber.cadence.worker.WorkerFactoryOptions;
@@ -149,6 +150,7 @@ public void execute(int iter) {
149150
}
150151

151152
@Test
153+
@RequiresDockerService // test service doesn't support describe API yet
152154
public void cronWorkflowMigration() {
153155
String workflowID = UUID.randomUUID().toString();
154156
try {
@@ -166,6 +168,7 @@ public void cronWorkflowMigration() {
166168
}
167169

168170
@Test
171+
@RequiresDockerService // test service doesn't support describe API yet
169172
public void continueAsNewWorkflowMigration() {
170173
String workflowID = UUID.randomUUID().toString();
171174
try {

0 commit comments

Comments
 (0)