• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

uber / cadence-java-client / 2632

07 Nov 2024 12:17AM UTC coverage: 78.326% (-1.5%) from 79.78%
2632

Pull #951

buildkite

fimanishi
Add tests for PollerOptions.java
Pull Request #951: Add tests for PollerOptions.java

15185 of 19387 relevant lines covered (78.33%)

0.78 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

54.14
/src/main/java/com/uber/cadence/internal/sync/TestWorkflowEnvironmentInternal.java
1
/*
2
 *  Copyright 2012-2016 Amazon.com, Inc. or its affiliates. All Rights Reserved.
3
 *
4
 *  Modifications copyright (C) 2017 Uber Technologies, Inc.
5
 *
6
 *  Licensed under the Apache License, Version 2.0 (the "License"). You may not
7
 *  use this file except in compliance with the License. A copy of the License is
8
 *  located at
9
 *
10
 *  http://aws.amazon.com/apache2.0
11
 *
12
 *  or in the "license" file accompanying this file. This file is distributed on
13
 *  an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
14
 *  express or implied. See the License for the specific language governing
15
 *  permissions and limitations under the License.
16
 */
17

18
package com.uber.cadence.internal.sync;
19

20
import com.uber.cadence.BadRequestError;
21
import com.uber.cadence.ClientVersionNotSupportedError;
22
import com.uber.cadence.ClusterInfo;
23
import com.uber.cadence.CountWorkflowExecutionsRequest;
24
import com.uber.cadence.CountWorkflowExecutionsResponse;
25
import com.uber.cadence.DeprecateDomainRequest;
26
import com.uber.cadence.DescribeDomainRequest;
27
import com.uber.cadence.DescribeDomainResponse;
28
import com.uber.cadence.DescribeTaskListRequest;
29
import com.uber.cadence.DescribeTaskListResponse;
30
import com.uber.cadence.DescribeWorkflowExecutionRequest;
31
import com.uber.cadence.DescribeWorkflowExecutionResponse;
32
import com.uber.cadence.DomainAlreadyExistsError;
33
import com.uber.cadence.DomainNotActiveError;
34
import com.uber.cadence.EntityNotExistsError;
35
import com.uber.cadence.GetSearchAttributesResponse;
36
import com.uber.cadence.GetTaskListsByDomainRequest;
37
import com.uber.cadence.GetTaskListsByDomainResponse;
38
import com.uber.cadence.GetWorkflowExecutionHistoryRequest;
39
import com.uber.cadence.GetWorkflowExecutionHistoryResponse;
40
import com.uber.cadence.InternalServiceError;
41
import com.uber.cadence.LimitExceededError;
42
import com.uber.cadence.ListArchivedWorkflowExecutionsRequest;
43
import com.uber.cadence.ListArchivedWorkflowExecutionsResponse;
44
import com.uber.cadence.ListClosedWorkflowExecutionsRequest;
45
import com.uber.cadence.ListClosedWorkflowExecutionsResponse;
46
import com.uber.cadence.ListDomainsRequest;
47
import com.uber.cadence.ListDomainsResponse;
48
import com.uber.cadence.ListOpenWorkflowExecutionsRequest;
49
import com.uber.cadence.ListOpenWorkflowExecutionsResponse;
50
import com.uber.cadence.ListTaskListPartitionsRequest;
51
import com.uber.cadence.ListTaskListPartitionsResponse;
52
import com.uber.cadence.ListWorkflowExecutionsRequest;
53
import com.uber.cadence.ListWorkflowExecutionsResponse;
54
import com.uber.cadence.PollForActivityTaskRequest;
55
import com.uber.cadence.PollForActivityTaskResponse;
56
import com.uber.cadence.PollForDecisionTaskRequest;
57
import com.uber.cadence.PollForDecisionTaskResponse;
58
import com.uber.cadence.QueryFailedError;
59
import com.uber.cadence.QueryRejectCondition;
60
import com.uber.cadence.QueryWorkflowRequest;
61
import com.uber.cadence.QueryWorkflowResponse;
62
import com.uber.cadence.RecordActivityTaskHeartbeatByIDRequest;
63
import com.uber.cadence.RecordActivityTaskHeartbeatRequest;
64
import com.uber.cadence.RecordActivityTaskHeartbeatResponse;
65
import com.uber.cadence.RefreshWorkflowTasksRequest;
66
import com.uber.cadence.RegisterDomainRequest;
67
import com.uber.cadence.RequestCancelWorkflowExecutionRequest;
68
import com.uber.cadence.ResetStickyTaskListRequest;
69
import com.uber.cadence.ResetStickyTaskListResponse;
70
import com.uber.cadence.ResetWorkflowExecutionRequest;
71
import com.uber.cadence.ResetWorkflowExecutionResponse;
72
import com.uber.cadence.RespondActivityTaskCanceledByIDRequest;
73
import com.uber.cadence.RespondActivityTaskCanceledRequest;
74
import com.uber.cadence.RespondActivityTaskCompletedByIDRequest;
75
import com.uber.cadence.RespondActivityTaskCompletedRequest;
76
import com.uber.cadence.RespondActivityTaskFailedByIDRequest;
77
import com.uber.cadence.RespondActivityTaskFailedRequest;
78
import com.uber.cadence.RespondDecisionTaskCompletedRequest;
79
import com.uber.cadence.RespondDecisionTaskCompletedResponse;
80
import com.uber.cadence.RespondDecisionTaskFailedRequest;
81
import com.uber.cadence.RespondQueryTaskCompletedRequest;
82
import com.uber.cadence.RestartWorkflowExecutionRequest;
83
import com.uber.cadence.RestartWorkflowExecutionResponse;
84
import com.uber.cadence.ServiceBusyError;
85
import com.uber.cadence.SignalWithStartWorkflowExecutionAsyncRequest;
86
import com.uber.cadence.SignalWithStartWorkflowExecutionAsyncResponse;
87
import com.uber.cadence.SignalWithStartWorkflowExecutionRequest;
88
import com.uber.cadence.SignalWorkflowExecutionRequest;
89
import com.uber.cadence.StartWorkflowExecutionAsyncRequest;
90
import com.uber.cadence.StartWorkflowExecutionAsyncResponse;
91
import com.uber.cadence.StartWorkflowExecutionRequest;
92
import com.uber.cadence.StartWorkflowExecutionResponse;
93
import com.uber.cadence.TerminateWorkflowExecutionRequest;
94
import com.uber.cadence.UpdateDomainRequest;
95
import com.uber.cadence.UpdateDomainResponse;
96
import com.uber.cadence.WorkflowExecution;
97
import com.uber.cadence.WorkflowExecutionAlreadyCompletedError;
98
import com.uber.cadence.WorkflowExecutionAlreadyStartedError;
99
import com.uber.cadence.client.ActivityCompletionClient;
100
import com.uber.cadence.client.QueryOptions;
101
import com.uber.cadence.client.WorkflowClient;
102
import com.uber.cadence.client.WorkflowClientInterceptor;
103
import com.uber.cadence.client.WorkflowClientOptions;
104
import com.uber.cadence.client.WorkflowOptions;
105
import com.uber.cadence.client.WorkflowStub;
106
import com.uber.cadence.internal.testservice.TestWorkflowService;
107
import com.uber.cadence.serviceclient.ClientOptions;
108
import com.uber.cadence.serviceclient.IWorkflowService;
109
import com.uber.cadence.testing.TestEnvironmentOptions;
110
import com.uber.cadence.testing.TestWorkflowEnvironment;
111
import com.uber.cadence.worker.Worker;
112
import com.uber.cadence.worker.WorkerFactory;
113
import com.uber.cadence.worker.WorkerOptions;
114
import java.lang.reflect.Type;
115
import java.time.Duration;
116
import java.util.Optional;
117
import java.util.concurrent.CompletableFuture;
118
import java.util.concurrent.ExecutionException;
119
import java.util.concurrent.TimeUnit;
120
import java.util.concurrent.TimeoutException;
121
import java.util.function.Function;
122
import org.apache.thrift.TException;
123
import org.apache.thrift.async.AsyncMethodCallback;
124

