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,902 +0,0 @@
1
- use anyhow::anyhow;
2
- use assert_matches::assert_matches;
3
- use std::time::Duration;
4
- use temporal_client::{WfClientExt, WorkflowClientTrait, WorkflowExecutionResult, WorkflowOptions};
5
- use temporal_sdk::{
6
- ActContext, ActExitValue, ActivityOptions, CancellableFuture, WfContext, WorkflowResult,
7
- };
8
- use temporal_sdk_core_protos::{
9
- coresdk::{
10
- activity_result::{
11
- self, activity_resolution as act_res, ActivityExecutionResult, ActivityResolution,
12
- },
13
- activity_task::activity_task as act_task,
14
- workflow_activation::{
15
- workflow_activation_job, FireTimer, ResolveActivity, WorkflowActivationJob,
16
- },
17
- workflow_commands::{ActivityCancellationType, RequestCancelActivity, StartTimer},
18
- workflow_completion::WorkflowActivationCompletion,
19
- ActivityHeartbeat, ActivityTaskCompletion, AsJsonPayloadExt, FromJsonPayloadExt,
20
- IntoCompletion,
21
- },
22
- temporal::api::{
23
- common::v1::{ActivityType, Payload, Payloads},
24
- enums::v1::RetryState,
25
- failure::v1::{failure::FailureInfo, ActivityFailureInfo, Failure},
26
- },
27
- TaskToken, DEFAULT_ACTIVITY_TYPE,
28
- };
29
- use temporal_sdk_core_test_utils::{
30
- drain_pollers_and_shutdown, init_core_and_create_wf, schedule_activity_cmd, CoreWfStarter,
31
- WorkerTestHelpers,
32
- };
33
- use tokio::time::sleep;
34
-
35
- pub async fn one_activity_wf(ctx: WfContext) -> WorkflowResult<()> {
36
- ctx.activity(ActivityOptions {
37
- activity_type: "echo_activity".to_string(),
38
- start_to_close_timeout: Some(Duration::from_secs(5)),
39
- input: "hi!".as_json_payload().expect("serializes fine"),
40
- ..Default::default()
41
- })
42
- .await;
43
- Ok(().into())
44
- }
45
-
46
- #[tokio::test]
47
- async fn one_activity() {
48
- let wf_name = "one_activity";
49
- let mut starter = CoreWfStarter::new(wf_name);
50
- let mut worker = starter.worker().await;
51
- let client = starter.get_client().await;
52
- worker.register_wf(wf_name.to_owned(), one_activity_wf);
53
- worker.register_activity(
54
- "echo_activity",
55
- |_ctx: ActContext, echo_me: String| async move { Ok(echo_me) },
56
- );
57
-
58
- let run_id = worker
59
- .submit_wf(
60
- wf_name.to_owned(),
61
- wf_name.to_owned(),
62
- vec![],
63
- WorkflowOptions::default(),
64
- )
65
- .await
66
- .unwrap();
67
- worker.run_until_done().await.unwrap();
68
- let handle = client.get_untyped_workflow_handle(wf_name, run_id);
69
- let res = handle
70
- .get_workflow_result(Default::default())
71
- .await
72
- .unwrap();
73
- assert_matches!(res, WorkflowExecutionResult::Succeeded(_));
74
- }
75
-
76
- #[tokio::test]
77
- async fn activity_workflow() {
78
- let mut starter = init_core_and_create_wf("activity_workflow").await;
79
- let core = starter.get_worker().await;
80
- let task_q = starter.get_task_queue();
81
- let activity_id = "act-1";
82
- let task = core.poll_workflow_activation().await.unwrap();
83
- // Complete workflow task and schedule activity
84
- core.complete_workflow_activation(
85
- schedule_activity_cmd(
86
- 0,
87
- task_q,
88
- activity_id,
89
- ActivityCancellationType::TryCancel,
90
- Duration::from_secs(60),
91
- Duration::from_secs(60),
92
- )
93
- .into_completion(task.run_id),
94
- )
95
- .await
96
- .unwrap();
97
- // Poll activity and verify that it's been scheduled with correct parameters
98
- let task = core.poll_activity_task().await.unwrap();
99
- assert_matches!(
100
- task.variant,
101
- Some(act_task::Variant::Start(start_activity)) => {
102
- assert_eq!(start_activity.activity_type, DEFAULT_ACTIVITY_TYPE.to_string())
103
- }
104
- );
105
- let response_payload = Payload {
106
- data: b"hello ".to_vec(),
107
- metadata: Default::default(),
108
- };
109
- // Complete activity successfully.
110
- core.complete_activity_task(ActivityTaskCompletion {
111
- task_token: task.task_token,
112
- result: Some(ActivityExecutionResult::ok(response_payload.clone())),
113
- })
114
- .await
115
- .unwrap();
116
- // Poll workflow task and verify that activity has succeeded.
117
- let task = core.poll_workflow_activation().await.unwrap();
118
- assert_matches!(
119
- task.jobs.as_slice(),
120
- [
121
- WorkflowActivationJob {
122
- variant: Some(workflow_activation_job::Variant::ResolveActivity(
123
- ResolveActivity {seq, result: Some(ActivityResolution{
124
- status: Some(
125
- act_res::Status::Completed(activity_result::Success{result: Some(r)})),
126
- ..
127
- })}
128
- )),
129
- },
130
- ] => {
131
- assert_eq!(*seq, 0);
132
- assert_eq!(r, &response_payload);
133
- }
134
- );
135
- core.complete_execution(&task.run_id).await;
136
- }
137
-
138
- #[tokio::test]
139
- async fn activity_non_retryable_failure() {
140
- let mut starter = init_core_and_create_wf("activity_non_retryable_failure").await;
141
- let core = starter.get_worker().await;
142
- let task_q = starter.get_task_queue();
143
- let activity_id = "act-1";
144
- let task = core.poll_workflow_activation().await.unwrap();
145
- // Complete workflow task and schedule activity
146
- core.complete_workflow_activation(
147
- schedule_activity_cmd(
148
- 0,
149
- task_q,
150
- activity_id,
151
- ActivityCancellationType::TryCancel,
152
- Duration::from_secs(60),
153
- Duration::from_secs(60),
154
- )
155
- .into_completion(task.run_id),
156
- )
157
- .await
158
- .unwrap();
159
- // Poll activity and verify that it's been scheduled
160
- let task = core.poll_activity_task().await.unwrap();
161
- assert_matches!(task.variant, Some(act_task::Variant::Start(_)));
162
- // Fail activity with non-retryable error
163
- let failure = Failure::application_failure("activity failed".to_string(), true);
164
- core.complete_activity_task(ActivityTaskCompletion {
165
- task_token: task.task_token,
166
- result: Some(ActivityExecutionResult::fail(failure.clone())),
167
- })
168
- .await
169
- .unwrap();
170
- // Poll workflow task and verify that activity has failed.
171
- let task = core.poll_workflow_activation().await.unwrap();
172
- assert_matches!(
173
- task.jobs.as_slice(),
174
- [
175
- WorkflowActivationJob {
176
- variant: Some(workflow_activation_job::Variant::ResolveActivity(
177
- ResolveActivity {seq, result: Some(ActivityResolution{
178
- status: Some(act_res::Status::Failed(activity_result::Failure{
179
- failure: Some(f),
180
- }))})}
181
- )),
182
- },
183
- ] => {
184
- assert_eq!(*seq, 0);
185
- assert_eq!(f, &Failure{
186
- message: "Activity task failed".to_owned(),
187
- cause: Some(Box::new(failure)),
188
- failure_info: Some(FailureInfo::ActivityFailureInfo(ActivityFailureInfo{
189
- activity_id: "act-1".to_owned(),
190
- activity_type: Some(ActivityType {
191
- name: DEFAULT_ACTIVITY_TYPE.to_owned(),
192
- }),
193
- scheduled_event_id: 5,
194
- started_event_id: 6,
195
- identity: "integ_tester".to_owned(),
196
- retry_state: RetryState::NonRetryableFailure as i32,
197
- })),
198
- ..Default::default()
199
- });
200
- }
201
- );
202
- core.complete_execution(&task.run_id).await;
203
- }
204
-
205
- #[tokio::test]
206
- async fn activity_non_retryable_failure_with_error() {
207
- let mut starter = init_core_and_create_wf("activity_non_retryable_failure").await;
208
- let core = starter.get_worker().await;
209
- let task_q = starter.get_task_queue();
210
- let activity_id = "act-1";
211
- let task = core.poll_workflow_activation().await.unwrap();
212
- // Complete workflow task and schedule activity
213
- core.complete_workflow_activation(
214
- schedule_activity_cmd(
215
- 0,
216
- task_q,
217
- activity_id,
218
- ActivityCancellationType::TryCancel,
219
- Duration::from_secs(60),
220
- Duration::from_secs(60),
221
- )
222
- .into_completion(task.run_id),
223
- )
224
- .await
225
- .unwrap();
226
- // Poll activity and verify that it's been scheduled
227
- let task = core.poll_activity_task().await.unwrap();
228
- assert_matches!(task.variant, Some(act_task::Variant::Start(_)));
229
- // Fail activity with non-retryable error
230
- let failure = Failure::application_failure_from_error(anyhow!("activity failed"), true);
231
- core.complete_activity_task(ActivityTaskCompletion {
232
- task_token: task.task_token,
233
- result: Some(ActivityExecutionResult::fail(failure.clone())),
234
- })
235
- .await
236
- .unwrap();
237
- // Poll workflow task and verify that activity has failed.
238
- let task = core.poll_workflow_activation().await.unwrap();
239
- assert_matches!(
240
- task.jobs.as_slice(),
241
- [
242
- WorkflowActivationJob {
243
- variant: Some(workflow_activation_job::Variant::ResolveActivity(
244
- ResolveActivity {seq, result: Some(ActivityResolution{
245
- status: Some(act_res::Status::Failed(activity_result::Failure{
246
- failure: Some(f),
247
- }))})}
248
- )),
249
- },
250
- ] => {
251
- assert_eq!(*seq, 0);
252
- assert_eq!(f, &Failure{
253
- message: "Activity task failed".to_owned(),
254
- cause: Some(Box::new(failure)),
255
- failure_info: Some(FailureInfo::ActivityFailureInfo(ActivityFailureInfo{
256
- activity_id: "act-1".to_owned(),
257
- activity_type: Some(ActivityType {
258
- name: DEFAULT_ACTIVITY_TYPE.to_owned(),
259
- }),
260
- scheduled_event_id: 5,
261
- started_event_id: 6,
262
- identity: "integ_tester".to_owned(),
263
- retry_state: RetryState::NonRetryableFailure as i32,
264
- })),
265
- ..Default::default()
266
- });
267
- }
268
- );
269
- core.complete_execution(&task.run_id).await;
270
- }
271
-
272
- #[tokio::test]
273
- async fn activity_retry() {
274
- let mut starter = init_core_and_create_wf("activity_retry").await;
275
- let core = starter.get_worker().await;
276
- let task_q = starter.get_task_queue();
277
- let activity_id = "act-1";
278
- let task = core.poll_workflow_activation().await.unwrap();
279
- // Complete workflow task and schedule activity
280
- core.complete_workflow_activation(
281
- schedule_activity_cmd(
282
- 0,
283
- task_q,
284
- activity_id,
285
- ActivityCancellationType::TryCancel,
286
- Duration::from_secs(60),
287
- Duration::from_secs(60),
288
- )
289
- .into_completion(task.run_id),
290
- )
291
- .await
292
- .unwrap();
293
- // Poll activity 1st time
294
- let task = core.poll_activity_task().await.unwrap();
295
- assert_matches!(task.variant, Some(act_task::Variant::Start(_)));
296
- // Fail activity with retryable error
297
- let failure = Failure::application_failure("activity failed".to_string(), false);
298
- core.complete_activity_task(ActivityTaskCompletion {
299
- task_token: task.task_token,
300
- result: Some(ActivityExecutionResult::fail(failure)),
301
- })
302
- .await
303
- .unwrap();
304
- // Poll 2nd time
305
- let task = core.poll_activity_task().await.unwrap();
306
- assert_matches!(task.variant, Some(act_task::Variant::Start(_)));
307
- // Complete activity successfully
308
- let response_payload = Payload {
309
- data: b"hello ".to_vec(),
310
- metadata: Default::default(),
311
- };
312
- core.complete_activity_task(ActivityTaskCompletion {
313
- task_token: task.task_token,
314
- result: Some(ActivityExecutionResult::ok(response_payload.clone())),
315
- })
316
- .await
317
- .unwrap();
318
- // Poll workflow task and verify activity has succeeded.
319
- let task = core.poll_workflow_activation().await.unwrap();
320
- assert_matches!(
321
- task.jobs.as_slice(),
322
- [
323
- WorkflowActivationJob {
324
- variant: Some(workflow_activation_job::Variant::ResolveActivity(
325
- ResolveActivity {seq, result: Some(ActivityResolution{
326
- status: Some(act_res::Status::Completed(activity_result::Success{result: Some(r)}))})}
327
- )),
328
- },
329
- ] => {
330
- assert_eq!(*seq, 0);
331
- assert_eq!(r, &response_payload);
332
- }
333
- );
334
- core.complete_execution(&task.run_id).await;
335
- }
336
-
337
- #[tokio::test]
338
- async fn activity_cancellation_try_cancel() {
339
- let mut starter = init_core_and_create_wf("activity_cancellation_try_cancel").await;
340
- let core = starter.get_worker().await;
341
- let task_q = starter.get_task_queue();
342
- let activity_id = "act-1";
343
- let task = core.poll_workflow_activation().await.unwrap();
344
- // Complete workflow task and schedule activity and a timer that fires immediately
345
- core.complete_workflow_activation(
346
- vec![
347
- schedule_activity_cmd(
348
- 0,
349
- task_q,
350
- activity_id,
351
- ActivityCancellationType::TryCancel,
352
- Duration::from_secs(60),
353
- Duration::from_secs(60),
354
- ),
355
- StartTimer {
356
- seq: 1,
357
- start_to_fire_timeout: Some(prost_dur!(from_millis(50))),
358
- }
359
- .into(),
360
- ]
361
- .into_completion(task.run_id),
362
- )
363
- .await
364
- .unwrap();
365
- // Poll activity and verify that it's been scheduled, we don't expect to complete it in this
366
- // test as activity is try-cancelled.
367
- let activity_task = core.poll_activity_task().await.unwrap();
368
- assert_matches!(activity_task.variant, Some(act_task::Variant::Start(_)));
369
- // Poll workflow task and verify that activity has failed.
370
- let task = core.poll_workflow_activation().await.unwrap();
371
- assert_matches!(
372
- task.jobs.as_slice(),
373
- [
374
- WorkflowActivationJob {
375
- variant: Some(workflow_activation_job::Variant::FireTimer(
376
- FireTimer { seq }
377
- )),
378
- },
379
- ] => {
380
- assert_eq!(*seq, 1);
381
- }
382
- );
383
- core.complete_workflow_activation(WorkflowActivationCompletion::from_cmds(
384
- task.run_id,
385
- vec![RequestCancelActivity { seq: 0 }.into()],
386
- ))
387
- .await
388
- .unwrap();
389
- let task = core.poll_workflow_activation().await.unwrap();
390
- core.complete_execution(&task.run_id).await;
391
- }
392
-
393
- #[tokio::test]
394
- async fn activity_cancellation_plus_complete_doesnt_double_resolve() {
395
- let mut starter =
396
- init_core_and_create_wf("activity_cancellation_plus_complete_doesnt_double_resolve").await;
397
- let core = starter.get_worker().await;
398
- let task_q = starter.get_task_queue();
399
- let activity_id = "act-1";
400
- let task = core.poll_workflow_activation().await.unwrap();
401
- // Complete workflow task and schedule activity and a timer that fires immediately
402
- core.complete_workflow_activation(
403
- vec![
404
- schedule_activity_cmd(
405
- 0,
406
- task_q,
407
- activity_id,
408
- ActivityCancellationType::TryCancel,
409
- Duration::from_secs(60),
410
- Duration::from_secs(60),
411
- ),
412
- StartTimer {
413
- seq: 1,
414
- start_to_fire_timeout: Some(prost_dur!(from_millis(50))),
415
- }
416
- .into(),
417
- ]
418
- .into_completion(task.run_id),
419
- )
420
- .await
421
- .unwrap();
422
- let activity_task = core.poll_activity_task().await.unwrap();
423
- assert_matches!(activity_task.variant, Some(act_task::Variant::Start(_)));
424
- let task = core.poll_workflow_activation().await.unwrap();
425
- assert_matches!(
426
- task.jobs.as_slice(),
427
- [WorkflowActivationJob {
428
- variant: Some(workflow_activation_job::Variant::FireTimer(_)),
429
- }]
430
- );
431
- core.complete_workflow_activation(WorkflowActivationCompletion::from_cmds(
432
- task.run_id,
433
- vec![RequestCancelActivity { seq: 0 }.into()],
434
- ))
435
- .await
436
- .unwrap();
437
- let task = core.poll_workflow_activation().await.unwrap();
438
- // Should get cancel task
439
- assert_matches!(
440
- task.jobs.as_slice(),
441
- [WorkflowActivationJob {
442
- variant: Some(workflow_activation_job::Variant::ResolveActivity(
443
- ResolveActivity {
444
- result: Some(ActivityResolution {
445
- status: Some(act_res::Status::Cancelled(_))
446
- }),
447
- ..
448
- }
449
- )),
450
- }]
451
- );
452
- // We need to complete the wf task to send the activity cancel command to the server, so start
453
- // another short timer
454
- core.complete_workflow_activation(WorkflowActivationCompletion::from_cmds(
455
- task.run_id,
456
- vec![StartTimer {
457
- seq: 2,
458
- start_to_fire_timeout: Some(prost_dur!(from_millis(100))),
459
- }
460
- .into()],
461
- ))
462
- .await
463
- .unwrap();
464
- // Now say the activity completes anyways
465
- core.complete_activity_task(ActivityTaskCompletion {
466
- task_token: activity_task.task_token,
467
- result: Some(ActivityExecutionResult::ok([1].into())),
468
- })
469
- .await
470
- .unwrap();
471
- // Ensure we do not get a wakeup with the activity being resolved completed, and instead get
472
- // the timer fired event (also wait for timer to fire)
473
- sleep(Duration::from_secs(1)).await;
474
- let task = core.poll_workflow_activation().await.unwrap();
475
- assert_matches!(
476
- task.jobs.as_slice(),
477
- [WorkflowActivationJob {
478
- variant: Some(workflow_activation_job::Variant::FireTimer(_)),
479
- }]
480
- );
481
- core.complete_execution(&task.run_id).await;
482
- }
483
-
484
- #[tokio::test]
485
- async fn started_activity_timeout() {
486
- let mut starter = init_core_and_create_wf("started_activity_timeout").await;
487
- let core = starter.get_worker().await;
488
- let task_q = starter.get_task_queue();
489
- let activity_id = "act-1";
490
- let task = core.poll_workflow_activation().await.unwrap();
491
- // Complete workflow task and schedule activity that times out in 1 second.
492
- core.complete_workflow_activation(
493
- schedule_activity_cmd(
494
- 0,
495
- task_q,
496
- activity_id,
497
- ActivityCancellationType::TryCancel,
498
- Duration::from_secs(1),
499
- Duration::from_secs(60),
500
- )
501
- .into_completion(task.run_id),
502
- )
503
- .await
504
- .unwrap();
505
- // Poll activity and verify that it's been scheduled, we don't expect to complete it in this
506
- // test as activity is timed out after 1 second.
507
- let activity_task = core.poll_activity_task().await.unwrap();
508
- assert_matches!(activity_task.variant, Some(act_task::Variant::Start(_)));
509
- let task = core.poll_workflow_activation().await.unwrap();
510
- assert_matches!(
511
- task.jobs.as_slice(),
512
- [
513
- WorkflowActivationJob {
514
- variant: Some(workflow_activation_job::Variant::ResolveActivity(
515
- ResolveActivity {
516
- seq,
517
- result: Some(ActivityResolution{
518
- status: Some(
519
- act_res::Status::Failed(
520
- activity_result::Failure{failure: Some(_)}
521
- )
522
- ),
523
- ..
524
- })
525
- }
526
- )),
527
- },
528
- ] => {
529
- assert_eq!(*seq, 0);
530
- }
531
- );
532
- core.complete_execution(&task.run_id).await;
533
- }
534
-
535
- #[tokio::test]
536
- async fn activity_cancellation_wait_cancellation_completed() {
537
- let mut starter =
538
- init_core_and_create_wf("activity_cancellation_wait_cancellation_completed").await;
539
- let core = starter.get_worker().await;
540
- let task_q = starter.get_task_queue();
541
- let activity_id = "act-1";
542
- let task = core.poll_workflow_activation().await.unwrap();
543
- // Complete workflow task and schedule activity and a timer that fires immediately
544
- core.complete_workflow_activation(
545
- vec![
546
- schedule_activity_cmd(
547
- 0,
548
- task_q,
549
- activity_id,
550
- ActivityCancellationType::WaitCancellationCompleted,
551
- Duration::from_secs(60),
552
- Duration::from_secs(60),
553
- ),
554
- StartTimer {
555
- seq: 1,
556
- start_to_fire_timeout: Some(prost_dur!(from_millis(50))),
557
- }
558
- .into(),
559
- ]
560
- .into_completion(task.run_id),
561
- )
562
- .await
563
- .unwrap();
564
- // Poll activity and verify that it's been scheduled, we don't expect to complete it in this
565
- // test as activity is wait-cancelled.
566
- let activity_task = core.poll_activity_task().await.unwrap();
567
- assert_matches!(activity_task.variant, Some(act_task::Variant::Start(_)));
568
- // Poll workflow task and verify that activity has failed.
569
- let task = core.poll_workflow_activation().await.unwrap();
570
- assert_matches!(
571
- task.jobs.as_slice(),
572
- [
573
- WorkflowActivationJob {
574
- variant: Some(workflow_activation_job::Variant::FireTimer(
575
- FireTimer { seq }
576
- )),
577
- },
578
- ] => {
579
- assert_eq!(*seq, 1);
580
- }
581
- );
582
- core.complete_workflow_activation(WorkflowActivationCompletion::from_cmds(
583
- task.run_id,
584
- vec![RequestCancelActivity { seq: 0 }.into()],
585
- ))
586
- .await
587
- .unwrap();
588
- core.complete_activity_task(ActivityTaskCompletion {
589
- task_token: activity_task.task_token,
590
- result: Some(ActivityExecutionResult::cancel_from_details(None)),
591
- })
592
- .await
593
- .unwrap();
594
- let task = core.poll_workflow_activation().await.unwrap();
595
- core.complete_execution(&task.run_id).await;
596
- }
597
-
598
- #[tokio::test]
599
- async fn activity_cancellation_abandon() {
600
- let mut starter = init_core_and_create_wf("activity_cancellation_abandon").await;
601
- let core = starter.get_worker().await;
602
- let task_q = starter.get_task_queue();
603
- let activity_id = "act-1";
604
- let task = core.poll_workflow_activation().await.unwrap();
605
- // Complete workflow task and schedule activity and a timer that fires immediately
606
- core.complete_workflow_activation(
607
- vec![
608
- schedule_activity_cmd(
609
- 0,
610
- task_q,
611
- activity_id,
612
- ActivityCancellationType::Abandon,
613
- Duration::from_secs(60),
614
- Duration::from_secs(60),
615
- ),
616
- StartTimer {
617
- seq: 1,
618
- start_to_fire_timeout: Some(prost_dur!(from_millis(50))),
619
- }
620
- .into(),
621
- ]
622
- .into_completion(task.run_id),
623
- )
624
- .await
625
- .unwrap();
626
- // Poll activity and verify that it's been scheduled, we don't expect to complete it in this
627
- // test as activity is abandoned.
628
- let activity_task = core.poll_activity_task().await.unwrap();
629
- assert_matches!(activity_task.variant, Some(act_task::Variant::Start(_)));
630
- // Poll workflow task and verify that activity has failed.
631
- let task = core.poll_workflow_activation().await.unwrap();
632
- assert_matches!(
633
- task.jobs.as_slice(),
634
- [
635
- WorkflowActivationJob {
636
- variant: Some(workflow_activation_job::Variant::FireTimer(
637
- FireTimer { seq }
638
- )),
639
- },
640
- ] => {
641
- assert_eq!(*seq, 1);
642
- }
643
- );
644
- core.complete_workflow_activation(WorkflowActivationCompletion::from_cmds(
645
- task.run_id,
646
- vec![RequestCancelActivity { seq: 0 }.into()],
647
- ))
648
- .await
649
- .unwrap();
650
- // Poll workflow task expecting that activation has been created by the state machine
651
- // immediately after the cancellation request.
652
- let task = core.poll_workflow_activation().await.unwrap();
653
- core.complete_execution(&task.run_id).await;
654
- }
655
-
656
- #[tokio::test]
657
- async fn async_activity_completion_workflow() {
658
- let mut starter = init_core_and_create_wf("async_activity_workflow").await;
659
- let core = starter.get_worker().await;
660
- let task_q = starter.get_task_queue();
661
- let activity_id = "act-1";
662
- let task = core.poll_workflow_activation().await.unwrap();
663
- // Complete workflow task and schedule activity
664
- core.complete_workflow_activation(
665
- schedule_activity_cmd(
666
- 0,
667
- task_q,
668
- activity_id,
669
- ActivityCancellationType::TryCancel,
670
- Duration::from_secs(60),
671
- Duration::from_secs(60),
672
- )
673
- .into_completion(task.run_id),
674
- )
675
- .await
676
- .unwrap();
677
- // Poll activity and verify that it's been scheduled
678
- let task = core.poll_activity_task().await.unwrap();
679
- assert_matches!(task.variant, Some(act_task::Variant::Start(_)));
680
- let response_payload = Payload {
681
- data: b"hello ".to_vec(),
682
- metadata: Default::default(),
683
- };
684
- // Complete activity asynchronously.
685
- core.complete_activity_task(ActivityTaskCompletion {
686
- task_token: task.task_token.clone(),
687
- result: Some(ActivityExecutionResult::will_complete_async()),
688
- })
689
- .await
690
- .unwrap();
691
- starter
692
- .get_client()
693
- .await
694
- .complete_activity_task(
695
- task.task_token.into(),
696
- Some(Payloads {
697
- payloads: vec![response_payload.clone()],
698
- }),
699
- )
700
- .await
701
- .unwrap();
702
-
703
- // Poll workflow task and verify that activity has succeeded.
704
- let task = core.poll_workflow_activation().await.unwrap();
705
- assert_matches!(
706
- task.jobs.as_slice(),
707
- [
708
- WorkflowActivationJob {
709
- variant: Some(workflow_activation_job::Variant::ResolveActivity(
710
- ResolveActivity {seq, result: Some(ActivityResolution {
711
- status: Some(act_res::Status::Completed(activity_result::Success{result: Some(r)})),
712
- ..})}
713
- )),
714
- },
715
- ] => {
716
- assert_eq!(*seq, 0);
717
- assert_eq!(r, &response_payload);
718
- }
719
- );
720
- core.complete_execution(&task.run_id).await;
721
- }
722
-
723
- #[tokio::test]
724
- async fn activity_cancelled_after_heartbeat_times_out() {
725
- let mut starter = init_core_and_create_wf("activity_cancelled_after_heartbeat_times_out").await;
726
- let core = starter.get_worker().await;
727
- let task_q = starter.get_task_queue().to_string();
728
- let activity_id = "act-1";
729
- let task = core.poll_workflow_activation().await.unwrap();
730
- // Complete workflow task and schedule activity
731
- core.complete_workflow_activation(
732
- schedule_activity_cmd(
733
- 0,
734
- &task_q,
735
- activity_id,
736
- ActivityCancellationType::WaitCancellationCompleted,
737
- Duration::from_secs(60),
738
- Duration::from_secs(1),
739
- )
740
- .into_completion(task.run_id),
741
- )
742
- .await
743
- .unwrap();
744
- // Poll activity and verify that it's been scheduled
745
- let task = core.poll_activity_task().await.unwrap();
746
- assert_matches!(task.variant, Some(act_task::Variant::Start(_)));
747
- // Delay the heartbeat
748
- sleep(Duration::from_secs(2)).await;
749
- core.record_activity_heartbeat(ActivityHeartbeat {
750
- task_token: task.task_token.clone(),
751
- details: vec![],
752
- });
753
-
754
- // Verify activity got cancelled
755
- let cancel_task = core.poll_activity_task().await.unwrap();
756
- assert_eq!(cancel_task.task_token, task.task_token.clone());
757
- assert_matches!(cancel_task.variant, Some(act_task::Variant::Cancel(_)));
758
-
759
- // Complete activity with cancelled result
760
- core.complete_activity_task(ActivityTaskCompletion {
761
- task_token: task.task_token.clone(),
762
- result: Some(ActivityExecutionResult::cancel_from_details(None)),
763
- })
764
- .await
765
- .unwrap();
766
-
767
- // Verify shutdown completes
768
- drain_pollers_and_shutdown(&core).await;
769
- // Cleanup just in case
770
- starter
771
- .get_client()
772
- .await
773
- .terminate_workflow_execution(task_q.clone(), None)
774
- .await
775
- .unwrap();
776
- }
777
-
778
- #[tokio::test]
779
- async fn one_activity_abandon_cancelled_after_complete() {
780
- let wf_name = "one_activity_abandon_cancelled_after_complete";
781
- let mut starter = CoreWfStarter::new(wf_name);
782
- let mut worker = starter.worker().await;
783
- let client = starter.get_client().await;
784
- worker.register_wf(wf_name.to_owned(), |ctx: WfContext| async move {
785
- let act_fut = ctx.activity(ActivityOptions {
786
- activity_type: "echo_activity".to_string(),
787
- start_to_close_timeout: Some(Duration::from_secs(5)),
788
- input: "hi!".as_json_payload().expect("serializes fine"),
789
- cancellation_type: ActivityCancellationType::Abandon,
790
- ..Default::default()
791
- });
792
- ctx.timer(Duration::from_secs(1)).await;
793
- act_fut.cancel(&ctx);
794
- ctx.timer(Duration::from_secs(3)).await;
795
- act_fut.await;
796
- Ok(().into())
797
- });
798
- worker.register_activity(
799
- "echo_activity",
800
- |_ctx: ActContext, echo_me: String| async move {
801
- sleep(Duration::from_secs(2)).await;
802
- Ok(echo_me)
803
- },
804
- );
805
-
806
- let run_id = worker
807
- .submit_wf(
808
- wf_name.to_owned(),
809
- wf_name.to_owned(),
810
- vec![],
811
- WorkflowOptions::default(),
812
- )
813
- .await
814
- .unwrap();
815
- worker.run_until_done().await.unwrap();
816
- let handle = client.get_untyped_workflow_handle(wf_name, run_id);
817
- let res = handle
818
- .get_workflow_result(Default::default())
819
- .await
820
- .unwrap();
821
- assert_matches!(res, WorkflowExecutionResult::Succeeded(_));
822
- }
823
-
824
- #[tokio::test]
825
- async fn it_can_complete_async() {
826
- use std::sync::Arc;
827
- use tokio::sync::Mutex;
828
-
829
- let wf_name = "it_can_complete_async".to_owned();
830
- let mut starter = CoreWfStarter::new(&wf_name);
831
- let mut worker = starter.worker().await;
832
- let client = starter.get_client().await;
833
- let async_response = "agence";
834
- let shared_token: Arc<Mutex<Option<Vec<u8>>>> = Arc::new(Mutex::new(None));
835
- worker.register_wf(wf_name.clone(), move |ctx: WfContext| async move {
836
- let activity_resolution = ctx
837
- .activity(ActivityOptions {
838
- activity_type: "complete_async_activity".to_string(),
839
- input: "hi".as_json_payload().expect("serializes fine"),
840
- start_to_close_timeout: Some(Duration::from_secs(30)),
841
- ..Default::default()
842
- })
843
- .await;
844
-
845
- let res = match activity_resolution.status {
846
- Some(act_res::Status::Completed(activity_result::Success { result })) => result
847
- .map(|p| String::from_json_payload(&p).unwrap())
848
- .unwrap(),
849
- _ => panic!("activity task failed {activity_resolution:?}"),
850
- };
851
-
852
- assert_eq!(&res, async_response);
853
- Ok(().into())
854
- });
855
-
856
- let shared_token_ref = shared_token.clone();
857
- worker.register_activity(
858
- "complete_async_activity",
859
- move |ctx: ActContext, _: String| {
860
- let shared_token_ref = shared_token_ref.clone();
861
- async move {
862
- // set the `activity_task_token`
863
- let activity_info = ctx.get_info();
864
- let task_token = &activity_info.task_token;
865
- let mut shared = shared_token_ref.lock().await;
866
- *shared = Some(task_token.clone());
867
- Ok::<ActExitValue<()>, _>(ActExitValue::WillCompleteAsync)
868
- }
869
- },
870
- );
871
-
872
- let shared_token_ref2 = shared_token.clone();
873
- tokio::spawn(async move {
874
- loop {
875
- let mut shared = shared_token_ref2.lock().await;
876
- let maybe_token = shared.take();
877
-
878
- if let Some(task_token) = maybe_token {
879
- client
880
- .complete_activity_task(
881
- TaskToken(task_token),
882
- Some(async_response.as_json_payload().unwrap().into()),
883
- )
884
- .await
885
- .unwrap();
886
- return;
887
- }
888
- }
889
- });
890
-
891
- let _run_id = worker
892
- .submit_wf(
893
- wf_name.to_owned(),
894
- wf_name.to_owned(),
895
- vec![],
896
- WorkflowOptions::default(),
897
- )
898
- .await
899
- .unwrap();
900
-
901
- worker.run_until_done().await.unwrap();
902
- }