temporalio 0.0.1 → 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 (310) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +180 -7
  3. data/bridge/Cargo.lock +208 -76
  4. data/bridge/Cargo.toml +5 -2
  5. data/bridge/sdk-core/Cargo.toml +1 -1
  6. data/bridge/sdk-core/README.md +20 -10
  7. data/bridge/sdk-core/client/Cargo.toml +1 -1
  8. data/bridge/sdk-core/client/src/lib.rs +227 -59
  9. data/bridge/sdk-core/client/src/metrics.rs +17 -8
  10. data/bridge/sdk-core/client/src/raw.rs +13 -12
  11. data/bridge/sdk-core/client/src/retry.rs +132 -43
  12. data/bridge/sdk-core/core/Cargo.toml +28 -15
  13. data/bridge/sdk-core/core/benches/workflow_replay.rs +13 -10
  14. data/bridge/sdk-core/core/src/abstractions.rs +225 -36
  15. data/bridge/sdk-core/core/src/core_tests/activity_tasks.rs +217 -79
  16. data/bridge/sdk-core/core/src/core_tests/determinism.rs +165 -2
  17. data/bridge/sdk-core/core/src/core_tests/local_activities.rs +565 -34
  18. data/bridge/sdk-core/core/src/core_tests/queries.rs +247 -90
  19. data/bridge/sdk-core/core/src/core_tests/workers.rs +3 -5
  20. data/bridge/sdk-core/core/src/core_tests/workflow_cancels.rs +1 -1
  21. data/bridge/sdk-core/core/src/core_tests/workflow_tasks.rs +430 -67
  22. data/bridge/sdk-core/core/src/ephemeral_server/mod.rs +106 -12
  23. data/bridge/sdk-core/core/src/internal_flags.rs +136 -0
  24. data/bridge/sdk-core/core/src/lib.rs +148 -34
  25. data/bridge/sdk-core/core/src/protosext/mod.rs +1 -1
  26. data/bridge/sdk-core/core/src/replay/mod.rs +185 -41
  27. data/bridge/sdk-core/core/src/telemetry/log_export.rs +190 -0
  28. data/bridge/sdk-core/core/src/telemetry/metrics.rs +219 -140
  29. data/bridge/sdk-core/core/src/telemetry/mod.rs +326 -315
  30. data/bridge/sdk-core/core/src/telemetry/prometheus_server.rs +20 -14
  31. data/bridge/sdk-core/core/src/test_help/mod.rs +85 -21
  32. data/bridge/sdk-core/core/src/worker/activities/activity_heartbeat_manager.rs +112 -156
  33. data/bridge/sdk-core/core/src/worker/activities/activity_task_poller_stream.rs +89 -0
  34. data/bridge/sdk-core/core/src/worker/activities/local_activities.rs +364 -128
  35. data/bridge/sdk-core/core/src/worker/activities.rs +263 -170
  36. data/bridge/sdk-core/core/src/worker/client/mocks.rs +23 -3
  37. data/bridge/sdk-core/core/src/worker/client.rs +48 -6
  38. data/bridge/sdk-core/core/src/worker/mod.rs +186 -75
  39. data/bridge/sdk-core/core/src/worker/workflow/bridge.rs +1 -3
  40. data/bridge/sdk-core/core/src/worker/workflow/driven_workflow.rs +13 -24
  41. data/bridge/sdk-core/core/src/worker/workflow/history_update.rs +879 -226
  42. data/bridge/sdk-core/core/src/worker/workflow/machines/activity_state_machine.rs +101 -48
  43. data/bridge/sdk-core/core/src/worker/workflow/machines/cancel_external_state_machine.rs +8 -12
  44. data/bridge/sdk-core/core/src/worker/workflow/machines/cancel_workflow_state_machine.rs +6 -9
  45. data/bridge/sdk-core/core/src/worker/workflow/machines/child_workflow_state_machine.rs +90 -32
  46. data/bridge/sdk-core/core/src/worker/workflow/machines/complete_workflow_state_machine.rs +6 -9
  47. data/bridge/sdk-core/core/src/worker/workflow/machines/continue_as_new_workflow_state_machine.rs +7 -10
  48. data/bridge/sdk-core/core/src/worker/workflow/machines/fail_workflow_state_machine.rs +6 -9
  49. data/bridge/sdk-core/core/src/worker/workflow/machines/local_activity_state_machine.rs +160 -83
  50. data/bridge/sdk-core/core/src/worker/workflow/machines/mod.rs +36 -54
  51. data/bridge/sdk-core/core/src/worker/workflow/machines/modify_workflow_properties_state_machine.rs +179 -0
  52. data/bridge/sdk-core/core/src/worker/workflow/machines/patch_state_machine.rs +104 -157
  53. data/bridge/sdk-core/core/src/worker/workflow/machines/signal_external_state_machine.rs +8 -12
  54. data/bridge/sdk-core/core/src/worker/workflow/machines/timer_state_machine.rs +9 -13
  55. data/bridge/sdk-core/core/src/worker/workflow/machines/transition_coverage.rs +10 -4
  56. data/bridge/sdk-core/core/src/worker/workflow/machines/upsert_search_attributes_state_machine.rs +14 -11
  57. data/bridge/sdk-core/core/src/worker/workflow/machines/workflow_machines/local_acts.rs +6 -17
  58. data/bridge/sdk-core/core/src/worker/workflow/machines/workflow_machines.rs +395 -299
  59. data/bridge/sdk-core/core/src/worker/workflow/machines/workflow_task_state_machine.rs +12 -20
  60. data/bridge/sdk-core/core/src/worker/workflow/managed_run/managed_wf_test.rs +33 -18
  61. data/bridge/sdk-core/core/src/worker/workflow/managed_run.rs +1032 -374
  62. data/bridge/sdk-core/core/src/worker/workflow/mod.rs +525 -392
  63. data/bridge/sdk-core/core/src/worker/workflow/run_cache.rs +40 -57
  64. data/bridge/sdk-core/core/src/worker/workflow/wft_extraction.rs +125 -0
  65. data/bridge/sdk-core/core/src/worker/workflow/wft_poller.rs +3 -6
  66. data/bridge/sdk-core/core/src/worker/workflow/workflow_stream/saved_wf_inputs.rs +117 -0
  67. data/bridge/sdk-core/core/src/worker/workflow/workflow_stream/tonic_status_serde.rs +24 -0
  68. data/bridge/sdk-core/core/src/worker/workflow/workflow_stream.rs +456 -681
  69. data/bridge/sdk-core/core-api/Cargo.toml +6 -4
  70. data/bridge/sdk-core/core-api/src/errors.rs +1 -34
  71. data/bridge/sdk-core/core-api/src/lib.rs +7 -45
  72. data/bridge/sdk-core/core-api/src/telemetry.rs +141 -0
  73. data/bridge/sdk-core/core-api/src/worker.rs +27 -1
  74. data/bridge/sdk-core/etc/deps.svg +115 -140
  75. data/bridge/sdk-core/etc/regen-depgraph.sh +5 -0
  76. data/bridge/sdk-core/fsm/rustfsm_procmacro/src/lib.rs +18 -15
  77. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/no_handle_conversions_require_into_fail.stderr +1 -1
  78. data/bridge/sdk-core/fsm/rustfsm_trait/src/lib.rs +8 -3
  79. data/bridge/sdk-core/histories/evict_while_la_running_no_interference-16_history.bin +0 -0
  80. data/bridge/sdk-core/histories/evict_while_la_running_no_interference-23_history.bin +0 -0
  81. data/bridge/sdk-core/histories/evict_while_la_running_no_interference-85_history.bin +0 -0
  82. data/bridge/sdk-core/protos/api_upstream/buf.yaml +0 -3
  83. data/bridge/sdk-core/protos/api_upstream/build/go.mod +7 -0
  84. data/bridge/sdk-core/protos/api_upstream/build/go.sum +5 -0
  85. data/bridge/sdk-core/protos/api_upstream/{temporal/api/enums/v1/cluster.proto → build/tools.go} +7 -18
  86. data/bridge/sdk-core/protos/api_upstream/go.mod +6 -0
  87. data/bridge/sdk-core/protos/api_upstream/temporal/api/batch/v1/message.proto +12 -9
  88. data/bridge/sdk-core/protos/api_upstream/temporal/api/command/v1/message.proto +15 -26
  89. data/bridge/sdk-core/protos/api_upstream/temporal/api/common/v1/message.proto +13 -2
  90. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/batch_operation.proto +3 -2
  91. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/command_type.proto +4 -9
  92. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/common.proto +3 -2
  93. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/event_type.proto +10 -8
  94. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/failed_cause.proto +28 -2
  95. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/namespace.proto +2 -2
  96. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/query.proto +2 -2
  97. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/reset.proto +2 -2
  98. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/schedule.proto +2 -2
  99. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/task_queue.proto +2 -2
  100. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/update.proto +24 -19
  101. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/workflow.proto +2 -2
  102. data/bridge/sdk-core/protos/api_upstream/temporal/api/errordetails/v1/message.proto +2 -2
  103. data/bridge/sdk-core/protos/api_upstream/temporal/api/failure/v1/message.proto +2 -2
  104. data/bridge/sdk-core/protos/api_upstream/temporal/api/filter/v1/message.proto +2 -2
  105. data/bridge/sdk-core/protos/api_upstream/temporal/api/history/v1/message.proto +62 -26
  106. data/bridge/sdk-core/protos/api_upstream/temporal/api/namespace/v1/message.proto +4 -2
  107. data/bridge/sdk-core/protos/api_upstream/temporal/api/operatorservice/v1/request_response.proto +24 -61
  108. data/bridge/sdk-core/protos/api_upstream/temporal/api/operatorservice/v1/service.proto +2 -21
  109. data/bridge/sdk-core/protos/api_upstream/temporal/api/protocol/v1/message.proto +57 -0
  110. data/bridge/sdk-core/protos/api_upstream/temporal/api/query/v1/message.proto +2 -2
  111. data/bridge/sdk-core/protos/api_upstream/temporal/api/replication/v1/message.proto +2 -2
  112. data/bridge/sdk-core/protos/api_upstream/temporal/api/schedule/v1/message.proto +110 -31
  113. data/bridge/sdk-core/protos/api_upstream/temporal/api/sdk/v1/task_complete_metadata.proto +63 -0
  114. data/bridge/sdk-core/protos/api_upstream/temporal/api/taskqueue/v1/message.proto +4 -4
  115. data/bridge/sdk-core/protos/api_upstream/temporal/api/update/v1/message.proto +71 -6
  116. data/bridge/sdk-core/protos/api_upstream/temporal/api/version/v1/message.proto +2 -2
  117. data/bridge/sdk-core/protos/api_upstream/temporal/api/workflow/v1/message.proto +3 -2
  118. data/bridge/sdk-core/protos/api_upstream/temporal/api/workflowservice/v1/request_response.proto +111 -36
  119. data/bridge/sdk-core/protos/api_upstream/temporal/api/workflowservice/v1/service.proto +19 -5
  120. data/bridge/sdk-core/protos/local/temporal/sdk/core/activity_result/activity_result.proto +1 -0
  121. data/bridge/sdk-core/protos/local/temporal/sdk/core/activity_task/activity_task.proto +1 -0
  122. data/bridge/sdk-core/protos/local/temporal/sdk/core/child_workflow/child_workflow.proto +1 -0
  123. data/bridge/sdk-core/protos/local/temporal/sdk/core/common/common.proto +1 -0
  124. data/bridge/sdk-core/protos/local/temporal/sdk/core/core_interface.proto +1 -0
  125. data/bridge/sdk-core/protos/local/temporal/sdk/core/external_data/external_data.proto +1 -0
  126. data/bridge/sdk-core/protos/local/temporal/sdk/core/workflow_activation/workflow_activation.proto +9 -0
  127. data/bridge/sdk-core/protos/local/temporal/sdk/core/workflow_commands/workflow_commands.proto +9 -1
  128. data/bridge/sdk-core/protos/local/temporal/sdk/core/workflow_completion/workflow_completion.proto +6 -0
  129. data/bridge/sdk-core/protos/testsrv_upstream/temporal/api/testservice/v1/request_response.proto +2 -2
  130. data/bridge/sdk-core/protos/testsrv_upstream/temporal/api/testservice/v1/service.proto +2 -2
  131. data/bridge/sdk-core/sdk/Cargo.toml +4 -3
  132. data/bridge/sdk-core/sdk/src/interceptors.rs +36 -3
  133. data/bridge/sdk-core/sdk/src/lib.rs +94 -25
  134. data/bridge/sdk-core/sdk/src/workflow_context.rs +13 -2
  135. data/bridge/sdk-core/sdk/src/workflow_future.rs +10 -13
  136. data/bridge/sdk-core/sdk-core-protos/Cargo.toml +5 -2
  137. data/bridge/sdk-core/sdk-core-protos/build.rs +36 -2
  138. data/bridge/sdk-core/sdk-core-protos/src/history_builder.rs +164 -104
  139. data/bridge/sdk-core/sdk-core-protos/src/history_info.rs +27 -23
  140. data/bridge/sdk-core/sdk-core-protos/src/lib.rs +252 -74
  141. data/bridge/sdk-core/sdk-core-protos/src/task_token.rs +12 -2
  142. data/bridge/sdk-core/test-utils/Cargo.toml +4 -1
  143. data/bridge/sdk-core/test-utils/src/canned_histories.rs +106 -296
  144. data/bridge/sdk-core/test-utils/src/histfetch.rs +1 -1
  145. data/bridge/sdk-core/test-utils/src/lib.rs +161 -50
  146. data/bridge/sdk-core/test-utils/src/wf_input_saver.rs +50 -0
  147. data/bridge/sdk-core/test-utils/src/workflows.rs +29 -0
  148. data/bridge/sdk-core/tests/fuzzy_workflow.rs +130 -0
  149. data/bridge/sdk-core/tests/{load_tests.rs → heavy_tests.rs} +125 -51
  150. data/bridge/sdk-core/tests/integ_tests/ephemeral_server_tests.rs +25 -3
  151. data/bridge/sdk-core/tests/integ_tests/heartbeat_tests.rs +10 -5
  152. data/bridge/sdk-core/tests/integ_tests/metrics_tests.rs +239 -0
  153. data/bridge/sdk-core/tests/integ_tests/polling_tests.rs +4 -60
  154. data/bridge/sdk-core/tests/integ_tests/queries_tests.rs +5 -128
  155. data/bridge/sdk-core/tests/integ_tests/visibility_tests.rs +83 -25
  156. data/bridge/sdk-core/tests/integ_tests/workflow_tests/activities.rs +93 -69
  157. data/bridge/sdk-core/tests/integ_tests/workflow_tests/cancel_external.rs +1 -0
  158. data/bridge/sdk-core/tests/integ_tests/workflow_tests/cancel_wf.rs +6 -13
  159. data/bridge/sdk-core/tests/integ_tests/workflow_tests/child_workflows.rs +1 -0
  160. data/bridge/sdk-core/tests/integ_tests/workflow_tests/continue_as_new.rs +6 -2
  161. data/bridge/sdk-core/tests/integ_tests/workflow_tests/determinism.rs +3 -10
  162. data/bridge/sdk-core/tests/integ_tests/workflow_tests/local_activities.rs +151 -116
  163. data/bridge/sdk-core/tests/integ_tests/workflow_tests/modify_wf_properties.rs +54 -0
  164. data/bridge/sdk-core/tests/integ_tests/workflow_tests/patches.rs +7 -28
  165. data/bridge/sdk-core/tests/integ_tests/workflow_tests/replay.rs +115 -24
  166. data/bridge/sdk-core/tests/integ_tests/workflow_tests/resets.rs +1 -0
  167. data/bridge/sdk-core/tests/integ_tests/workflow_tests/signals.rs +18 -14
  168. data/bridge/sdk-core/tests/integ_tests/workflow_tests/stickyness.rs +6 -20
  169. data/bridge/sdk-core/tests/integ_tests/workflow_tests/timers.rs +10 -21
  170. data/bridge/sdk-core/tests/integ_tests/workflow_tests/upsert_search_attrs.rs +6 -4
  171. data/bridge/sdk-core/tests/integ_tests/workflow_tests.rs +27 -18
  172. data/bridge/sdk-core/tests/main.rs +8 -16
  173. data/bridge/sdk-core/tests/runner.rs +75 -36
  174. data/bridge/sdk-core/tests/wf_input_replay.rs +32 -0
  175. data/bridge/src/connection.rs +117 -82
  176. data/bridge/src/lib.rs +356 -42
  177. data/bridge/src/runtime.rs +10 -3
  178. data/bridge/src/test_server.rs +153 -0
  179. data/bridge/src/worker.rs +133 -9
  180. data/lib/gen/temporal/api/batch/v1/message_pb.rb +8 -6
  181. data/lib/gen/temporal/api/command/v1/message_pb.rb +10 -16
  182. data/lib/gen/temporal/api/common/v1/message_pb.rb +5 -1
  183. data/lib/gen/temporal/api/enums/v1/batch_operation_pb.rb +2 -1
  184. data/lib/gen/temporal/api/enums/v1/command_type_pb.rb +3 -3
  185. data/lib/gen/temporal/api/enums/v1/common_pb.rb +2 -1
  186. data/lib/gen/temporal/api/enums/v1/event_type_pb.rb +5 -4
  187. data/lib/gen/temporal/api/enums/v1/failed_cause_pb.rb +9 -1
  188. data/lib/gen/temporal/api/enums/v1/namespace_pb.rb +1 -1
  189. data/lib/gen/temporal/api/enums/v1/query_pb.rb +1 -1
  190. data/lib/gen/temporal/api/enums/v1/reset_pb.rb +1 -1
  191. data/lib/gen/temporal/api/enums/v1/schedule_pb.rb +1 -1
  192. data/lib/gen/temporal/api/enums/v1/task_queue_pb.rb +1 -1
  193. data/lib/gen/temporal/api/enums/v1/update_pb.rb +7 -10
  194. data/lib/gen/temporal/api/enums/v1/workflow_pb.rb +1 -1
  195. data/lib/gen/temporal/api/errordetails/v1/message_pb.rb +1 -1
  196. data/lib/gen/temporal/api/failure/v1/message_pb.rb +1 -1
  197. data/lib/gen/temporal/api/filter/v1/message_pb.rb +1 -1
  198. data/lib/gen/temporal/api/history/v1/message_pb.rb +34 -25
  199. data/lib/gen/temporal/api/namespace/v1/message_pb.rb +2 -1
  200. data/lib/gen/temporal/api/operatorservice/v1/request_response_pb.rb +14 -51
  201. data/lib/gen/temporal/api/operatorservice/v1/service_pb.rb +1 -1
  202. data/lib/gen/temporal/api/protocol/v1/message_pb.rb +30 -0
  203. data/lib/gen/temporal/api/query/v1/message_pb.rb +1 -1
  204. data/lib/gen/temporal/api/replication/v1/message_pb.rb +1 -1
  205. data/lib/gen/temporal/api/schedule/v1/message_pb.rb +22 -1
  206. data/lib/gen/temporal/api/sdk/v1/task_complete_metadata_pb.rb +23 -0
  207. data/lib/gen/temporal/api/taskqueue/v1/message_pb.rb +2 -2
  208. data/lib/gen/temporal/api/testservice/v1/request_response_pb.rb +49 -0
  209. data/lib/gen/temporal/api/testservice/v1/service_pb.rb +21 -0
  210. data/lib/gen/temporal/api/update/v1/message_pb.rb +49 -3
  211. data/lib/gen/temporal/api/version/v1/message_pb.rb +1 -1
  212. data/lib/gen/temporal/api/workflow/v1/message_pb.rb +2 -1
  213. data/lib/gen/temporal/api/workflowservice/v1/request_response_pb.rb +47 -20
  214. data/lib/gen/temporal/api/workflowservice/v1/service_pb.rb +1 -1
  215. data/lib/gen/temporal/sdk/core/activity_result/activity_result_pb.rb +13 -9
  216. data/lib/gen/temporal/sdk/core/activity_task/activity_task_pb.rb +10 -6
  217. data/lib/gen/temporal/sdk/core/child_workflow/child_workflow_pb.rb +13 -9
  218. data/lib/gen/temporal/sdk/core/common/common_pb.rb +7 -3
  219. data/lib/gen/temporal/sdk/core/core_interface_pb.rb +9 -3
  220. data/lib/gen/temporal/sdk/core/external_data/external_data_pb.rb +7 -3
  221. data/lib/gen/temporal/sdk/core/workflow_activation/workflow_activation_pb.rb +28 -21
  222. data/lib/gen/temporal/sdk/core/workflow_commands/workflow_commands_pb.rb +32 -24
  223. data/lib/gen/temporal/sdk/core/workflow_completion/workflow_completion_pb.rb +12 -5
  224. data/lib/temporalio/activity/context.rb +102 -0
  225. data/lib/temporalio/activity/info.rb +67 -0
  226. data/lib/temporalio/activity.rb +85 -0
  227. data/lib/temporalio/bridge/connect_options.rb +15 -0
  228. data/lib/temporalio/bridge/error.rb +8 -0
  229. data/lib/temporalio/bridge/retry_config.rb +24 -0
  230. data/lib/temporalio/bridge/tls_options.rb +19 -0
  231. data/lib/temporalio/bridge.rb +14 -0
  232. data/lib/{temporal → temporalio}/client/implementation.rb +57 -56
  233. data/lib/{temporal → temporalio}/client/workflow_handle.rb +35 -35
  234. data/lib/{temporal → temporalio}/client.rb +19 -32
  235. data/lib/temporalio/connection/retry_config.rb +44 -0
  236. data/lib/temporalio/connection/service.rb +20 -0
  237. data/lib/temporalio/connection/test_service.rb +92 -0
  238. data/lib/temporalio/connection/tls_options.rb +51 -0
  239. data/lib/temporalio/connection/workflow_service.rb +731 -0
  240. data/lib/temporalio/connection.rb +86 -0
  241. data/lib/{temporal → temporalio}/data_converter.rb +76 -35
  242. data/lib/{temporal → temporalio}/error/failure.rb +6 -6
  243. data/lib/{temporal → temporalio}/error/workflow_failure.rb +4 -2
  244. data/lib/{temporal → temporalio}/errors.rb +19 -1
  245. data/lib/{temporal → temporalio}/failure_converter/base.rb +5 -5
  246. data/lib/{temporal → temporalio}/failure_converter/basic.rb +58 -52
  247. data/lib/temporalio/failure_converter.rb +7 -0
  248. data/lib/temporalio/interceptor/activity_inbound.rb +22 -0
  249. data/lib/temporalio/interceptor/activity_outbound.rb +24 -0
  250. data/lib/{temporal → temporalio}/interceptor/chain.rb +7 -6
  251. data/lib/{temporal → temporalio}/interceptor/client.rb +27 -2
  252. data/lib/temporalio/interceptor.rb +22 -0
  253. data/lib/{temporal → temporalio}/payload_codec/base.rb +5 -5
  254. data/lib/{temporal → temporalio}/payload_converter/base.rb +3 -3
  255. data/lib/{temporal → temporalio}/payload_converter/bytes.rb +4 -3
  256. data/lib/{temporal → temporalio}/payload_converter/composite.rb +7 -5
  257. data/lib/{temporal → temporalio}/payload_converter/encoding_base.rb +4 -4
  258. data/lib/{temporal → temporalio}/payload_converter/json.rb +4 -3
  259. data/lib/{temporal → temporalio}/payload_converter/nil.rb +4 -3
  260. data/lib/temporalio/payload_converter.rb +14 -0
  261. data/lib/{temporal → temporalio}/retry_policy.rb +17 -7
  262. data/lib/{temporal → temporalio}/retry_state.rb +1 -1
  263. data/lib/temporalio/runtime.rb +25 -0
  264. data/lib/temporalio/testing/time_skipping_handle.rb +32 -0
  265. data/lib/temporalio/testing/time_skipping_interceptor.rb +23 -0
  266. data/lib/temporalio/testing/workflow_environment.rb +112 -0
  267. data/lib/temporalio/testing.rb +175 -0
  268. data/lib/{temporal → temporalio}/timeout_type.rb +2 -2
  269. data/lib/temporalio/version.rb +3 -0
  270. data/lib/temporalio/worker/activity_runner.rb +114 -0
  271. data/lib/temporalio/worker/activity_worker.rb +164 -0
  272. data/lib/temporalio/worker/reactor.rb +46 -0
  273. data/lib/temporalio/worker/runner.rb +63 -0
  274. data/lib/temporalio/worker/sync_worker.rb +124 -0
  275. data/lib/temporalio/worker/thread_pool_executor.rb +51 -0
  276. data/lib/temporalio/worker.rb +204 -0
  277. data/lib/temporalio/workflow/async.rb +46 -0
  278. data/lib/{temporal → temporalio}/workflow/execution_info.rb +4 -4
  279. data/lib/{temporal → temporalio}/workflow/execution_status.rb +1 -1
  280. data/lib/temporalio/workflow/future.rb +138 -0
  281. data/lib/{temporal → temporalio}/workflow/id_reuse_policy.rb +6 -6
  282. data/lib/temporalio/workflow/info.rb +76 -0
  283. data/lib/{temporal → temporalio}/workflow/query_reject_condition.rb +5 -5
  284. data/lib/temporalio.rb +12 -3
  285. data/temporalio.gemspec +11 -6
  286. metadata +137 -64
  287. data/bridge/sdk-core/Cargo.lock +0 -2606
  288. data/bridge/sdk-core/bridge-ffi/Cargo.toml +0 -24
  289. data/bridge/sdk-core/bridge-ffi/LICENSE.txt +0 -23
  290. data/bridge/sdk-core/bridge-ffi/build.rs +0 -25
  291. data/bridge/sdk-core/bridge-ffi/include/sdk-core-bridge.h +0 -249
  292. data/bridge/sdk-core/bridge-ffi/src/lib.rs +0 -825
  293. data/bridge/sdk-core/bridge-ffi/src/wrappers.rs +0 -211
  294. data/bridge/sdk-core/core/src/log_export.rs +0 -62
  295. data/bridge/sdk-core/core/src/worker/workflow/machines/mutable_side_effect_state_machine.rs +0 -127
  296. data/bridge/sdk-core/core/src/worker/workflow/machines/side_effect_state_machine.rs +0 -71
  297. data/bridge/sdk-core/protos/api_upstream/temporal/api/cluster/v1/message.proto +0 -83
  298. data/bridge/sdk-core/protos/local/temporal/sdk/core/bridge/bridge.proto +0 -210
  299. data/bridge/sdk-core/sdk/src/conversions.rs +0 -8
  300. data/lib/bridge.so +0 -0
  301. data/lib/gen/temporal/api/cluster/v1/message_pb.rb +0 -67
  302. data/lib/gen/temporal/api/enums/v1/cluster_pb.rb +0 -26
  303. data/lib/gen/temporal/sdk/core/bridge/bridge_pb.rb +0 -222
  304. data/lib/temporal/bridge.rb +0 -14
  305. data/lib/temporal/connection.rb +0 -736
  306. data/lib/temporal/failure_converter.rb +0 -8
  307. data/lib/temporal/payload_converter.rb +0 -14
  308. data/lib/temporal/runtime.rb +0 -22
  309. data/lib/temporal/version.rb +0 -3
  310. data/lib/temporal.rb +0 -8
