@@ -457,71 +457,71 @@ void restartOrchestrationThrowsException() {
457457
458458 }
459459
460- // @Test
461- // void suspendResumeOrchestration() throws TimeoutException, InterruptedException {
462- // final String orchestratorName = "suspend";
463- // final String eventName = "MyEvent";
464- // final String eventPayload = "testPayload";
465- // final Duration suspendTimeout = Duration.ofSeconds(5);
466- //
467- // DurableTaskGrpcWorker worker = this.createWorkerBuilder()
468- // .addOrchestrator(orchestratorName, ctx -> {
469- // String payload = ctx.waitForExternalEvent(eventName, String.class).await();
470- // ctx.complete(payload);
471- // })
472- // .buildAndStart();
473- //
474- // DurableTaskClient client = new DurableTaskGrpcClientBuilder().build();
475- // try (worker; client) {
476- // String instanceId = client.scheduleNewOrchestrationInstance(orchestratorName);
477- // client.suspendInstance(instanceId);
478- // OrchestrationMetadata instance = client.waitForInstanceStart(instanceId, defaultTimeout);
479- // assertNotNull(instance);
480- // assertEquals(OrchestrationRuntimeStatus.SUSPENDED, instance.getRuntimeStatus());
481- //
482- // client.raiseEvent(instanceId, eventName, eventPayload);
483- //
484- // assertThrows(
485- // TimeoutException.class,
486- // () -> client.waitForInstanceCompletion(instanceId, suspendTimeout, false),
487- // "Expected to throw TimeoutException, but it didn't"
488- // );
489- //
490- // String resumeReason = "Resume for testing.";
491- // client.resumeInstance(instanceId, resumeReason);
492- // instance = client.waitForInstanceCompletion(instanceId, defaultTimeout, true);
493- // assertNotNull(instance);
494- // assertEquals(instanceId, instance.getInstanceId());
495- // assertEquals(eventPayload, instance.readOutputAs(String.class));
496- // assertEquals(OrchestrationRuntimeStatus.COMPLETED, instance.getRuntimeStatus());
497- // }
498- // }
499- //
500- // @Test
501- // void terminateSuspendOrchestration() throws TimeoutException, InterruptedException {
502- // final String orchestratorName = "suspendResume";
503- // final String eventName = "MyEvent";
504- // final String eventPayload = "testPayload";
505- //
506- // DurableTaskGrpcWorker worker = this.createWorkerBuilder()
507- // .addOrchestrator(orchestratorName, ctx -> {
508- // String payload = ctx.waitForExternalEvent(eventName, String.class).await();
509- // ctx.complete(payload);
510- // })
511- // .buildAndStart();
512- //
513- // DurableTaskClient client = new DurableTaskGrpcClientBuilder().build();
514- // try (worker; client) {
515- // String instanceId = client.scheduleNewOrchestrationInstance(orchestratorName);
516- // String suspendReason = "Suspend for testing.";
517- // client.suspendInstance(instanceId, suspendReason);
518- // client.terminate(instanceId, null);
519- // OrchestrationMetadata instance = client.waitForInstanceCompletion(instanceId, defaultTimeout, false);
520- // assertNotNull(instance);
521- // assertEquals(instanceId, instance.getInstanceId());
522- // assertEquals(OrchestrationRuntimeStatus.TERMINATED, instance.getRuntimeStatus());
523- // }
524- // }
460+ @ Test
461+ void suspendResumeOrchestration () throws TimeoutException , InterruptedException {
462+ final String orchestratorName = "suspend" ;
463+ final String eventName = "MyEvent" ;
464+ final String eventPayload = "testPayload" ;
465+ final Duration suspendTimeout = Duration .ofSeconds (5 );
466+
467+ DurableTaskGrpcWorker worker = this .createWorkerBuilder ()
468+ .addOrchestrator (orchestratorName , ctx -> {
469+ String payload = ctx .waitForExternalEvent (eventName , String .class ).await ();
470+ ctx .complete (payload );
471+ })
472+ .buildAndStart ();
473+
474+ DurableTaskClient client = new DurableTaskGrpcClientBuilder ().build ();
475+ try (worker ; client ) {
476+ String instanceId = client .scheduleNewOrchestrationInstance (orchestratorName );
477+ client .suspendInstance (instanceId );
478+ OrchestrationMetadata instance = client .waitForInstanceStart (instanceId , defaultTimeout );
479+ assertNotNull (instance );
480+ assertEquals (OrchestrationRuntimeStatus .SUSPENDED , instance .getRuntimeStatus ());
481+
482+ client .raiseEvent (instanceId , eventName , eventPayload );
483+
484+ assertThrows (
485+ TimeoutException .class ,
486+ () -> client .waitForInstanceCompletion (instanceId , suspendTimeout , false ),
487+ "Expected to throw TimeoutException, but it didn't"
488+ );
489+
490+ String resumeReason = "Resume for testing." ;
491+ client .resumeInstance (instanceId , resumeReason );
492+ instance = client .waitForInstanceCompletion (instanceId , defaultTimeout , true );
493+ assertNotNull (instance );
494+ assertEquals (instanceId , instance .getInstanceId ());
495+ assertEquals (eventPayload , instance .readOutputAs (String .class ));
496+ assertEquals (OrchestrationRuntimeStatus .COMPLETED , instance .getRuntimeStatus ());
497+ }
498+ }
499+
500+ @ Test
501+ void terminateSuspendOrchestration () throws TimeoutException , InterruptedException {
502+ final String orchestratorName = "suspendResume" ;
503+ final String eventName = "MyEvent" ;
504+ final String eventPayload = "testPayload" ;
505+
506+ DurableTaskGrpcWorker worker = this .createWorkerBuilder ()
507+ .addOrchestrator (orchestratorName , ctx -> {
508+ String payload = ctx .waitForExternalEvent (eventName , String .class ).await ();
509+ ctx .complete (payload );
510+ })
511+ .buildAndStart ();
512+
513+ DurableTaskClient client = new DurableTaskGrpcClientBuilder ().build ();
514+ try (worker ; client ) {
515+ String instanceId = client .scheduleNewOrchestrationInstance (orchestratorName );
516+ String suspendReason = "Suspend for testing." ;
517+ client .suspendInstance (instanceId , suspendReason );
518+ client .terminate (instanceId , null );
519+ OrchestrationMetadata instance = client .waitForInstanceCompletion (instanceId , defaultTimeout , false );
520+ assertNotNull (instance );
521+ assertEquals (instanceId , instance .getInstanceId ());
522+ assertEquals (OrchestrationRuntimeStatus .TERMINATED , instance .getRuntimeStatus ());
523+ }
524+ }
525525
526526 @ Test
527527 void activityFanOut () throws IOException , TimeoutException {
0 commit comments