temporalio 0.0.2 → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (202) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +25 -23
  3. data/bridge/Cargo.lock +168 -59
  4. data/bridge/Cargo.toml +4 -2
  5. data/bridge/sdk-core/README.md +19 -6
  6. data/bridge/sdk-core/client/src/lib.rs +215 -39
  7. data/bridge/sdk-core/client/src/metrics.rs +17 -8
  8. data/bridge/sdk-core/client/src/raw.rs +4 -4
  9. data/bridge/sdk-core/client/src/retry.rs +32 -20
  10. data/bridge/sdk-core/core/Cargo.toml +22 -9
  11. data/bridge/sdk-core/core/src/abstractions.rs +203 -14
  12. data/bridge/sdk-core/core/src/core_tests/activity_tasks.rs +76 -41
  13. data/bridge/sdk-core/core/src/core_tests/determinism.rs +165 -2
  14. data/bridge/sdk-core/core/src/core_tests/local_activities.rs +204 -83
  15. data/bridge/sdk-core/core/src/core_tests/queries.rs +3 -4
  16. data/bridge/sdk-core/core/src/core_tests/workers.rs +1 -3
  17. data/bridge/sdk-core/core/src/core_tests/workflow_tasks.rs +397 -54
  18. data/bridge/sdk-core/core/src/ephemeral_server/mod.rs +106 -12
  19. data/bridge/sdk-core/core/src/internal_flags.rs +136 -0
  20. data/bridge/sdk-core/core/src/lib.rs +16 -9
  21. data/bridge/sdk-core/core/src/telemetry/log_export.rs +1 -1
  22. data/bridge/sdk-core/core/src/telemetry/metrics.rs +69 -35
  23. data/bridge/sdk-core/core/src/telemetry/mod.rs +29 -13
  24. data/bridge/sdk-core/core/src/telemetry/prometheus_server.rs +17 -12
  25. data/bridge/sdk-core/core/src/test_help/mod.rs +62 -12
  26. data/bridge/sdk-core/core/src/worker/activities/activity_heartbeat_manager.rs +112 -156
  27. data/bridge/sdk-core/core/src/worker/activities/activity_task_poller_stream.rs +89 -0
  28. data/bridge/sdk-core/core/src/worker/activities/local_activities.rs +352 -122
  29. data/bridge/sdk-core/core/src/worker/activities.rs +233 -157
  30. data/bridge/sdk-core/core/src/worker/client/mocks.rs +22 -2
  31. data/bridge/sdk-core/core/src/worker/client.rs +18 -2
  32. data/bridge/sdk-core/core/src/worker/mod.rs +165 -58
  33. data/bridge/sdk-core/core/src/worker/workflow/bridge.rs +1 -3
  34. data/bridge/sdk-core/core/src/worker/workflow/driven_workflow.rs +3 -5
  35. data/bridge/sdk-core/core/src/worker/workflow/history_update.rs +856 -277
  36. data/bridge/sdk-core/core/src/worker/workflow/machines/activity_state_machine.rs +100 -43
  37. data/bridge/sdk-core/core/src/worker/workflow/machines/cancel_external_state_machine.rs +7 -7
  38. data/bridge/sdk-core/core/src/worker/workflow/machines/cancel_workflow_state_machine.rs +5 -4
  39. data/bridge/sdk-core/core/src/worker/workflow/machines/child_workflow_state_machine.rs +87 -27
  40. data/bridge/sdk-core/core/src/worker/workflow/machines/complete_workflow_state_machine.rs +5 -4
  41. data/bridge/sdk-core/core/src/worker/workflow/machines/continue_as_new_workflow_state_machine.rs +5 -4
  42. data/bridge/sdk-core/core/src/worker/workflow/machines/fail_workflow_state_machine.rs +5 -4
  43. data/bridge/sdk-core/core/src/worker/workflow/machines/local_activity_state_machine.rs +137 -62
  44. data/bridge/sdk-core/core/src/worker/workflow/machines/mod.rs +25 -17
  45. data/bridge/sdk-core/core/src/worker/workflow/machines/modify_workflow_properties_state_machine.rs +7 -6
  46. data/bridge/sdk-core/core/src/worker/workflow/machines/patch_state_machine.rs +103 -152
  47. data/bridge/sdk-core/core/src/worker/workflow/machines/signal_external_state_machine.rs +7 -7
  48. data/bridge/sdk-core/core/src/worker/workflow/machines/timer_state_machine.rs +9 -9
  49. data/bridge/sdk-core/core/src/worker/workflow/machines/transition_coverage.rs +2 -2
  50. data/bridge/sdk-core/core/src/worker/workflow/machines/upsert_search_attributes_state_machine.rs +14 -7
  51. data/bridge/sdk-core/core/src/worker/workflow/machines/workflow_machines/local_acts.rs +5 -16
  52. data/bridge/sdk-core/core/src/worker/workflow/machines/workflow_machines.rs +201 -121
  53. data/bridge/sdk-core/core/src/worker/workflow/machines/workflow_task_state_machine.rs +11 -14
  54. data/bridge/sdk-core/core/src/worker/workflow/managed_run/managed_wf_test.rs +30 -15
  55. data/bridge/sdk-core/core/src/worker/workflow/managed_run.rs +1026 -376
  56. data/bridge/sdk-core/core/src/worker/workflow/mod.rs +460 -384
  57. data/bridge/sdk-core/core/src/worker/workflow/run_cache.rs +40 -57
  58. data/bridge/sdk-core/core/src/worker/workflow/wft_extraction.rs +125 -0
  59. data/bridge/sdk-core/core/src/worker/workflow/wft_poller.rs +1 -4
  60. data/bridge/sdk-core/core/src/worker/workflow/workflow_stream/saved_wf_inputs.rs +117 -0
  61. data/bridge/sdk-core/core/src/worker/workflow/workflow_stream/tonic_status_serde.rs +24 -0
  62. data/bridge/sdk-core/core/src/worker/workflow/workflow_stream.rs +448 -718
  63. data/bridge/sdk-core/core-api/Cargo.toml +2 -1
  64. data/bridge/sdk-core/core-api/src/errors.rs +1 -34
  65. data/bridge/sdk-core/core-api/src/lib.rs +6 -2
  66. data/bridge/sdk-core/core-api/src/telemetry.rs +0 -6
  67. data/bridge/sdk-core/core-api/src/worker.rs +14 -1
  68. data/bridge/sdk-core/fsm/rustfsm_procmacro/src/lib.rs +18 -15
  69. data/bridge/sdk-core/fsm/rustfsm_trait/src/lib.rs +8 -3
  70. data/bridge/sdk-core/histories/evict_while_la_running_no_interference-16_history.bin +0 -0
  71. data/bridge/sdk-core/protos/api_upstream/temporal/api/command/v1/message.proto +5 -17
  72. data/bridge/sdk-core/protos/api_upstream/temporal/api/common/v1/message.proto +11 -0
  73. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/command_type.proto +1 -6
  74. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/event_type.proto +6 -6
  75. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/failed_cause.proto +5 -0
  76. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/update.proto +22 -6
  77. data/bridge/sdk-core/protos/api_upstream/temporal/api/history/v1/message.proto +48 -19
  78. data/bridge/sdk-core/protos/api_upstream/temporal/api/namespace/v1/message.proto +2 -0
  79. data/bridge/sdk-core/protos/api_upstream/temporal/api/operatorservice/v1/request_response.proto +3 -0
  80. data/bridge/sdk-core/protos/api_upstream/temporal/api/{enums/v1/interaction_type.proto → protocol/v1/message.proto} +29 -11
  81. data/bridge/sdk-core/protos/api_upstream/temporal/api/sdk/v1/task_complete_metadata.proto +63 -0
  82. data/bridge/sdk-core/protos/api_upstream/temporal/api/update/v1/message.proto +111 -0
  83. data/bridge/sdk-core/protos/api_upstream/temporal/api/workflowservice/v1/request_response.proto +59 -28
  84. data/bridge/sdk-core/protos/api_upstream/temporal/api/workflowservice/v1/service.proto +2 -2
  85. data/bridge/sdk-core/protos/local/temporal/sdk/core/activity_result/activity_result.proto +1 -0
  86. data/bridge/sdk-core/protos/local/temporal/sdk/core/activity_task/activity_task.proto +1 -0
  87. data/bridge/sdk-core/protos/local/temporal/sdk/core/child_workflow/child_workflow.proto +1 -0
  88. data/bridge/sdk-core/protos/local/temporal/sdk/core/common/common.proto +1 -0
  89. data/bridge/sdk-core/protos/local/temporal/sdk/core/core_interface.proto +1 -0
  90. data/bridge/sdk-core/protos/local/temporal/sdk/core/external_data/external_data.proto +1 -0
  91. data/bridge/sdk-core/protos/local/temporal/sdk/core/workflow_activation/workflow_activation.proto +7 -0
  92. data/bridge/sdk-core/protos/local/temporal/sdk/core/workflow_commands/workflow_commands.proto +1 -0
  93. data/bridge/sdk-core/protos/local/temporal/sdk/core/workflow_completion/workflow_completion.proto +6 -0
  94. data/bridge/sdk-core/sdk/Cargo.toml +3 -2
  95. data/bridge/sdk-core/sdk/src/lib.rs +87 -20
  96. data/bridge/sdk-core/sdk/src/workflow_future.rs +9 -8
  97. data/bridge/sdk-core/sdk-core-protos/Cargo.toml +5 -2
  98. data/bridge/sdk-core/sdk-core-protos/build.rs +36 -1
  99. data/bridge/sdk-core/sdk-core-protos/src/history_builder.rs +100 -87
  100. data/bridge/sdk-core/sdk-core-protos/src/history_info.rs +5 -1
  101. data/bridge/sdk-core/sdk-core-protos/src/lib.rs +175 -57
  102. data/bridge/sdk-core/sdk-core-protos/src/task_token.rs +12 -2
  103. data/bridge/sdk-core/test-utils/Cargo.toml +3 -1
  104. data/bridge/sdk-core/test-utils/src/canned_histories.rs +106 -296
  105. data/bridge/sdk-core/test-utils/src/histfetch.rs +1 -1
  106. data/bridge/sdk-core/test-utils/src/lib.rs +82 -23
  107. data/bridge/sdk-core/test-utils/src/wf_input_saver.rs +50 -0
  108. data/bridge/sdk-core/test-utils/src/workflows.rs +29 -0
  109. data/bridge/sdk-core/tests/fuzzy_workflow.rs +130 -0
  110. data/bridge/sdk-core/tests/{load_tests.rs → heavy_tests.rs} +125 -51
  111. data/bridge/sdk-core/tests/integ_tests/ephemeral_server_tests.rs +25 -3
  112. data/bridge/sdk-core/tests/integ_tests/heartbeat_tests.rs +5 -3
  113. data/bridge/sdk-core/tests/integ_tests/metrics_tests.rs +218 -16
  114. data/bridge/sdk-core/tests/integ_tests/polling_tests.rs +4 -47
  115. data/bridge/sdk-core/tests/integ_tests/queries_tests.rs +5 -128
  116. data/bridge/sdk-core/tests/integ_tests/visibility_tests.rs +83 -25
  117. data/bridge/sdk-core/tests/integ_tests/workflow_tests/activities.rs +93 -69
  118. data/bridge/sdk-core/tests/integ_tests/workflow_tests/cancel_external.rs +1 -0
  119. data/bridge/sdk-core/tests/integ_tests/workflow_tests/cancel_wf.rs +6 -13
  120. data/bridge/sdk-core/tests/integ_tests/workflow_tests/child_workflows.rs +1 -0
  121. data/bridge/sdk-core/tests/integ_tests/workflow_tests/continue_as_new.rs +6 -2
  122. data/bridge/sdk-core/tests/integ_tests/workflow_tests/determinism.rs +3 -10
  123. data/bridge/sdk-core/tests/integ_tests/workflow_tests/local_activities.rs +72 -191
  124. data/bridge/sdk-core/tests/integ_tests/workflow_tests/modify_wf_properties.rs +1 -0
  125. data/bridge/sdk-core/tests/integ_tests/workflow_tests/patches.rs +7 -28
  126. data/bridge/sdk-core/tests/integ_tests/workflow_tests/replay.rs +12 -7
  127. data/bridge/sdk-core/tests/integ_tests/workflow_tests/resets.rs +1 -0
  128. data/bridge/sdk-core/tests/integ_tests/workflow_tests/signals.rs +18 -14
  129. data/bridge/sdk-core/tests/integ_tests/workflow_tests/stickyness.rs +6 -20
  130. data/bridge/sdk-core/tests/integ_tests/workflow_tests/timers.rs +10 -21
  131. data/bridge/sdk-core/tests/integ_tests/workflow_tests/upsert_search_attrs.rs +6 -4
  132. data/bridge/sdk-core/tests/integ_tests/workflow_tests.rs +10 -11
  133. data/bridge/sdk-core/tests/main.rs +3 -13
  134. data/bridge/sdk-core/tests/runner.rs +75 -36
  135. data/bridge/sdk-core/tests/wf_input_replay.rs +32 -0
  136. data/bridge/src/connection.rs +41 -25
  137. data/bridge/src/lib.rs +269 -14
  138. data/bridge/src/runtime.rs +1 -1
  139. data/bridge/src/test_server.rs +153 -0
  140. data/bridge/src/worker.rs +89 -16
  141. data/lib/gen/temporal/api/command/v1/message_pb.rb +4 -18
  142. data/lib/gen/temporal/api/common/v1/message_pb.rb +4 -0
  143. data/lib/gen/temporal/api/enums/v1/command_type_pb.rb +1 -3
  144. data/lib/gen/temporal/api/enums/v1/event_type_pb.rb +3 -3
  145. data/lib/gen/temporal/api/enums/v1/failed_cause_pb.rb +2 -0
  146. data/lib/gen/temporal/api/enums/v1/update_pb.rb +6 -4
  147. data/lib/gen/temporal/api/history/v1/message_pb.rb +27 -19
  148. data/lib/gen/temporal/api/namespace/v1/message_pb.rb +1 -0
  149. data/lib/gen/temporal/api/operatorservice/v1/request_response_pb.rb +3 -0
  150. data/lib/gen/temporal/api/protocol/v1/message_pb.rb +30 -0
  151. data/lib/gen/temporal/api/sdk/v1/task_complete_metadata_pb.rb +23 -0
  152. data/lib/gen/temporal/api/testservice/v1/request_response_pb.rb +49 -0
  153. data/lib/gen/temporal/api/testservice/v1/service_pb.rb +21 -0
  154. data/lib/gen/temporal/api/update/v1/message_pb.rb +72 -0
  155. data/lib/gen/temporal/api/workflowservice/v1/request_response_pb.rb +26 -16
  156. data/lib/gen/temporal/sdk/core/activity_result/activity_result_pb.rb +13 -9
  157. data/lib/gen/temporal/sdk/core/activity_task/activity_task_pb.rb +10 -6
  158. data/lib/gen/temporal/sdk/core/child_workflow/child_workflow_pb.rb +13 -9
  159. data/lib/gen/temporal/sdk/core/common/common_pb.rb +7 -3
  160. data/lib/gen/temporal/sdk/core/core_interface_pb.rb +9 -3
  161. data/lib/gen/temporal/sdk/core/external_data/external_data_pb.rb +7 -3
  162. data/lib/gen/temporal/sdk/core/workflow_activation/workflow_activation_pb.rb +27 -21
  163. data/lib/gen/temporal/sdk/core/workflow_commands/workflow_commands_pb.rb +28 -24
  164. data/lib/gen/temporal/sdk/core/workflow_completion/workflow_completion_pb.rb +12 -5
  165. data/lib/temporalio/activity/context.rb +13 -8
  166. data/lib/temporalio/activity/info.rb +1 -1
  167. data/lib/temporalio/bridge/connect_options.rb +15 -0
  168. data/lib/temporalio/bridge/retry_config.rb +24 -0
  169. data/lib/temporalio/bridge/tls_options.rb +19 -0
  170. data/lib/temporalio/client/implementation.rb +8 -8
  171. data/lib/temporalio/connection/retry_config.rb +44 -0
  172. data/lib/temporalio/connection/service.rb +20 -0
  173. data/lib/temporalio/connection/test_service.rb +92 -0
  174. data/lib/temporalio/connection/tls_options.rb +51 -0
  175. data/lib/temporalio/connection/workflow_service.rb +731 -0
  176. data/lib/temporalio/connection.rb +55 -720
  177. data/lib/temporalio/interceptor/activity_inbound.rb +22 -0
  178. data/lib/temporalio/interceptor/activity_outbound.rb +24 -0
  179. data/lib/temporalio/interceptor/chain.rb +5 -5
  180. data/lib/temporalio/interceptor/client.rb +8 -4
  181. data/lib/temporalio/interceptor.rb +22 -0
  182. data/lib/temporalio/retry_policy.rb +13 -3
  183. data/lib/temporalio/testing/time_skipping_handle.rb +32 -0
  184. data/lib/temporalio/testing/time_skipping_interceptor.rb +23 -0
  185. data/lib/temporalio/testing/workflow_environment.rb +112 -0
  186. data/lib/temporalio/testing.rb +175 -0
  187. data/lib/temporalio/version.rb +1 -1
  188. data/lib/temporalio/worker/activity_runner.rb +26 -4
  189. data/lib/temporalio/worker/activity_worker.rb +44 -18
  190. data/lib/temporalio/worker/sync_worker.rb +47 -11
  191. data/lib/temporalio/worker.rb +27 -21
  192. data/lib/temporalio/workflow/async.rb +46 -0
  193. data/lib/temporalio/workflow/future.rb +138 -0
  194. data/lib/temporalio/workflow/info.rb +76 -0
  195. data/temporalio.gemspec +4 -3
  196. metadata +67 -17
  197. data/bridge/sdk-core/Cargo.lock +0 -2606
  198. data/bridge/sdk-core/protos/api_upstream/temporal/api/interaction/v1/message.proto +0 -87
  199. data/lib/bridge.so +0 -0
  200. data/lib/gen/temporal/api/enums/v1/interaction_type_pb.rb +0 -25
  201. data/lib/gen/temporal/api/interaction/v1/message_pb.rb +0 -49
  202. data/lib/gen/temporal/sdk/core/bridge/bridge_pb.rb +0 -222