@@ -1,12 +1,12 @@
1
- require 'temporal/interceptor/client'
2
- require 'temporal/workflow/query_reject_condition'
1
+ require 'temporalio/interceptor/client'
2
+ require 'temporalio/workflow/query_reject_condition'
3
3
 
4
- module Temporal
4
+ module Temporalio
5
5
  class Client
6
6
  # Handle for interacting with a workflow.
7
7
  #
8
- # This is usually created via {Temporal::Client#workflow_handle} or returned
9
- # from {Temporal::Client#start_workflow}.
8
+ # This is usually created via {Temporalio::Client#workflow_handle} or returned
9
+ # from {Temporalio::Client#start_workflow}.
10
10
  class WorkflowHandle
11
11
  # @return [String] ID for the workflow.
12
12
  attr_reader :id
@@ -14,10 +14,10 @@ module Temporal
14
14
  # Run ID used for {#signal} and {#query} calls if present to ensure the query or signal happen
15
15
  # on this exact run.
16
16
  #
17
- # This is only set on handles created via {Temporal::Client#workflow_handle} with a `run_id`
18
- # parameter. {Temporal::Client#start_workflow} does not set this value.
17
+ # This is only set on handles created via {Temporalio::Client#workflow_handle} with a `run_id`
18
+ # parameter. {Temporalio::Client#start_workflow} does not set this value.
19
19
  #
