diff --git a/.buildkite/pipeline.yml b/.buildkite/pipeline.yml index c3f39360b..fd2cb06ed 100644 --- a/.buildkite/pipeline.yml +++ b/.buildkite/pipeline.yml @@ -26,7 +26,7 @@ container: resources: requests: cpu: 7500m - memory: 30G + memory: 60G volumes: - name: docker-sock emptyDir: {} @@ -52,6 +52,7 @@ steps: - label: ":java: Unit test with test services" artifact_paths: + - "build/reports/tests/test/**/*" - "build/reports/jacoco/test/jacocoTestReport.xml" - "build/reports/metadata.txt" timeout_in_minutes: 30 @@ -80,6 +81,8 @@ steps: automatic: - exit_status: "*" limit: 3 + artifact_paths: + - "build/reports/tests/test/**/*" plugins: - kubernetes: <<: *kubernetes @@ -100,6 +103,8 @@ steps: automatic: - exit_status: "*" limit: 3 + artifact_paths: + - "build/reports/tests/test/**/*" plugins: - kubernetes: <<: *kubernetes diff --git a/build.gradle b/build.gradle index 8cb5369be..22dc4466f 100644 --- a/build.gradle +++ b/build.gradle @@ -351,7 +351,7 @@ test { events 'passed', 'skipped', 'failed' exceptionFormat 'full' // Uncomment the following line if you want to see test logs in gradlew run. - showStandardStreams true + showStandardStreams false } } diff --git a/src/test/java/com/uber/cadence/RegisterTestDomain.java b/src/test/java/com/uber/cadence/RegisterTestDomain.java index 0b4be6f45..44a38a195 100644 --- a/src/test/java/com/uber/cadence/RegisterTestDomain.java +++ b/src/test/java/com/uber/cadence/RegisterTestDomain.java @@ -3,22 +3,20 @@ import static com.uber.cadence.testUtils.TestEnvironment.DOMAIN; import static com.uber.cadence.testUtils.TestEnvironment.DOMAIN2; -import com.uber.cadence.serviceclient.ClientOptions; import com.uber.cadence.serviceclient.IWorkflowService; -import com.uber.cadence.serviceclient.WorkflowServiceTChannel; +import com.uber.cadence.testUtils.TestEnvironment; import org.apache.thrift.TException; /** Waits for local service to become available and registers UnitTest domain. */ public class RegisterTestDomain { - private static final boolean useDockerService = - Boolean.parseBoolean(System.getenv("USE_DOCKER_SERVICE")); + private static final boolean useDockerService = TestEnvironment.isUseDockerService(); public static void main(String[] args) throws InterruptedException { if (!useDockerService) { return; } - IWorkflowService service = new WorkflowServiceTChannel(ClientOptions.defaultInstance()); + IWorkflowService service = TestEnvironment.getDockerService(); registerDomain(service, DOMAIN); registerDomain(service, DOMAIN2); System.exit(0); diff --git a/src/test/java/com/uber/cadence/internal/tracing/StartWorkflowTest.java b/src/test/java/com/uber/cadence/internal/tracing/StartWorkflowTest.java index ef25d9d17..23b39f000 100644 --- a/src/test/java/com/uber/cadence/internal/tracing/StartWorkflowTest.java +++ b/src/test/java/com/uber/cadence/internal/tracing/StartWorkflowTest.java @@ -30,6 +30,7 @@ import com.uber.cadence.serviceclient.ClientOptions; import com.uber.cadence.serviceclient.IWorkflowService; import com.uber.cadence.serviceclient.WorkflowServiceTChannel; +import com.uber.cadence.testUtils.TestEnvironment; import com.uber.cadence.worker.Worker; import com.uber.cadence.worker.WorkerFactory; import com.uber.cadence.worker.WorkerFactoryOptions; @@ -138,8 +139,7 @@ public Integer Double(Integer n) { } } - private static final boolean useDockerService = - Boolean.parseBoolean(System.getenv("USE_DOCKER_SERVICE")); + private static final boolean useDockerService = TestEnvironment.isUseDockerService(); private static final Logger logger = LoggerFactory.getLogger(StartWorkflowTest.class); private static final String DOMAIN = "test-domain"; private static final String TASK_LIST = "test-tasklist"; diff --git a/src/test/java/com/uber/cadence/testUtils/CadenceTestContext.java b/src/test/java/com/uber/cadence/testUtils/CadenceTestContext.java index a9976169b..32f99c0c2 100644 --- a/src/test/java/com/uber/cadence/testUtils/CadenceTestContext.java +++ b/src/test/java/com/uber/cadence/testUtils/CadenceTestContext.java @@ -14,13 +14,10 @@ */ package com.uber.cadence.testUtils; -import com.uber.cadence.FeatureFlags; import com.uber.cadence.client.WorkflowClient; import com.uber.cadence.client.WorkflowClientOptions; import com.uber.cadence.internal.worker.PollerOptions; -import com.uber.cadence.serviceclient.ClientOptions; import com.uber.cadence.serviceclient.IWorkflowService; -import com.uber.cadence.serviceclient.WorkflowServiceTChannel; import com.uber.cadence.testing.TestEnvironmentOptions; import com.uber.cadence.testing.TestWorkflowEnvironment; import com.uber.cadence.worker.Worker; @@ -223,12 +220,7 @@ public static CadenceTestContext forRealService( WorkerFactoryOptions workerFactoryOptions) { TracingWorkflowInterceptorFactory tracer = new TracingWorkflowInterceptorFactory(); - IWorkflowService wfService = - new WorkflowServiceTChannel( - ClientOptions.newBuilder() - .setFeatureFlags( - new FeatureFlags().setWorkflowExecutionAlreadyCompletedErrorEnabled(true)) - .build()); + IWorkflowService wfService = TestEnvironment.getDockerService(); WorkflowClient workflowClient = WorkflowClient.newInstance(wfService, clientOptions); WorkerFactory workerFactory = new WorkerFactory(workflowClient, workerFactoryOptions); ScheduledExecutorService scheduledExecutor = new ScheduledThreadPoolExecutor(1); diff --git a/src/test/java/com/uber/cadence/testUtils/TestEnvironment.java b/src/test/java/com/uber/cadence/testUtils/TestEnvironment.java index a12a07526..08faf2c67 100644 --- a/src/test/java/com/uber/cadence/testUtils/TestEnvironment.java +++ b/src/test/java/com/uber/cadence/testUtils/TestEnvironment.java @@ -14,6 +14,11 @@ */ package com.uber.cadence.testUtils; +import com.uber.cadence.internal.compatibility.Thrift2ProtoAdapter; +import com.uber.cadence.internal.compatibility.proto.serviceclient.IGrpcServiceStubs; +import com.uber.cadence.serviceclient.ClientOptions; +import com.uber.cadence.serviceclient.IWorkflowService; + public final class TestEnvironment { public static final String DOMAIN = "UnitTest"; public static final String DOMAIN2 = "UnitTest2"; @@ -35,4 +40,9 @@ public static boolean isDebuggerTimeouts() { public static boolean isUseDockerService() { return USE_DOCKER_SERVICE; } + + public static IWorkflowService getDockerService() { + return new Thrift2ProtoAdapter( + IGrpcServiceStubs.newInstance(ClientOptions.newBuilder().setPort(7833).build())); + } } diff --git a/src/test/java/com/uber/cadence/worker/CleanWorkerShutdownTest.java b/src/test/java/com/uber/cadence/worker/CleanWorkerShutdownTest.java index a71e27d7d..a91315e1b 100644 --- a/src/test/java/com/uber/cadence/worker/CleanWorkerShutdownTest.java +++ b/src/test/java/com/uber/cadence/worker/CleanWorkerShutdownTest.java @@ -32,9 +32,8 @@ import com.uber.cadence.client.WorkflowClient; import com.uber.cadence.client.WorkflowClientOptions; import com.uber.cadence.client.WorkflowOptions; -import com.uber.cadence.serviceclient.ClientOptions; import com.uber.cadence.serviceclient.IWorkflowService; -import com.uber.cadence.serviceclient.WorkflowServiceTChannel; +import com.uber.cadence.testUtils.TestEnvironment; import com.uber.cadence.testing.TestEnvironmentOptions; import com.uber.cadence.testing.TestWorkflowEnvironment; import com.uber.cadence.workflow.Workflow; @@ -57,8 +56,7 @@ @RunWith(Parameterized.class) public class CleanWorkerShutdownTest { - private static final boolean useDockerService = - Boolean.parseBoolean(System.getenv("USE_DOCKER_SERVICE")); + private static final boolean useDockerService = TestEnvironment.isUseDockerService(); @Parameterized.Parameter public boolean useExternalService; @@ -81,7 +79,7 @@ public static Object[] data() { @Before public void setUp() { if (useExternalService) { - service = new WorkflowServiceTChannel(ClientOptions.defaultInstance()); + service = TestEnvironment.getDockerService(); } } diff --git a/src/test/java/com/uber/cadence/worker/StickyWorkerTest.java b/src/test/java/com/uber/cadence/worker/StickyWorkerTest.java index 2b7375580..55ceb017b 100644 --- a/src/test/java/com/uber/cadence/worker/StickyWorkerTest.java +++ b/src/test/java/com/uber/cadence/worker/StickyWorkerTest.java @@ -36,8 +36,8 @@ import com.uber.cadence.internal.metrics.MetricsType; import com.uber.cadence.internal.metrics.NoopScope; import com.uber.cadence.internal.replay.DeciderCache; -import com.uber.cadence.serviceclient.ClientOptions; -import com.uber.cadence.serviceclient.WorkflowServiceTChannel; +import com.uber.cadence.serviceclient.IWorkflowService; +import com.uber.cadence.testUtils.TestEnvironment; import com.uber.cadence.testing.TestEnvironmentOptions; import com.uber.cadence.testing.TestWorkflowEnvironment; import com.uber.cadence.workflow.Async; @@ -71,8 +71,7 @@ @RunWith(Parameterized.class) public class StickyWorkerTest { - private static final boolean useDockerService = - Boolean.parseBoolean(System.getenv("USE_DOCKER_SERVICE")); + private static final boolean useDockerService = TestEnvironment.isUseDockerService(); private static final String STICKY_TASK_LIST_METRIC_TAG = "__sticky__"; @Parameterized.Parameter public boolean useExternalService; @@ -91,12 +90,12 @@ public static Object[] data() { @Rule public TestName testName = new TestName(); - private static WorkflowServiceTChannel service; + private static IWorkflowService service; @BeforeClass public static void setUp() { if (useDockerService) { - service = new WorkflowServiceTChannel(ClientOptions.defaultInstance()); + service = TestEnvironment.getDockerService(); } } @@ -479,12 +478,6 @@ public void workflowsCanBeQueried() throws Exception { // Act WorkflowClient.start(workflow::getGreeting); - Thread.sleep(200); // Wait for workflow to start - - DeciderCache cache = factory.getCache(); - assertNotNull(cache); - assertEquals(1, cache.size()); - // Assert assertEquals(workflow.getProgress(), GreetingSignalWorkflow.Status.WAITING_FOR_NAME); @@ -493,7 +486,13 @@ public void workflowsCanBeQueried() throws Exception { assertEquals("Hello World!", greeting); assertEquals(workflow.getProgress(), GreetingSignalWorkflow.Status.GREETING_GENERATED); + + DeciderCache cache = factory.getCache(); + assertNotNull(cache); + assertEquals(1, cache.size()); + wrapper.close(); + factory.shutdown(); } @Test diff --git a/src/test/java/com/uber/cadence/worker/WorkerStressTests.java b/src/test/java/com/uber/cadence/worker/WorkerStressTests.java index 0a0e801f2..dca41090f 100644 --- a/src/test/java/com/uber/cadence/worker/WorkerStressTests.java +++ b/src/test/java/com/uber/cadence/worker/WorkerStressTests.java @@ -26,9 +26,8 @@ import com.uber.cadence.client.WorkflowClientOptions; import com.uber.cadence.client.WorkflowOptions; import com.uber.cadence.client.WorkflowStub; -import com.uber.cadence.serviceclient.ClientOptions; import com.uber.cadence.serviceclient.IWorkflowService; -import com.uber.cadence.serviceclient.WorkflowServiceTChannel; +import com.uber.cadence.testUtils.TestEnvironment; import com.uber.cadence.testing.TestEnvironmentOptions; import com.uber.cadence.testing.TestWorkflowEnvironment; import com.uber.cadence.workflow.Async; @@ -53,8 +52,7 @@ @RunWith(Parameterized.class) public class WorkerStressTests { - private static final boolean useDockerService = - Boolean.parseBoolean(System.getenv("USE_DOCKER_SERVICE")); + private static final boolean useDockerService = TestEnvironment.isUseDockerService(); @Parameterized.Parameter public boolean useExternalService; @@ -181,7 +179,7 @@ public TestEnvironmentWrapper(WorkerFactoryOptions options) { WorkflowClientOptions clientOptions = WorkflowClientOptions.newBuilder().setDomain(DOMAIN).build(); if (useDockerService) { - IWorkflowService service = new WorkflowServiceTChannel(ClientOptions.defaultInstance()); + IWorkflowService service = TestEnvironment.getDockerService(); WorkflowClient client = WorkflowClient.newInstance(service, clientOptions); factory = WorkerFactory.newInstance(client, options); } else { diff --git a/src/test/java/com/uber/cadence/workerFactory/WorkerFactoryTests.java b/src/test/java/com/uber/cadence/workerFactory/WorkerFactoryTests.java index eb105a4e3..f87e0080e 100644 --- a/src/test/java/com/uber/cadence/workerFactory/WorkerFactoryTests.java +++ b/src/test/java/com/uber/cadence/workerFactory/WorkerFactoryTests.java @@ -20,9 +20,8 @@ import static org.junit.Assert.*; import com.uber.cadence.client.WorkflowClient; -import com.uber.cadence.serviceclient.ClientOptions; import com.uber.cadence.serviceclient.IWorkflowService; -import com.uber.cadence.serviceclient.WorkflowServiceTChannel; +import com.uber.cadence.testUtils.TestEnvironment; import com.uber.cadence.worker.WorkerFactory; import java.util.concurrent.TimeUnit; import org.junit.After; @@ -33,8 +32,7 @@ public class WorkerFactoryTests { - private static final boolean useDockerService = - Boolean.parseBoolean(System.getenv("USE_DOCKER_SERVICE")); + private static final boolean useDockerService = TestEnvironment.isUseDockerService(); @BeforeClass public static void beforeClass() { @@ -47,7 +45,7 @@ public static void beforeClass() { @Before public void setUp() { - service = new WorkflowServiceTChannel(ClientOptions.defaultInstance()); + service = TestEnvironment.getDockerService(); client = WorkflowClient.newInstance(service); factory = WorkerFactory.newInstance(client); } diff --git a/src/test/java/com/uber/cadence/workflow/ManualActivityCompletionWorkflowTest.java b/src/test/java/com/uber/cadence/workflow/ManualActivityCompletionWorkflowTest.java index 19c32e3e8..8da870548 100644 --- a/src/test/java/com/uber/cadence/workflow/ManualActivityCompletionWorkflowTest.java +++ b/src/test/java/com/uber/cadence/workflow/ManualActivityCompletionWorkflowTest.java @@ -177,13 +177,6 @@ public void run() { activities.reset(); - result = Async.function(activities::asyncActivity); - activities.failAsyncActivityById("4"); - expectFailureWithDetails(result, "4"); - expectFailure(() -> activities.failAsyncActivityById("again")); - - activities.reset(); - // Need to request cancellation, then the activity can respond with the cancel CompletablePromise completablePromise = Workflow.newPromise(); CancellationScope scope = diff --git a/src/test/java/com/uber/cadence/workflow/WorkflowMigrationTest.java b/src/test/java/com/uber/cadence/workflow/WorkflowMigrationTest.java index 902321c58..ad9a368ee 100644 --- a/src/test/java/com/uber/cadence/workflow/WorkflowMigrationTest.java +++ b/src/test/java/com/uber/cadence/workflow/WorkflowMigrationTest.java @@ -32,6 +32,7 @@ import com.uber.cadence.migration.MigrationInterceptorFactory; import com.uber.cadence.serviceclient.IWorkflowService; import com.uber.cadence.testUtils.CadenceTestRule; +import com.uber.cadence.testUtils.RequiresDockerService; import com.uber.cadence.worker.Worker; import com.uber.cadence.worker.WorkerFactory; import com.uber.cadence.worker.WorkerFactoryOptions; @@ -149,6 +150,7 @@ public void execute(int iter) { } @Test + @RequiresDockerService // test service doesn't support describe API yet public void cronWorkflowMigration() { String workflowID = UUID.randomUUID().toString(); try { @@ -166,6 +168,7 @@ public void cronWorkflowMigration() { } @Test + @RequiresDockerService // test service doesn't support describe API yet public void continueAsNewWorkflowMigration() { String workflowID = UUID.randomUUID().toString(); try {