temporalio 0.1.1 → 0.3.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 (628) hide show
  1. checksums.yaml +4 -4
  2. data/.yardopts +2 -0
  3. data/Cargo.lock +4324 -0
  4. data/Cargo.toml +25 -0
  5. data/Gemfile +20 -0
  6. data/LICENSE +16 -15
  7. data/README.md +985 -183
  8. data/Rakefile +101 -0
  9. data/ext/Cargo.toml +26 -0
  10. data/lib/temporalio/activity/complete_async_error.rb +11 -0
  11. data/lib/temporalio/activity/context.rb +86 -78
  12. data/lib/temporalio/activity/definition.rb +175 -0
  13. data/lib/temporalio/activity/info.rb +44 -47
  14. data/lib/temporalio/activity.rb +8 -81
  15. data/lib/temporalio/api/activity/v1/message.rb +25 -0
  16. data/lib/temporalio/api/batch/v1/message.rb +31 -0
  17. data/lib/temporalio/api/cloud/account/v1/message.rb +28 -0
  18. data/lib/temporalio/api/cloud/cloudservice/v1/request_response.rb +126 -0
  19. data/lib/temporalio/api/cloud/cloudservice/v1/service.rb +25 -0
  20. data/lib/temporalio/api/cloud/cloudservice.rb +3 -0
  21. data/lib/temporalio/api/cloud/identity/v1/message.rb +41 -0
  22. data/lib/temporalio/api/cloud/namespace/v1/message.rb +42 -0
  23. data/lib/temporalio/api/cloud/nexus/v1/message.rb +31 -0
  24. data/lib/temporalio/api/cloud/operation/v1/message.rb +28 -0
  25. data/lib/temporalio/api/cloud/region/v1/message.rb +24 -0
  26. data/lib/temporalio/api/cloud/resource/v1/message.rb +23 -0
  27. data/lib/temporalio/api/cloud/sink/v1/message.rb +24 -0
  28. data/lib/temporalio/api/cloud/usage/v1/message.rb +31 -0
  29. data/lib/temporalio/api/command/v1/message.rb +46 -0
  30. data/lib/temporalio/api/common/v1/grpc_status.rb +23 -0
  31. data/lib/temporalio/api/common/v1/message.rb +47 -0
  32. data/lib/temporalio/api/enums/v1/batch_operation.rb +22 -0
  33. data/lib/temporalio/api/enums/v1/command_type.rb +21 -0
  34. data/lib/temporalio/api/enums/v1/common.rb +26 -0
  35. data/lib/temporalio/api/enums/v1/event_type.rb +21 -0
  36. data/lib/temporalio/api/enums/v1/failed_cause.rb +26 -0
  37. data/lib/temporalio/api/enums/v1/namespace.rb +23 -0
  38. data/lib/temporalio/api/enums/v1/query.rb +22 -0
  39. data/lib/temporalio/api/enums/v1/reset.rb +23 -0
  40. data/lib/temporalio/api/enums/v1/schedule.rb +21 -0
  41. data/lib/temporalio/api/enums/v1/task_queue.rb +25 -0
  42. data/lib/temporalio/api/enums/v1/update.rb +22 -0
  43. data/lib/temporalio/api/enums/v1/workflow.rb +30 -0
  44. data/lib/temporalio/api/errordetails/v1/message.rb +42 -0
  45. data/lib/temporalio/api/export/v1/message.rb +24 -0
  46. data/lib/temporalio/api/failure/v1/message.rb +35 -0
  47. data/lib/temporalio/api/filter/v1/message.rb +27 -0
  48. data/lib/temporalio/api/history/v1/message.rb +90 -0
  49. data/lib/temporalio/api/namespace/v1/message.rb +31 -0
  50. data/lib/temporalio/api/nexus/v1/message.rb +40 -0
  51. data/lib/temporalio/api/operatorservice/v1/request_response.rb +49 -0
  52. data/lib/temporalio/api/operatorservice/v1/service.rb +23 -0
  53. data/lib/temporalio/api/operatorservice.rb +3 -0
  54. data/lib/temporalio/api/payload_visitor.rb +1513 -0
  55. data/lib/temporalio/api/protocol/v1/message.rb +23 -0
  56. data/lib/temporalio/api/query/v1/message.rb +27 -0
  57. data/lib/temporalio/api/replication/v1/message.rb +26 -0
  58. data/lib/temporalio/api/schedule/v1/message.rb +43 -0
  59. data/lib/temporalio/api/sdk/v1/enhanced_stack_trace.rb +25 -0
  60. data/lib/temporalio/api/sdk/v1/task_complete_metadata.rb +21 -0
  61. data/lib/temporalio/api/sdk/v1/user_metadata.rb +23 -0
  62. data/lib/temporalio/api/sdk/v1/workflow_metadata.rb +23 -0
  63. data/lib/temporalio/api/taskqueue/v1/message.rb +45 -0
  64. data/lib/{gen/temporal/api/testservice/v1/request_response_pb.rb → temporalio/api/testservice/v1/request_response.rb} +6 -24
  65. data/lib/temporalio/api/testservice/v1/service.rb +23 -0
  66. data/lib/temporalio/api/update/v1/message.rb +33 -0
  67. data/lib/temporalio/api/version/v1/message.rb +26 -0
  68. data/lib/temporalio/api/workflow/v1/message.rb +43 -0
  69. data/lib/temporalio/api/workflowservice/v1/request_response.rb +204 -0
  70. data/lib/temporalio/api/workflowservice/v1/service.rb +23 -0
  71. data/lib/temporalio/api/workflowservice.rb +3 -0
  72. data/lib/temporalio/api.rb +14 -0
  73. data/lib/temporalio/cancellation.rb +170 -0
  74. data/lib/temporalio/client/activity_id_reference.rb +32 -0
  75. data/lib/temporalio/client/async_activity_handle.rb +85 -0
  76. data/lib/temporalio/client/connection/cloud_service.rb +726 -0
  77. data/lib/temporalio/client/connection/operator_service.rb +201 -0
  78. data/lib/temporalio/client/connection/service.rb +42 -0
  79. data/lib/temporalio/client/connection/test_service.rb +111 -0
  80. data/lib/temporalio/client/connection/workflow_service.rb +1041 -0
  81. data/lib/temporalio/client/connection.rb +316 -0
  82. data/lib/temporalio/client/interceptor.rb +416 -0
  83. data/lib/temporalio/client/schedule.rb +967 -0
  84. data/lib/temporalio/client/schedule_handle.rb +126 -0
  85. data/lib/temporalio/client/workflow_execution.rb +100 -0
  86. data/lib/temporalio/client/workflow_execution_count.rb +36 -0
  87. data/lib/temporalio/client/workflow_execution_status.rb +18 -0
  88. data/lib/temporalio/client/workflow_handle.rb +326 -180
  89. data/lib/temporalio/client/workflow_query_reject_condition.rb +14 -0
  90. data/lib/temporalio/client/workflow_update_handle.rb +65 -0
  91. data/lib/temporalio/client/workflow_update_wait_stage.rb +17 -0
  92. data/lib/temporalio/client.rb +447 -94
  93. data/lib/temporalio/common_enums.rb +41 -0
  94. data/lib/temporalio/converters/data_converter.rb +99 -0
  95. data/lib/temporalio/converters/failure_converter.rb +202 -0
  96. data/lib/temporalio/converters/payload_codec.rb +26 -0
  97. data/lib/temporalio/converters/payload_converter/binary_null.rb +34 -0
  98. data/lib/temporalio/converters/payload_converter/binary_plain.rb +35 -0
  99. data/lib/temporalio/converters/payload_converter/binary_protobuf.rb +42 -0
  100. data/lib/temporalio/converters/payload_converter/composite.rb +66 -0
  101. data/lib/temporalio/converters/payload_converter/encoding.rb +35 -0
  102. data/lib/temporalio/converters/payload_converter/json_plain.rb +44 -0
  103. data/lib/temporalio/converters/payload_converter/json_protobuf.rb +41 -0
  104. data/lib/temporalio/converters/payload_converter.rb +71 -0
  105. data/lib/temporalio/converters/raw_value.rb +20 -0
  106. data/lib/temporalio/converters.rb +9 -0
  107. data/lib/temporalio/error/failure.rb +119 -94
  108. data/lib/temporalio/error.rb +155 -0
  109. data/lib/temporalio/internal/bridge/api/activity_result/activity_result.rb +34 -0
  110. data/lib/temporalio/internal/bridge/api/activity_task/activity_task.rb +31 -0
  111. data/lib/temporalio/internal/bridge/api/child_workflow/child_workflow.rb +33 -0
  112. data/lib/temporalio/internal/bridge/api/common/common.rb +26 -0
  113. data/lib/temporalio/internal/bridge/api/core_interface.rb +40 -0
  114. data/lib/temporalio/internal/bridge/api/external_data/external_data.rb +27 -0
  115. data/lib/temporalio/internal/bridge/api/nexus/nexus.rb +33 -0
  116. data/lib/temporalio/internal/bridge/api/workflow_activation/workflow_activation.rb +56 -0
  117. data/lib/temporalio/internal/bridge/api/workflow_commands/workflow_commands.rb +57 -0
  118. data/lib/temporalio/internal/bridge/api/workflow_completion/workflow_completion.rb +30 -0
  119. data/lib/temporalio/internal/bridge/api.rb +3 -0
  120. data/lib/temporalio/internal/bridge/client.rb +95 -0
  121. data/lib/temporalio/internal/bridge/runtime.rb +53 -0
  122. data/lib/temporalio/internal/bridge/testing.rb +66 -0
  123. data/lib/temporalio/internal/bridge/worker.rb +85 -0
  124. data/lib/temporalio/internal/bridge.rb +36 -0
  125. data/lib/temporalio/internal/client/implementation.rb +700 -0
  126. data/lib/temporalio/internal/metric.rb +122 -0
  127. data/lib/temporalio/internal/proto_utils.rb +133 -0
  128. data/lib/temporalio/internal/worker/activity_worker.rb +373 -0
  129. data/lib/temporalio/internal/worker/multi_runner.rb +213 -0
  130. data/lib/temporalio/internal/worker/workflow_instance/child_workflow_handle.rb +54 -0
  131. data/lib/temporalio/internal/worker/workflow_instance/context.rb +329 -0
  132. data/lib/temporalio/internal/worker/workflow_instance/details.rb +44 -0
  133. data/lib/temporalio/internal/worker/workflow_instance/external_workflow_handle.rb +32 -0
  134. data/lib/temporalio/internal/worker/workflow_instance/externally_immutable_hash.rb +22 -0
  135. data/lib/temporalio/internal/worker/workflow_instance/handler_execution.rb +25 -0
  136. data/lib/temporalio/internal/worker/workflow_instance/handler_hash.rb +41 -0
  137. data/lib/temporalio/internal/worker/workflow_instance/illegal_call_tracer.rb +97 -0
  138. data/lib/temporalio/internal/worker/workflow_instance/inbound_implementation.rb +62 -0
  139. data/lib/temporalio/internal/worker/workflow_instance/outbound_implementation.rb +415 -0
  140. data/lib/temporalio/internal/worker/workflow_instance/replay_safe_logger.rb +37 -0
  141. data/lib/temporalio/internal/worker/workflow_instance/replay_safe_metric.rb +40 -0
  142. data/lib/temporalio/internal/worker/workflow_instance/scheduler.rb +163 -0
  143. data/lib/temporalio/internal/worker/workflow_instance.rb +730 -0
  144. data/lib/temporalio/internal/worker/workflow_worker.rb +196 -0
  145. data/lib/temporalio/internal.rb +7 -0
  146. data/lib/temporalio/metric.rb +109 -0
  147. data/lib/temporalio/retry_policy.rb +55 -73
  148. data/lib/temporalio/runtime.rb +302 -13
  149. data/lib/temporalio/scoped_logger.rb +96 -0
  150. data/lib/temporalio/search_attributes.rb +343 -0
  151. data/lib/temporalio/testing/activity_environment.rb +132 -0
  152. data/lib/temporalio/testing/workflow_environment.rb +345 -74
  153. data/lib/temporalio/testing.rb +4 -169
  154. data/lib/temporalio/version.rb +3 -1
  155. data/lib/temporalio/worker/activity_executor/fiber.rb +49 -0
  156. data/lib/temporalio/worker/activity_executor/thread_pool.rb +46 -0
  157. data/lib/temporalio/worker/activity_executor.rb +55 -0
  158. data/lib/temporalio/worker/interceptor.rb +362 -0
  159. data/lib/temporalio/worker/thread_pool.rb +237 -0
  160. data/lib/temporalio/worker/tuner.rb +151 -0
  161. data/lib/temporalio/worker/workflow_executor/thread_pool.rb +230 -0
  162. data/lib/temporalio/worker/workflow_executor.rb +26 -0
  163. data/lib/temporalio/worker.rb +554 -161
  164. data/lib/temporalio/workflow/activity_cancellation_type.rb +20 -0
  165. data/lib/temporalio/workflow/child_workflow_cancellation_type.rb +21 -0
  166. data/lib/temporalio/workflow/child_workflow_handle.rb +43 -0
  167. data/lib/temporalio/workflow/definition.rb +566 -0
  168. data/lib/temporalio/workflow/external_workflow_handle.rb +41 -0
  169. data/lib/temporalio/workflow/future.rb +117 -104
  170. data/lib/temporalio/workflow/handler_unfinished_policy.rb +13 -0
  171. data/lib/temporalio/workflow/info.rb +63 -57
  172. data/lib/temporalio/workflow/parent_close_policy.rb +19 -0
  173. data/lib/temporalio/workflow/update_info.rb +20 -0
  174. data/lib/temporalio/workflow.rb +523 -0
  175. data/lib/temporalio/workflow_history.rb +22 -0
  176. data/lib/temporalio.rb +6 -7
  177. data/temporalio.gemspec +20 -39
  178. metadata +171 -710
  179. data/bridge/Cargo.lock +0 -2997
  180. data/bridge/Cargo.toml +0 -29
  181. data/bridge/sdk-core/ARCHITECTURE.md +0 -76
  182. data/bridge/sdk-core/Cargo.toml +0 -2
  183. data/bridge/sdk-core/LICENSE.txt +0 -23
  184. data/bridge/sdk-core/README.md +0 -117
  185. data/bridge/sdk-core/arch_docs/diagrams/README.md +0 -10
  186. data/bridge/sdk-core/arch_docs/diagrams/sticky_queues.puml +0 -40
  187. data/bridge/sdk-core/arch_docs/diagrams/workflow_internals.svg +0 -1
  188. data/bridge/sdk-core/arch_docs/sticky_queues.md +0 -51
  189. data/bridge/sdk-core/client/Cargo.toml +0 -40
  190. data/bridge/sdk-core/client/LICENSE.txt +0 -23
  191. data/bridge/sdk-core/client/src/lib.rs +0 -1462
  192. data/bridge/sdk-core/client/src/metrics.rs +0 -174
  193. data/bridge/sdk-core/client/src/raw.rs +0 -932
  194. data/bridge/sdk-core/client/src/retry.rs +0 -763
  195. data/bridge/sdk-core/client/src/workflow_handle/mod.rs +0 -185
  196. data/bridge/sdk-core/core/Cargo.toml +0 -129
  197. data/bridge/sdk-core/core/LICENSE.txt +0 -23
  198. data/bridge/sdk-core/core/benches/workflow_replay.rs +0 -76
  199. data/bridge/sdk-core/core/src/abstractions.rs +0 -355
  200. data/bridge/sdk-core/core/src/core_tests/activity_tasks.rs +0 -1049
  201. data/bridge/sdk-core/core/src/core_tests/child_workflows.rs +0 -221
  202. data/bridge/sdk-core/core/src/core_tests/determinism.rs +0 -270
  203. data/bridge/sdk-core/core/src/core_tests/local_activities.rs +0 -1046
  204. data/bridge/sdk-core/core/src/core_tests/mod.rs +0 -100
  205. data/bridge/sdk-core/core/src/core_tests/queries.rs +0 -893
  206. data/bridge/sdk-core/core/src/core_tests/replay_flag.rs +0 -65
  207. data/bridge/sdk-core/core/src/core_tests/workers.rs +0 -257
  208. data/bridge/sdk-core/core/src/core_tests/workflow_cancels.rs +0 -124
  209. data/bridge/sdk-core/core/src/core_tests/workflow_tasks.rs +0 -2433
  210. data/bridge/sdk-core/core/src/ephemeral_server/mod.rs +0 -609
  211. data/bridge/sdk-core/core/src/internal_flags.rs +0 -136
  212. data/bridge/sdk-core/core/src/lib.rs +0 -289
  213. data/bridge/sdk-core/core/src/pollers/mod.rs +0 -54
  214. data/bridge/sdk-core/core/src/pollers/poll_buffer.rs +0 -297
  215. data/bridge/sdk-core/core/src/protosext/mod.rs +0 -428
  216. data/bridge/sdk-core/core/src/replay/mod.rs +0 -215
  217. data/bridge/sdk-core/core/src/retry_logic.rs +0 -202
  218. data/bridge/sdk-core/core/src/telemetry/log_export.rs +0 -190
  219. data/bridge/sdk-core/core/src/telemetry/metrics.rs +0 -462
  220. data/bridge/sdk-core/core/src/telemetry/mod.rs +0 -423
  221. data/bridge/sdk-core/core/src/telemetry/prometheus_server.rs +0 -83
  222. data/bridge/sdk-core/core/src/test_help/mod.rs +0 -939
  223. data/bridge/sdk-core/core/src/worker/activities/activity_heartbeat_manager.rs +0 -536
  224. data/bridge/sdk-core/core/src/worker/activities/activity_task_poller_stream.rs +0 -89
  225. data/bridge/sdk-core/core/src/worker/activities/local_activities.rs +0 -1278
  226. data/bridge/sdk-core/core/src/worker/activities.rs +0 -557
  227. data/bridge/sdk-core/core/src/worker/client/mocks.rs +0 -107
  228. data/bridge/sdk-core/core/src/worker/client.rs +0 -389
  229. data/bridge/sdk-core/core/src/worker/mod.rs +0 -677
  230. data/bridge/sdk-core/core/src/worker/workflow/bridge.rs +0 -35
  231. data/bridge/sdk-core/core/src/worker/workflow/driven_workflow.rs +0 -99
  232. data/bridge/sdk-core/core/src/worker/workflow/history_update.rs +0 -1111
  233. data/bridge/sdk-core/core/src/worker/workflow/machines/activity_state_machine.rs +0 -964
  234. data/bridge/sdk-core/core/src/worker/workflow/machines/cancel_external_state_machine.rs +0 -294
  235. data/bridge/sdk-core/core/src/worker/workflow/machines/cancel_workflow_state_machine.rs +0 -168
  236. data/bridge/sdk-core/core/src/worker/workflow/machines/child_workflow_state_machine.rs +0 -918
  237. data/bridge/sdk-core/core/src/worker/workflow/machines/complete_workflow_state_machine.rs +0 -137
  238. data/bridge/sdk-core/core/src/worker/workflow/machines/continue_as_new_workflow_state_machine.rs +0 -158
  239. data/bridge/sdk-core/core/src/worker/workflow/machines/fail_workflow_state_machine.rs +0 -130
  240. data/bridge/sdk-core/core/src/worker/workflow/machines/local_activity_state_machine.rs +0 -1525
  241. data/bridge/sdk-core/core/src/worker/workflow/machines/mod.rs +0 -324
  242. data/bridge/sdk-core/core/src/worker/workflow/machines/modify_workflow_properties_state_machine.rs +0 -179
  243. data/bridge/sdk-core/core/src/worker/workflow/machines/patch_state_machine.rs +0 -659
  244. data/bridge/sdk-core/core/src/worker/workflow/machines/signal_external_state_machine.rs +0 -439
  245. data/bridge/sdk-core/core/src/worker/workflow/machines/timer_state_machine.rs +0 -435
  246. data/bridge/sdk-core/core/src/worker/workflow/machines/transition_coverage.rs +0 -175
  247. data/bridge/sdk-core/core/src/worker/workflow/machines/upsert_search_attributes_state_machine.rs +0 -249
  248. data/bridge/sdk-core/core/src/worker/workflow/machines/workflow_machines/local_acts.rs +0 -85
  249. data/bridge/sdk-core/core/src/worker/workflow/machines/workflow_machines.rs +0 -1280
  250. data/bridge/sdk-core/core/src/worker/workflow/machines/workflow_task_state_machine.rs +0 -269
  251. data/bridge/sdk-core/core/src/worker/workflow/managed_run/managed_wf_test.rs +0 -213
  252. data/bridge/sdk-core/core/src/worker/workflow/managed_run.rs +0 -1305
  253. data/bridge/sdk-core/core/src/worker/workflow/mod.rs +0 -1276
  254. data/bridge/sdk-core/core/src/worker/workflow/run_cache.rs +0 -128
  255. data/bridge/sdk-core/core/src/worker/workflow/wft_extraction.rs +0 -125
  256. data/bridge/sdk-core/core/src/worker/workflow/wft_poller.rs +0 -85
  257. data/bridge/sdk-core/core/src/worker/workflow/workflow_stream/saved_wf_inputs.rs +0 -117
  258. data/bridge/sdk-core/core/src/worker/workflow/workflow_stream/tonic_status_serde.rs +0 -24
  259. data/bridge/sdk-core/core/src/worker/workflow/workflow_stream.rs +0 -715
  260. data/bridge/sdk-core/core-api/Cargo.toml +0 -33
  261. data/bridge/sdk-core/core-api/LICENSE.txt +0 -23
  262. data/bridge/sdk-core/core-api/src/errors.rs +0 -62
  263. data/bridge/sdk-core/core-api/src/lib.rs +0 -113
  264. data/bridge/sdk-core/core-api/src/telemetry.rs +0 -141
  265. data/bridge/sdk-core/core-api/src/worker.rs +0 -161
  266. data/bridge/sdk-core/etc/deps.svg +0 -162
  267. data/bridge/sdk-core/etc/dynamic-config.yaml +0 -2
  268. data/bridge/sdk-core/etc/otel-collector-config.yaml +0 -36
  269. data/bridge/sdk-core/etc/prometheus.yaml +0 -6
  270. data/bridge/sdk-core/etc/regen-depgraph.sh +0 -5
  271. data/bridge/sdk-core/fsm/Cargo.toml +0 -18
  272. data/bridge/sdk-core/fsm/LICENSE.txt +0 -23
  273. data/bridge/sdk-core/fsm/README.md +0 -3
  274. data/bridge/sdk-core/fsm/rustfsm_procmacro/Cargo.toml +0 -27
  275. data/bridge/sdk-core/fsm/rustfsm_procmacro/LICENSE.txt +0 -23
  276. data/bridge/sdk-core/fsm/rustfsm_procmacro/src/lib.rs +0 -650
  277. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/progress.rs +0 -8
  278. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/dupe_transitions_fail.rs +0 -18
  279. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/dupe_transitions_fail.stderr +0 -12
  280. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/dynamic_dest_pass.rs +0 -41
  281. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/forgot_name_fail.rs +0 -14
  282. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/forgot_name_fail.stderr +0 -11
  283. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/handler_arg_pass.rs +0 -32
  284. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/handler_pass.rs +0 -31
  285. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/medium_complex_pass.rs +0 -46
  286. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/no_handle_conversions_require_into_fail.rs +0 -29
  287. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/no_handle_conversions_require_into_fail.stderr +0 -12
  288. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/simple_pass.rs +0 -32
  289. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/struct_event_variant_fail.rs +0 -18
  290. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/struct_event_variant_fail.stderr +0 -5
  291. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/tuple_more_item_event_variant_fail.rs +0 -11
  292. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/tuple_more_item_event_variant_fail.stderr +0 -5
  293. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/tuple_zero_item_event_variant_fail.rs +0 -11
  294. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/tuple_zero_item_event_variant_fail.stderr +0 -5
  295. data/bridge/sdk-core/fsm/rustfsm_trait/Cargo.toml +0 -14
  296. data/bridge/sdk-core/fsm/rustfsm_trait/LICENSE.txt +0 -23
  297. data/bridge/sdk-core/fsm/rustfsm_trait/src/lib.rs +0 -254
  298. data/bridge/sdk-core/fsm/src/lib.rs +0 -2
  299. data/bridge/sdk-core/histories/evict_while_la_running_no_interference-16_history.bin +0 -0
  300. data/bridge/sdk-core/histories/evict_while_la_running_no_interference-23_history.bin +0 -0
  301. data/bridge/sdk-core/histories/evict_while_la_running_no_interference-85_history.bin +0 -0
  302. data/bridge/sdk-core/histories/fail_wf_task.bin +0 -0
  303. data/bridge/sdk-core/histories/timer_workflow_history.bin +0 -0
  304. data/bridge/sdk-core/integ-with-otel.sh +0 -7
  305. data/bridge/sdk-core/protos/api_upstream/README.md +0 -9
  306. data/bridge/sdk-core/protos/api_upstream/api-linter.yaml +0 -40
  307. data/bridge/sdk-core/protos/api_upstream/buf.yaml +0 -9
  308. data/bridge/sdk-core/protos/api_upstream/build/go.mod +0 -7
  309. data/bridge/sdk-core/protos/api_upstream/build/go.sum +0 -5
  310. data/bridge/sdk-core/protos/api_upstream/build/tools.go +0 -29
  311. data/bridge/sdk-core/protos/api_upstream/dependencies/gogoproto/gogo.proto +0 -141
  312. data/bridge/sdk-core/protos/api_upstream/go.mod +0 -6
  313. data/bridge/sdk-core/protos/api_upstream/temporal/api/batch/v1/message.proto +0 -89
  314. data/bridge/sdk-core/protos/api_upstream/temporal/api/command/v1/message.proto +0 -248
  315. data/bridge/sdk-core/protos/api_upstream/temporal/api/common/v1/message.proto +0 -123
  316. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/batch_operation.proto +0 -47
  317. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/command_type.proto +0 -52
  318. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/common.proto +0 -56
  319. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/event_type.proto +0 -170
  320. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/failed_cause.proto +0 -123
  321. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/namespace.proto +0 -51
  322. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/query.proto +0 -50
  323. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/reset.proto +0 -41
  324. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/schedule.proto +0 -60
  325. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/task_queue.proto +0 -59
  326. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/update.proto +0 -56
  327. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/workflow.proto +0 -122
  328. data/bridge/sdk-core/protos/api_upstream/temporal/api/errordetails/v1/message.proto +0 -108
  329. data/bridge/sdk-core/protos/api_upstream/temporal/api/failure/v1/message.proto +0 -114
  330. data/bridge/sdk-core/protos/api_upstream/temporal/api/filter/v1/message.proto +0 -56
  331. data/bridge/sdk-core/protos/api_upstream/temporal/api/history/v1/message.proto +0 -787
  332. data/bridge/sdk-core/protos/api_upstream/temporal/api/namespace/v1/message.proto +0 -99
  333. data/bridge/sdk-core/protos/api_upstream/temporal/api/operatorservice/v1/request_response.proto +0 -124
  334. data/bridge/sdk-core/protos/api_upstream/temporal/api/operatorservice/v1/service.proto +0 -80
  335. data/bridge/sdk-core/protos/api_upstream/temporal/api/protocol/v1/message.proto +0 -57
  336. data/bridge/sdk-core/protos/api_upstream/temporal/api/query/v1/message.proto +0 -61
  337. data/bridge/sdk-core/protos/api_upstream/temporal/api/replication/v1/message.proto +0 -55
  338. data/bridge/sdk-core/protos/api_upstream/temporal/api/schedule/v1/message.proto +0 -379
  339. data/bridge/sdk-core/protos/api_upstream/temporal/api/sdk/v1/task_complete_metadata.proto +0 -63
  340. data/bridge/sdk-core/protos/api_upstream/temporal/api/taskqueue/v1/message.proto +0 -108
  341. data/bridge/sdk-core/protos/api_upstream/temporal/api/update/v1/message.proto +0 -111
  342. data/bridge/sdk-core/protos/api_upstream/temporal/api/version/v1/message.proto +0 -59
  343. data/bridge/sdk-core/protos/api_upstream/temporal/api/workflow/v1/message.proto +0 -146
  344. data/bridge/sdk-core/protos/api_upstream/temporal/api/workflowservice/v1/request_response.proto +0 -1199
  345. data/bridge/sdk-core/protos/api_upstream/temporal/api/workflowservice/v1/service.proto +0 -415
  346. data/bridge/sdk-core/protos/grpc/health/v1/health.proto +0 -63
  347. data/bridge/sdk-core/protos/local/temporal/sdk/core/activity_result/activity_result.proto +0 -79
  348. data/bridge/sdk-core/protos/local/temporal/sdk/core/activity_task/activity_task.proto +0 -80
  349. data/bridge/sdk-core/protos/local/temporal/sdk/core/child_workflow/child_workflow.proto +0 -78
  350. data/bridge/sdk-core/protos/local/temporal/sdk/core/common/common.proto +0 -16
  351. data/bridge/sdk-core/protos/local/temporal/sdk/core/core_interface.proto +0 -31
  352. data/bridge/sdk-core/protos/local/temporal/sdk/core/external_data/external_data.proto +0 -31
  353. data/bridge/sdk-core/protos/local/temporal/sdk/core/workflow_activation/workflow_activation.proto +0 -270
  354. data/bridge/sdk-core/protos/local/temporal/sdk/core/workflow_commands/workflow_commands.proto +0 -305
  355. data/bridge/sdk-core/protos/local/temporal/sdk/core/workflow_completion/workflow_completion.proto +0 -35
  356. data/bridge/sdk-core/protos/testsrv_upstream/api-linter.yaml +0 -38
  357. data/bridge/sdk-core/protos/testsrv_upstream/buf.yaml +0 -13
  358. data/bridge/sdk-core/protos/testsrv_upstream/dependencies/gogoproto/gogo.proto +0 -141
  359. data/bridge/sdk-core/protos/testsrv_upstream/temporal/api/testservice/v1/request_response.proto +0 -63
  360. data/bridge/sdk-core/protos/testsrv_upstream/temporal/api/testservice/v1/service.proto +0 -90
  361. data/bridge/sdk-core/rustfmt.toml +0 -1
  362. data/bridge/sdk-core/sdk/Cargo.toml +0 -48
  363. data/bridge/sdk-core/sdk/LICENSE.txt +0 -23
  364. data/bridge/sdk-core/sdk/src/activity_context.rs +0 -230
  365. data/bridge/sdk-core/sdk/src/app_data.rs +0 -37
  366. data/bridge/sdk-core/sdk/src/interceptors.rs +0 -50
  367. data/bridge/sdk-core/sdk/src/lib.rs +0 -861
  368. data/bridge/sdk-core/sdk/src/payload_converter.rs +0 -11
  369. data/bridge/sdk-core/sdk/src/workflow_context/options.rs +0 -295
  370. data/bridge/sdk-core/sdk/src/workflow_context.rs +0 -694
  371. data/bridge/sdk-core/sdk/src/workflow_future.rs +0 -500
  372. data/bridge/sdk-core/sdk-core-protos/Cargo.toml +0 -33
  373. data/bridge/sdk-core/sdk-core-protos/LICENSE.txt +0 -23
  374. data/bridge/sdk-core/sdk-core-protos/build.rs +0 -142
  375. data/bridge/sdk-core/sdk-core-protos/src/constants.rs +0 -7
  376. data/bridge/sdk-core/sdk-core-protos/src/history_builder.rs +0 -557
  377. data/bridge/sdk-core/sdk-core-protos/src/history_info.rs +0 -234
  378. data/bridge/sdk-core/sdk-core-protos/src/lib.rs +0 -2088
  379. data/bridge/sdk-core/sdk-core-protos/src/task_token.rs +0 -48
  380. data/bridge/sdk-core/sdk-core-protos/src/utilities.rs +0 -14
  381. data/bridge/sdk-core/test-utils/Cargo.toml +0 -38
  382. data/bridge/sdk-core/test-utils/src/canned_histories.rs +0 -1389
  383. data/bridge/sdk-core/test-utils/src/histfetch.rs +0 -28
  384. data/bridge/sdk-core/test-utils/src/lib.rs +0 -709
  385. data/bridge/sdk-core/test-utils/src/wf_input_saver.rs +0 -50
  386. data/bridge/sdk-core/test-utils/src/workflows.rs +0 -29
  387. data/bridge/sdk-core/tests/fuzzy_workflow.rs +0 -130
  388. data/bridge/sdk-core/tests/heavy_tests.rs +0 -265
  389. data/bridge/sdk-core/tests/integ_tests/client_tests.rs +0 -36
  390. data/bridge/sdk-core/tests/integ_tests/ephemeral_server_tests.rs +0 -150
  391. data/bridge/sdk-core/tests/integ_tests/heartbeat_tests.rs +0 -223
  392. data/bridge/sdk-core/tests/integ_tests/metrics_tests.rs +0 -239
  393. data/bridge/sdk-core/tests/integ_tests/polling_tests.rs +0 -90
  394. data/bridge/sdk-core/tests/integ_tests/queries_tests.rs +0 -314
  395. data/bridge/sdk-core/tests/integ_tests/visibility_tests.rs +0 -151
  396. data/bridge/sdk-core/tests/integ_tests/workflow_tests/activities.rs +0 -902
  397. data/bridge/sdk-core/tests/integ_tests/workflow_tests/appdata_propagation.rs +0 -61
  398. data/bridge/sdk-core/tests/integ_tests/workflow_tests/cancel_external.rs +0 -60
  399. data/bridge/sdk-core/tests/integ_tests/workflow_tests/cancel_wf.rs +0 -51
  400. data/bridge/sdk-core/tests/integ_tests/workflow_tests/child_workflows.rs +0 -51
  401. data/bridge/sdk-core/tests/integ_tests/workflow_tests/continue_as_new.rs +0 -64
  402. data/bridge/sdk-core/tests/integ_tests/workflow_tests/determinism.rs +0 -47
  403. data/bridge/sdk-core/tests/integ_tests/workflow_tests/local_activities.rs +0 -669
  404. data/bridge/sdk-core/tests/integ_tests/workflow_tests/modify_wf_properties.rs +0 -54
  405. data/bridge/sdk-core/tests/integ_tests/workflow_tests/patches.rs +0 -92
  406. data/bridge/sdk-core/tests/integ_tests/workflow_tests/replay.rs +0 -228
  407. data/bridge/sdk-core/tests/integ_tests/workflow_tests/resets.rs +0 -94
  408. data/bridge/sdk-core/tests/integ_tests/workflow_tests/signals.rs +0 -171
  409. data/bridge/sdk-core/tests/integ_tests/workflow_tests/stickyness.rs +0 -85
  410. data/bridge/sdk-core/tests/integ_tests/workflow_tests/timers.rs +0 -120
  411. data/bridge/sdk-core/tests/integ_tests/workflow_tests/upsert_search_attrs.rs +0 -77
  412. data/bridge/sdk-core/tests/integ_tests/workflow_tests.rs +0 -596
  413. data/bridge/sdk-core/tests/main.rs +0 -103
  414. data/bridge/sdk-core/tests/runner.rs +0 -132
  415. data/bridge/sdk-core/tests/wf_input_replay.rs +0 -32
  416. data/bridge/src/connection.rs +0 -202
  417. data/bridge/src/lib.rs +0 -494
  418. data/bridge/src/runtime.rs +0 -54
  419. data/bridge/src/test_server.rs +0 -153
  420. data/bridge/src/worker.rs +0 -197
  421. data/ext/Rakefile +0 -9
  422. data/lib/gen/dependencies/gogoproto/gogo_pb.rb +0 -14
  423. data/lib/gen/temporal/api/batch/v1/message_pb.rb +0 -50
  424. data/lib/gen/temporal/api/command/v1/message_pb.rb +0 -160
  425. data/lib/gen/temporal/api/common/v1/message_pb.rb +0 -73
  426. data/lib/gen/temporal/api/enums/v1/batch_operation_pb.rb +0 -33
  427. data/lib/gen/temporal/api/enums/v1/command_type_pb.rb +0 -37
  428. data/lib/gen/temporal/api/enums/v1/common_pb.rb +0 -42
  429. data/lib/gen/temporal/api/enums/v1/event_type_pb.rb +0 -68
  430. data/lib/gen/temporal/api/enums/v1/failed_cause_pb.rb +0 -79
  431. data/lib/gen/temporal/api/enums/v1/namespace_pb.rb +0 -37
  432. data/lib/gen/temporal/api/enums/v1/query_pb.rb +0 -31
  433. data/lib/gen/temporal/api/enums/v1/reset_pb.rb +0 -24
  434. data/lib/gen/temporal/api/enums/v1/schedule_pb.rb +0 -28
  435. data/lib/gen/temporal/api/enums/v1/task_queue_pb.rb +0 -30
  436. data/lib/gen/temporal/api/enums/v1/update_pb.rb +0 -25
  437. data/lib/gen/temporal/api/enums/v1/workflow_pb.rb +0 -89
  438. data/lib/gen/temporal/api/errordetails/v1/message_pb.rb +0 -84
  439. data/lib/gen/temporal/api/failure/v1/message_pb.rb +0 -83
  440. data/lib/gen/temporal/api/filter/v1/message_pb.rb +0 -40
  441. data/lib/gen/temporal/api/history/v1/message_pb.rb +0 -498
  442. data/lib/gen/temporal/api/namespace/v1/message_pb.rb +0 -64
  443. data/lib/gen/temporal/api/operatorservice/v1/request_response_pb.rb +0 -88
  444. data/lib/gen/temporal/api/operatorservice/v1/service_pb.rb +0 -20
  445. data/lib/gen/temporal/api/protocol/v1/message_pb.rb +0 -30
  446. data/lib/gen/temporal/api/query/v1/message_pb.rb +0 -38
  447. data/lib/gen/temporal/api/replication/v1/message_pb.rb +0 -37
  448. data/lib/gen/temporal/api/schedule/v1/message_pb.rb +0 -149
  449. data/lib/gen/temporal/api/sdk/v1/task_complete_metadata_pb.rb +0 -23
  450. data/lib/gen/temporal/api/taskqueue/v1/message_pb.rb +0 -73
  451. data/lib/gen/temporal/api/testservice/v1/service_pb.rb +0 -21
  452. data/lib/gen/temporal/api/update/v1/message_pb.rb +0 -72
  453. data/lib/gen/temporal/api/version/v1/message_pb.rb +0 -41
  454. data/lib/gen/temporal/api/workflow/v1/message_pb.rb +0 -111
  455. data/lib/gen/temporal/api/workflowservice/v1/request_response_pb.rb +0 -798
  456. data/lib/gen/temporal/api/workflowservice/v1/service_pb.rb +0 -20
  457. data/lib/gen/temporal/sdk/core/activity_result/activity_result_pb.rb +0 -62
  458. data/lib/gen/temporal/sdk/core/activity_task/activity_task_pb.rb +0 -61
  459. data/lib/gen/temporal/sdk/core/child_workflow/child_workflow_pb.rb +0 -61
  460. data/lib/gen/temporal/sdk/core/common/common_pb.rb +0 -26
  461. data/lib/gen/temporal/sdk/core/core_interface_pb.rb +0 -40
  462. data/lib/gen/temporal/sdk/core/external_data/external_data_pb.rb +0 -31
  463. data/lib/gen/temporal/sdk/core/workflow_activation/workflow_activation_pb.rb +0 -171
  464. data/lib/gen/temporal/sdk/core/workflow_commands/workflow_commands_pb.rb +0 -200
  465. data/lib/gen/temporal/sdk/core/workflow_completion/workflow_completion_pb.rb +0 -41
  466. data/lib/temporalio/bridge/connect_options.rb +0 -15
  467. data/lib/temporalio/bridge/error.rb +0 -8
  468. data/lib/temporalio/bridge/retry_config.rb +0 -24
  469. data/lib/temporalio/bridge/tls_options.rb +0 -19
  470. data/lib/temporalio/bridge.rb +0 -14
  471. data/lib/temporalio/client/implementation.rb +0 -340
  472. data/lib/temporalio/connection/retry_config.rb +0 -44
  473. data/lib/temporalio/connection/service.rb +0 -20
  474. data/lib/temporalio/connection/test_service.rb +0 -92
  475. data/lib/temporalio/connection/tls_options.rb +0 -51
  476. data/lib/temporalio/connection/workflow_service.rb +0 -731
  477. data/lib/temporalio/connection.rb +0 -86
  478. data/lib/temporalio/data_converter.rb +0 -191
  479. data/lib/temporalio/error/workflow_failure.rb +0 -19
  480. data/lib/temporalio/errors.rb +0 -40
  481. data/lib/temporalio/failure_converter/base.rb +0 -26
  482. data/lib/temporalio/failure_converter/basic.rb +0 -319
  483. data/lib/temporalio/failure_converter.rb +0 -7
  484. data/lib/temporalio/interceptor/activity_inbound.rb +0 -22
  485. data/lib/temporalio/interceptor/activity_outbound.rb +0 -24
  486. data/lib/temporalio/interceptor/chain.rb +0 -28
  487. data/lib/temporalio/interceptor/client.rb +0 -127
  488. data/lib/temporalio/interceptor.rb +0 -22
  489. data/lib/temporalio/payload_codec/base.rb +0 -32
  490. data/lib/temporalio/payload_converter/base.rb +0 -24
  491. data/lib/temporalio/payload_converter/bytes.rb +0 -27
  492. data/lib/temporalio/payload_converter/composite.rb +0 -49
  493. data/lib/temporalio/payload_converter/encoding_base.rb +0 -35
  494. data/lib/temporalio/payload_converter/json.rb +0 -26
  495. data/lib/temporalio/payload_converter/nil.rb +0 -26
  496. data/lib/temporalio/payload_converter.rb +0 -14
  497. data/lib/temporalio/retry_state.rb +0 -35
  498. data/lib/temporalio/testing/time_skipping_handle.rb +0 -32
  499. data/lib/temporalio/testing/time_skipping_interceptor.rb +0 -23
  500. data/lib/temporalio/timeout_type.rb +0 -29
  501. data/lib/temporalio/worker/activity_runner.rb +0 -114
  502. data/lib/temporalio/worker/activity_worker.rb +0 -164
  503. data/lib/temporalio/worker/reactor.rb +0 -46
  504. data/lib/temporalio/worker/runner.rb +0 -63
  505. data/lib/temporalio/worker/sync_worker.rb +0 -124
  506. data/lib/temporalio/worker/thread_pool_executor.rb +0 -51
  507. data/lib/temporalio/workflow/async.rb +0 -46
  508. data/lib/temporalio/workflow/execution_info.rb +0 -54
  509. data/lib/temporalio/workflow/execution_status.rb +0 -36
  510. data/lib/temporalio/workflow/id_reuse_policy.rb +0 -36
  511. data/lib/temporalio/workflow/query_reject_condition.rb +0 -33
  512. data/lib/thermite_patch.rb +0 -33
  513. data/sig/async.rbs +0 -17
  514. data/sig/protobuf.rbs +0 -16
  515. data/sig/protos/dependencies/gogoproto/gogo.rbs +0 -914
  516. data/sig/protos/google/protobuf/any.rbs +0 -157
  517. data/sig/protos/google/protobuf/descriptor.rbs +0 -2825
  518. data/sig/protos/google/protobuf/duration.rbs +0 -114
  519. data/sig/protos/google/protobuf/empty.rbs +0 -36
  520. data/sig/protos/google/protobuf/timestamp.rbs +0 -145
  521. data/sig/protos/google/protobuf/wrappers.rbs +0 -358
  522. data/sig/protos/temporal/api/batch/v1/message.rbs +0 -300
  523. data/sig/protos/temporal/api/command/v1/message.rbs +0 -1399
  524. data/sig/protos/temporal/api/common/v1/message.rbs +0 -528
  525. data/sig/protos/temporal/api/enums/v1/batch_operation.rbs +0 -79
  526. data/sig/protos/temporal/api/enums/v1/command_type.rbs +0 -68
  527. data/sig/protos/temporal/api/enums/v1/common.rbs +0 -118
  528. data/sig/protos/temporal/api/enums/v1/event_type.rbs +0 -264
  529. data/sig/protos/temporal/api/enums/v1/failed_cause.rbs +0 -277
  530. data/sig/protos/temporal/api/enums/v1/namespace.rbs +0 -108
  531. data/sig/protos/temporal/api/enums/v1/query.rbs +0 -81
  532. data/sig/protos/temporal/api/enums/v1/reset.rbs +0 -44
  533. data/sig/protos/temporal/api/enums/v1/schedule.rbs +0 -72
  534. data/sig/protos/temporal/api/enums/v1/task_queue.rbs +0 -92
  535. data/sig/protos/temporal/api/enums/v1/update.rbs +0 -64
  536. data/sig/protos/temporal/api/enums/v1/workflow.rbs +0 -371
  537. data/sig/protos/temporal/api/errordetails/v1/message.rbs +0 -551
  538. data/sig/protos/temporal/api/failure/v1/message.rbs +0 -581
  539. data/sig/protos/temporal/api/filter/v1/message.rbs +0 -171
  540. data/sig/protos/temporal/api/history/v1/message.rbs +0 -4609
  541. data/sig/protos/temporal/api/namespace/v1/message.rbs +0 -410
  542. data/sig/protos/temporal/api/operatorservice/v1/request_response.rbs +0 -643
  543. data/sig/protos/temporal/api/operatorservice/v1/service.rbs +0 -17
  544. data/sig/protos/temporal/api/protocol/v1/message.rbs +0 -84
  545. data/sig/protos/temporal/api/query/v1/message.rbs +0 -182
  546. data/sig/protos/temporal/api/replication/v1/message.rbs +0 -148
  547. data/sig/protos/temporal/api/schedule/v1/message.rbs +0 -1488
  548. data/sig/protos/temporal/api/sdk/v1/task_complete_metadata.rbs +0 -110
  549. data/sig/protos/temporal/api/taskqueue/v1/message.rbs +0 -486
  550. data/sig/protos/temporal/api/testservice/v1/request_response.rbs +0 -249
  551. data/sig/protos/temporal/api/testservice/v1/service.rbs +0 -15
  552. data/sig/protos/temporal/api/update/v1/message.rbs +0 -489
  553. data/sig/protos/temporal/api/version/v1/message.rbs +0 -184
  554. data/sig/protos/temporal/api/workflow/v1/message.rbs +0 -824
  555. data/sig/protos/temporal/api/workflowservice/v1/request_response.rbs +0 -7250
  556. data/sig/protos/temporal/api/workflowservice/v1/service.rbs +0 -22
  557. data/sig/protos/temporal/sdk/core/activity_result/activity_result.rbs +0 -380
  558. data/sig/protos/temporal/sdk/core/activity_task/activity_task.rbs +0 -386
  559. data/sig/protos/temporal/sdk/core/child_workflow/child_workflow.rbs +0 -323
  560. data/sig/protos/temporal/sdk/core/common/common.rbs +0 -62
  561. data/sig/protos/temporal/sdk/core/core_interface.rbs +0 -101
  562. data/sig/protos/temporal/sdk/core/external_data/external_data.rbs +0 -119
  563. data/sig/protos/temporal/sdk/core/workflow_activation/workflow_activation.rbs +0 -1473
  564. data/sig/protos/temporal/sdk/core/workflow_commands/workflow_commands.rbs +0 -1784
  565. data/sig/protos/temporal/sdk/core/workflow_completion/workflow_completion.rbs +0 -180
  566. data/sig/ruby.rbs +0 -12
  567. data/sig/temporalio/activity/context.rbs +0 -29
  568. data/sig/temporalio/activity/info.rbs +0 -43
  569. data/sig/temporalio/activity.rbs +0 -19
  570. data/sig/temporalio/bridge/connect_options.rbs +0 -19
  571. data/sig/temporalio/bridge/error.rbs +0 -8
  572. data/sig/temporalio/bridge/retry_config.rbs +0 -21
  573. data/sig/temporalio/bridge/tls_options.rbs +0 -17
  574. data/sig/temporalio/bridge.rbs +0 -71
  575. data/sig/temporalio/client/implementation.rbs +0 -38
  576. data/sig/temporalio/client/workflow_handle.rbs +0 -41
  577. data/sig/temporalio/client.rbs +0 -35
  578. data/sig/temporalio/connection/retry_config.rbs +0 -37
  579. data/sig/temporalio/connection/service.rbs +0 -14
  580. data/sig/temporalio/connection/test_service.rbs +0 -13
  581. data/sig/temporalio/connection/tls_options.rbs +0 -43
  582. data/sig/temporalio/connection/workflow_service.rbs +0 -48
  583. data/sig/temporalio/connection.rbs +0 -30
  584. data/sig/temporalio/data_converter.rbs +0 -35
  585. data/sig/temporalio/error/failure.rbs +0 -121
  586. data/sig/temporalio/error/workflow_failure.rbs +0 -9
  587. data/sig/temporalio/errors.rbs +0 -36
  588. data/sig/temporalio/failure_converter/base.rbs +0 -12
  589. data/sig/temporalio/failure_converter/basic.rbs +0 -86
  590. data/sig/temporalio/failure_converter.rbs +0 -5
  591. data/sig/temporalio/interceptor/activity_inbound.rbs +0 -21
  592. data/sig/temporalio/interceptor/activity_outbound.rbs +0 -10
  593. data/sig/temporalio/interceptor/chain.rbs +0 -24
  594. data/sig/temporalio/interceptor/client.rbs +0 -148
  595. data/sig/temporalio/interceptor.rbs +0 -6
  596. data/sig/temporalio/payload_codec/base.rbs +0 -12
  597. data/sig/temporalio/payload_converter/base.rbs +0 -12
  598. data/sig/temporalio/payload_converter/bytes.rbs +0 -9
  599. data/sig/temporalio/payload_converter/composite.rbs +0 -19
  600. data/sig/temporalio/payload_converter/encoding_base.rbs +0 -14
  601. data/sig/temporalio/payload_converter/json.rbs +0 -9
  602. data/sig/temporalio/payload_converter/nil.rbs +0 -9
  603. data/sig/temporalio/payload_converter.rbs +0 -5
  604. data/sig/temporalio/retry_policy.rbs +0 -25
  605. data/sig/temporalio/retry_state.rbs +0 -20
  606. data/sig/temporalio/runtime.rbs +0 -12
  607. data/sig/temporalio/testing/time_skipping_handle.rbs +0 -15
  608. data/sig/temporalio/testing/time_skipping_interceptor.rbs +0 -13
  609. data/sig/temporalio/testing/workflow_environment.rbs +0 -22
  610. data/sig/temporalio/testing.rbs +0 -35
  611. data/sig/temporalio/timeout_type.rbs +0 -15
  612. data/sig/temporalio/version.rbs +0 -3
  613. data/sig/temporalio/worker/activity_runner.rbs +0 -35
  614. data/sig/temporalio/worker/activity_worker.rbs +0 -44
  615. data/sig/temporalio/worker/reactor.rbs +0 -22
  616. data/sig/temporalio/worker/runner.rbs +0 -21
  617. data/sig/temporalio/worker/sync_worker.rbs +0 -23
  618. data/sig/temporalio/worker/thread_pool_executor.rbs +0 -23
  619. data/sig/temporalio/worker.rbs +0 -46
  620. data/sig/temporalio/workflow/async.rbs +0 -9
  621. data/sig/temporalio/workflow/execution_info.rbs +0 -55
  622. data/sig/temporalio/workflow/execution_status.rbs +0 -21
  623. data/sig/temporalio/workflow/future.rbs +0 -40
  624. data/sig/temporalio/workflow/id_reuse_policy.rbs +0 -15
  625. data/sig/temporalio/workflow/info.rbs +0 -55
  626. data/sig/temporalio/workflow/query_reject_condition.rbs +0 -14
  627. data/sig/temporalio.rbs +0 -2
  628. data/sig/thermite_patch.rbs +0 -15