20
- # This cannot be mutated. If a different run ID is needed, {Temporal::Client#workflow_handle}
20
+ # This cannot be mutated. If a different run ID is needed, {Temporalio::Client#workflow_handle}
21
21
  # must be used instead.
22
22
  #
23
23
  # @return [String]
@@ -26,11 +26,11 @@ module Temporal
26
26
  # Run ID used for {#result} calls if present to ensure result is for a workflow starting from
27
27
  # this run.
28
28
  #
29
- # When this handle is created via {Temporal::Client#workflow_handle}, this is the same as
30
- # `:run_id`. When this handle is created via {Temporal::Client#start_workflow}, this value
29
+ # When this handle is created via {Temporalio::Client#workflow_handle}, this is the same as
30
+ # `:run_id`. When this handle is created via {Temporalio::Client#start_workflow}, this value
31
31
  # will be the resulting run ID.
32
32
  #
33
- # This cannot be mutated. If a different run ID is needed, {Temporal::Client#workflow_handle}
33
+ # This cannot be mutated. If a different run ID is needed, {Temporalio::Client#workflow_handle}
34
34
  # must be used instead.
35
35
  #
36
36
  # @return [String]
@@ -39,12 +39,12 @@ module Temporal
39
39
  # Run ID used for {#cancel} and {#terminate} calls if present to ensure the cancel and