125
public final class TestWorkflowEnvironmentInternal implements TestWorkflowEnvironment {
126

127
  private final TestEnvironmentOptions testEnvironmentOptions;
128
  private final WorkflowServiceWrapper service;
129
  private final WorkerFactory workerFactory;
130

131
  public TestWorkflowEnvironmentInternal(
132
      WorkflowServiceWrapper workflowServiceWrapper, TestEnvironmentOptions options) {
1✔
133
    if (options == null) {
1✔
134
      this.testEnvironmentOptions = new TestEnvironmentOptions.Builder().build();
×
135
    } else {
136
      this.testEnvironmentOptions = options;
1✔
137
    }
138

139
    if (workflowServiceWrapper == null) {
1✔
140
      this.service = new WorkflowServiceWrapper();
1✔
141
    } else {
142
      this.service = workflowServiceWrapper;
1✔
143
    }
144

145
    this.service.lockTimeSkipping("TestWorkflowEnvironmentInternal constructor");
1✔
146
    WorkflowClient client =
1✔
147
        WorkflowClient.newInstance(this.service, testEnvironmentOptions.getWorkflowClientOptions());
1✔
148
    workerFactory =
1✔
149
        WorkerFactory.newInstance(client, testEnvironmentOptions.getWorkerFactoryOptions());
1✔
150
  }
1✔
151

152
  @Override
153
  public Worker newWorker(String taskList) {
154
    return newWorker(taskList, x -> x);
1✔
155
  }
156

157
  @Override
158
  public Worker newWorker(
159
      String taskList, Function<WorkerOptions.Builder, WorkerOptions.Builder> overrideOptions) {
160
    WorkerOptions.Builder builder =
161
        WorkerOptions.newBuilder()
1✔
162
            .setInterceptorFactory(testEnvironmentOptions.getInterceptorFactory());
1✔
163
    builder = overrideOptions.apply(builder);
1✔
164
    return workerFactory.newWorker(taskList, builder.build());
1✔
165
  }
166

167
  @Override
168
  public WorkflowClient newWorkflowClient() {
169
    WorkflowClientOptions options =
170
        WorkflowClientOptions.newBuilder()
1✔
171
            .setDataConverter(testEnvironmentOptions.getDataConverter())
1✔
172
            .setInterceptors(new TimeLockingInterceptor(service))
1✔
173
            .setMetricsScope(testEnvironmentOptions.getWorkflowClientOptions().getMetricsScope())
1✔
174
            .setDomain(testEnvironmentOptions.getWorkflowClientOptions().getDomain())
1✔
175
            .build();
1✔
176
    return WorkflowClientInternal.newInstance(service, options);
1✔
177
  }
178

179
  @Override
180
  public WorkflowClient newWorkflowClient(WorkflowClientOptions options) {
181
    WorkflowClientInterceptor[] existingInterceptors = options.getInterceptors();
1✔
182
    WorkflowClientInterceptor[] interceptors =
1✔
183
        new WorkflowClientInterceptor[existingInterceptors.length + 1];
184
    System.arraycopy(existingInterceptors, 0, interceptors, 0, existingInterceptors.length);
1✔
185
    interceptors[interceptors.length - 1] = new TimeLockingInterceptor(service);
1✔
186
    WorkflowClientOptions newOptions =
1✔
187
        WorkflowClientOptions.newBuilder(options).setInterceptors(interceptors).build();
1✔
188
    return WorkflowClientInternal.newInstance(service, newOptions);
1✔
189
  }
190

191
  @Override
192
  public long currentTimeMillis() {
193
    return service.currentTimeMillis();
1✔
194
  }
195

196
  @Override
197
  public void sleep(Duration duration) {
198
    service.sleep(duration);
1✔
199
  }
1✔
200

201
  @Override
202
  public void registerDelayedCallback(Duration delay, Runnable r) {
203
    service.registerDelayedCallback(delay, r);
1✔
204
  }
1✔
205

206
  @Override
207
  public IWorkflowService getWorkflowService() {
208
    return service;
1✔
209
  }
210

211
  @Override
212
  public String getDomain() {
213
    return testEnvironmentOptions.getWorkflowClientOptions().getDomain();
1✔
214
  }
215

216
  @Override
217
  public String getDiagnostics() {
218
    StringBuilder result = new StringBuilder();
1✔
219
    service.getDiagnostics(result);
1✔
220
    return result.toString();
1✔
221
  }
222

223
  @Override
224
  public void close() {
225
    workerFactory.shutdownNow();
1✔
226
    workerFactory.awaitTermination(10, TimeUnit.SECONDS);
1✔
227
    service.close();
1✔
228
  }
1✔
229

230
  @Override
231
  public void start() {
232
    workerFactory.start();
1✔
233
  }
1✔
234

235
  @Override
236
  public boolean isStarted() {
237
    return workerFactory.isStarted();
×
238
  }
239

240
  @Override
241
  public boolean isShutdown() {
242
    return workerFactory.isShutdown();
×
243
  }
244

245
  @Override
246
  public boolean isTerminated() {
247
    return workerFactory.isTerminated();
×
248
  }
249

250
  @Override
251
  public void shutdown() {
252
    workerFactory.shutdown();
1✔
253
  }
1✔
254

255
  @Override
256
  public void shutdownNow() {
257
    workerFactory.shutdownNow();
1✔
258
  }
1✔
259

260
  @Override
261
  public void awaitTermination(long timeout, TimeUnit unit) {
262
    workerFactory.awaitTermination(timeout, unit);
1✔
263
  }
1✔
264

265
  @Override
266
  public WorkerFactory getWorkerFactory() {
267
    return workerFactory;
1✔
268
  }
269

270
  public static class WorkflowServiceWrapper implements IWorkflowService {
271

272
    private final TestWorkflowService impl;
273

274
    public WorkflowServiceWrapper() {
1✔
275
      impl = new TestWorkflowService();
1✔
276
    }
1✔
277

278
    public long currentTimeMillis() {
279
      return impl.currentTimeMillis();
1✔
280
    }
281

282
    @Override
283
    public ClientOptions getOptions() {
284
      return impl.getOptions();
1✔
285
    }
286

287
    @Override
288
    public RecordActivityTaskHeartbeatResponse RecordActivityTaskHeartbeat(
289
        RecordActivityTaskHeartbeatRequest heartbeatRequest) throws TException {
290
      return impl.RecordActivityTaskHeartbeat(heartbeatRequest);
1✔
291
    }
292

293
    @Override
294
    public RecordActivityTaskHeartbeatResponse RecordActivityTaskHeartbeatByID(
295
        RecordActivityTaskHeartbeatByIDRequest heartbeatRequest) throws TException {
296
      return impl.RecordActivityTaskHeartbeatByID(heartbeatRequest);
×
297
    }
298

299
    @Override
300
    public void RespondActivityTaskCompleted(RespondActivityTaskCompletedRequest completeRequest)
301
        throws TException {
302
      impl.RespondActivityTaskCompleted(completeRequest);
1✔
303
    }
1✔
304

305
    @Override
306
    public void RespondActivityTaskCompletedByID(
307
        RespondActivityTaskCompletedByIDRequest completeRequest) throws TException {
308
      impl.RespondActivityTaskCompletedByID(completeRequest);
1✔
309
    }
1✔
310

311
    @Override
312
    public void RespondActivityTaskFailed(RespondActivityTaskFailedRequest failRequest)
313
        throws TException {
314
      impl.RespondActivityTaskFailed(failRequest);
1✔
315
    }
1✔
316

317
    @Override
318
    public void RespondActivityTaskFailedByID(RespondActivityTaskFailedByIDRequest failRequest)
319
        throws TException {
320
      impl.RespondActivityTaskFailedByID(failRequest);
1✔
321
    }
1✔
322

323
    @Override
324
    public void RespondActivityTaskCanceled(RespondActivityTaskCanceledRequest canceledRequest)
325
        throws TException {
326
      impl.RespondActivityTaskCanceled(canceledRequest);
1✔
327
    }
1✔
328

329
    @Override
330
    public void RespondActivityTaskCanceledByID(
331
        RespondActivityTaskCanceledByIDRequest canceledRequest) throws TException {
332
      impl.RespondActivityTaskCanceledByID(canceledRequest);
1✔
333
    }
1✔
334

335
    @Override
336
    public void RequestCancelWorkflowExecution(RequestCancelWorkflowExecutionRequest cancelRequest)
337
        throws TException {
338
      impl.RequestCancelWorkflowExecution(cancelRequest);
1✔
339
    }
1✔
340

341
    @Override
342
    public void SignalWorkflowExecution(SignalWorkflowExecutionRequest signalRequest)
343
        throws TException {
344
      impl.SignalWorkflowExecution(signalRequest);
1✔
345
    }
1✔
346

347
    @Override
348
    public StartWorkflowExecutionResponse SignalWithStartWorkflowExecution(
349
        SignalWithStartWorkflowExecutionRequest signalWithStartRequest) throws TException {
350
      return impl.SignalWithStartWorkflowExecution(signalWithStartRequest);
1✔
351
    }
352

353
    @Override
354
    public SignalWithStartWorkflowExecutionAsyncResponse SignalWithStartWorkflowExecutionAsync(
355
        SignalWithStartWorkflowExecutionAsyncRequest signalWithStartRequest)
356
        throws BadRequestError, WorkflowExecutionAlreadyStartedError, ServiceBusyError,
357
            DomainNotActiveError, LimitExceededError, EntityNotExistsError,
358
            ClientVersionNotSupportedError, TException {
359
      return impl.SignalWithStartWorkflowExecutionAsync(signalWithStartRequest);
×
360
    }
361

362
    @Override
363
    public ResetWorkflowExecutionResponse ResetWorkflowExecution(
364
        ResetWorkflowExecutionRequest resetRequest) throws TException {
365
      return impl.ResetWorkflowExecution(resetRequest);
×
366
    }
367

368
    @Override
369
    public void TerminateWorkflowExecution(TerminateWorkflowExecutionRequest terminateRequest)
370
        throws TException {
371
      impl.TerminateWorkflowExecution(terminateRequest);
×
372
    }
×
373

374
    @Override
375
    public ListOpenWorkflowExecutionsResponse ListOpenWorkflowExecutions(
376
        ListOpenWorkflowExecutionsRequest listRequest) throws TException {
377
      return impl.ListOpenWorkflowExecutions(listRequest);
1✔
378
    }
379

380
    @Override
381
    public ListClosedWorkflowExecutionsResponse ListClosedWorkflowExecutions(
382
        ListClosedWorkflowExecutionsRequest listRequest) throws TException {
383
      return impl.ListClosedWorkflowExecutions(listRequest);
1✔
384
    }
385

386
    @Override
387
    public ListWorkflowExecutionsResponse ListWorkflowExecutions(
388
        ListWorkflowExecutionsRequest listRequest) throws TException {
389
      return impl.ListWorkflowExecutions(listRequest);
×
390
    }
391

392
    @Override
393
    public ListArchivedWorkflowExecutionsResponse ListArchivedWorkflowExecutions(
394
        ListArchivedWorkflowExecutionsRequest listRequest) throws TException {
395
      return impl.ListArchivedWorkflowExecutions(listRequest);
×
396
    }
397

398
    @Override
399
    public ListWorkflowExecutionsResponse ScanWorkflowExecutions(
400
        ListWorkflowExecutionsRequest listRequest) throws TException {
401
      return impl.ScanWorkflowExecutions(listRequest);
×
402
    }
403

404
    @Override
405
    public CountWorkflowExecutionsResponse CountWorkflowExecutions(
406
        CountWorkflowExecutionsRequest countRequest) throws TException {
407
      return impl.CountWorkflowExecutions(countRequest);
×
408
    }
409

410
    @Override
411
    public GetSearchAttributesResponse GetSearchAttributes() throws TException {
412
      return impl.GetSearchAttributes();
×
413
    }
414

415
    @Override
416
    public void RespondQueryTaskCompleted(RespondQueryTaskCompletedRequest completeRequest)
417
        throws TException {
418
      impl.RespondQueryTaskCompleted(completeRequest);
1✔
419
    }
1✔
420

421
    @Override
422
    public ResetStickyTaskListResponse ResetStickyTaskList(ResetStickyTaskListRequest resetRequest)
423
        throws TException {
424
      return impl.ResetStickyTaskList(resetRequest);
×
425
    }
426

427
    @Override
428
    public QueryWorkflowResponse QueryWorkflow(QueryWorkflowRequest queryRequest)
429
        throws BadRequestError, InternalServiceError, EntityNotExistsError, QueryFailedError,
430
            TException {
431
      return impl.QueryWorkflow(queryRequest);
1✔
432
    }
433

434
    @Override
435
    public DescribeWorkflowExecutionResponse DescribeWorkflowExecution(
436
        DescribeWorkflowExecutionRequest describeRequest) throws TException {
437
      return impl.DescribeWorkflowExecution(describeRequest);
×
438
    }
439

440
    @Override
441
    public DescribeTaskListResponse DescribeTaskList(DescribeTaskListRequest request)
442
        throws TException {
443
      return impl.DescribeTaskList(request);
×
444
    }
445

446
    @Override
447
    public ClusterInfo GetClusterInfo() throws InternalServiceError, ServiceBusyError, TException {
448
      return impl.GetClusterInfo();
×
449
    }
450

451
    @Override
452
    public ListTaskListPartitionsResponse ListTaskListPartitions(
453
        ListTaskListPartitionsRequest request) throws TException {
454
      return impl.ListTaskListPartitions(request);
×
455
    }
456

457
    @Override
458
    public void RefreshWorkflowTasks(RefreshWorkflowTasksRequest request)
459
        throws BadRequestError, DomainNotActiveError, ServiceBusyError, EntityNotExistsError,
460
            TException {
461
      impl.RefreshWorkflowTasks(request);
×
462
    }
×
463

464
    @Override
465
    public void RegisterDomain(
466
        RegisterDomainRequest registerRequest, AsyncMethodCallback resultHandler)
467
        throws TException {
468
      impl.RegisterDomain(registerRequest, resultHandler);
×
469
    }
×
470

471
    @Override
472
    public void DescribeDomain(
473
        DescribeDomainRequest describeRequest, AsyncMethodCallback resultHandler)
474
        throws TException {
475
      impl.DescribeDomain(describeRequest, resultHandler);
×
476
    }
×
477

478
    @Override
479
    public void ListDomains(ListDomainsRequest listRequest, AsyncMethodCallback resultHandler)
480
        throws TException {
481
      impl.ListDomains(listRequest, resultHandler);
×
482
    }
×
483

484
    @Override
485
    public void UpdateDomain(UpdateDomainRequest updateRequest, AsyncMethodCallback resultHandler)
486
        throws TException {
487
      impl.UpdateDomain(updateRequest, resultHandler);
×
488
    }
×
489

490
    @Override
491
    public void DeprecateDomain(
492
        DeprecateDomainRequest deprecateRequest, AsyncMethodCallback resultHandler)
493
        throws TException {
494
      impl.DeprecateDomain(deprecateRequest, resultHandler);
×
495
    }
×
496

497
    @Override
498
    public void RestartWorkflowExecution(
499
        RestartWorkflowExecutionRequest restartRequest, AsyncMethodCallback resultHandler)
500
        throws TException {
501
      impl.RestartWorkflowExecution(restartRequest);
×
502
    }
×
503

504
    @Override
505
    public void GetTaskListsByDomain(
506
        GetTaskListsByDomainRequest request, AsyncMethodCallback resultHandler)
507
        throws org.apache.thrift.TException {
508
      impl.GetTaskListsByDomain(request, resultHandler);
×
509
    }
×
510

511
    @Override
512
    public void StartWorkflowExecution(
513
        StartWorkflowExecutionRequest startRequest, AsyncMethodCallback resultHandler)
514
        throws TException {
515
      impl.StartWorkflowExecution(startRequest, resultHandler);
×
516
    }
×
517

518
    @Override
519
    public void StartWorkflowExecutionAsync(
520
        StartWorkflowExecutionAsyncRequest startRequest, AsyncMethodCallback resultHandler)
521
        throws TException {
522
      impl.StartWorkflowExecutionAsync(startRequest, resultHandler);
×
523
    }
×
524

525
    @Override
526
    public void StartWorkflowExecutionWithTimeout(
527
        StartWorkflowExecutionRequest startRequest,
528
        AsyncMethodCallback resultHandler,
529
        Long timeoutInMillis)
530
        throws TException {
531
      impl.StartWorkflowExecutionWithTimeout(startRequest, resultHandler, timeoutInMillis);
1✔
532
    }
1✔
533

534
    @Override
535
    public void StartWorkflowExecutionAsyncWithTimeout(
536
        StartWorkflowExecutionAsyncRequest startAsyncRequest,
537
        AsyncMethodCallback resultHandler,
538
        Long timeoutInMillis)
539
        throws TException {
540
      impl.StartWorkflowExecutionAsyncWithTimeout(
×
541
          startAsyncRequest, resultHandler, timeoutInMillis);
542
    }
×
543

544
    @Override
545
    public void GetWorkflowExecutionHistory(
546
        GetWorkflowExecutionHistoryRequest getRequest, AsyncMethodCallback resultHandler)
547
        throws TException {
548
      impl.GetWorkflowExecutionHistory(getRequest, resultHandler);
×
549
    }
×
550

551
    @Override
552
    public void GetWorkflowExecutionHistoryWithTimeout(
553
        GetWorkflowExecutionHistoryRequest getRequest,
554
        AsyncMethodCallback resultHandler,
555
        Long timeoutInMillis)
556
        throws TException {
557
      impl.GetWorkflowExecutionHistoryWithTimeout(getRequest, resultHandler, timeoutInMillis);
1✔
558
    }
1✔
559

560
    @Override
561
    public CompletableFuture<Boolean> isHealthy() {
562
      return impl.isHealthy();
×
563
    }
564

565
    @Override
566
    public void PollForDecisionTask(
567
        PollForDecisionTaskRequest pollRequest, AsyncMethodCallback resultHandler)
568
        throws TException {
569
      impl.PollForDecisionTask(pollRequest, resultHandler);
×
570
    }
×
571

572
    @Override
573
    public void RespondDecisionTaskCompleted(
574
        RespondDecisionTaskCompletedRequest completeRequest, AsyncMethodCallback resultHandler)
575
        throws TException {
576
      impl.RespondDecisionTaskCompleted(completeRequest, resultHandler);
×
577
    }
×
578

579
    @Override
580
    public void RespondDecisionTaskFailed(
581
        RespondDecisionTaskFailedRequest failedRequest, AsyncMethodCallback resultHandler)
582
        throws TException {
583
      impl.RespondDecisionTaskFailed(failedRequest, resultHandler);
×
584
    }
×
585

586
    @Override
587
    public void PollForActivityTask(
588
        PollForActivityTaskRequest pollRequest, AsyncMethodCallback resultHandler)
589
        throws TException {
590
      impl.PollForActivityTask(pollRequest, resultHandler);
×
591
    }
×
592

593
    @Override
594
    public void RecordActivityTaskHeartbeat(
595
        RecordActivityTaskHeartbeatRequest heartbeatRequest, AsyncMethodCallback resultHandler)
596
        throws TException {
597
      impl.RecordActivityTaskHeartbeat(heartbeatRequest, resultHandler);
×
598
    }
×
599

600
    @Override
601
    public void RecordActivityTaskHeartbeatByID(
602
        RecordActivityTaskHeartbeatByIDRequest heartbeatRequest, AsyncMethodCallback resultHandler)
603
        throws TException {
604
      impl.RecordActivityTaskHeartbeatByID(heartbeatRequest, resultHandler);
×
605
    }
×
606

607
    @Override
608
    public void RespondActivityTaskCompleted(
609
        RespondActivityTaskCompletedRequest completeRequest, AsyncMethodCallback resultHandler)
610
        throws TException {
611
      impl.RespondActivityTaskCompleted(completeRequest, resultHandler);
×
612
    }
×
613

614
    @Override
615
    public void RespondActivityTaskCompletedByID(
616
        RespondActivityTaskCompletedByIDRequest completeRequest, AsyncMethodCallback resultHandler)
617
        throws TException {
618
      impl.RespondActivityTaskCompletedByID(completeRequest, resultHandler);
×
619
    }
×
620

621
    @Override
622
    public void RespondActivityTaskFailed(
623
        RespondActivityTaskFailedRequest failRequest, AsyncMethodCallback resultHandler)
624
        throws TException {
625
      impl.RespondActivityTaskFailed(failRequest, resultHandler);
×
626
    }
×
627

628
    @Override
629
    public void RespondActivityTaskFailedByID(
630
        RespondActivityTaskFailedByIDRequest failRequest, AsyncMethodCallback resultHandler)
631
        throws TException {
632
      impl.RespondActivityTaskFailedByID(failRequest, resultHandler);
×
633
    }
×
634

635
    @Override
636
    public void RespondActivityTaskCanceled(
637
        RespondActivityTaskCanceledRequest canceledRequest, AsyncMethodCallback resultHandler)
638
        throws TException {
639
      impl.RespondActivityTaskCanceled(canceledRequest, resultHandler);
×
640
    }
×
641

642
    @Override
643
    public void RespondActivityTaskCanceledByID(
644
        RespondActivityTaskCanceledByIDRequest canceledRequest, AsyncMethodCallback resultHandler)
645
        throws TException {
646
      impl.RespondActivityTaskCanceledByID(canceledRequest, resultHandler);
×
647
    }
×
648

649
    @Override
650
    public void RequestCancelWorkflowExecution(
651
        RequestCancelWorkflowExecutionRequest cancelRequest, AsyncMethodCallback resultHandler)
652
        throws TException {
653
      impl.RequestCancelWorkflowExecution(cancelRequest, resultHandler);
×
654
    }
×
655

656
    @Override
657
    public void SignalWorkflowExecution(
658
        SignalWorkflowExecutionRequest signalRequest, AsyncMethodCallback resultHandler)
659
        throws TException {
660
      impl.SignalWorkflowExecution(signalRequest, resultHandler);
1✔
661
    }
1✔
662

663
    @Override
664
    public void SignalWorkflowExecutionWithTimeout(
665
        SignalWorkflowExecutionRequest signalRequest,
666
        AsyncMethodCallback resultHandler,
667
        Long timeoutInMillis)
668
        throws TException {
669
      impl.SignalWorkflowExecutionWithTimeout(signalRequest, resultHandler, timeoutInMillis);
×
670
    }
×
671

672
    @Override
673
    public void SignalWithStartWorkflowExecution(
674
        SignalWithStartWorkflowExecutionRequest signalWithStartRequest,
675
        AsyncMethodCallback resultHandler)
676
        throws TException {
677
      impl.SignalWithStartWorkflowExecution(signalWithStartRequest, resultHandler);
×
678
    }
×
679

680
    @Override
681
    public void SignalWithStartWorkflowExecutionAsync(
682
        SignalWithStartWorkflowExecutionAsyncRequest signalWithStartRequest,
683
        AsyncMethodCallback resultHandler)
684
        throws TException {
685
      impl.SignalWithStartWorkflowExecutionAsync(signalWithStartRequest, resultHandler);
×
686
    }
×
687

688
    @Override
689
    public void ResetWorkflowExecution(
690
        ResetWorkflowExecutionRequest resetRequest, AsyncMethodCallback resultHandler)
691
        throws TException {
692
      impl.ResetWorkflowExecution(resetRequest, resultHandler);
×
693
    }
×
694

695
    @Override
696
    public void TerminateWorkflowExecution(
697
        TerminateWorkflowExecutionRequest terminateRequest, AsyncMethodCallback resultHandler)
698
        throws TException {
699
      impl.TerminateWorkflowExecution(terminateRequest, resultHandler);
×
700
    }
×
701

702
    @Override
703
    public void ListOpenWorkflowExecutions(
704
        ListOpenWorkflowExecutionsRequest listRequest, AsyncMethodCallback resultHandler)
705
        throws TException {
706
      impl.ListOpenWorkflowExecutions(listRequest, resultHandler);
×
707
    }
×
708

709
    @Override
710
    public void ListClosedWorkflowExecutions(
711
        ListClosedWorkflowExecutionsRequest listRequest, AsyncMethodCallback resultHandler)
712
        throws TException {
713
      impl.ListClosedWorkflowExecutions(listRequest, resultHandler);
×
714
    }
×
715

716
    @Override
717
    public void ListWorkflowExecutions(
718
        ListWorkflowExecutionsRequest listRequest, AsyncMethodCallback resultHandler)
719
        throws TException {
720
      impl.ListWorkflowExecutions(listRequest, resultHandler);
×
721
    }
×
722

723
    @Override
724
    public void ListArchivedWorkflowExecutions(
725
        ListArchivedWorkflowExecutionsRequest listRequest, AsyncMethodCallback resultHandler)
726
        throws TException {
727
      impl.ListArchivedWorkflowExecutions(listRequest, resultHandler);
×
728
    }
×
729

730
    @Override
731
    public void ScanWorkflowExecutions(
732
        ListWorkflowExecutionsRequest listRequest, AsyncMethodCallback resultHandler)
733
        throws TException {
734
      impl.ScanWorkflowExecutions(listRequest, resultHandler);
×
735
    }
×
736

737
    @Override
738
    public void CountWorkflowExecutions(
739
        CountWorkflowExecutionsRequest countRequest, AsyncMethodCallback resultHandler)
740
        throws TException {
741
      impl.CountWorkflowExecutions(countRequest, resultHandler);
×
742
    }
×
743

744
    @Override
745
    public void GetSearchAttributes(AsyncMethodCallback resultHandler) throws TException {
746
      impl.GetSearchAttributes();
×
747
    }
×
748

749
    @Override
750
    public void RespondQueryTaskCompleted(
751
        RespondQueryTaskCompletedRequest completeRequest, AsyncMethodCallback resultHandler)
752
        throws TException {
753
      impl.RespondQueryTaskCompleted(completeRequest, resultHandler);
×
754
    }
×
755

756
    @Override
757
    public void ResetStickyTaskList(
758
        ResetStickyTaskListRequest resetRequest, AsyncMethodCallback resultHandler)
759
        throws TException {
760
      impl.ResetStickyTaskList(resetRequest, resultHandler);
×
761
    }
×
762

763
    @Override
764
    public void QueryWorkflow(QueryWorkflowRequest queryRequest, AsyncMethodCallback resultHandler)
765
        throws TException {
766
      impl.QueryWorkflow(queryRequest, resultHandler);
×
767
    }
×
768

769
    @Override
770
    public void DescribeWorkflowExecution(
771
        DescribeWorkflowExecutionRequest describeRequest, AsyncMethodCallback resultHandler)
772
        throws TException {
773
      impl.DescribeWorkflowExecution(describeRequest, resultHandler);
×
774
    }
×
775

776
    @Override
777
    public void DescribeTaskList(DescribeTaskListRequest request, AsyncMethodCallback resultHandler)
778
        throws TException {
779
      impl.DescribeTaskList(request, resultHandler);
×
780
    }
×
781

782
    @Override
783
    public void GetClusterInfo(AsyncMethodCallback resultHandler) throws TException {}
×
784

785
    @Override
786
    public void ListTaskListPartitions(
787
        ListTaskListPartitionsRequest request, AsyncMethodCallback resultHandler)
788
        throws TException {}
×
789

790
    @Override
791
    public void RefreshWorkflowTasks(
792
        RefreshWorkflowTasksRequest request, AsyncMethodCallback resultHandler) throws TException {}
×
793

794
    @Override
795
    public void RegisterDomain(RegisterDomainRequest registerRequest)
796
        throws BadRequestError, InternalServiceError, DomainAlreadyExistsError, TException {
797
      impl.RegisterDomain(registerRequest);
×
798
    }
×
799

800
    @Override
801
    public DescribeDomainResponse DescribeDomain(DescribeDomainRequest describeRequest)
802
        throws BadRequestError, InternalServiceError, EntityNotExistsError, TException {
803
      return impl.DescribeDomain(describeRequest);
×
804
    }
805

806
    @Override
807
    public ListDomainsResponse ListDomains(ListDomainsRequest listRequest)
808
        throws BadRequestError, InternalServiceError, EntityNotExistsError, ServiceBusyError,
809
            TException {
810
      return impl.ListDomains(listRequest);
×
811
    }
812

813
    @Override
814
    public UpdateDomainResponse UpdateDomain(UpdateDomainRequest updateRequest)
815
        throws BadRequestError, InternalServiceError, EntityNotExistsError, TException {
816
      return impl.UpdateDomain(updateRequest);
×
817
    }
818

819
    @Override
820
    public void DeprecateDomain(DeprecateDomainRequest deprecateRequest)
821
        throws BadRequestError, InternalServiceError, EntityNotExistsError, TException {
822
      impl.DeprecateDomain(deprecateRequest);
×
823
    }
×
824

825
    @Override
826
    public RestartWorkflowExecutionResponse RestartWorkflowExecution(
827
        RestartWorkflowExecutionRequest restartRequest)
828
        throws BadRequestError, ServiceBusyError, DomainNotActiveError, LimitExceededError,
829
            EntityNotExistsError, ClientVersionNotSupportedError, TException {
830
      return impl.RestartWorkflowExecution(restartRequest);
×
831
    }
832

833
    @Override
834
    public GetTaskListsByDomainResponse GetTaskListsByDomain(GetTaskListsByDomainRequest request)
835
        throws BadRequestError, EntityNotExistsError, LimitExceededError, ServiceBusyError,
836
            ClientVersionNotSupportedError, TException {
837
      return impl.GetTaskListsByDomain(request);
×
838
    }
839

840
    @Override
841
    public StartWorkflowExecutionResponse StartWorkflowExecution(
842
        StartWorkflowExecutionRequest startRequest)
843
        throws BadRequestError, InternalServiceError, WorkflowExecutionAlreadyStartedError,
844
            ServiceBusyError, TException {
845
      return impl.StartWorkflowExecution(startRequest);
1✔
846
    }
847

848
    @Override
849
    public StartWorkflowExecutionAsyncResponse StartWorkflowExecutionAsync(
850
        StartWorkflowExecutionAsyncRequest startRequest)
851
        throws BadRequestError, WorkflowExecutionAlreadyStartedError, ServiceBusyError,
852
            DomainNotActiveError, LimitExceededError, EntityNotExistsError,
853
            ClientVersionNotSupportedError, TException {
854
      return impl.StartWorkflowExecutionAsync(startRequest);
1✔
855
    }
856

857
    @Override
858
    public GetWorkflowExecutionHistoryResponse GetWorkflowExecutionHistory(
859
        GetWorkflowExecutionHistoryRequest getRequest)
860
        throws BadRequestError, InternalServiceError, EntityNotExistsError, ServiceBusyError,
861
            TException {
862
      return impl.GetWorkflowExecutionHistory(getRequest);
1✔
863
    }
864

865
    @Override
866
    public GetWorkflowExecutionHistoryResponse GetWorkflowExecutionHistoryWithTimeout(
867
        GetWorkflowExecutionHistoryRequest getRequest, Long timeoutInMillis)
868
        throws BadRequestError, InternalServiceError, EntityNotExistsError, ServiceBusyError,
869
            TException {
870
      return impl.GetWorkflowExecutionHistoryWithTimeout(getRequest, timeoutInMillis);
1✔
871
    }
872

873
    @Override
874
    public PollForDecisionTaskResponse PollForDecisionTask(PollForDecisionTaskRequest pollRequest)
875
        throws BadRequestError, InternalServiceError, ServiceBusyError, TException {
876
      return impl.PollForDecisionTask(pollRequest);
1✔
877
    }
878

879
    @Override
880
    public RespondDecisionTaskCompletedResponse RespondDecisionTaskCompleted(
881
        RespondDecisionTaskCompletedRequest completeRequest)
882
        throws BadRequestError, InternalServiceError, EntityNotExistsError,
883
            WorkflowExecutionAlreadyCompletedError, TException {
884
      return impl.RespondDecisionTaskCompleted(completeRequest);
1✔
885
    }
886

887
    @Override
888
    public void RespondDecisionTaskFailed(RespondDecisionTaskFailedRequest failedRequest)
889
        throws BadRequestError, InternalServiceError, EntityNotExistsError,
890
            WorkflowExecutionAlreadyCompletedError, TException {
891
      impl.RespondDecisionTaskFailed(failedRequest);
1✔
892
    }
1✔
893

894
    @Override
895
    public PollForActivityTaskResponse PollForActivityTask(PollForActivityTaskRequest pollRequest)
896
        throws BadRequestError, InternalServiceError, ServiceBusyError, TException {
897
      return impl.PollForActivityTask(pollRequest);
1✔
898
    }
899

900
    public void getDiagnostics(StringBuilder result) {
901
      impl.getDiagnostics(result);
1✔
902
    }
1✔
903

904
    @Override
905
    public void close() {
906
      impl.close();
1✔
907
    }
1✔
908

909
    public void registerDelayedCallback(Duration delay, Runnable r) {
910
      impl.registerDelayedCallback(delay, r);
1✔
911
    }
1✔
912

913
    public void lockTimeSkipping(String caller) {
914
      impl.lockTimeSkipping(caller);
1✔
915
    }
1✔
916

917
    public void unlockTimeSkipping(String caller) {
918
      impl.unlockTimeSkipping(caller);
1✔
919
    }
1✔
920

921
    public void sleep(Duration duration) {
922
      impl.sleep(duration);
1✔
923
    }
1✔
924
  }
925

926
  private static class TimeLockingInterceptor implements WorkflowClientInterceptor {
927

928
    private final WorkflowServiceWrapper service;
929

930
    TimeLockingInterceptor(WorkflowServiceWrapper service) {
1✔
931
      this.service = service;
1✔
932
    }
1✔
933

934
    @Override
935
    public WorkflowStub newUntypedWorkflowStub(
936
        String workflowType, WorkflowOptions options, WorkflowStub next) {
937
      return new TimeLockingWorkflowStub(service, next);
1✔
938
    }
939

940
    @Override
941
    public WorkflowStub newUntypedWorkflowStub(
942
        WorkflowExecution execution, Optional<String> workflowType, WorkflowStub next) {
943
      return new TimeLockingWorkflowStub(service, next);
1✔
944
    }
945

946
    @Override
947
    public ActivityCompletionClient newActivityCompletionClient(ActivityCompletionClient next) {
948
      return next;
1✔
949
    }
950

951
    private class TimeLockingWorkflowStub implements WorkflowStub {
952

953
      private final WorkflowServiceWrapper service;
954
      private final WorkflowStub next;
955

956
      TimeLockingWorkflowStub(WorkflowServiceWrapper service, WorkflowStub next) {
1✔
957
        this.service = service;
1✔
958
        this.next = next;
1✔
959
      }
1✔
960

961
      @Override
962
      public void signal(String signalName, Object... args) {
963
        next.signal(signalName, args);
1✔
964
      }
1✔
965

966
      @Override
967
      public CompletableFuture<Void> signalAsync(String signalName, Object... args) {
968
        return next.signalAsync(signalName, args);
1✔
969
      }
970

971
      @Override
972
      public CompletableFuture<Void> signalAsyncWithTimeout(
973
          long timeout, TimeUnit unit, String signalName, Object... args) {
974
        return next.signalAsyncWithTimeout(timeout, unit, signalName, args);
1✔
975
      }
976

977
      @Override
978
      public WorkflowExecution start(Object... args) {
979
        return next.start(args);
1✔
980
      }
981

982
      @Override
983
      public CompletableFuture<WorkflowExecution> startAsync(Object... args) {
984
        return next.startAsync(args);
1✔
985
      }
986

987
      @Override
988
      public CompletableFuture<WorkflowExecution> startAsyncWithTimeout(
989
          long timeout, TimeUnit unit, Object... args) {
990
        return next.startAsyncWithTimeout(timeout, unit, args);
1✔
991
      }
992

993
      @Override
994
      public WorkflowExecution enqueueStart(Object... args) {
995
        return next.enqueueStart(args);
1✔
996
      }
997

998
      @Override
999
      public CompletableFuture<WorkflowExecution> enqueueStartAsync(Object... args) {
1000
        return next.enqueueStartAsync(args);
×
1001
      }
1002

1003
      @Override
1004
      public CompletableFuture<WorkflowExecution> enqueueStartAsyncWithTimeout(
1005
          long timeout, TimeUnit unit, Object... args) {
1006
        return next.enqueueStartAsyncWithTimeout(timeout, unit, args);
×
1007
      }
1008

1009
      @Override
1010
      public WorkflowExecution signalWithStart(
1011
          String signalName, Object[] signalArgs, Object[] startArgs) {
1012
        return next.signalWithStart(signalName, signalArgs, startArgs);
1✔
1013
      }
1014

1015
      @Override
1016
      public WorkflowExecution enqueueSignalWithStart(
1017
          String signalName, Object[] signalArgs, Object[] startArgs) {
1018
        return next.enqueueSignalWithStart(signalName, signalArgs, startArgs);
×
1019
      }
1020

1021
      @Override
1022
      public Optional<String> getWorkflowType() {
1023
        return next.getWorkflowType();
1✔
1024
      }
1025

1026
      @Override
1027
      public WorkflowExecution getExecution() {
1028
        return next.getExecution();
1✔
1029
      }
1030

1031
      @Override
1032
      public <R> R getResult(Class<R> resultClass, Type resultType) {
1033
        service.unlockTimeSkipping("TimeLockingWorkflowStub getResult");
1✔
1034
        try {
1035
          return next.getResult(resultClass, resultType);
1✔
1036
        } finally {
1037
          service.lockTimeSkipping("TimeLockingWorkflowStub getResult");
1✔
1038
        }
1039
      }
1040

1041
      @Override
1042
      public <R> R getResult(Class<R> resultClass) {
1043
        service.unlockTimeSkipping("TimeLockingWorkflowStub getResult");
1✔
1044
        try {
1045
          return next.getResult(resultClass);
1✔
1046
        } finally {
1047
          service.lockTimeSkipping("TimeLockingWorkflowStub getResult");
1✔
1048
        }
1049
      }
1050

1051
      @Override
1052
      public <R> CompletableFuture<R> getResultAsync(Class<R> resultClass, Type resultType) {
1053
        return new TimeLockingFuture<>(next.getResultAsync(resultClass, resultType));
1✔
1054
      }
1055

1056
      @Override
1057
      public <R> CompletableFuture<R> getResultAsync(Class<R> resultClass) {
1058
        return new TimeLockingFuture<>(next.getResultAsync(resultClass));
1✔
1059
      }
1060

1061
      @Override
1062
      public <R> R getResult(long timeout, TimeUnit unit, Class<R> resultClass, Type resultType)
1063
          throws TimeoutException {
1064
        service.unlockTimeSkipping("TimeLockingWorkflowStub getResult");
×
1065
        try {
1066
          return next.getResult(timeout, unit, resultClass, resultType);
×
1067
        } finally {
1068
          service.lockTimeSkipping("TimeLockingWorkflowStub getResult");
×
1069
        }
1070
      }
1071

1072
      @Override
1073
      public <R> R getResult(long timeout, TimeUnit unit, Class<R> resultClass)
1074
          throws TimeoutException {
1075
        service.unlockTimeSkipping("TimeLockingWorkflowStub getResult");
×
1076
        try {
1077
          return next.getResult(timeout, unit, resultClass);
×
1078
        } finally {
1079
          service.lockTimeSkipping("TimeLockingWorkflowStub getResult");
×
1080
        }
1081
      }
1082

1083
      @Override
1084
      public <R> CompletableFuture<R> getResultAsync(
1085
          long timeout, TimeUnit unit, Class<R> resultClass, Type resultType) {
1086
        return new TimeLockingFuture<>(next.getResultAsync(timeout, unit, resultClass, resultType));
×
1087
      }
1088

1089
      @Override
1090
      public <R> CompletableFuture<R> getResultAsync(
1091
          long timeout, TimeUnit unit, Class<R> resultClass) {
1092
        return new TimeLockingFuture<>(next.getResultAsync(timeout, unit, resultClass));
×
1093
      }
1094

1095
      @Override
1096
      public <R> R query(String queryType, Class<R> resultClass, Object... args) {
1097
        return next.query(queryType, resultClass, args);
1✔
1098
      }
1099

1100
      @Override
1101
      public <R> R query(String queryType, Class<R> resultClass, Type resultType, Object... args) {
1102
        return next.query(queryType, resultClass, resultType, args);
1✔
1103
      }
1104

1105
      @Override
1106
      public <R> R query(
1107
          String queryType,
1108
          Class<R> resultClass,
1109
          QueryRejectCondition queryRejectCondition,
1110
          Object... args) {
1111
        return next.query(queryType, resultClass, queryRejectCondition, args);
×
1112
      }
1113

1114
      @Override
1115
      public <R> R query(
1116
          String queryType,
1117
          Class<R> resultClass,
1118
          Type resultType,
1119
          QueryRejectCondition queryRejectCondition,
1120
          Object... args) {
1121
        return next.query(queryType, resultClass, resultType, queryRejectCondition, args);
×
1122
      }
1123

1124
      @Override
1125
      public <R> R queryWithOptions(
1126
          String queryType,
1127
          QueryOptions options,
1128
          Type resultType,
1129
          Class<R> resultClass,
1130
          Object... args) {
1131
        return next.queryWithOptions(queryType, options, resultType, resultClass, args);
×
1132
      }
1133

1134
      @Override
1135
      public void cancel() {
1136
        next.cancel();
1✔
1137
      }
1✔
1138

1139
      @Override
1140
      public Optional<WorkflowOptions> getOptions() {
1141
        return next.getOptions();
1✔
1142
      }
1143

1144
      /** Unlocks time skipping before blocking calls and locks back after completion. */
1145
      private class TimeLockingFuture<R> extends CompletableFuture<R> {
1146

1147
        public TimeLockingFuture(CompletableFuture<R> resultAsync) {
1✔
1148
          @SuppressWarnings({"FutureReturnValueIgnored", "unused"})
1149
          CompletableFuture<R> ignored =
1✔
1150
              resultAsync.whenComplete(
1✔
1151
                  (r, e) -> {
1152
                    service.lockTimeSkipping(
1✔
1153
                        "TimeLockingWorkflowStub TimeLockingFuture constructor");
1154
                    if (e == null) {
1✔
1155
                      this.complete(r);
1✔
1156
                    } else {
1157
                      this.completeExceptionally(e);
1✔
1158
                    }
1159
                  });
1✔
1160
        }
1✔
1161

1162
        @Override
1163
        public R get() throws InterruptedException, ExecutionException {
1164
          service.unlockTimeSkipping("TimeLockingWorkflowStub TimeLockingFuture get");
1✔
1165
          try {
1166
            return super.get();
1✔
1167
          } finally {
1168
            service.lockTimeSkipping("TimeLockingWorkflowStub TimeLockingFuture get");
1✔
1169
          }
1170
        }
1171

1172
        @Override
1173
        public R get(long timeout, TimeUnit unit)
1174
            throws InterruptedException, ExecutionException, TimeoutException {
1175
          service.unlockTimeSkipping("TimeLockingWorkflowStub TimeLockingFuture get");
1✔
1176
          try {
1177
            return super.get(timeout, unit);
×
1178
          } finally {
1179
            service.lockTimeSkipping("TimeLockingWorkflowStub TimeLockingFuture get");
1✔
1180
          }
1181
        }
1182

1183
        @Override
1184
        public R join() {
1185
          service.unlockTimeSkipping("TimeLockingWorkflowStub TimeLockingFuture join");
×
1186
          return super.join();
×
1187
        }
1188
      }
1189
    }
1190
  }
1191
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2025 Coveralls, Inc