@@ -0,0 +1,44 @@
1
+ module Temporalio
2
+ class Connection
3
+ class RetryConfig
4
+ # Initial backoff interval.
5
+ # @default 100
6
+ attr_reader :initial_interval_millis
7
+
8
+ # Randomization jitter to add.
9
+ # @default 0.2
10
+ attr_reader :randomization_factor
11
+
12
+ # Backoff multiplier.
13
+ # @default 1.5
14
+ attr_reader :multiplier
15
+
16
+ # Maximum backoff interval.
17
+ # @default 5000
18
+ attr_reader :max_interval_millis
19
+
20
+ # Maximum total time (optional).
21
+ attr_reader :max_elapsed_time_millis
22
+
23
+ # Maximum number of retries.
24
+ # @default 10
25
+ attr_reader :max_retries
26
+
27
+ def initialize(
28
+ initial_interval_millis: nil,
29
+ randomization_factor: nil,
30
+ multiplier: nil,
31
+ max_interval_millis: nil,
32
+ max_elapsed_time_millis: nil,
33
+ max_retries: nil
34
+ )
35
+ @initial_interval_millis = initial_interval_millis || 100
36
+ @randomization_factor = randomization_factor || 0.2
37
+ @multiplier = multiplier || 1.5
38
+ @max_interval_millis = max_interval_millis || 5_000
39
+ @max_elapsed_time_millis = max_elapsed_time_millis
40
+ @max_retries = max_retries || 10
41
+ end
42
+ end
43
+ end
44
+ end
@@ -0,0 +1,20 @@
1
+ module Temporalio
2
+ class Connection
3
+ # @abstract A superclass for defining services to interact with the Temporal API
4
+ class Service
5
+ # @api private
6
+ def initialize(core_connection, service)
7
+ @core_connection = core_connection
8
+ @service = service
9
+ end
10
+
11
+ private
12
+
13
+ attr_reader :core_connection, :service
14
+
15
+ def call(rpc, bytes, metadata, timeout)
16
+ core_connection.call(rpc, service, bytes, metadata, timeout)
17
+ end
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,92 @@
1
+ require 'temporal/api/testservice/v1/request_response_pb'
2
+ require 'temporalio/connection/service'
3
+
4
+ module Temporalio
5
+ class Connection
6
+ # A class for making TestService RPCs
7
+ #
8
+ # This is normally accessed via {Temoralio::Connection#test_service}.
9
+ class TestService < Service
10
+ # @api private
11
+ def initialize(core_connection)
12
+ super(core_connection, :test_service)
13
+ end
14
+
15
+ # @param request [Temporalio::Api::TestService::V1::LockTimeSkippingRequest]
16
+ # @param metadata [Hash<String, String>] Headers used on the RPC call.
17
+ # Keys here override client-level RPC metadata keys.
18
+ # @param timeout [Integer] Optional RPC deadline to set for each RPC call.
19
+ #
20
+ # @return [Temporalio::Api::TestService::V1::LockTimeSkippingResponse]
21
+ def lock_time_skipping(request, metadata: {}, timeout: nil)
22
+ encoded = Temporalio::Api::TestService::V1::LockTimeSkippingRequest.encode(request)
23
+ response = call(:lock_time_skipping, encoded, metadata, timeout)
24
+
25
+ Temporalio::Api::TestService::V1::LockTimeSkippingResponse.decode(response)
26
+ end
27
+
28
+ # @param request [Temporalio::Api::TestService::V1::UnlockTimeSkippingRequest]
29
+ # @param metadata [Hash<String, String>] Headers used on the RPC call.
30
+ # Keys here override client-level RPC metadata keys.
31
+ # @param timeout [Integer] Optional RPC deadline to set for each RPC call.
32
+ #
33
+ # @return [Temporalio::Api::TestService::V1::UnlockTimeSkippingResponse]
34
+ def unlock_time_skipping(request, metadata: {}, timeout: nil)
35
+ encoded = Temporalio::Api::TestService::V1::UnlockTimeSkippingRequest.encode(request)
36
+ response = call(:unlock_time_skipping, encoded, metadata, timeout)
37
+
38
+ Temporalio::Api::TestService::V1::UnlockTimeSkippingResponse.decode(response)
39
+ end
40
+
41
+ # @param request [Temporalio::Api::TestService::V1::SleepRequest]
42
+ # @param metadata [Hash<String, String>] Headers used on the RPC call.
43
+ # Keys here override client-level RPC metadata keys.
44
+ # @param timeout [Integer] Optional RPC deadline to set for each RPC call.
45
+ #
46
+ # @return [Temporalio::Api::TestService::V1::SleepResponse]
47
+ def sleep(request, metadata: {}, timeout: nil)
48
+ encoded = Temporalio::Api::TestService::V1::SleepRequest.encode(request)
49
+ response = call(:sleep, encoded, metadata, timeout)
50
+
51
+ Temporalio::Api::TestService::V1::SleepResponse.decode(response)
52
+ end
53
+
54
+ # @param request [Temporalio::Api::TestService::V1::SleepUntilRequest]
55
+ # @param metadata [Hash<String, String>] Headers used on the RPC call.
56
+ # Keys here override client-level RPC metadata keys.
57
+ # @param timeout [Integer] Optional RPC deadline to set for each RPC call.
58
+ #
59
+ # @return [Temporalio::Api::TestService::V1::SleepResponse]
60
+ def sleep_until(request, metadata: {}, timeout: nil)
61
+ encoded = Temporalio::Api::TestService::V1::SleepUntilRequest.encode(request)
62
+ response = call(:sleep_until, encoded, metadata, timeout)
63
+
64
+ Temporalio::Api::TestService::V1::SleepResponse.decode(response)
65
+ end
66
+
67
+ # @param request [Temporalio::Api::TestService::V1::SleepRequest]
68
+ # @param metadata [Hash<String, String>] Headers used on the RPC call.
69
+ # Keys here override client-level RPC metadata keys.
70
+ # @param timeout [Integer] Optional RPC deadline to set for each RPC call.
71
+ #
72
+ # @return [Temporalio::Api::TestService::V1::SleepResponse]
73
+ def unlock_time_skipping_with_sleep(request, metadata: {}, timeout: nil)
74
+ encoded = Temporalio::Api::TestService::V1::SleepRequest.encode(request)
75
+ response = call(:unlock_time_skipping_with_sleep, encoded, metadata, timeout)
76
+
77
+ Temporalio::Api::TestService::V1::SleepResponse.decode(response)
78
+ end
79
+
80
+ # @param metadata [Hash<String, String>] Headers used on the RPC call.
81
+ # Keys here override client-level RPC metadata keys.
82
+ # @param timeout [Integer] Optional RPC deadline to set for each RPC call.
83
+ #
84
+ # @return [Temporalio::Api::TestService::V1::GetCurrentTimeResponse]
85
+ def get_current_time(metadata: {}, timeout: nil)
86
+ response = call(:get_current_time, '', metadata, timeout)
87
+
88
+ Temporalio::Api::TestService::V1::GetCurrentTimeResponse.decode(response)
89
+ end
90
+ end
91
+ end
92
+ end
@@ -0,0 +1,51 @@
1
+ module Temporalio
2
+ class Connection
3
+ class TlsOptions
4
+ # Root CA certificate used by the server. If not set, the server's certificate will be
5
+ # validated against the operating system's root certificates.
6
+ #
7
+ # Leave unset for Temporal Cloud.
8
+ attr_reader :server_root_ca_cert
9
+
10
+ # Client certificate used to authenticate with the server. If set, a corresponding
11
+ # `client_private_key` must be provided.
12
+ #
13
+ # @default do not use client side authentication.
14
+ attr_reader :client_cert
15
+
16
+ # Client private key used to authenticate with the server. Required if `client_cert` is set.
17
+ attr_reader :client_private_key
18
+
19
+ # Overrides the target name used for validation of the server SSL certificate. If not
20
+ # specified, the server certificate will be checked against the host part of the connection
21
+ # target address. This _should_ be used for testing only.
22
+ #
23
+ # Leave unset for Temporal Cloud.
24
+ #
25
+ # @default Validate the server certificate against the host part of the connection target address.
26
+ attr_reader :server_name_override
27
+
28
+ # @param [String?] server_root_ca_cert Root CA certificate used by the server.
29
+ # @param [String?] client_cert Client certificate used to authenticate with the server.
30
+ # @param [String?] client_private_key Client private key used to authenticate with the server.
31
+ # @param [String?] server_name_override Overrides the target name used for validation of the
32
+ # server SSL certificate.
33
+ # @raise [ArgumentError] if `client_cert` and `client_private_key` are not both set or both unset
34
+ def initialize(
35
+ server_root_ca_cert: nil,
36
+ client_cert: nil,
37
+ client_private_key: nil,
38
+ server_name_override: nil
39
+ )
40
+ if (client_cert && !client_private_key) || (!client_cert && client_private_key)
41
+ raise ArgumentError, 'client_cert and client_private_key must be either both set or both unset'
42
+ end
43
+
44
+ @server_root_ca_cert = server_root_ca_cert
45
+ @client_cert = client_cert
46
+ @client_private_key = client_private_key
47
+ @server_name_override = server_name_override
48
+ end
49
+ end
50
+ end
51
+ end