temporalio 0.1.1 → 0.2.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 (585) hide show
  1. checksums.yaml +4 -4
  2. data/Cargo.lock +4035 -0
  3. data/Cargo.toml +25 -0
  4. data/Gemfile +20 -0
  5. data/LICENSE +16 -15
  6. data/README.md +455 -195
  7. data/Rakefile +387 -0
  8. data/ext/Cargo.toml +25 -0
  9. data/lib/temporalio/activity/complete_async_error.rb +11 -0
  10. data/lib/temporalio/activity/context.rb +82 -77
  11. data/lib/temporalio/activity/definition.rb +77 -0
  12. data/lib/temporalio/activity/info.rb +42 -46
  13. data/lib/temporalio/activity.rb +49 -65
  14. data/lib/temporalio/api/batch/v1/message.rb +31 -0
  15. data/lib/temporalio/api/cloud/cloudservice/v1/request_response.rb +93 -0
  16. data/lib/temporalio/api/cloud/cloudservice/v1/service.rb +25 -0
  17. data/lib/temporalio/api/cloud/cloudservice.rb +3 -0
  18. data/lib/temporalio/api/cloud/identity/v1/message.rb +36 -0
  19. data/lib/temporalio/api/cloud/namespace/v1/message.rb +35 -0
  20. data/lib/temporalio/api/cloud/operation/v1/message.rb +27 -0
  21. data/lib/temporalio/api/cloud/region/v1/message.rb +23 -0
  22. data/lib/temporalio/api/command/v1/message.rb +46 -0
  23. data/lib/temporalio/api/common/v1/grpc_status.rb +23 -0
  24. data/lib/temporalio/api/common/v1/message.rb +41 -0
  25. data/lib/temporalio/api/enums/v1/batch_operation.rb +22 -0
  26. data/lib/temporalio/api/enums/v1/command_type.rb +21 -0
  27. data/lib/temporalio/api/enums/v1/common.rb +26 -0
  28. data/lib/temporalio/api/enums/v1/event_type.rb +21 -0
  29. data/lib/temporalio/api/enums/v1/failed_cause.rb +26 -0
  30. data/lib/temporalio/api/enums/v1/namespace.rb +23 -0
  31. data/lib/temporalio/api/enums/v1/query.rb +22 -0
  32. data/lib/temporalio/api/enums/v1/reset.rb +23 -0
  33. data/lib/temporalio/api/enums/v1/schedule.rb +21 -0
  34. data/lib/temporalio/api/enums/v1/task_queue.rb +25 -0
  35. data/lib/temporalio/api/enums/v1/update.rb +22 -0
  36. data/lib/temporalio/api/enums/v1/workflow.rb +30 -0
  37. data/lib/temporalio/api/errordetails/v1/message.rb +42 -0
  38. data/lib/temporalio/api/export/v1/message.rb +24 -0
  39. data/lib/temporalio/api/failure/v1/message.rb +35 -0
  40. data/lib/temporalio/api/filter/v1/message.rb +27 -0
  41. data/lib/temporalio/api/history/v1/message.rb +90 -0
  42. data/lib/temporalio/api/namespace/v1/message.rb +31 -0
  43. data/lib/temporalio/api/nexus/v1/message.rb +40 -0
  44. data/lib/temporalio/api/operatorservice/v1/request_response.rb +49 -0
  45. data/lib/temporalio/api/operatorservice/v1/service.rb +23 -0
  46. data/lib/temporalio/api/operatorservice.rb +3 -0
  47. data/lib/temporalio/api/protocol/v1/message.rb +23 -0
  48. data/lib/temporalio/api/query/v1/message.rb +27 -0
  49. data/lib/temporalio/api/replication/v1/message.rb +26 -0
  50. data/lib/temporalio/api/schedule/v1/message.rb +42 -0
  51. data/lib/temporalio/api/sdk/v1/enhanced_stack_trace.rb +25 -0
  52. data/lib/temporalio/api/sdk/v1/task_complete_metadata.rb +21 -0
  53. data/lib/temporalio/api/sdk/v1/user_metadata.rb +23 -0
  54. data/lib/temporalio/api/sdk/v1/workflow_metadata.rb +23 -0
  55. data/lib/temporalio/api/taskqueue/v1/message.rb +45 -0
  56. data/lib/temporalio/api/update/v1/message.rb +33 -0
  57. data/lib/temporalio/api/version/v1/message.rb +26 -0
  58. data/lib/temporalio/api/workflow/v1/message.rb +43 -0
  59. data/lib/temporalio/api/workflowservice/v1/request_response.rb +189 -0
  60. data/lib/temporalio/api/workflowservice/v1/service.rb +23 -0
  61. data/lib/temporalio/api/workflowservice.rb +3 -0
  62. data/lib/temporalio/api.rb +13 -0
  63. data/lib/temporalio/cancellation.rb +150 -0
  64. data/lib/temporalio/client/activity_id_reference.rb +32 -0
  65. data/lib/temporalio/client/async_activity_handle.rb +110 -0
  66. data/lib/temporalio/client/connection/cloud_service.rb +648 -0
  67. data/lib/temporalio/client/connection/operator_service.rb +249 -0
  68. data/lib/temporalio/client/connection/service.rb +41 -0
  69. data/lib/temporalio/client/connection/workflow_service.rb +1218 -0
  70. data/lib/temporalio/client/connection.rb +270 -0
  71. data/lib/temporalio/client/interceptor.rb +316 -0
  72. data/lib/temporalio/client/workflow_execution.rb +103 -0
  73. data/lib/temporalio/client/workflow_execution_count.rb +36 -0
  74. data/lib/temporalio/client/workflow_execution_status.rb +18 -0
  75. data/lib/temporalio/client/workflow_handle.rb +380 -177
  76. data/lib/temporalio/client/workflow_query_reject_condition.rb +14 -0
  77. data/lib/temporalio/client/workflow_update_handle.rb +67 -0
  78. data/lib/temporalio/client/workflow_update_wait_stage.rb +17 -0
  79. data/lib/temporalio/client.rb +366 -93
  80. data/lib/temporalio/common_enums.rb +24 -0
  81. data/lib/temporalio/converters/data_converter.rb +102 -0
  82. data/lib/temporalio/converters/failure_converter.rb +200 -0
  83. data/lib/temporalio/converters/payload_codec.rb +26 -0
  84. data/lib/temporalio/converters/payload_converter/binary_null.rb +34 -0
  85. data/lib/temporalio/converters/payload_converter/binary_plain.rb +35 -0
  86. data/lib/temporalio/converters/payload_converter/binary_protobuf.rb +42 -0
  87. data/lib/temporalio/converters/payload_converter/composite.rb +62 -0
  88. data/lib/temporalio/converters/payload_converter/encoding.rb +35 -0
  89. data/lib/temporalio/converters/payload_converter/json_plain.rb +44 -0
  90. data/lib/temporalio/converters/payload_converter/json_protobuf.rb +41 -0
  91. data/lib/temporalio/converters/payload_converter.rb +73 -0
  92. data/lib/temporalio/converters.rb +9 -0
  93. data/lib/temporalio/error/failure.rb +119 -94
  94. data/lib/temporalio/error.rb +147 -0
  95. data/lib/temporalio/internal/bridge/api/activity_result/activity_result.rb +34 -0
  96. data/lib/temporalio/internal/bridge/api/activity_task/activity_task.rb +31 -0
  97. data/lib/temporalio/internal/bridge/api/child_workflow/child_workflow.rb +33 -0
  98. data/lib/temporalio/internal/bridge/api/common/common.rb +26 -0
  99. data/lib/temporalio/internal/bridge/api/core_interface.rb +36 -0
  100. data/lib/temporalio/internal/bridge/api/external_data/external_data.rb +27 -0
  101. data/lib/temporalio/internal/bridge/api/workflow_activation/workflow_activation.rb +52 -0
  102. data/lib/temporalio/internal/bridge/api/workflow_commands/workflow_commands.rb +54 -0
  103. data/lib/temporalio/internal/bridge/api/workflow_completion/workflow_completion.rb +30 -0
  104. data/lib/temporalio/internal/bridge/api.rb +3 -0
  105. data/lib/temporalio/internal/bridge/client.rb +90 -0
  106. data/lib/temporalio/internal/bridge/runtime.rb +53 -0
  107. data/lib/temporalio/internal/bridge/testing.rb +46 -0
  108. data/lib/temporalio/internal/bridge/worker.rb +83 -0
  109. data/lib/temporalio/internal/bridge.rb +36 -0
  110. data/lib/temporalio/internal/client/implementation.rb +525 -0
  111. data/lib/temporalio/internal/proto_utils.rb +54 -0
  112. data/lib/temporalio/internal/worker/activity_worker.rb +345 -0
  113. data/lib/temporalio/internal/worker/multi_runner.rb +169 -0
  114. data/lib/temporalio/internal.rb +7 -0
  115. data/lib/temporalio/retry_policy.rb +39 -80
  116. data/lib/temporalio/runtime.rb +259 -13
  117. data/lib/temporalio/scoped_logger.rb +96 -0
  118. data/lib/temporalio/search_attributes.rb +300 -0
  119. data/lib/temporalio/testing/activity_environment.rb +132 -0
  120. data/lib/temporalio/testing/workflow_environment.rb +113 -88
  121. data/lib/temporalio/testing.rb +4 -169
  122. data/lib/temporalio/version.rb +3 -1
  123. data/lib/temporalio/worker/activity_executor/fiber.rb +49 -0
  124. data/lib/temporalio/worker/activity_executor/thread_pool.rb +254 -0
  125. data/lib/temporalio/worker/activity_executor.rb +55 -0
  126. data/lib/temporalio/worker/interceptor.rb +88 -0
  127. data/lib/temporalio/worker/tuner.rb +151 -0
  128. data/lib/temporalio/worker.rb +385 -163
  129. data/lib/temporalio/workflow_history.rb +22 -0
  130. data/lib/temporalio.rb +2 -7
  131. data/temporalio.gemspec +20 -39
  132. metadata +131 -712
  133. data/bridge/Cargo.lock +0 -2997
  134. data/bridge/Cargo.toml +0 -29
  135. data/bridge/sdk-core/ARCHITECTURE.md +0 -76
  136. data/bridge/sdk-core/Cargo.toml +0 -2
  137. data/bridge/sdk-core/LICENSE.txt +0 -23
  138. data/bridge/sdk-core/README.md +0 -117
  139. data/bridge/sdk-core/arch_docs/diagrams/README.md +0 -10
  140. data/bridge/sdk-core/arch_docs/diagrams/sticky_queues.puml +0 -40
  141. data/bridge/sdk-core/arch_docs/diagrams/workflow_internals.svg +0 -1
  142. data/bridge/sdk-core/arch_docs/sticky_queues.md +0 -51
  143. data/bridge/sdk-core/client/Cargo.toml +0 -40
  144. data/bridge/sdk-core/client/LICENSE.txt +0 -23
  145. data/bridge/sdk-core/client/src/lib.rs +0 -1462
  146. data/bridge/sdk-core/client/src/metrics.rs +0 -174
  147. data/bridge/sdk-core/client/src/raw.rs +0 -932
  148. data/bridge/sdk-core/client/src/retry.rs +0 -763
  149. data/bridge/sdk-core/client/src/workflow_handle/mod.rs +0 -185
  150. data/bridge/sdk-core/core/Cargo.toml +0 -129
  151. data/bridge/sdk-core/core/LICENSE.txt +0 -23
  152. data/bridge/sdk-core/core/benches/workflow_replay.rs +0 -76
  153. data/bridge/sdk-core/core/src/abstractions.rs +0 -355
  154. data/bridge/sdk-core/core/src/core_tests/activity_tasks.rs +0 -1049
  155. data/bridge/sdk-core/core/src/core_tests/child_workflows.rs +0 -221
  156. data/bridge/sdk-core/core/src/core_tests/determinism.rs +0 -270
  157. data/bridge/sdk-core/core/src/core_tests/local_activities.rs +0 -1046
  158. data/bridge/sdk-core/core/src/core_tests/mod.rs +0 -100
  159. data/bridge/sdk-core/core/src/core_tests/queries.rs +0 -893
  160. data/bridge/sdk-core/core/src/core_tests/replay_flag.rs +0 -65
  161. data/bridge/sdk-core/core/src/core_tests/workers.rs +0 -257
  162. data/bridge/sdk-core/core/src/core_tests/workflow_cancels.rs +0 -124
  163. data/bridge/sdk-core/core/src/core_tests/workflow_tasks.rs +0 -2433
  164. data/bridge/sdk-core/core/src/ephemeral_server/mod.rs +0 -609
  165. data/bridge/sdk-core/core/src/internal_flags.rs +0 -136
  166. data/bridge/sdk-core/core/src/lib.rs +0 -289
  167. data/bridge/sdk-core/core/src/pollers/mod.rs +0 -54
  168. data/bridge/sdk-core/core/src/pollers/poll_buffer.rs +0 -297
  169. data/bridge/sdk-core/core/src/protosext/mod.rs +0 -428
  170. data/bridge/sdk-core/core/src/replay/mod.rs +0 -215
  171. data/bridge/sdk-core/core/src/retry_logic.rs +0 -202
  172. data/bridge/sdk-core/core/src/telemetry/log_export.rs +0 -190
  173. data/bridge/sdk-core/core/src/telemetry/metrics.rs +0 -462
  174. data/bridge/sdk-core/core/src/telemetry/mod.rs +0 -423
  175. data/bridge/sdk-core/core/src/telemetry/prometheus_server.rs +0 -83
  176. data/bridge/sdk-core/core/src/test_help/mod.rs +0 -939
  177. data/bridge/sdk-core/core/src/worker/activities/activity_heartbeat_manager.rs +0 -536
  178. data/bridge/sdk-core/core/src/worker/activities/activity_task_poller_stream.rs +0 -89
  179. data/bridge/sdk-core/core/src/worker/activities/local_activities.rs +0 -1278
  180. data/bridge/sdk-core/core/src/worker/activities.rs +0 -557
  181. data/bridge/sdk-core/core/src/worker/client/mocks.rs +0 -107
  182. data/bridge/sdk-core/core/src/worker/client.rs +0 -389
  183. data/bridge/sdk-core/core/src/worker/mod.rs +0 -677
  184. data/bridge/sdk-core/core/src/worker/workflow/bridge.rs +0 -35
  185. data/bridge/sdk-core/core/src/worker/workflow/driven_workflow.rs +0 -99
  186. data/bridge/sdk-core/core/src/worker/workflow/history_update.rs +0 -1111
  187. data/bridge/sdk-core/core/src/worker/workflow/machines/activity_state_machine.rs +0 -964
  188. data/bridge/sdk-core/core/src/worker/workflow/machines/cancel_external_state_machine.rs +0 -294
  189. data/bridge/sdk-core/core/src/worker/workflow/machines/cancel_workflow_state_machine.rs +0 -168
  190. data/bridge/sdk-core/core/src/worker/workflow/machines/child_workflow_state_machine.rs +0 -918
  191. data/bridge/sdk-core/core/src/worker/workflow/machines/complete_workflow_state_machine.rs +0 -137
  192. data/bridge/sdk-core/core/src/worker/workflow/machines/continue_as_new_workflow_state_machine.rs +0 -158
  193. data/bridge/sdk-core/core/src/worker/workflow/machines/fail_workflow_state_machine.rs +0 -130
  194. data/bridge/sdk-core/core/src/worker/workflow/machines/local_activity_state_machine.rs +0 -1525
  195. data/bridge/sdk-core/core/src/worker/workflow/machines/mod.rs +0 -324
  196. data/bridge/sdk-core/core/src/worker/workflow/machines/modify_workflow_properties_state_machine.rs +0 -179
  197. data/bridge/sdk-core/core/src/worker/workflow/machines/patch_state_machine.rs +0 -659
  198. data/bridge/sdk-core/core/src/worker/workflow/machines/signal_external_state_machine.rs +0 -439
  199. data/bridge/sdk-core/core/src/worker/workflow/machines/timer_state_machine.rs +0 -435
  200. data/bridge/sdk-core/core/src/worker/workflow/machines/transition_coverage.rs +0 -175
  201. data/bridge/sdk-core/core/src/worker/workflow/machines/upsert_search_attributes_state_machine.rs +0 -249
  202. data/bridge/sdk-core/core/src/worker/workflow/machines/workflow_machines/local_acts.rs +0 -85
  203. data/bridge/sdk-core/core/src/worker/workflow/machines/workflow_machines.rs +0 -1280
  204. data/bridge/sdk-core/core/src/worker/workflow/machines/workflow_task_state_machine.rs +0 -269
  205. data/bridge/sdk-core/core/src/worker/workflow/managed_run/managed_wf_test.rs +0 -213
  206. data/bridge/sdk-core/core/src/worker/workflow/managed_run.rs +0 -1305
  207. data/bridge/sdk-core/core/src/worker/workflow/mod.rs +0 -1276
  208. data/bridge/sdk-core/core/src/worker/workflow/run_cache.rs +0 -128
  209. data/bridge/sdk-core/core/src/worker/workflow/wft_extraction.rs +0 -125
  210. data/bridge/sdk-core/core/src/worker/workflow/wft_poller.rs +0 -85
  211. data/bridge/sdk-core/core/src/worker/workflow/workflow_stream/saved_wf_inputs.rs +0 -117
  212. data/bridge/sdk-core/core/src/worker/workflow/workflow_stream/tonic_status_serde.rs +0 -24
  213. data/bridge/sdk-core/core/src/worker/workflow/workflow_stream.rs +0 -715
  214. data/bridge/sdk-core/core-api/Cargo.toml +0 -33
  215. data/bridge/sdk-core/core-api/LICENSE.txt +0 -23
  216. data/bridge/sdk-core/core-api/src/errors.rs +0 -62
  217. data/bridge/sdk-core/core-api/src/lib.rs +0 -113
  218. data/bridge/sdk-core/core-api/src/telemetry.rs +0 -141
  219. data/bridge/sdk-core/core-api/src/worker.rs +0 -161
  220. data/bridge/sdk-core/etc/deps.svg +0 -162
  221. data/bridge/sdk-core/etc/dynamic-config.yaml +0 -2
  222. data/bridge/sdk-core/etc/otel-collector-config.yaml +0 -36
  223. data/bridge/sdk-core/etc/prometheus.yaml +0 -6
  224. data/bridge/sdk-core/etc/regen-depgraph.sh +0 -5
  225. data/bridge/sdk-core/fsm/Cargo.toml +0 -18
  226. data/bridge/sdk-core/fsm/LICENSE.txt +0 -23
  227. data/bridge/sdk-core/fsm/README.md +0 -3
  228. data/bridge/sdk-core/fsm/rustfsm_procmacro/Cargo.toml +0 -27
  229. data/bridge/sdk-core/fsm/rustfsm_procmacro/LICENSE.txt +0 -23
  230. data/bridge/sdk-core/fsm/rustfsm_procmacro/src/lib.rs +0 -650
  231. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/progress.rs +0 -8
  232. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/dupe_transitions_fail.rs +0 -18
  233. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/dupe_transitions_fail.stderr +0 -12
  234. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/dynamic_dest_pass.rs +0 -41
  235. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/forgot_name_fail.rs +0 -14
  236. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/forgot_name_fail.stderr +0 -11
  237. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/handler_arg_pass.rs +0 -32
  238. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/handler_pass.rs +0 -31
  239. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/medium_complex_pass.rs +0 -46
  240. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/no_handle_conversions_require_into_fail.rs +0 -29
  241. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/no_handle_conversions_require_into_fail.stderr +0 -12
  242. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/simple_pass.rs +0 -32
  243. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/struct_event_variant_fail.rs +0 -18
  244. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/struct_event_variant_fail.stderr +0 -5
  245. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/tuple_more_item_event_variant_fail.rs +0 -11
  246. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/tuple_more_item_event_variant_fail.stderr +0 -5
  247. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/tuple_zero_item_event_variant_fail.rs +0 -11
  248. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/tuple_zero_item_event_variant_fail.stderr +0 -5
  249. data/bridge/sdk-core/fsm/rustfsm_trait/Cargo.toml +0 -14
  250. data/bridge/sdk-core/fsm/rustfsm_trait/LICENSE.txt +0 -23
  251. data/bridge/sdk-core/fsm/rustfsm_trait/src/lib.rs +0 -254
  252. data/bridge/sdk-core/fsm/src/lib.rs +0 -2
  253. data/bridge/sdk-core/histories/evict_while_la_running_no_interference-16_history.bin +0 -0
  254. data/bridge/sdk-core/histories/evict_while_la_running_no_interference-23_history.bin +0 -0
  255. data/bridge/sdk-core/histories/evict_while_la_running_no_interference-85_history.bin +0 -0
  256. data/bridge/sdk-core/histories/fail_wf_task.bin +0 -0
  257. data/bridge/sdk-core/histories/timer_workflow_history.bin +0 -0
  258. data/bridge/sdk-core/integ-with-otel.sh +0 -7
  259. data/bridge/sdk-core/protos/api_upstream/README.md +0 -9
  260. data/bridge/sdk-core/protos/api_upstream/api-linter.yaml +0 -40
  261. data/bridge/sdk-core/protos/api_upstream/buf.yaml +0 -9
  262. data/bridge/sdk-core/protos/api_upstream/build/go.mod +0 -7
  263. data/bridge/sdk-core/protos/api_upstream/build/go.sum +0 -5
  264. data/bridge/sdk-core/protos/api_upstream/build/tools.go +0 -29
  265. data/bridge/sdk-core/protos/api_upstream/dependencies/gogoproto/gogo.proto +0 -141
  266. data/bridge/sdk-core/protos/api_upstream/go.mod +0 -6
  267. data/bridge/sdk-core/protos/api_upstream/temporal/api/batch/v1/message.proto +0 -89
  268. data/bridge/sdk-core/protos/api_upstream/temporal/api/command/v1/message.proto +0 -248
  269. data/bridge/sdk-core/protos/api_upstream/temporal/api/common/v1/message.proto +0 -123
  270. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/batch_operation.proto +0 -47
  271. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/command_type.proto +0 -52
  272. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/common.proto +0 -56
  273. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/event_type.proto +0 -170
  274. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/failed_cause.proto +0 -123
  275. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/namespace.proto +0 -51
  276. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/query.proto +0 -50
  277. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/reset.proto +0 -41
  278. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/schedule.proto +0 -60
  279. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/task_queue.proto +0 -59
  280. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/update.proto +0 -56
  281. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/workflow.proto +0 -122
  282. data/bridge/sdk-core/protos/api_upstream/temporal/api/errordetails/v1/message.proto +0 -108
  283. data/bridge/sdk-core/protos/api_upstream/temporal/api/failure/v1/message.proto +0 -114
  284. data/bridge/sdk-core/protos/api_upstream/temporal/api/filter/v1/message.proto +0 -56
  285. data/bridge/sdk-core/protos/api_upstream/temporal/api/history/v1/message.proto +0 -787
  286. data/bridge/sdk-core/protos/api_upstream/temporal/api/namespace/v1/message.proto +0 -99
  287. data/bridge/sdk-core/protos/api_upstream/temporal/api/operatorservice/v1/request_response.proto +0 -124
  288. data/bridge/sdk-core/protos/api_upstream/temporal/api/operatorservice/v1/service.proto +0 -80
  289. data/bridge/sdk-core/protos/api_upstream/temporal/api/protocol/v1/message.proto +0 -57
  290. data/bridge/sdk-core/protos/api_upstream/temporal/api/query/v1/message.proto +0 -61
  291. data/bridge/sdk-core/protos/api_upstream/temporal/api/replication/v1/message.proto +0 -55
  292. data/bridge/sdk-core/protos/api_upstream/temporal/api/schedule/v1/message.proto +0 -379
  293. data/bridge/sdk-core/protos/api_upstream/temporal/api/sdk/v1/task_complete_metadata.proto +0 -63
  294. data/bridge/sdk-core/protos/api_upstream/temporal/api/taskqueue/v1/message.proto +0 -108
  295. data/bridge/sdk-core/protos/api_upstream/temporal/api/update/v1/message.proto +0 -111
  296. data/bridge/sdk-core/protos/api_upstream/temporal/api/version/v1/message.proto +0 -59
  297. data/bridge/sdk-core/protos/api_upstream/temporal/api/workflow/v1/message.proto +0 -146
  298. data/bridge/sdk-core/protos/api_upstream/temporal/api/workflowservice/v1/request_response.proto +0 -1199
  299. data/bridge/sdk-core/protos/api_upstream/temporal/api/workflowservice/v1/service.proto +0 -415
  300. data/bridge/sdk-core/protos/grpc/health/v1/health.proto +0 -63
  301. data/bridge/sdk-core/protos/local/temporal/sdk/core/activity_result/activity_result.proto +0 -79
  302. data/bridge/sdk-core/protos/local/temporal/sdk/core/activity_task/activity_task.proto +0 -80
  303. data/bridge/sdk-core/protos/local/temporal/sdk/core/child_workflow/child_workflow.proto +0 -78
  304. data/bridge/sdk-core/protos/local/temporal/sdk/core/common/common.proto +0 -16
  305. data/bridge/sdk-core/protos/local/temporal/sdk/core/core_interface.proto +0 -31
  306. data/bridge/sdk-core/protos/local/temporal/sdk/core/external_data/external_data.proto +0 -31
  307. data/bridge/sdk-core/protos/local/temporal/sdk/core/workflow_activation/workflow_activation.proto +0 -270
  308. data/bridge/sdk-core/protos/local/temporal/sdk/core/workflow_commands/workflow_commands.proto +0 -305
  309. data/bridge/sdk-core/protos/local/temporal/sdk/core/workflow_completion/workflow_completion.proto +0 -35
  310. data/bridge/sdk-core/protos/testsrv_upstream/api-linter.yaml +0 -38
  311. data/bridge/sdk-core/protos/testsrv_upstream/buf.yaml +0 -13
  312. data/bridge/sdk-core/protos/testsrv_upstream/dependencies/gogoproto/gogo.proto +0 -141
  313. data/bridge/sdk-core/protos/testsrv_upstream/temporal/api/testservice/v1/request_response.proto +0 -63
  314. data/bridge/sdk-core/protos/testsrv_upstream/temporal/api/testservice/v1/service.proto +0 -90
  315. data/bridge/sdk-core/rustfmt.toml +0 -1
  316. data/bridge/sdk-core/sdk/Cargo.toml +0 -48
  317. data/bridge/sdk-core/sdk/LICENSE.txt +0 -23
  318. data/bridge/sdk-core/sdk/src/activity_context.rs +0 -230
  319. data/bridge/sdk-core/sdk/src/app_data.rs +0 -37
  320. data/bridge/sdk-core/sdk/src/interceptors.rs +0 -50
  321. data/bridge/sdk-core/sdk/src/lib.rs +0 -861
  322. data/bridge/sdk-core/sdk/src/payload_converter.rs +0 -11
  323. data/bridge/sdk-core/sdk/src/workflow_context/options.rs +0 -295
  324. data/bridge/sdk-core/sdk/src/workflow_context.rs +0 -694
  325. data/bridge/sdk-core/sdk/src/workflow_future.rs +0 -500
  326. data/bridge/sdk-core/sdk-core-protos/Cargo.toml +0 -33
  327. data/bridge/sdk-core/sdk-core-protos/LICENSE.txt +0 -23
  328. data/bridge/sdk-core/sdk-core-protos/build.rs +0 -142
  329. data/bridge/sdk-core/sdk-core-protos/src/constants.rs +0 -7
  330. data/bridge/sdk-core/sdk-core-protos/src/history_builder.rs +0 -557
  331. data/bridge/sdk-core/sdk-core-protos/src/history_info.rs +0 -234
  332. data/bridge/sdk-core/sdk-core-protos/src/lib.rs +0 -2088
  333. data/bridge/sdk-core/sdk-core-protos/src/task_token.rs +0 -48
  334. data/bridge/sdk-core/sdk-core-protos/src/utilities.rs +0 -14
  335. data/bridge/sdk-core/test-utils/Cargo.toml +0 -38
  336. data/bridge/sdk-core/test-utils/src/canned_histories.rs +0 -1389
  337. data/bridge/sdk-core/test-utils/src/histfetch.rs +0 -28
  338. data/bridge/sdk-core/test-utils/src/lib.rs +0 -709
  339. data/bridge/sdk-core/test-utils/src/wf_input_saver.rs +0 -50
  340. data/bridge/sdk-core/test-utils/src/workflows.rs +0 -29
  341. data/bridge/sdk-core/tests/fuzzy_workflow.rs +0 -130
  342. data/bridge/sdk-core/tests/heavy_tests.rs +0 -265
  343. data/bridge/sdk-core/tests/integ_tests/client_tests.rs +0 -36
  344. data/bridge/sdk-core/tests/integ_tests/ephemeral_server_tests.rs +0 -150
  345. data/bridge/sdk-core/tests/integ_tests/heartbeat_tests.rs +0 -223
  346. data/bridge/sdk-core/tests/integ_tests/metrics_tests.rs +0 -239
  347. data/bridge/sdk-core/tests/integ_tests/polling_tests.rs +0 -90
  348. data/bridge/sdk-core/tests/integ_tests/queries_tests.rs +0 -314
  349. data/bridge/sdk-core/tests/integ_tests/visibility_tests.rs +0 -151
  350. data/bridge/sdk-core/tests/integ_tests/workflow_tests/activities.rs +0 -902
  351. data/bridge/sdk-core/tests/integ_tests/workflow_tests/appdata_propagation.rs +0 -61
  352. data/bridge/sdk-core/tests/integ_tests/workflow_tests/cancel_external.rs +0 -60
  353. data/bridge/sdk-core/tests/integ_tests/workflow_tests/cancel_wf.rs +0 -51
  354. data/bridge/sdk-core/tests/integ_tests/workflow_tests/child_workflows.rs +0 -51
  355. data/bridge/sdk-core/tests/integ_tests/workflow_tests/continue_as_new.rs +0 -64
  356. data/bridge/sdk-core/tests/integ_tests/workflow_tests/determinism.rs +0 -47
  357. data/bridge/sdk-core/tests/integ_tests/workflow_tests/local_activities.rs +0 -669
  358. data/bridge/sdk-core/tests/integ_tests/workflow_tests/modify_wf_properties.rs +0 -54
  359. data/bridge/sdk-core/tests/integ_tests/workflow_tests/patches.rs +0 -92
  360. data/bridge/sdk-core/tests/integ_tests/workflow_tests/replay.rs +0 -228
  361. data/bridge/sdk-core/tests/integ_tests/workflow_tests/resets.rs +0 -94
  362. data/bridge/sdk-core/tests/integ_tests/workflow_tests/signals.rs +0 -171
  363. data/bridge/sdk-core/tests/integ_tests/workflow_tests/stickyness.rs +0 -85
  364. data/bridge/sdk-core/tests/integ_tests/workflow_tests/timers.rs +0 -120
  365. data/bridge/sdk-core/tests/integ_tests/workflow_tests/upsert_search_attrs.rs +0 -77
  366. data/bridge/sdk-core/tests/integ_tests/workflow_tests.rs +0 -596
  367. data/bridge/sdk-core/tests/main.rs +0 -103
  368. data/bridge/sdk-core/tests/runner.rs +0 -132
  369. data/bridge/sdk-core/tests/wf_input_replay.rs +0 -32
  370. data/bridge/src/connection.rs +0 -202
  371. data/bridge/src/lib.rs +0 -494
  372. data/bridge/src/runtime.rs +0 -54
  373. data/bridge/src/test_server.rs +0 -153
  374. data/bridge/src/worker.rs +0 -197
  375. data/ext/Rakefile +0 -9
  376. data/lib/gen/dependencies/gogoproto/gogo_pb.rb +0 -14
  377. data/lib/gen/temporal/api/batch/v1/message_pb.rb +0 -50
  378. data/lib/gen/temporal/api/command/v1/message_pb.rb +0 -160
  379. data/lib/gen/temporal/api/common/v1/message_pb.rb +0 -73
  380. data/lib/gen/temporal/api/enums/v1/batch_operation_pb.rb +0 -33
  381. data/lib/gen/temporal/api/enums/v1/command_type_pb.rb +0 -37
  382. data/lib/gen/temporal/api/enums/v1/common_pb.rb +0 -42
  383. data/lib/gen/temporal/api/enums/v1/event_type_pb.rb +0 -68
  384. data/lib/gen/temporal/api/enums/v1/failed_cause_pb.rb +0 -79
  385. data/lib/gen/temporal/api/enums/v1/namespace_pb.rb +0 -37
  386. data/lib/gen/temporal/api/enums/v1/query_pb.rb +0 -31
  387. data/lib/gen/temporal/api/enums/v1/reset_pb.rb +0 -24
  388. data/lib/gen/temporal/api/enums/v1/schedule_pb.rb +0 -28
  389. data/lib/gen/temporal/api/enums/v1/task_queue_pb.rb +0 -30
  390. data/lib/gen/temporal/api/enums/v1/update_pb.rb +0 -25
  391. data/lib/gen/temporal/api/enums/v1/workflow_pb.rb +0 -89
  392. data/lib/gen/temporal/api/errordetails/v1/message_pb.rb +0 -84
  393. data/lib/gen/temporal/api/failure/v1/message_pb.rb +0 -83
  394. data/lib/gen/temporal/api/filter/v1/message_pb.rb +0 -40
  395. data/lib/gen/temporal/api/history/v1/message_pb.rb +0 -498
  396. data/lib/gen/temporal/api/namespace/v1/message_pb.rb +0 -64
  397. data/lib/gen/temporal/api/operatorservice/v1/request_response_pb.rb +0 -88
  398. data/lib/gen/temporal/api/operatorservice/v1/service_pb.rb +0 -20
  399. data/lib/gen/temporal/api/protocol/v1/message_pb.rb +0 -30
  400. data/lib/gen/temporal/api/query/v1/message_pb.rb +0 -38
  401. data/lib/gen/temporal/api/replication/v1/message_pb.rb +0 -37
  402. data/lib/gen/temporal/api/schedule/v1/message_pb.rb +0 -149
  403. data/lib/gen/temporal/api/sdk/v1/task_complete_metadata_pb.rb +0 -23
  404. data/lib/gen/temporal/api/taskqueue/v1/message_pb.rb +0 -73
  405. data/lib/gen/temporal/api/testservice/v1/request_response_pb.rb +0 -49
  406. data/lib/gen/temporal/api/testservice/v1/service_pb.rb +0 -21
  407. data/lib/gen/temporal/api/update/v1/message_pb.rb +0 -72
  408. data/lib/gen/temporal/api/version/v1/message_pb.rb +0 -41
  409. data/lib/gen/temporal/api/workflow/v1/message_pb.rb +0 -111
  410. data/lib/gen/temporal/api/workflowservice/v1/request_response_pb.rb +0 -798
  411. data/lib/gen/temporal/api/workflowservice/v1/service_pb.rb +0 -20
  412. data/lib/gen/temporal/sdk/core/activity_result/activity_result_pb.rb +0 -62
  413. data/lib/gen/temporal/sdk/core/activity_task/activity_task_pb.rb +0 -61
  414. data/lib/gen/temporal/sdk/core/child_workflow/child_workflow_pb.rb +0 -61
  415. data/lib/gen/temporal/sdk/core/common/common_pb.rb +0 -26
  416. data/lib/gen/temporal/sdk/core/core_interface_pb.rb +0 -40
  417. data/lib/gen/temporal/sdk/core/external_data/external_data_pb.rb +0 -31
  418. data/lib/gen/temporal/sdk/core/workflow_activation/workflow_activation_pb.rb +0 -171
  419. data/lib/gen/temporal/sdk/core/workflow_commands/workflow_commands_pb.rb +0 -200
  420. data/lib/gen/temporal/sdk/core/workflow_completion/workflow_completion_pb.rb +0 -41
  421. data/lib/temporalio/bridge/connect_options.rb +0 -15
  422. data/lib/temporalio/bridge/error.rb +0 -8
  423. data/lib/temporalio/bridge/retry_config.rb +0 -24
  424. data/lib/temporalio/bridge/tls_options.rb +0 -19
  425. data/lib/temporalio/bridge.rb +0 -14
  426. data/lib/temporalio/client/implementation.rb +0 -340
  427. data/lib/temporalio/connection/retry_config.rb +0 -44
  428. data/lib/temporalio/connection/service.rb +0 -20
  429. data/lib/temporalio/connection/test_service.rb +0 -92
  430. data/lib/temporalio/connection/tls_options.rb +0 -51
  431. data/lib/temporalio/connection/workflow_service.rb +0 -731
  432. data/lib/temporalio/connection.rb +0 -86
  433. data/lib/temporalio/data_converter.rb +0 -191
  434. data/lib/temporalio/error/workflow_failure.rb +0 -19
  435. data/lib/temporalio/errors.rb +0 -40
  436. data/lib/temporalio/failure_converter/base.rb +0 -26
  437. data/lib/temporalio/failure_converter/basic.rb +0 -319
  438. data/lib/temporalio/failure_converter.rb +0 -7
  439. data/lib/temporalio/interceptor/activity_inbound.rb +0 -22
  440. data/lib/temporalio/interceptor/activity_outbound.rb +0 -24
  441. data/lib/temporalio/interceptor/chain.rb +0 -28
  442. data/lib/temporalio/interceptor/client.rb +0 -127
  443. data/lib/temporalio/interceptor.rb +0 -22
  444. data/lib/temporalio/payload_codec/base.rb +0 -32
  445. data/lib/temporalio/payload_converter/base.rb +0 -24
  446. data/lib/temporalio/payload_converter/bytes.rb +0 -27
  447. data/lib/temporalio/payload_converter/composite.rb +0 -49
  448. data/lib/temporalio/payload_converter/encoding_base.rb +0 -35
  449. data/lib/temporalio/payload_converter/json.rb +0 -26
  450. data/lib/temporalio/payload_converter/nil.rb +0 -26
  451. data/lib/temporalio/payload_converter.rb +0 -14
  452. data/lib/temporalio/retry_state.rb +0 -35
  453. data/lib/temporalio/testing/time_skipping_handle.rb +0 -32
  454. data/lib/temporalio/testing/time_skipping_interceptor.rb +0 -23
  455. data/lib/temporalio/timeout_type.rb +0 -29
  456. data/lib/temporalio/worker/activity_runner.rb +0 -114
  457. data/lib/temporalio/worker/activity_worker.rb +0 -164
  458. data/lib/temporalio/worker/reactor.rb +0 -46
  459. data/lib/temporalio/worker/runner.rb +0 -63
  460. data/lib/temporalio/worker/sync_worker.rb +0 -124
  461. data/lib/temporalio/worker/thread_pool_executor.rb +0 -51
  462. data/lib/temporalio/workflow/async.rb +0 -46
  463. data/lib/temporalio/workflow/execution_info.rb +0 -54
  464. data/lib/temporalio/workflow/execution_status.rb +0 -36
  465. data/lib/temporalio/workflow/future.rb +0 -138
  466. data/lib/temporalio/workflow/id_reuse_policy.rb +0 -36
  467. data/lib/temporalio/workflow/info.rb +0 -76
  468. data/lib/temporalio/workflow/query_reject_condition.rb +0 -33
  469. data/lib/thermite_patch.rb +0 -33
  470. data/sig/async.rbs +0 -17
  471. data/sig/protobuf.rbs +0 -16
  472. data/sig/protos/dependencies/gogoproto/gogo.rbs +0 -914
  473. data/sig/protos/google/protobuf/any.rbs +0 -157
  474. data/sig/protos/google/protobuf/descriptor.rbs +0 -2825
  475. data/sig/protos/google/protobuf/duration.rbs +0 -114
  476. data/sig/protos/google/protobuf/empty.rbs +0 -36
  477. data/sig/protos/google/protobuf/timestamp.rbs +0 -145
  478. data/sig/protos/google/protobuf/wrappers.rbs +0 -358
  479. data/sig/protos/temporal/api/batch/v1/message.rbs +0 -300
  480. data/sig/protos/temporal/api/command/v1/message.rbs +0 -1399
  481. data/sig/protos/temporal/api/common/v1/message.rbs +0 -528
  482. data/sig/protos/temporal/api/enums/v1/batch_operation.rbs +0 -79
  483. data/sig/protos/temporal/api/enums/v1/command_type.rbs +0 -68
  484. data/sig/protos/temporal/api/enums/v1/common.rbs +0 -118
  485. data/sig/protos/temporal/api/enums/v1/event_type.rbs +0 -264
  486. data/sig/protos/temporal/api/enums/v1/failed_cause.rbs +0 -277
  487. data/sig/protos/temporal/api/enums/v1/namespace.rbs +0 -108
  488. data/sig/protos/temporal/api/enums/v1/query.rbs +0 -81
  489. data/sig/protos/temporal/api/enums/v1/reset.rbs +0 -44
  490. data/sig/protos/temporal/api/enums/v1/schedule.rbs +0 -72
  491. data/sig/protos/temporal/api/enums/v1/task_queue.rbs +0 -92
  492. data/sig/protos/temporal/api/enums/v1/update.rbs +0 -64
  493. data/sig/protos/temporal/api/enums/v1/workflow.rbs +0 -371
  494. data/sig/protos/temporal/api/errordetails/v1/message.rbs +0 -551
  495. data/sig/protos/temporal/api/failure/v1/message.rbs +0 -581
  496. data/sig/protos/temporal/api/filter/v1/message.rbs +0 -171
  497. data/sig/protos/temporal/api/history/v1/message.rbs +0 -4609
  498. data/sig/protos/temporal/api/namespace/v1/message.rbs +0 -410
  499. data/sig/protos/temporal/api/operatorservice/v1/request_response.rbs +0 -643
  500. data/sig/protos/temporal/api/operatorservice/v1/service.rbs +0 -17
  501. data/sig/protos/temporal/api/protocol/v1/message.rbs +0 -84
  502. data/sig/protos/temporal/api/query/v1/message.rbs +0 -182
  503. data/sig/protos/temporal/api/replication/v1/message.rbs +0 -148
  504. data/sig/protos/temporal/api/schedule/v1/message.rbs +0 -1488
  505. data/sig/protos/temporal/api/sdk/v1/task_complete_metadata.rbs +0 -110
  506. data/sig/protos/temporal/api/taskqueue/v1/message.rbs +0 -486
  507. data/sig/protos/temporal/api/testservice/v1/request_response.rbs +0 -249
  508. data/sig/protos/temporal/api/testservice/v1/service.rbs +0 -15
  509. data/sig/protos/temporal/api/update/v1/message.rbs +0 -489
  510. data/sig/protos/temporal/api/version/v1/message.rbs +0 -184
  511. data/sig/protos/temporal/api/workflow/v1/message.rbs +0 -824
  512. data/sig/protos/temporal/api/workflowservice/v1/request_response.rbs +0 -7250
  513. data/sig/protos/temporal/api/workflowservice/v1/service.rbs +0 -22
  514. data/sig/protos/temporal/sdk/core/activity_result/activity_result.rbs +0 -380
  515. data/sig/protos/temporal/sdk/core/activity_task/activity_task.rbs +0 -386
  516. data/sig/protos/temporal/sdk/core/child_workflow/child_workflow.rbs +0 -323
  517. data/sig/protos/temporal/sdk/core/common/common.rbs +0 -62
  518. data/sig/protos/temporal/sdk/core/core_interface.rbs +0 -101
  519. data/sig/protos/temporal/sdk/core/external_data/external_data.rbs +0 -119
  520. data/sig/protos/temporal/sdk/core/workflow_activation/workflow_activation.rbs +0 -1473
  521. data/sig/protos/temporal/sdk/core/workflow_commands/workflow_commands.rbs +0 -1784
  522. data/sig/protos/temporal/sdk/core/workflow_completion/workflow_completion.rbs +0 -180
  523. data/sig/ruby.rbs +0 -12
  524. data/sig/temporalio/activity/context.rbs +0 -29
  525. data/sig/temporalio/activity/info.rbs +0 -43
  526. data/sig/temporalio/activity.rbs +0 -19
  527. data/sig/temporalio/bridge/connect_options.rbs +0 -19
  528. data/sig/temporalio/bridge/error.rbs +0 -8
  529. data/sig/temporalio/bridge/retry_config.rbs +0 -21
  530. data/sig/temporalio/bridge/tls_options.rbs +0 -17
  531. data/sig/temporalio/bridge.rbs +0 -71
  532. data/sig/temporalio/client/implementation.rbs +0 -38
  533. data/sig/temporalio/client/workflow_handle.rbs +0 -41
  534. data/sig/temporalio/client.rbs +0 -35
  535. data/sig/temporalio/connection/retry_config.rbs +0 -37
  536. data/sig/temporalio/connection/service.rbs +0 -14
  537. data/sig/temporalio/connection/test_service.rbs +0 -13
  538. data/sig/temporalio/connection/tls_options.rbs +0 -43
  539. data/sig/temporalio/connection/workflow_service.rbs +0 -48
  540. data/sig/temporalio/connection.rbs +0 -30
  541. data/sig/temporalio/data_converter.rbs +0 -35
  542. data/sig/temporalio/error/failure.rbs +0 -121
  543. data/sig/temporalio/error/workflow_failure.rbs +0 -9
  544. data/sig/temporalio/errors.rbs +0 -36
  545. data/sig/temporalio/failure_converter/base.rbs +0 -12
  546. data/sig/temporalio/failure_converter/basic.rbs +0 -86
  547. data/sig/temporalio/failure_converter.rbs +0 -5
  548. data/sig/temporalio/interceptor/activity_inbound.rbs +0 -21
  549. data/sig/temporalio/interceptor/activity_outbound.rbs +0 -10
  550. data/sig/temporalio/interceptor/chain.rbs +0 -24
  551. data/sig/temporalio/interceptor/client.rbs +0 -148
  552. data/sig/temporalio/interceptor.rbs +0 -6
  553. data/sig/temporalio/payload_codec/base.rbs +0 -12
  554. data/sig/temporalio/payload_converter/base.rbs +0 -12
  555. data/sig/temporalio/payload_converter/bytes.rbs +0 -9
  556. data/sig/temporalio/payload_converter/composite.rbs +0 -19
  557. data/sig/temporalio/payload_converter/encoding_base.rbs +0 -14
  558. data/sig/temporalio/payload_converter/json.rbs +0 -9
  559. data/sig/temporalio/payload_converter/nil.rbs +0 -9
  560. data/sig/temporalio/payload_converter.rbs +0 -5
  561. data/sig/temporalio/retry_policy.rbs +0 -25
  562. data/sig/temporalio/retry_state.rbs +0 -20
  563. data/sig/temporalio/runtime.rbs +0 -12
  564. data/sig/temporalio/testing/time_skipping_handle.rbs +0 -15
  565. data/sig/temporalio/testing/time_skipping_interceptor.rbs +0 -13
  566. data/sig/temporalio/testing/workflow_environment.rbs +0 -22
  567. data/sig/temporalio/testing.rbs +0 -35
  568. data/sig/temporalio/timeout_type.rbs +0 -15
  569. data/sig/temporalio/version.rbs +0 -3
  570. data/sig/temporalio/worker/activity_runner.rbs +0 -35
  571. data/sig/temporalio/worker/activity_worker.rbs +0 -44
  572. data/sig/temporalio/worker/reactor.rbs +0 -22
  573. data/sig/temporalio/worker/runner.rbs +0 -21
  574. data/sig/temporalio/worker/sync_worker.rbs +0 -23
  575. data/sig/temporalio/worker/thread_pool_executor.rbs +0 -23
  576. data/sig/temporalio/worker.rbs +0 -46
  577. data/sig/temporalio/workflow/async.rbs +0 -9
  578. data/sig/temporalio/workflow/execution_info.rbs +0 -55
  579. data/sig/temporalio/workflow/execution_status.rbs +0 -21
  580. data/sig/temporalio/workflow/future.rbs +0 -40
  581. data/sig/temporalio/workflow/id_reuse_policy.rbs +0 -15
  582. data/sig/temporalio/workflow/info.rbs +0 -55
  583. data/sig/temporalio/workflow/query_reject_condition.rbs +0 -14
  584. data/sig/temporalio.rbs +0 -2
  585. 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
- }