40
40
  # terminate happen for a workflow ID started with this run ID.
41
41
  #
42
- # This can be set when using {Temporal::Client#workflow_handle}. When
43
- # {Temporal::Client#start_workflow} is called without a start signal, this is set to the
42
+ # This can be set when using {Temporalio::Client#workflow_handle}. When
43
+ # {Temporalio::Client#start_workflow} is called without a start signal, this is set to the
44
44
  # resulting run.
45
45
  #
46
46
  # This cannot be mutated. If a different first execution run ID is needed,
47
- # {Temporal::Client#workflow_handle} must be used instead.
47
+ # {Temporalio::Client#workflow_handle} must be used instead.
48
48
  #
49
49
  # @return [String]
50
50
  attr_reader :first_execution_run_id
@@ -60,7 +60,7 @@ module Temporal
60
60
  # Wait for result of the workflow.
61
61
  #
62
62
  # This will use {#result_run_id} if present to base the result on. To use another run ID,
63
- # a new handle must be created via {Temporal::Client#workflow_handle}.
63
+ # a new handle must be created via {Temporalio::Client#workflow_handle}.
64
64
  #
65
65
  # @param follow_runs [Bool] If true (default), workflow runs will be continually fetched,
66
66
  # until the most recent one is found. If false, the first result is used.