@@ -1,709 +0,0 @@
1
- //! This crate contains testing functionality that can be useful when building SDKs against Core,
2
- //! or even when testing workflows written in SDKs that use Core.
3
-
4
- #[macro_use]
5
- extern crate tracing;
6
-
7
- pub mod canned_histories;
8
- pub mod wf_input_saver;
9
- pub mod workflows;
10
-
11
- use crate::{
12
- stream::{Stream, TryStreamExt},
13
- wf_input_saver::stream_to_file,
14
- };
15
- use base64::{prelude::BASE64_STANDARD, Engine};
16
- use futures::{future, stream, stream::FuturesUnordered, StreamExt};
17
- use parking_lot::Mutex;
18
- use prost::Message;
19
- use rand::{distributions::Standard, Rng};
20
- use std::{
21
- convert::TryFrom, env, future::Future, net::SocketAddr, path::PathBuf, sync::Arc,
22
- time::Duration,
23
- };
24
- use temporal_client::{
25
- Client, RetryClient, WorkflowClientTrait, WorkflowExecutionInfo, WorkflowOptions,
26
- };
27
- use temporal_sdk::{
28
- interceptors::{FailOnNondeterminismInterceptor, WorkerInterceptor},
29
- IntoActivityFunc, Worker, WorkflowFunction,
30
- };
31
- use temporal_sdk_core::{
32
- ephemeral_server::{EphemeralExe, EphemeralExeVersion},
33
- init_replay_worker, init_worker,
34
- replay::HistoryForReplay,
35
- ClientOptions, ClientOptionsBuilder, CoreRuntime, WorkerConfig, WorkerConfigBuilder,
36
- };
37
- use temporal_sdk_core_api::errors::{PollActivityError, PollWfError};
38
- use temporal_sdk_core_api::{
39
- telemetry::{
40
- Logger, MetricsExporter, OtelCollectorOptions, TelemetryOptions, TelemetryOptionsBuilder,
41
- TraceExportConfig, TraceExporter,
42
- },
43
- Worker as CoreWorker,
44
- };
45
- use temporal_sdk_core_protos::{
46
- coresdk::{
47
- workflow_commands::{
48
- workflow_command, ActivityCancellationType, CompleteWorkflowExecution,
49
- ScheduleActivity, ScheduleLocalActivity, StartTimer,
50
- },
51
- workflow_completion::WorkflowActivationCompletion,
52
- },
53
- temporal::api::{common::v1::Payload, history::v1::History},
54
- DEFAULT_ACTIVITY_TYPE,
55
- };
56
- use tokio::sync::{mpsc::unbounded_channel, OnceCell};
57
- use url::Url;
58
-
59
- pub const NAMESPACE: &str = "default";
60
- pub const TEST_Q: &str = "q";
61
- /// The env var used to specify where the integ tests should point
62
- pub const INTEG_SERVER_TARGET_ENV_VAR: &str = "TEMPORAL_SERVICE_ADDRESS";
63
- /// This env var is set (to any value) if temporal CLI dev server is in use
64
- pub const INTEG_TEMPORAL_DEV_SERVER_USED_ENV_VAR: &str = "INTEG_TEMPORAL_DEV_SERVER_ON";
65
- /// This env var is set (to any value) if the test server is in use
66
- pub const INTEG_TEST_SERVER_USED_ENV_VAR: &str = "INTEG_TEST_SERVER_ON";
67
-
68
- /// If set, turn export traces and metrics to the OTel collector at the given URL
69
- const OTEL_URL_ENV_VAR: &str = "TEMPORAL_INTEG_OTEL_URL";
70
- /// If set, enable direct scraping of prom metrics on the specified port
71
- const PROM_ENABLE_ENV_VAR: &str = "TEMPORAL_INTEG_PROM_PORT";
72
- #[macro_export]
73
- macro_rules! prost_dur {
74
- ($dur_call:ident $args:tt) => {
75
- std::time::Duration::$dur_call$args
76
- .try_into()
77
- .expect("test duration fits")
78
- };
79
- }
80
-
81
- /// Create a worker instance which will use the provided test name to base the task queue and wf id
82
- /// upon. Returns the instance and the task queue name (which is also the workflow id).
83
- pub async fn init_core_and_create_wf(test_name: &str) -> CoreWfStarter {
84
- let mut starter = CoreWfStarter::new(test_name);
85
- let _ = starter.get_worker().await;
86
- starter.start_wf().await;
87
- starter
88
- }
89
-
90
- /// Create a worker replay instance preloaded with provided histories. Returns the worker impl.
91
- pub fn init_core_replay_preloaded<I>(test_name: &str, histories: I) -> Arc<dyn CoreWorker>
92
- where
93
- I: IntoIterator<Item = HistoryForReplay> + 'static,
94
- <I as IntoIterator>::IntoIter: Send,
95
- {
96
- init_core_replay_stream(test_name, stream::iter(histories))
97
- }
98
- pub fn init_core_replay_stream<I>(test_name: &str, histories: I) -> Arc<dyn CoreWorker>
99
- where
100
- I: Stream<Item = HistoryForReplay> + Send + 'static,
101
- {
102
- init_integ_telem();
103
- let worker_cfg = WorkerConfigBuilder::default()
104
- .namespace(NAMESPACE)
105
- .task_queue(test_name)
106
- .worker_build_id("test_bin_id")
107
- .build()
108
- .expect("Configuration options construct properly");
109
- let worker =
110
- init_replay_worker(worker_cfg, histories).expect("Replay worker must init properly");
111
- Arc::new(worker)
112
- }
113
- pub fn replay_sdk_worker<I>(histories: I) -> Worker
114
- where
115
- I: IntoIterator<Item = HistoryForReplay> + 'static,
116
- <I as IntoIterator>::IntoIter: Send,
117
- {
118
- replay_sdk_worker_stream(stream::iter(histories))
119
- }
120
- pub fn replay_sdk_worker_stream<I>(histories: I) -> Worker
121
- where
122
- I: Stream<Item = HistoryForReplay> + Send + 'static,
123
- {
124
- let core = init_core_replay_stream("replay_worker_test", histories);
125
- let mut worker = Worker::new_from_core(core, "replay_q".to_string());
126
- worker.set_worker_interceptor(Box::new(FailOnNondeterminismInterceptor {}));
127
- worker
128
- }
129
-
130
- /// Load history from a file containing the protobuf serialization of it
131
- pub async fn history_from_proto_binary(path_from_root: &str) -> Result<History, anyhow::Error> {
132
- let mut path = PathBuf::from(env!("CARGO_MANIFEST_DIR"));
133
- path.push("..");
134
- path.push(path_from_root);
135
- let bytes = tokio::fs::read(path).await?;
136
- Ok(History::decode(&*bytes)?)
137
- }
138
-
139
- static INTEG_TESTS_RT: once_cell::sync::OnceCell<CoreRuntime> = once_cell::sync::OnceCell::new();
140
- pub fn init_integ_telem() {
141
- INTEG_TESTS_RT.get_or_init(|| {
142
- let telemetry_options = get_integ_telem_options();
143
- let rt =
144
- CoreRuntime::new_assume_tokio(telemetry_options).expect("Core runtime inits cleanly");
145
- let _ = tracing::subscriber::set_global_default(rt.trace_subscriber());
146
- rt
147
- });
148
- }
149
-
150
- /// Implements a builder pattern to help integ tests initialize core and create workflows
151
- pub struct CoreWfStarter {
152
- /// Used for both the task queue and workflow id
153
- task_queue_name: String,
154
- pub worker_config: WorkerConfig,
155
- /// Options to use when starting workflow(s)
156
- pub workflow_options: WorkflowOptions,
157
- initted_worker: OnceCell<InitializedWorker>,
158
- }
159
- struct InitializedWorker {
160
- worker: Arc<dyn CoreWorker>,
161
- client: Arc<RetryClient<Client>>,
162
- }
163
-
164
- impl CoreWfStarter {
165
- pub fn new(test_name: &str) -> Self {
166
- init_integ_telem();
167
- let rand_bytes: Vec<u8> = rand::thread_rng().sample_iter(&Standard).take(6).collect();
168
- let task_q_salt = BASE64_STANDARD.encode(rand_bytes);
169
- let task_queue = format!("{test_name}_{task_q_salt}");
170
- Self {
171
- task_queue_name: task_queue.to_owned(),
172
- worker_config: WorkerConfigBuilder::default()
173
- .namespace(NAMESPACE)
174
- .task_queue(task_queue)
175
- .worker_build_id("test_build_id")
176
- .max_cached_workflows(1000_usize)
177
- .build()
178
- .unwrap(),
179
- initted_worker: OnceCell::new(),
180
- workflow_options: Default::default(),
181
- }
182
- }
183
-
184
- pub async fn worker(&mut self) -> TestWorker {
185
- let mut w = TestWorker::new(
186
- self.get_worker().await,
187
- self.worker_config.task_queue.clone(),
188
- );
189
- w.client = Some(self.get_client().await);
190
-
191
- w
192
- }
193
-
194
- pub async fn shutdown(&mut self) {
195
- self.get_worker().await.shutdown().await;
196
- }
197
-
198
- pub async fn get_worker(&mut self) -> Arc<dyn CoreWorker> {
199
- self.get_or_init().await.worker.clone()
200
- }
201
-
202
- pub async fn get_client(&mut self) -> Arc<RetryClient<Client>> {
203
- self.get_or_init().await.client.clone()
204
- }
205
-
206
- /// Start the workflow defined by the builder and return run id
207
- pub async fn start_wf(&mut self) -> String {
208
- self.start_wf_with_id(self.task_queue_name.clone()).await
209
- }
210
-
211
- pub async fn start_with_worker(
212
- &self,
213
- wf_name: impl Into<String>,
214
- worker: &mut TestWorker,
215
- ) -> String {
216
- worker
217
- .submit_wf(
218
- self.task_queue_name.clone(),
219
- wf_name.into(),
220
- vec![],
221
- self.workflow_options.clone(),
222
- )
223
- .await
224
- .unwrap()
225
- }
226
-
227
- pub async fn start_wf_with_id(&self, workflow_id: String) -> String {
228
- self.initted_worker
229
- .get()
230
- .expect(
231
- "Worker must be initted before starting a workflow.\
232
- Tests must call `get_worker` first.",
233
- )
234
- .client
235
- .start_workflow(
236
- vec![],
237
- self.worker_config.task_queue.clone(),
238
- workflow_id,
239
- self.task_queue_name.clone(),
240
- None,
241
- self.workflow_options.clone(),
242
- )
243
- .await
244
- .unwrap()
245
- .run_id
246
- }
247
-
248
- /// Fetch the history for the indicated workflow and replay it using the provided worker.
249
- /// Can be used after completing workflows normally to ensure replay works as well.
250
- pub async fn fetch_history_and_replay(
251
- &mut self,
252
- wf_id: impl Into<String>,
253
- run_id: impl Into<String>,
254
- worker: &mut Worker,
255
- ) -> Result<(), anyhow::Error> {
256
- let wf_id = wf_id.into();
257
- // Fetch history and replay it
258
- let history = self
259
- .get_client()
260
- .await
261
- .get_workflow_execution_history(wf_id.clone(), Some(run_id.into()), vec![])
262
- .await?
263
- .history
264
- .expect("history field must be populated");
265
- let with_id = HistoryForReplay::new(history, wf_id);
266
- let replay_worker = init_core_replay_preloaded(worker.task_queue(), [with_id]);
267
- worker.with_new_core_worker(replay_worker);
268
- worker.set_worker_interceptor(Box::new(FailOnNondeterminismInterceptor {}));
269
- worker.run().await.unwrap();
270
- Ok(())
271
- }
272
-
273
- pub fn get_task_queue(&self) -> &str {
274
- &self.worker_config.task_queue
275
- }
276
-
277
- pub fn get_wf_id(&self) -> &str {
278
- &self.task_queue_name
279
- }
280
-
281
- pub fn max_cached_workflows(&mut self, num: usize) -> &mut Self {
282
- self.worker_config.max_cached_workflows = num;
283
- self
284
- }
285
-
286
- pub fn max_wft(&mut self, max: usize) -> &mut Self {
287
- self.worker_config.max_outstanding_workflow_tasks = max;
288
- self
289
- }
290
-
291
- pub fn max_at(&mut self, max: usize) -> &mut Self {
292
- self.worker_config.max_outstanding_activities = max;
293
- self
294
- }
295
-
296
- pub fn max_local_at(&mut self, max: usize) -> &mut Self {
297
- self.worker_config.max_outstanding_local_activities = max;
298
- self
299
- }
300
-
301
- pub fn max_at_polls(&mut self, max: usize) -> &mut Self {
302
- self.worker_config.max_concurrent_at_polls = max;
303
- self
304
- }
305
-
306
- pub fn no_remote_activities(&mut self) -> &mut Self {
307
- self.worker_config.no_remote_activities = true;
308
- self
309
- }
310
-
311
- pub fn enable_wf_state_input_recording(&mut self) -> &mut Self {
312
- let (ser_tx, ser_rx) = unbounded_channel();
313
- let worker_cfg_clone = self.worker_config.clone();
314
- tokio::spawn(async move {
315
- stream_to_file(&worker_cfg_clone, ser_rx).await.unwrap();
316
- });
317
- self.worker_config.wf_state_inputs = Some(ser_tx);
318
- self
319
- }
320
-
321
- async fn get_or_init(&mut self) -> &InitializedWorker {
322
- self.initted_worker
323
- .get_or_init(|| async {
324
- let client = Arc::new(
325
- get_integ_server_options()
326
- .connect(self.worker_config.namespace.clone(), None, None)
327
- .await
328
- .expect("Must connect"),
329
- );
330
- let worker = init_worker(
331
- INTEG_TESTS_RT.get().unwrap(),
332
- self.worker_config.clone(),
333
- client.clone(),
334
- )
335
- .expect("Worker inits cleanly");
336
- InitializedWorker {
337
- worker: Arc::new(worker),
338
- client,
339
- }
340
- })
341
- .await
342
- }
343
- }
344
-
345
- /// Provides conveniences for running integ tests with the SDK (against real server or mocks)
346
- pub struct TestWorker {
347
- inner: Worker,
348
- pub core_worker: Arc<dyn CoreWorker>,
349
- client: Option<Arc<RetryClient<Client>>>,
350
- pub started_workflows: Mutex<Vec<WorkflowExecutionInfo>>,
351
- /// If set true (default), and a client is available, we will fetch workflow results to
352
- /// determine when they have all completed.
353
- pub fetch_results: bool,
354
- iceptor: Option<TestWorkerCompletionIceptor>,
355
- }
356
- impl TestWorker {
357
- /// Create a new test worker
358
- pub fn new(core_worker: Arc<dyn CoreWorker>, task_queue: impl Into<String>) -> Self {
359
- let inner = Worker::new_from_core(core_worker.clone(), task_queue);
360
- let iceptor = TestWorkerCompletionIceptor::new(
361
- TestWorkerShutdownCond::NoAutoShutdown,
362
- Arc::new(inner.shutdown_handle()),
363
- );
364
- Self {
365
- inner,
366
- core_worker,
367
- client: None,
368
- started_workflows: Mutex::new(vec![]),
369
- fetch_results: true,
370
- iceptor: Some(iceptor),
371
- }
372
- }
373
-
374
- pub fn inner_mut(&mut self) -> &mut Worker {
375
- &mut self.inner
376
- }
377
-
378
- // TODO: Maybe trait-ify?
379
- pub fn register_wf<F: Into<WorkflowFunction>>(
380
- &mut self,
381
- workflow_type: impl Into<String>,
382
- wf_function: F,
383
- ) {
384
- self.inner.register_wf(workflow_type, wf_function)
385
- }
386
-
387
- pub fn register_activity<A, R, O>(
388
- &mut self,
389
- activity_type: impl Into<String>,
390
- act_function: impl IntoActivityFunc<A, R, O>,
391
- ) {
392
- self.inner.register_activity(activity_type, act_function)
393
- }
394
-
395
- /// Create a workflow, asking the server to start it with the provided workflow ID and using the
396
- /// provided workflow function.
397
- ///
398
- /// Increments the expected Workflow run count.
399
- ///
400
- /// Returns the run id of the started workflow
401
- pub async fn submit_wf(
402
- &self,
403
- workflow_id: impl Into<String>,
404
- workflow_type: impl Into<String>,
405
- input: Vec<Payload>,
406
- options: WorkflowOptions,
407
- ) -> Result<String, anyhow::Error> {
408
- if let Some(c) = self.client.as_ref() {
409
- let wfid = workflow_id.into();
410
- let res = c
411
- .start_workflow(
412
- input,
413
- self.inner.task_queue().to_string(),
414
- wfid.clone(),
415
- workflow_type.into(),
416
- None,
417
- options,
418
- )
419
- .await?;
420
- self.started_workflows.lock().push(WorkflowExecutionInfo {
421
- namespace: c.namespace().to_string(),
422
- workflow_id: wfid,
423
- run_id: Some(res.run_id.clone()),
424
- });
425
- Ok(res.run_id)
426
- } else {
427
- Ok("fake_run_id".to_string())
428
- }
429
- }
430
-
431
- /// Runs until all expected workflows have completed
432
- pub async fn run_until_done(&mut self) -> Result<(), anyhow::Error> {
433
- self.run_until_done_intercepted(Option::<TestWorkerCompletionIceptor>::None)
434
- .await
435
- }
436
-
437
- /// See [Self::run_until_done], but allows configuration of some low-level interception.
438
- pub async fn run_until_done_intercepted(
439
- &mut self,
440
- interceptor: Option<impl WorkerInterceptor + 'static>,
441
- ) -> Result<(), anyhow::Error> {
442
- let mut iceptor = self.iceptor.take().unwrap();
443
- // Automatically use results-based complete detection if we have a client
444
- if self.fetch_results {
445
- if let Some(c) = self.client.clone() {
446
- iceptor.condition = TestWorkerShutdownCond::GetResults(
447
- std::mem::take(&mut self.started_workflows.lock()),
448
- c,
449
- );
450
- }
451
- }
452
- iceptor.next = interceptor.map(|i| Box::new(i) as Box<dyn WorkerInterceptor>);
453
- let get_results_waiter = iceptor.wait_all_wfs();
454
- self.inner.set_worker_interceptor(Box::new(iceptor));
455
- tokio::try_join!(self.inner.run(), get_results_waiter)?;
456
- Ok(())
457
- }
458
- }
459
-
460
- pub type BoxDynActivationHook = Box<dyn Fn(&WorkflowActivationCompletion)>;
461
-
462
- pub enum TestWorkerShutdownCond {
463
- GetResults(Vec<WorkflowExecutionInfo>, Arc<RetryClient<Client>>),
464
- NoAutoShutdown,
465
- }
466
- /// Implements calling the shutdown handle when the expected number of test workflows has completed
467
- pub struct TestWorkerCompletionIceptor {
468
- condition: TestWorkerShutdownCond,
469
- shutdown_handle: Arc<dyn Fn()>,
470
- every_activation: Option<BoxDynActivationHook>,
471
- next: Option<Box<dyn WorkerInterceptor>>,
472
- }
473
- impl TestWorkerCompletionIceptor {
474
- pub fn new(condition: TestWorkerShutdownCond, shutdown_handle: Arc<dyn Fn()>) -> Self {
475
- Self {
476
- condition,
477
- shutdown_handle,
478
- every_activation: None,
479
- next: None,
480
- }
481
- }
482
-
483
- fn wait_all_wfs(&mut self) -> impl Future<Output = Result<(), anyhow::Error>> + 'static {
484
- if let TestWorkerShutdownCond::GetResults(ref mut wfs, ref client) = self.condition {
485
- let wfs = std::mem::take(wfs);
486
- let shutdown_h = self.shutdown_handle.clone();
487
- let client = (**client).clone();
488
- let stream = stream::iter(
489
- wfs.into_iter()
490
- .map(move |info| info.bind_untyped(client.clone())),
491
- )
492
- .map(Ok);
493
- future::Either::Left(async move {
494
- stream
495
- .try_for_each_concurrent(None, |wh| async move {
496
- wh.get_workflow_result(Default::default()).await?;
497
- Ok::<_, anyhow::Error>(())
498
- })
499
- .await?;
500
- shutdown_h();
501
- Ok(())
502
- })
503
- } else {
504
- future::Either::Right(future::ready(Ok(())))
505
- }
506
- }
507
- }
508
- #[async_trait::async_trait(?Send)]
509
- impl WorkerInterceptor for TestWorkerCompletionIceptor {
510
- async fn on_workflow_activation_completion(&self, completion: &WorkflowActivationCompletion) {
511
- if let Some(func) = self.every_activation.as_ref() {
512
- func(completion);
513
- }
514
- if completion.has_execution_ending() {
515
- info!("Workflow {} says it's finishing", &completion.run_id);
516
- }
517
- if let Some(n) = self.next.as_ref() {
518
- n.on_workflow_activation_completion(completion).await;
519
- }
520
- }
521
-
522
- fn on_shutdown(&self, sdk_worker: &Worker) {
523
- if let Some(n) = self.next.as_ref() {
524
- n.on_shutdown(sdk_worker);
525
- }
526
- }
527
- }
528
-
529
- /// Returns the client options used to connect to the server used for integration tests.
530
- pub fn get_integ_server_options() -> ClientOptions {
531
- let temporal_server_address = match env::var(INTEG_SERVER_TARGET_ENV_VAR) {
532
- Ok(addr) => addr,
533
- Err(_) => "http://localhost:7233".to_owned(),
534
- };
535
- let url = Url::try_from(&*temporal_server_address).unwrap();
536
- ClientOptionsBuilder::default()
537
- .identity("integ_tester".to_string())
538
- .target_url(url)
539
- .client_name("temporal-core".to_string())
540
- .client_version("0.1.0".to_string())
541
- .build()
542
- .unwrap()
543
- }
544
-
545
- pub fn get_integ_telem_options() -> TelemetryOptions {
546
- let mut ob = TelemetryOptionsBuilder::default();
547
- let filter_string =
548
- env::var("RUST_LOG").unwrap_or_else(|_| "temporal_sdk_core=INFO".to_string());
549
- if let Some(url) = env::var(OTEL_URL_ENV_VAR)
550
- .ok()
551
- .map(|x| x.parse::<Url>().unwrap())
552
- {
553
- let opts = OtelCollectorOptions {
554
- url,
555
- headers: Default::default(),
556
- metric_periodicity: None,
557
- };
558
- ob.tracing(TraceExportConfig {
559
- filter: filter_string.clone(),
560
- exporter: TraceExporter::Otel(opts.clone()),
561
- });
562
- ob.metrics(MetricsExporter::Otel(opts));
563
- }
564
- if let Some(addr) = env::var(PROM_ENABLE_ENV_VAR)
565
- .ok()
566
- .map(|x| SocketAddr::new([127, 0, 0, 1].into(), x.parse().unwrap()))
567
- {
568
- ob.metrics(MetricsExporter::Prometheus(addr));
569
- }
570
- ob.logging(Logger::Console {
571
- filter: filter_string,
572
- })
573
- .build()
574
- .unwrap()
575
- }
576
-
577
- pub fn default_cached_download() -> EphemeralExe {
578
- EphemeralExe::CachedDownload {
579
- version: EphemeralExeVersion::SDKDefault {
580
- sdk_name: "sdk-rust".to_string(),
581
- sdk_version: "0.1.0".to_string(),
582
- },
583
- dest_dir: None,
584
- }
585
- }
586
-
587
- pub fn schedule_activity_cmd(
588
- seq: u32,
589
- task_q: &str,
590
- activity_id: &str,
591
- cancellation_type: ActivityCancellationType,
592
- activity_timeout: Duration,
593
- heartbeat_timeout: Duration,
594
- ) -> workflow_command::Variant {
595
- ScheduleActivity {
596
- seq,
597
- activity_id: activity_id.to_string(),
598
- activity_type: DEFAULT_ACTIVITY_TYPE.to_string(),
599
- task_queue: task_q.to_owned(),
600
- schedule_to_start_timeout: Some(activity_timeout.try_into().expect("duration fits")),
601
- start_to_close_timeout: Some(activity_timeout.try_into().expect("duration fits")),
602
- schedule_to_close_timeout: Some(activity_timeout.try_into().expect("duration fits")),
603
- heartbeat_timeout: Some(heartbeat_timeout.try_into().expect("duration fits")),
604
- cancellation_type: cancellation_type as i32,
605
- ..Default::default()
606
- }
607
- .into()
608
- }
609
-
610
- pub fn schedule_local_activity_cmd(
611
- seq: u32,
612
- activity_id: &str,
613
- cancellation_type: ActivityCancellationType,
614
- activity_timeout: Duration,
615
- ) -> workflow_command::Variant {
616
- ScheduleLocalActivity {
617
- seq,
618
- activity_id: activity_id.to_string(),
619
- activity_type: DEFAULT_ACTIVITY_TYPE.to_string(),
620
- schedule_to_start_timeout: Some(activity_timeout.try_into().expect("duration fits")),
621
- start_to_close_timeout: Some(activity_timeout.try_into().expect("duration fits")),
622
- schedule_to_close_timeout: Some(activity_timeout.try_into().expect("duration fits")),
623
- cancellation_type: cancellation_type as i32,
624
- ..Default::default()
625
- }
626
- .into()
627
- }
628
-
629
- pub fn start_timer_cmd(seq: u32, duration: Duration) -> workflow_command::Variant {
630
- StartTimer {
631
- seq,
632
- start_to_fire_timeout: Some(duration.try_into().expect("duration fits")),
633
- }
634
- .into()
635
- }
636
-
637
- /// Given a desired number of concurrent executions and a provided function that produces a future,
638
- /// run that many instances of the future concurrently.
639
- ///
640
- /// Annoyingly, because of a sorta-bug in the way async blocks work, the async block produced by
641
- /// the closure must be `async move` if it uses the provided iteration number. On the plus side,
642
- /// since you're usually just accessing core in the closure, if core is a reference everything just
643
- /// works. See <https://github.com/rust-lang/rust/issues/81653>
644
- pub async fn fanout_tasks<FutureMaker, Fut>(num: usize, fm: FutureMaker)
645
- where
646
- FutureMaker: Fn(usize) -> Fut,
647
- Fut: Future,
648
- {
649
- let mut tasks = FuturesUnordered::new();
650
- for i in 0..num {
651
- tasks.push(fm(i));
652
- }
653
-
654
- while tasks.next().await.is_some() {}
655
- }
656
-
657
- #[async_trait::async_trait]
658
- pub trait WorkerTestHelpers {
659
- async fn complete_execution(&self, run_id: &str);
660
- async fn complete_timer(&self, run_id: &str, seq: u32, duration: Duration);
661
- }
662
-
663
- #[async_trait::async_trait]
664
- impl<T> WorkerTestHelpers for T
665
- where
666
- T: CoreWorker + ?Sized,
667
- {
668
- async fn complete_execution(&self, run_id: &str) {
669
- self.complete_workflow_activation(WorkflowActivationCompletion::from_cmds(
670
- run_id.to_string(),
671
- vec![CompleteWorkflowExecution { result: None }.into()],
672
- ))
673
- .await
674
- .unwrap();
675
- }
676
-
677
- async fn complete_timer(&self, run_id: &str, seq: u32, duration: Duration) {
678
- self.complete_workflow_activation(WorkflowActivationCompletion::from_cmds(
679
- run_id.to_string(),
680
- vec![StartTimer {
681
- seq,
682
- start_to_fire_timeout: Some(duration.try_into().expect("duration fits")),
683
- }
684
- .into()],
685
- ))
686
- .await
687
- .unwrap();
688
- }
689
- }
690
-
691
- /// Initiate shutdown, drain the pollers, and wait for shutdown to complete.
692
- pub async fn drain_pollers_and_shutdown(worker: &Arc<dyn CoreWorker>) {
693
- worker.initiate_shutdown();
694
- tokio::join!(
695
- async {
696
- assert!(matches!(
697
- worker.poll_activity_task().await.unwrap_err(),
698
- PollActivityError::ShutDown
699
- ));
700
- },
701
- async {
702
- assert!(matches!(
703
- worker.poll_workflow_activation().await.unwrap_err(),
704
- PollWfError::ShutDown,
705
- ));
706
- }
707
- );
708
- worker.shutdown().await;
709
- }