@@ -105,7 +105,7 @@ public TestWorkflowEnvironmentInternal(TestEnvironmentOptions options) {
105
105
this .testEnvironmentOptions = options ;
106
106
}
107
107
service = new WorkflowServiceWrapper ();
108
- service .lockTimeSkipping ();
108
+ service .lockTimeSkipping ("TestWorkflowEnvironmentInternal constructor" );
109
109
}
110
110
111
111
@ Override
@@ -137,7 +137,15 @@ public WorkflowClient newWorkflowClient() {
137
137
138
138
@ Override
139
139
public WorkflowClient newWorkflowClient (WorkflowClientOptions options ) {
140
- return WorkflowClientInternal .newInstance (service , testEnvironmentOptions .getDomain (), options );
140
+ WorkflowClientInterceptor [] existingInterceptors = options .getInterceptors ();
141
+ WorkflowClientInterceptor [] interceptors =
142
+ new WorkflowClientInterceptor [existingInterceptors .length + 1 ];
143
+ System .arraycopy (existingInterceptors , 0 , interceptors , 0 , existingInterceptors .length );
144
+ interceptors [interceptors .length - 1 ] = new TimeLockingInterceptor (service );
145
+ WorkflowClientOptions newOptions =
146
+ new WorkflowClientOptions .Builder (options ).setInterceptors (interceptors ).build ();
147
+ return WorkflowClientInternal .newInstance (
148
+ service , testEnvironmentOptions .getDomain (), newOptions );
141
149
}
142
150
143
151
@ Override
@@ -559,12 +567,12 @@ public void registerDelayedCallback(Duration delay, Runnable r) {
559
567
impl .registerDelayedCallback (delay , r );
560
568
}
561
569
562
- public void lockTimeSkipping () {
563
- impl .lockTimeSkipping ();
570
+ public void lockTimeSkipping (String caller ) {
571
+ impl .lockTimeSkipping (caller );
564
572
}
565
573
566
- public void unlockTimeSkipping () {
567
- impl .unlockTimeSkipping ();
574
+ public void unlockTimeSkipping (String caller ) {
575
+ impl .unlockTimeSkipping (caller );
568
576
}
569
577
570
578
public void sleep (Duration duration ) {
@@ -629,11 +637,11 @@ public WorkflowExecution getExecution() {
629
637
630
638
@ Override
631
639
public <R > R getResult (Class <R > returnType ) {
632
- service .unlockTimeSkipping ();
640
+ service .unlockTimeSkipping ("TimeLockingWorkflowStub getResult" );
633
641
try {
634
642
return next .getResult (returnType );
635
643
} finally {
636
- service .lockTimeSkipping ();
644
+ service .lockTimeSkipping ("TimeLockingWorkflowStub getResult" );
637
645
}
638
646
}
639
647
@@ -645,11 +653,11 @@ public <R> CompletableFuture<R> getResultAsync(Class<R> returnType) {
645
653
@ Override
646
654
public <R > R getResult (long timeout , TimeUnit unit , Class <R > returnType )
647
655
throws TimeoutException {
648
- service .unlockTimeSkipping ();
656
+ service .unlockTimeSkipping ("TimeLockingWorkflowStub getResult" );
649
657
try {
650
658
return next .getResult (timeout , unit , returnType );
651
659
} finally {
652
- service .lockTimeSkipping ();
660
+ service .lockTimeSkipping ("TimeLockingWorkflowStub getResult" );
653
661
}
654
662
}
655
663
@@ -681,7 +689,8 @@ public TimeLockingFuture(CompletableFuture<R> resultAsync) {
681
689
CompletableFuture <R > ignored =
682
690
resultAsync .whenComplete (
683
691
(r , e ) -> {
684
- service .lockTimeSkipping ();
692
+ service .lockTimeSkipping (
693
+ "TimeLockingWorkflowStub TimeLockingFuture constructor" );
685
694
if (e == null ) {
686
695
this .complete (r );
687
696
} else {
@@ -692,25 +701,28 @@ public TimeLockingFuture(CompletableFuture<R> resultAsync) {
692
701
693
702
@ Override
694
703
public R get () throws InterruptedException , ExecutionException {
695
- service .unlockTimeSkipping ();
696
- return super .get ();
704
+ service .unlockTimeSkipping ("TimeLockingWorkflowStub TimeLockingFuture get" );
705
+ try {
706
+ return super .get ();
707
+ } finally {
708
+ service .lockTimeSkipping ("TimeLockingWorkflowStub TimeLockingFuture get" );
709
+ }
697
710
}
698
711
699
712
@ Override
700
713
public R get (long timeout , TimeUnit unit )
701
714
throws InterruptedException , ExecutionException , TimeoutException {
702
- service .unlockTimeSkipping ();
715
+ service .unlockTimeSkipping ("TimeLockingWorkflowStub TimeLockingFuture get" );
703
716
try {
704
717
return super .get (timeout , unit );
705
- } catch (TimeoutException | InterruptedException e ) {
706
- service .lockTimeSkipping ();
707
- throw e ;
718
+ } finally {
719
+ service .lockTimeSkipping ("TimeLockingWorkflowStub TimeLockingFuture get" );
708
720
}
709
721
}
710
722
711
723
@ Override
712
724
public R join () {
713
- service .unlockTimeSkipping ();
725
+ service .unlockTimeSkipping ("TimeLockingWorkflowStub TimeLockingFuture join" );
714
726
return super .join ();
715
727
}
716
728
}
0 commit comments