@@ -71,8 +71,8 @@ module Temporal
71
71
  #
72
72
  # @return [any] Result of the workflow after being converted by the data converter.
73
73
  #
74
- # @raise [Temporal::Error::WorkflowFailure] Workflow failed, was cancelled, was terminated, or
75
- # timed out. Use the {Temporal::Error::WorkflowFailure#cause} to see the underlying reason.
74
+ # @raise [Temporalio::Error::WorkflowFailure] Workflow failed, was cancelled, was terminated, or
75
+ # timed out. Use the {Temporalio::Error::WorkflowFailure#cause} to see the underlying reason.
76
76
  # @raise [StandardError] Other possible failures during result fetching.
77
77
  def result(follow_runs: true, rpc_metadata: {}, rpc_timeout: nil)
78
78
  client_impl.await_workflow_result(id, result_run_id, follow_runs, rpc_metadata, rpc_timeout)
@@ -81,9 +81,9 @@ module Temporal
81
81
  # Get workflow details.
82
82
  #
83
83
  # This will get details for {#run_id} if present. To use a different run ID, create a new
84
- # handle with via {Temporal::Client#workflow_handle}.
84
+ # handle with via {Temporalio::Client#workflow_handle}.
85
85
  #
86
- # @note Handles created as a result of {Temporal::Client#start_workflow} will describe the
86
+ # @note Handles created as a result of {Temporalio::Client#start_workflow} will describe the
87
87
  # latest workflow with the same workflow ID even if it is unrelated to the started workflow.
88
88
  #
89
89
  # @param rpc_metadata [Hash<String, String>] Headers used on the RPC call.
@@ -91,9 +91,9 @@ module Temporal
91
91
  # @param rpc_timeout [Integer] Optional RPC deadline to set for each RPC call. Note, this is
92
92
  # the timeout for each history RPC call not this overall function.
93
93
  #
94
- # @return [Temporal::Workflow::ExecutionInfo] Workflow details.
94
+ # @return [Temporalio::Workflow::ExecutionInfo] Workflow details.
95
95
  #
96
- # @raise [Temporal::Error::RPCError] Workflow details could not be fetched.
96
+ # @raise [Temporalio::Error::RPCError] Workflow details could not be fetched.
97
97
  def describe(rpc_metadata: {}, rpc_timeout: nil)
98
98
  input = Interceptor::Client::DescribeWorkflowInput.new(
99
99
  id: id,
@@ -109,9 +109,9 @@ module Temporal
109
109
  #
110
110
  # This will issue a cancellation for {#run_id} if present. This call will make sure to use the
111
111
  # run chain starting from {#first_execution_run_id} if present. To create handles with these
112
- # values, use {Temporal::Client#workflow_handle}.
112
+ # values, use {Temporalio::Client#workflow_handle}.
113
113
  #
114
- # @note Handles created as a result of {Temporal::Client#start_workflow} with a start signal
114
+ # @note Handles created as a result of {Temporalio::Client#start_workflow} with a start signal
115
115
  # will cancel the latest workflow with the same workflow ID even if it is unrelated to the
116
116
  # started workflow.
117
117
  #
@@ -120,7 +120,7 @@ module Temporal
120
120
  # Keys here override client-level RPC metadata keys.
121
121
  # @param rpc_timeout [Integer] Optional RPC deadline to set for each RPC call.
122
122
  #
123
- # @raise [Temporal::Error::RPCError] Workflow could not be cancelled.
123
+ # @raise [Temporalio::Error::RPCError] Workflow could not be cancelled.
124
124
  def cancel(reason = nil, rpc_metadata: {}, rpc_timeout: nil)
125
125
  input = Interceptor::Client::CancelWorkflowInput.new(
126
126
  id: id,
@@ -137,23 +137,23 @@ module Temporal
137
137
  # Query the workflow.
138
138
  #
139
139
  # This will query for {#run_id} if present. To use a different run ID, create a new handle
140
- # with via {Temporal::Client#workflow_handle}.
140
+ # with via {Temporalio::Client#workflow_handle}.
141
141
  #
142
- # @note Handles created as a result of {Temporal::Client#start_workflow} will query the latest
142
+ # @note Handles created as a result of {Temporalio::Client#start_workflow} will query the latest
143
143
  # workflow with the same workflow ID even if it is unrelated to the started workflow.
144
144
  #
145
145
  # @param query [String, Symbol] Query function or name on the workflow.
146
146
  # @param args [any] Arguments to the query.
147
147
  # @param reject_condition [Symbol] Condition for rejecting the query. Refer to
148
- # {Temporal::Workflow::QueryRejectCondition} for the list of allowed values.
148
+ # {Temporalio::Workflow::QueryRejectCondition} for the list of allowed values.
149
149
  # @param rpc_metadata [Hash<String, String>] Headers used on the RPC call.
150
150
  # Keys here override client-level RPC metadata keys.
151
151
  # @param rpc_timeout [Integer] Optional RPC deadline to set for each RPC call.
152
152
  #
153
153
  # @return [any] Result of the query.
154
154
  #
155
- # @raise [Temporal::Error] A query reject condition was satisfied.
156
- # @raise [Temporal::Error::RPCError] Workflow details could not be fetched.
155
+ # @raise [Temporalio::Error] A query reject condition was satisfied.
156
+ # @raise [Temporalio::Error::RPCError] Workflow details could not be fetched.
157
157
  def query(
158
158
  query,
159
159
  *args,
@@ -178,9 +178,9 @@ module Temporal
178
178
  # Send a signal to the workflow.
179
179
  #
180
180
  # This will signal for {#run_id} if present. To use a different run ID, create a new handle
181
- # with via {Temporal::Client#workflow_handle}.
181
+ # with via {Temporalio::Client#workflow_handle}.
182
182
  #
183
- # @note Handles created as a result of {Temporal::Client#start_workflow} will signal the
183
+ # @note Handles created as a result of {Temporalio::Client#start_workflow} will signal the
184
184
  # latest workflow with the same workflow ID even if it is unrelated to the started workflow.
185
185
  #
186
186
  # @param signal [String, Symbol] Signal function or name on the workflow.
@@ -189,7 +189,7 @@ module Temporal
189
189
  # Keys here override client-level RPC metadata keys.
190
190
  # @param rpc_timeout [Integer] Optional RPC deadline to set for each RPC call.
191
191
  #
192
- # @return [Temporal::Error::RPCError] Workflow could not be signalled.
192
+ # @return [Temporalio::Error::RPCError] Workflow could not be signalled.
193
193
  def signal(signal, *args, rpc_metadata: {}, rpc_timeout: nil)
194
194
  input = Interceptor::Client::SignalWorkflowInput.new(
195
195
  id: id,
@@ -208,9 +208,9 @@ module Temporal
208
208
  #
209
209
  # This will issue a termination for {#run_id} if present. This call will make sure to use the
210
210
  # run chain starting from {#first_execution_run_id} if present. To create handles with these
211
- # values, use {Temporal::Client#workflow_handle}.
211
+ # values, use {Temporalio::Client#workflow_handle}.
212
212
 
213
- # @note Handles created as a result of {Temporal::Client#start_workflow} with a start signal
213
+ # @note Handles created as a result of {Temporalio::Client#start_workflow} with a start signal
214
214
  # will terminate the latest workflow with the same workflow ID even if it is unrelated to
215
215
  # the started workflow.
216
216
  #
@@ -220,7 +220,7 @@ module Temporal
220
220
  # Keys here override client-level RPC metadata keys.
221
221
  # @param rpc_timeout [Integer] Optional RPC deadline to set for each RPC call.
222
222
  #
223
- # @raise [Temporal::Error::RPCError] Workflow could not be terminated.
223
+ # @raise [Temporalio::Error::RPCError] Workflow could not be terminated.
224
224
  def terminate(reason = nil, args = nil, rpc_metadata: {}, rpc_timeout: nil)
225
225
  input = Interceptor::Client::TerminateWorkflowInput.new(
226
226
  id: id,
@@ -1,33 +1,27 @@
1
1
  require 'json'
2
2
  require 'securerandom'
3
3
  require 'socket'
4
- require 'temporal/client/implementation'
5
- require 'temporal/client/workflow_handle'
6
- require 'temporal/data_converter'
7
- require 'temporal/errors'
8
- require 'temporal/failure_converter'
9
- require 'temporal/payload_converter'
10
- require 'temporal/workflow/id_reuse_policy'
4
+ require 'temporalio/client/implementation'
5
+ require 'temporalio/client/workflow_handle'
6
+ require 'temporalio/data_converter'
7
+ require 'temporalio/errors'
8
+ require 'temporalio/failure_converter'
9
+ require 'temporalio/payload_converter'
10
+ require 'temporalio/workflow/id_reuse_policy'
11
11
 
12
- module Temporal
12
+ module Temporalio
13
13
  class Client
14
14
  # @return [String] Namespace used for client calls.
15
15
  attr_reader :namespace
16
16
 
17
17
  # Create a Temporal client from a connection.
18
18
  #
19
- # @param connection [Temporal::Connection] A connection to the Temporal server.
19
+ # @param connection [Temporalio::Connection] A connection to the Temporal server.
20
20
  # @param namespace [String] Namespace to use for client calls.
21
- # @param interceptors [Array<Temporal::Interceptor::Client>] List of interceptors for
21
+ # @param interceptors [Array<Temporalio::Interceptor::Client>] List of interceptors for
22
22
  # intercepting client calls. Executed in their original order.
23
- # @param payload_converter [Temporal::PayloadConverter::Base] A custom payload converter for
24
- # converting Ruby values to/from protos. See {Temporal::PayloadConverter::Base} for the
25
- # interface definition.
26
- # @param payload_codecs [Array<Temporal::PayloadCodec::Base>] A list of payload codecs to
27
- # transform payload protos. See {Temporal::PayloadCodec::Base} for the interface definition.
28
- # @param failure_converter [Temporal::FailureConverter::Base] A custom failure converter for
29
- # converting Exceptions to/from protos. See {Temporal::FailureConverter::Base} for the
30
- # interface definition.
23
+ # @param data_converter [Temporalio::DataConverter] Data converter to use for all data conversions
24
+ # to/from payloads.
31
25
  #
32
26
  # @see https://docs.temporal.io/concepts/what-is-a-data-converter for more information on
33
27
  # payload converters and codecs.
@@ -35,16 +29,9 @@ module Temporal
35
29
  connection,
36
30
  namespace,
37
31
  interceptors: [],
38
- payload_converter: Temporal::PayloadConverter::DEFAULT,
39
- payload_codecs: [],
40
- failure_converter: Temporal::FailureConverter::DEFAULT
32
+ data_converter: Temporalio::DataConverter.new
41
33
  )
42
34
  @namespace = namespace
43
- data_converter = DataConverter.new(
44
- payload_converter: payload_converter,
45
- payload_codecs: payload_codecs,
46
- failure_converter: failure_converter,
47
- )
48
35
  @implementation = Client::Implementation.new(connection, namespace, data_converter, interceptors)
49
36
  end
50
37
 
@@ -59,9 +46,9 @@ module Temporal
59
46
  # @param run_timeout [Integer] Timeout of a single workflow run.
60
47
  # @param task_timeout [Integer] Timeout of a single workflow task.
61
48
  # @param id_reuse_policy [Symbol] How already-existing IDs are treated. Refer to
62
- # {Temporal::Workflow::IDReusePolicy} for the list of allowed values.
63
- # @param retry_policy [Temporal::RetryPolicy] Retry policy for the workflow.
64
- # See {Temporal::RetryPolicy}.
49
+ # {Temporalio::Workflow::IDReusePolicy} for the list of allowed values.
50
+ # @param retry_policy [Temporalio::RetryPolicy] Retry policy for the workflow.
51
+ # See {Temporalio::RetryPolicy}.
65
52
  # @param cron_schedule [String] See https://docs.temporal.io/docs/content/what-is-a-temporal-cron-job.
66
53
  # @param memo [Hash<String, any>] Memo for the workflow.
67
54
  # @param search_attributes [Hash<String, any>] Search attributes for the workflow.
@@ -73,9 +60,9 @@ module Temporal
73
60
  # client-level RPC metadata keys.
74
61
  # @param rpc_timeout [Integer] Optional RPC deadline to set for the RPC call.
75
62
  #
76
- # @return [Temporal::Client::WorkflowHandle] A workflow handle to the started/existing workflow.
63
+ # @return [Temporalio::Client::WorkflowHandle] A workflow handle to the started/existing workflow.
77
64
  #
78
- # @raise [Temporal::Error::RPCError] Workflow could not be started.
65
+ # @raise [Temporalio::Error::RPCError] Workflow could not be started.
79
66
  def start_workflow( # rubocop:disable Metrics/ParameterLists
80
67
  workflow,
81
68
  *args,
@@ -126,7 +113,7 @@ module Temporal
126
113
  # in a chain. Workflows are chained when using continue-as-new, retries (as permitted by the
127
114
  # retry policy) or cron executions.
128
115
  #
129
- # @return [Temporal::Client::WorkflowHandle] The workflow handle.
116
+ # @return [Temporalio::Client::WorkflowHandle] The workflow handle.
130
117
  def workflow_handle(id, run_id: nil, first_execution_run_id: nil)
131
118
  WorkflowHandle.new(
132
119
  implementation,
@@ -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