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.
- checksums.yaml +4 -4
- data/.yardopts +2 -0
- data/Cargo.lock +4324 -0
- data/Cargo.toml +25 -0
- data/Gemfile +20 -0
- data/LICENSE +16 -15
- data/README.md +985 -183
- data/Rakefile +101 -0
- data/ext/Cargo.toml +26 -0
- data/lib/temporalio/activity/complete_async_error.rb +11 -0
- data/lib/temporalio/activity/context.rb +86 -78
- data/lib/temporalio/activity/definition.rb +175 -0
- data/lib/temporalio/activity/info.rb +44 -47
- data/lib/temporalio/activity.rb +8 -81
- data/lib/temporalio/api/activity/v1/message.rb +25 -0
- data/lib/temporalio/api/batch/v1/message.rb +31 -0
- data/lib/temporalio/api/cloud/account/v1/message.rb +28 -0
- data/lib/temporalio/api/cloud/cloudservice/v1/request_response.rb +126 -0
- data/lib/temporalio/api/cloud/cloudservice/v1/service.rb +25 -0
- data/lib/temporalio/api/cloud/cloudservice.rb +3 -0
- data/lib/temporalio/api/cloud/identity/v1/message.rb +41 -0
- data/lib/temporalio/api/cloud/namespace/v1/message.rb +42 -0
- data/lib/temporalio/api/cloud/nexus/v1/message.rb +31 -0
- data/lib/temporalio/api/cloud/operation/v1/message.rb +28 -0
- data/lib/temporalio/api/cloud/region/v1/message.rb +24 -0
- data/lib/temporalio/api/cloud/resource/v1/message.rb +23 -0
- data/lib/temporalio/api/cloud/sink/v1/message.rb +24 -0
- data/lib/temporalio/api/cloud/usage/v1/message.rb +31 -0
- data/lib/temporalio/api/command/v1/message.rb +46 -0
- data/lib/temporalio/api/common/v1/grpc_status.rb +23 -0
- data/lib/temporalio/api/common/v1/message.rb +47 -0
- data/lib/temporalio/api/enums/v1/batch_operation.rb +22 -0
- data/lib/temporalio/api/enums/v1/command_type.rb +21 -0
- data/lib/temporalio/api/enums/v1/common.rb +26 -0
- data/lib/temporalio/api/enums/v1/event_type.rb +21 -0
- data/lib/temporalio/api/enums/v1/failed_cause.rb +26 -0
- data/lib/temporalio/api/enums/v1/namespace.rb +23 -0
- data/lib/temporalio/api/enums/v1/query.rb +22 -0
- data/lib/temporalio/api/enums/v1/reset.rb +23 -0
- data/lib/temporalio/api/enums/v1/schedule.rb +21 -0
- data/lib/temporalio/api/enums/v1/task_queue.rb +25 -0
- data/lib/temporalio/api/enums/v1/update.rb +22 -0
- data/lib/temporalio/api/enums/v1/workflow.rb +30 -0
- data/lib/temporalio/api/errordetails/v1/message.rb +42 -0
- data/lib/temporalio/api/export/v1/message.rb +24 -0
- data/lib/temporalio/api/failure/v1/message.rb +35 -0
- data/lib/temporalio/api/filter/v1/message.rb +27 -0
- data/lib/temporalio/api/history/v1/message.rb +90 -0
- data/lib/temporalio/api/namespace/v1/message.rb +31 -0
- data/lib/temporalio/api/nexus/v1/message.rb +40 -0
- data/lib/temporalio/api/operatorservice/v1/request_response.rb +49 -0
- data/lib/temporalio/api/operatorservice/v1/service.rb +23 -0
- data/lib/temporalio/api/operatorservice.rb +3 -0
- data/lib/temporalio/api/payload_visitor.rb +1513 -0
- data/lib/temporalio/api/protocol/v1/message.rb +23 -0
- data/lib/temporalio/api/query/v1/message.rb +27 -0
- data/lib/temporalio/api/replication/v1/message.rb +26 -0
- data/lib/temporalio/api/schedule/v1/message.rb +43 -0
- data/lib/temporalio/api/sdk/v1/enhanced_stack_trace.rb +25 -0
- data/lib/temporalio/api/sdk/v1/task_complete_metadata.rb +21 -0
- data/lib/temporalio/api/sdk/v1/user_metadata.rb +23 -0
- data/lib/temporalio/api/sdk/v1/workflow_metadata.rb +23 -0
- data/lib/temporalio/api/taskqueue/v1/message.rb +45 -0
- data/lib/{gen/temporal/api/testservice/v1/request_response_pb.rb → temporalio/api/testservice/v1/request_response.rb} +6 -24
- data/lib/temporalio/api/testservice/v1/service.rb +23 -0
- data/lib/temporalio/api/update/v1/message.rb +33 -0
- data/lib/temporalio/api/version/v1/message.rb +26 -0
- data/lib/temporalio/api/workflow/v1/message.rb +43 -0
- data/lib/temporalio/api/workflowservice/v1/request_response.rb +204 -0
- data/lib/temporalio/api/workflowservice/v1/service.rb +23 -0
- data/lib/temporalio/api/workflowservice.rb +3 -0
- data/lib/temporalio/api.rb +14 -0
- data/lib/temporalio/cancellation.rb +170 -0
- data/lib/temporalio/client/activity_id_reference.rb +32 -0
- data/lib/temporalio/client/async_activity_handle.rb +85 -0
- data/lib/temporalio/client/connection/cloud_service.rb +726 -0
- data/lib/temporalio/client/connection/operator_service.rb +201 -0
- data/lib/temporalio/client/connection/service.rb +42 -0
- data/lib/temporalio/client/connection/test_service.rb +111 -0
- data/lib/temporalio/client/connection/workflow_service.rb +1041 -0
- data/lib/temporalio/client/connection.rb +316 -0
- data/lib/temporalio/client/interceptor.rb +416 -0
- data/lib/temporalio/client/schedule.rb +967 -0
- data/lib/temporalio/client/schedule_handle.rb +126 -0
- data/lib/temporalio/client/workflow_execution.rb +100 -0
- data/lib/temporalio/client/workflow_execution_count.rb +36 -0
- data/lib/temporalio/client/workflow_execution_status.rb +18 -0
- data/lib/temporalio/client/workflow_handle.rb +326 -180
- data/lib/temporalio/client/workflow_query_reject_condition.rb +14 -0
- data/lib/temporalio/client/workflow_update_handle.rb +65 -0
- data/lib/temporalio/client/workflow_update_wait_stage.rb +17 -0
- data/lib/temporalio/client.rb +447 -94
- data/lib/temporalio/common_enums.rb +41 -0
- data/lib/temporalio/converters/data_converter.rb +99 -0
- data/lib/temporalio/converters/failure_converter.rb +202 -0
- data/lib/temporalio/converters/payload_codec.rb +26 -0
- data/lib/temporalio/converters/payload_converter/binary_null.rb +34 -0
- data/lib/temporalio/converters/payload_converter/binary_plain.rb +35 -0
- data/lib/temporalio/converters/payload_converter/binary_protobuf.rb +42 -0
- data/lib/temporalio/converters/payload_converter/composite.rb +66 -0
- data/lib/temporalio/converters/payload_converter/encoding.rb +35 -0
- data/lib/temporalio/converters/payload_converter/json_plain.rb +44 -0
- data/lib/temporalio/converters/payload_converter/json_protobuf.rb +41 -0
- data/lib/temporalio/converters/payload_converter.rb +71 -0
- data/lib/temporalio/converters/raw_value.rb +20 -0
- data/lib/temporalio/converters.rb +9 -0
- data/lib/temporalio/error/failure.rb +119 -94
- data/lib/temporalio/error.rb +155 -0
- data/lib/temporalio/internal/bridge/api/activity_result/activity_result.rb +34 -0
- data/lib/temporalio/internal/bridge/api/activity_task/activity_task.rb +31 -0
- data/lib/temporalio/internal/bridge/api/child_workflow/child_workflow.rb +33 -0
- data/lib/temporalio/internal/bridge/api/common/common.rb +26 -0
- data/lib/temporalio/internal/bridge/api/core_interface.rb +40 -0
- data/lib/temporalio/internal/bridge/api/external_data/external_data.rb +27 -0
- data/lib/temporalio/internal/bridge/api/nexus/nexus.rb +33 -0
- data/lib/temporalio/internal/bridge/api/workflow_activation/workflow_activation.rb +56 -0
- data/lib/temporalio/internal/bridge/api/workflow_commands/workflow_commands.rb +57 -0
- data/lib/temporalio/internal/bridge/api/workflow_completion/workflow_completion.rb +30 -0
- data/lib/temporalio/internal/bridge/api.rb +3 -0
- data/lib/temporalio/internal/bridge/client.rb +95 -0
- data/lib/temporalio/internal/bridge/runtime.rb +53 -0
- data/lib/temporalio/internal/bridge/testing.rb +66 -0
- data/lib/temporalio/internal/bridge/worker.rb +85 -0
- data/lib/temporalio/internal/bridge.rb +36 -0
- data/lib/temporalio/internal/client/implementation.rb +700 -0
- data/lib/temporalio/internal/metric.rb +122 -0
- data/lib/temporalio/internal/proto_utils.rb +133 -0
- data/lib/temporalio/internal/worker/activity_worker.rb +373 -0
- data/lib/temporalio/internal/worker/multi_runner.rb +213 -0
- data/lib/temporalio/internal/worker/workflow_instance/child_workflow_handle.rb +54 -0
- data/lib/temporalio/internal/worker/workflow_instance/context.rb +329 -0
- data/lib/temporalio/internal/worker/workflow_instance/details.rb +44 -0
- data/lib/temporalio/internal/worker/workflow_instance/external_workflow_handle.rb +32 -0
- data/lib/temporalio/internal/worker/workflow_instance/externally_immutable_hash.rb +22 -0
- data/lib/temporalio/internal/worker/workflow_instance/handler_execution.rb +25 -0
- data/lib/temporalio/internal/worker/workflow_instance/handler_hash.rb +41 -0
- data/lib/temporalio/internal/worker/workflow_instance/illegal_call_tracer.rb +97 -0
- data/lib/temporalio/internal/worker/workflow_instance/inbound_implementation.rb +62 -0
- data/lib/temporalio/internal/worker/workflow_instance/outbound_implementation.rb +415 -0
- data/lib/temporalio/internal/worker/workflow_instance/replay_safe_logger.rb +37 -0
- data/lib/temporalio/internal/worker/workflow_instance/replay_safe_metric.rb +40 -0
- data/lib/temporalio/internal/worker/workflow_instance/scheduler.rb +163 -0
- data/lib/temporalio/internal/worker/workflow_instance.rb +730 -0
- data/lib/temporalio/internal/worker/workflow_worker.rb +196 -0
- data/lib/temporalio/internal.rb +7 -0
- data/lib/temporalio/metric.rb +109 -0
- data/lib/temporalio/retry_policy.rb +55 -73
- data/lib/temporalio/runtime.rb +302 -13
- data/lib/temporalio/scoped_logger.rb +96 -0
- data/lib/temporalio/search_attributes.rb +343 -0
- data/lib/temporalio/testing/activity_environment.rb +132 -0
- data/lib/temporalio/testing/workflow_environment.rb +345 -74
- data/lib/temporalio/testing.rb +4 -169
- data/lib/temporalio/version.rb +3 -1
- data/lib/temporalio/worker/activity_executor/fiber.rb +49 -0
- data/lib/temporalio/worker/activity_executor/thread_pool.rb +46 -0
- data/lib/temporalio/worker/activity_executor.rb +55 -0
- data/lib/temporalio/worker/interceptor.rb +362 -0
- data/lib/temporalio/worker/thread_pool.rb +237 -0
- data/lib/temporalio/worker/tuner.rb +151 -0
- data/lib/temporalio/worker/workflow_executor/thread_pool.rb +230 -0
- data/lib/temporalio/worker/workflow_executor.rb +26 -0
- data/lib/temporalio/worker.rb +554 -161
- data/lib/temporalio/workflow/activity_cancellation_type.rb +20 -0
- data/lib/temporalio/workflow/child_workflow_cancellation_type.rb +21 -0
- data/lib/temporalio/workflow/child_workflow_handle.rb +43 -0
- data/lib/temporalio/workflow/definition.rb +566 -0
- data/lib/temporalio/workflow/external_workflow_handle.rb +41 -0
- data/lib/temporalio/workflow/future.rb +117 -104
- data/lib/temporalio/workflow/handler_unfinished_policy.rb +13 -0
- data/lib/temporalio/workflow/info.rb +63 -57
- data/lib/temporalio/workflow/parent_close_policy.rb +19 -0
- data/lib/temporalio/workflow/update_info.rb +20 -0
- data/lib/temporalio/workflow.rb +523 -0
- data/lib/temporalio/workflow_history.rb +22 -0
- data/lib/temporalio.rb +6 -7
- data/temporalio.gemspec +20 -39
- metadata +171 -710
- data/bridge/Cargo.lock +0 -2997
- data/bridge/Cargo.toml +0 -29
- data/bridge/sdk-core/ARCHITECTURE.md +0 -76
- data/bridge/sdk-core/Cargo.toml +0 -2
- data/bridge/sdk-core/LICENSE.txt +0 -23
- data/bridge/sdk-core/README.md +0 -117
- data/bridge/sdk-core/arch_docs/diagrams/README.md +0 -10
- data/bridge/sdk-core/arch_docs/diagrams/sticky_queues.puml +0 -40
- data/bridge/sdk-core/arch_docs/diagrams/workflow_internals.svg +0 -1
- data/bridge/sdk-core/arch_docs/sticky_queues.md +0 -51
- data/bridge/sdk-core/client/Cargo.toml +0 -40
- data/bridge/sdk-core/client/LICENSE.txt +0 -23
- data/bridge/sdk-core/client/src/lib.rs +0 -1462
- data/bridge/sdk-core/client/src/metrics.rs +0 -174
- data/bridge/sdk-core/client/src/raw.rs +0 -932
- data/bridge/sdk-core/client/src/retry.rs +0 -763
- data/bridge/sdk-core/client/src/workflow_handle/mod.rs +0 -185
- data/bridge/sdk-core/core/Cargo.toml +0 -129
- data/bridge/sdk-core/core/LICENSE.txt +0 -23
- data/bridge/sdk-core/core/benches/workflow_replay.rs +0 -76
- data/bridge/sdk-core/core/src/abstractions.rs +0 -355
- data/bridge/sdk-core/core/src/core_tests/activity_tasks.rs +0 -1049
- data/bridge/sdk-core/core/src/core_tests/child_workflows.rs +0 -221
- data/bridge/sdk-core/core/src/core_tests/determinism.rs +0 -270
- data/bridge/sdk-core/core/src/core_tests/local_activities.rs +0 -1046
- data/bridge/sdk-core/core/src/core_tests/mod.rs +0 -100
- data/bridge/sdk-core/core/src/core_tests/queries.rs +0 -893
- data/bridge/sdk-core/core/src/core_tests/replay_flag.rs +0 -65
- data/bridge/sdk-core/core/src/core_tests/workers.rs +0 -257
- data/bridge/sdk-core/core/src/core_tests/workflow_cancels.rs +0 -124
- data/bridge/sdk-core/core/src/core_tests/workflow_tasks.rs +0 -2433
- data/bridge/sdk-core/core/src/ephemeral_server/mod.rs +0 -609
- data/bridge/sdk-core/core/src/internal_flags.rs +0 -136
- data/bridge/sdk-core/core/src/lib.rs +0 -289
- data/bridge/sdk-core/core/src/pollers/mod.rs +0 -54
- data/bridge/sdk-core/core/src/pollers/poll_buffer.rs +0 -297
- data/bridge/sdk-core/core/src/protosext/mod.rs +0 -428
- data/bridge/sdk-core/core/src/replay/mod.rs +0 -215
- data/bridge/sdk-core/core/src/retry_logic.rs +0 -202
- data/bridge/sdk-core/core/src/telemetry/log_export.rs +0 -190
- data/bridge/sdk-core/core/src/telemetry/metrics.rs +0 -462
- data/bridge/sdk-core/core/src/telemetry/mod.rs +0 -423
- data/bridge/sdk-core/core/src/telemetry/prometheus_server.rs +0 -83
- data/bridge/sdk-core/core/src/test_help/mod.rs +0 -939
- data/bridge/sdk-core/core/src/worker/activities/activity_heartbeat_manager.rs +0 -536
- data/bridge/sdk-core/core/src/worker/activities/activity_task_poller_stream.rs +0 -89
- data/bridge/sdk-core/core/src/worker/activities/local_activities.rs +0 -1278
- data/bridge/sdk-core/core/src/worker/activities.rs +0 -557
- data/bridge/sdk-core/core/src/worker/client/mocks.rs +0 -107
- data/bridge/sdk-core/core/src/worker/client.rs +0 -389
- data/bridge/sdk-core/core/src/worker/mod.rs +0 -677
- data/bridge/sdk-core/core/src/worker/workflow/bridge.rs +0 -35
- data/bridge/sdk-core/core/src/worker/workflow/driven_workflow.rs +0 -99
- data/bridge/sdk-core/core/src/worker/workflow/history_update.rs +0 -1111
- data/bridge/sdk-core/core/src/worker/workflow/machines/activity_state_machine.rs +0 -964
- data/bridge/sdk-core/core/src/worker/workflow/machines/cancel_external_state_machine.rs +0 -294
- data/bridge/sdk-core/core/src/worker/workflow/machines/cancel_workflow_state_machine.rs +0 -168
- data/bridge/sdk-core/core/src/worker/workflow/machines/child_workflow_state_machine.rs +0 -918
- data/bridge/sdk-core/core/src/worker/workflow/machines/complete_workflow_state_machine.rs +0 -137
- data/bridge/sdk-core/core/src/worker/workflow/machines/continue_as_new_workflow_state_machine.rs +0 -158
- data/bridge/sdk-core/core/src/worker/workflow/machines/fail_workflow_state_machine.rs +0 -130
- data/bridge/sdk-core/core/src/worker/workflow/machines/local_activity_state_machine.rs +0 -1525
- data/bridge/sdk-core/core/src/worker/workflow/machines/mod.rs +0 -324
- data/bridge/sdk-core/core/src/worker/workflow/machines/modify_workflow_properties_state_machine.rs +0 -179
- data/bridge/sdk-core/core/src/worker/workflow/machines/patch_state_machine.rs +0 -659
- data/bridge/sdk-core/core/src/worker/workflow/machines/signal_external_state_machine.rs +0 -439
- data/bridge/sdk-core/core/src/worker/workflow/machines/timer_state_machine.rs +0 -435
- data/bridge/sdk-core/core/src/worker/workflow/machines/transition_coverage.rs +0 -175
- data/bridge/sdk-core/core/src/worker/workflow/machines/upsert_search_attributes_state_machine.rs +0 -249
- data/bridge/sdk-core/core/src/worker/workflow/machines/workflow_machines/local_acts.rs +0 -85
- data/bridge/sdk-core/core/src/worker/workflow/machines/workflow_machines.rs +0 -1280
- data/bridge/sdk-core/core/src/worker/workflow/machines/workflow_task_state_machine.rs +0 -269
- data/bridge/sdk-core/core/src/worker/workflow/managed_run/managed_wf_test.rs +0 -213
- data/bridge/sdk-core/core/src/worker/workflow/managed_run.rs +0 -1305
- data/bridge/sdk-core/core/src/worker/workflow/mod.rs +0 -1276
- data/bridge/sdk-core/core/src/worker/workflow/run_cache.rs +0 -128
- data/bridge/sdk-core/core/src/worker/workflow/wft_extraction.rs +0 -125
- data/bridge/sdk-core/core/src/worker/workflow/wft_poller.rs +0 -85
- data/bridge/sdk-core/core/src/worker/workflow/workflow_stream/saved_wf_inputs.rs +0 -117
- data/bridge/sdk-core/core/src/worker/workflow/workflow_stream/tonic_status_serde.rs +0 -24
- data/bridge/sdk-core/core/src/worker/workflow/workflow_stream.rs +0 -715
- data/bridge/sdk-core/core-api/Cargo.toml +0 -33
- data/bridge/sdk-core/core-api/LICENSE.txt +0 -23
- data/bridge/sdk-core/core-api/src/errors.rs +0 -62
- data/bridge/sdk-core/core-api/src/lib.rs +0 -113
- data/bridge/sdk-core/core-api/src/telemetry.rs +0 -141
- data/bridge/sdk-core/core-api/src/worker.rs +0 -161
- data/bridge/sdk-core/etc/deps.svg +0 -162
- data/bridge/sdk-core/etc/dynamic-config.yaml +0 -2
- data/bridge/sdk-core/etc/otel-collector-config.yaml +0 -36
- data/bridge/sdk-core/etc/prometheus.yaml +0 -6
- data/bridge/sdk-core/etc/regen-depgraph.sh +0 -5
- data/bridge/sdk-core/fsm/Cargo.toml +0 -18
- data/bridge/sdk-core/fsm/LICENSE.txt +0 -23
- data/bridge/sdk-core/fsm/README.md +0 -3
- data/bridge/sdk-core/fsm/rustfsm_procmacro/Cargo.toml +0 -27
- data/bridge/sdk-core/fsm/rustfsm_procmacro/LICENSE.txt +0 -23
- data/bridge/sdk-core/fsm/rustfsm_procmacro/src/lib.rs +0 -650
- data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/progress.rs +0 -8
- data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/dupe_transitions_fail.rs +0 -18
- data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/dupe_transitions_fail.stderr +0 -12
- data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/dynamic_dest_pass.rs +0 -41
- data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/forgot_name_fail.rs +0 -14
- data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/forgot_name_fail.stderr +0 -11
- data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/handler_arg_pass.rs +0 -32
- data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/handler_pass.rs +0 -31
- data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/medium_complex_pass.rs +0 -46
- data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/no_handle_conversions_require_into_fail.rs +0 -29
- data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/no_handle_conversions_require_into_fail.stderr +0 -12
- data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/simple_pass.rs +0 -32
- data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/struct_event_variant_fail.rs +0 -18
- data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/struct_event_variant_fail.stderr +0 -5
- data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/tuple_more_item_event_variant_fail.rs +0 -11
- data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/tuple_more_item_event_variant_fail.stderr +0 -5
- data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/tuple_zero_item_event_variant_fail.rs +0 -11
- data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/tuple_zero_item_event_variant_fail.stderr +0 -5
- data/bridge/sdk-core/fsm/rustfsm_trait/Cargo.toml +0 -14
- data/bridge/sdk-core/fsm/rustfsm_trait/LICENSE.txt +0 -23
- data/bridge/sdk-core/fsm/rustfsm_trait/src/lib.rs +0 -254
- data/bridge/sdk-core/fsm/src/lib.rs +0 -2
- data/bridge/sdk-core/histories/evict_while_la_running_no_interference-16_history.bin +0 -0
- data/bridge/sdk-core/histories/evict_while_la_running_no_interference-23_history.bin +0 -0
- data/bridge/sdk-core/histories/evict_while_la_running_no_interference-85_history.bin +0 -0
- data/bridge/sdk-core/histories/fail_wf_task.bin +0 -0
- data/bridge/sdk-core/histories/timer_workflow_history.bin +0 -0
- data/bridge/sdk-core/integ-with-otel.sh +0 -7
- data/bridge/sdk-core/protos/api_upstream/README.md +0 -9
- data/bridge/sdk-core/protos/api_upstream/api-linter.yaml +0 -40
- data/bridge/sdk-core/protos/api_upstream/buf.yaml +0 -9
- data/bridge/sdk-core/protos/api_upstream/build/go.mod +0 -7
- data/bridge/sdk-core/protos/api_upstream/build/go.sum +0 -5
- data/bridge/sdk-core/protos/api_upstream/build/tools.go +0 -29
- data/bridge/sdk-core/protos/api_upstream/dependencies/gogoproto/gogo.proto +0 -141
- data/bridge/sdk-core/protos/api_upstream/go.mod +0 -6
- data/bridge/sdk-core/protos/api_upstream/temporal/api/batch/v1/message.proto +0 -89
- data/bridge/sdk-core/protos/api_upstream/temporal/api/command/v1/message.proto +0 -248
- data/bridge/sdk-core/protos/api_upstream/temporal/api/common/v1/message.proto +0 -123
- data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/batch_operation.proto +0 -47
- data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/command_type.proto +0 -52
- data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/common.proto +0 -56
- data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/event_type.proto +0 -170
- data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/failed_cause.proto +0 -123
- data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/namespace.proto +0 -51
- data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/query.proto +0 -50
- data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/reset.proto +0 -41
- data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/schedule.proto +0 -60
- data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/task_queue.proto +0 -59
- data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/update.proto +0 -56
- data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/workflow.proto +0 -122
- data/bridge/sdk-core/protos/api_upstream/temporal/api/errordetails/v1/message.proto +0 -108
- data/bridge/sdk-core/protos/api_upstream/temporal/api/failure/v1/message.proto +0 -114
- data/bridge/sdk-core/protos/api_upstream/temporal/api/filter/v1/message.proto +0 -56
- data/bridge/sdk-core/protos/api_upstream/temporal/api/history/v1/message.proto +0 -787
- data/bridge/sdk-core/protos/api_upstream/temporal/api/namespace/v1/message.proto +0 -99
- data/bridge/sdk-core/protos/api_upstream/temporal/api/operatorservice/v1/request_response.proto +0 -124
- data/bridge/sdk-core/protos/api_upstream/temporal/api/operatorservice/v1/service.proto +0 -80
- data/bridge/sdk-core/protos/api_upstream/temporal/api/protocol/v1/message.proto +0 -57
- data/bridge/sdk-core/protos/api_upstream/temporal/api/query/v1/message.proto +0 -61
- data/bridge/sdk-core/protos/api_upstream/temporal/api/replication/v1/message.proto +0 -55
- data/bridge/sdk-core/protos/api_upstream/temporal/api/schedule/v1/message.proto +0 -379
- data/bridge/sdk-core/protos/api_upstream/temporal/api/sdk/v1/task_complete_metadata.proto +0 -63
- data/bridge/sdk-core/protos/api_upstream/temporal/api/taskqueue/v1/message.proto +0 -108
- data/bridge/sdk-core/protos/api_upstream/temporal/api/update/v1/message.proto +0 -111
- data/bridge/sdk-core/protos/api_upstream/temporal/api/version/v1/message.proto +0 -59
- data/bridge/sdk-core/protos/api_upstream/temporal/api/workflow/v1/message.proto +0 -146
- data/bridge/sdk-core/protos/api_upstream/temporal/api/workflowservice/v1/request_response.proto +0 -1199
- data/bridge/sdk-core/protos/api_upstream/temporal/api/workflowservice/v1/service.proto +0 -415
- data/bridge/sdk-core/protos/grpc/health/v1/health.proto +0 -63
- data/bridge/sdk-core/protos/local/temporal/sdk/core/activity_result/activity_result.proto +0 -79
- data/bridge/sdk-core/protos/local/temporal/sdk/core/activity_task/activity_task.proto +0 -80
- data/bridge/sdk-core/protos/local/temporal/sdk/core/child_workflow/child_workflow.proto +0 -78
- data/bridge/sdk-core/protos/local/temporal/sdk/core/common/common.proto +0 -16
- data/bridge/sdk-core/protos/local/temporal/sdk/core/core_interface.proto +0 -31
- data/bridge/sdk-core/protos/local/temporal/sdk/core/external_data/external_data.proto +0 -31
- data/bridge/sdk-core/protos/local/temporal/sdk/core/workflow_activation/workflow_activation.proto +0 -270
- data/bridge/sdk-core/protos/local/temporal/sdk/core/workflow_commands/workflow_commands.proto +0 -305
- data/bridge/sdk-core/protos/local/temporal/sdk/core/workflow_completion/workflow_completion.proto +0 -35
- data/bridge/sdk-core/protos/testsrv_upstream/api-linter.yaml +0 -38
- data/bridge/sdk-core/protos/testsrv_upstream/buf.yaml +0 -13
- data/bridge/sdk-core/protos/testsrv_upstream/dependencies/gogoproto/gogo.proto +0 -141
- data/bridge/sdk-core/protos/testsrv_upstream/temporal/api/testservice/v1/request_response.proto +0 -63
- data/bridge/sdk-core/protos/testsrv_upstream/temporal/api/testservice/v1/service.proto +0 -90
- data/bridge/sdk-core/rustfmt.toml +0 -1
- data/bridge/sdk-core/sdk/Cargo.toml +0 -48
- data/bridge/sdk-core/sdk/LICENSE.txt +0 -23
- data/bridge/sdk-core/sdk/src/activity_context.rs +0 -230
- data/bridge/sdk-core/sdk/src/app_data.rs +0 -37
- data/bridge/sdk-core/sdk/src/interceptors.rs +0 -50
- data/bridge/sdk-core/sdk/src/lib.rs +0 -861
- data/bridge/sdk-core/sdk/src/payload_converter.rs +0 -11
- data/bridge/sdk-core/sdk/src/workflow_context/options.rs +0 -295
- data/bridge/sdk-core/sdk/src/workflow_context.rs +0 -694
- data/bridge/sdk-core/sdk/src/workflow_future.rs +0 -500
- data/bridge/sdk-core/sdk-core-protos/Cargo.toml +0 -33
- data/bridge/sdk-core/sdk-core-protos/LICENSE.txt +0 -23
- data/bridge/sdk-core/sdk-core-protos/build.rs +0 -142
- data/bridge/sdk-core/sdk-core-protos/src/constants.rs +0 -7
- data/bridge/sdk-core/sdk-core-protos/src/history_builder.rs +0 -557
- data/bridge/sdk-core/sdk-core-protos/src/history_info.rs +0 -234
- data/bridge/sdk-core/sdk-core-protos/src/lib.rs +0 -2088
- data/bridge/sdk-core/sdk-core-protos/src/task_token.rs +0 -48
- data/bridge/sdk-core/sdk-core-protos/src/utilities.rs +0 -14
- data/bridge/sdk-core/test-utils/Cargo.toml +0 -38
- data/bridge/sdk-core/test-utils/src/canned_histories.rs +0 -1389
- data/bridge/sdk-core/test-utils/src/histfetch.rs +0 -28
- data/bridge/sdk-core/test-utils/src/lib.rs +0 -709
- data/bridge/sdk-core/test-utils/src/wf_input_saver.rs +0 -50
- data/bridge/sdk-core/test-utils/src/workflows.rs +0 -29
- data/bridge/sdk-core/tests/fuzzy_workflow.rs +0 -130
- data/bridge/sdk-core/tests/heavy_tests.rs +0 -265
- data/bridge/sdk-core/tests/integ_tests/client_tests.rs +0 -36
- data/bridge/sdk-core/tests/integ_tests/ephemeral_server_tests.rs +0 -150
- data/bridge/sdk-core/tests/integ_tests/heartbeat_tests.rs +0 -223
- data/bridge/sdk-core/tests/integ_tests/metrics_tests.rs +0 -239
- data/bridge/sdk-core/tests/integ_tests/polling_tests.rs +0 -90
- data/bridge/sdk-core/tests/integ_tests/queries_tests.rs +0 -314
- data/bridge/sdk-core/tests/integ_tests/visibility_tests.rs +0 -151
- data/bridge/sdk-core/tests/integ_tests/workflow_tests/activities.rs +0 -902
- data/bridge/sdk-core/tests/integ_tests/workflow_tests/appdata_propagation.rs +0 -61
- data/bridge/sdk-core/tests/integ_tests/workflow_tests/cancel_external.rs +0 -60
- data/bridge/sdk-core/tests/integ_tests/workflow_tests/cancel_wf.rs +0 -51
- data/bridge/sdk-core/tests/integ_tests/workflow_tests/child_workflows.rs +0 -51
- data/bridge/sdk-core/tests/integ_tests/workflow_tests/continue_as_new.rs +0 -64
- data/bridge/sdk-core/tests/integ_tests/workflow_tests/determinism.rs +0 -47
- data/bridge/sdk-core/tests/integ_tests/workflow_tests/local_activities.rs +0 -669
- data/bridge/sdk-core/tests/integ_tests/workflow_tests/modify_wf_properties.rs +0 -54
- data/bridge/sdk-core/tests/integ_tests/workflow_tests/patches.rs +0 -92
- data/bridge/sdk-core/tests/integ_tests/workflow_tests/replay.rs +0 -228
- data/bridge/sdk-core/tests/integ_tests/workflow_tests/resets.rs +0 -94
- data/bridge/sdk-core/tests/integ_tests/workflow_tests/signals.rs +0 -171
- data/bridge/sdk-core/tests/integ_tests/workflow_tests/stickyness.rs +0 -85
- data/bridge/sdk-core/tests/integ_tests/workflow_tests/timers.rs +0 -120
- data/bridge/sdk-core/tests/integ_tests/workflow_tests/upsert_search_attrs.rs +0 -77
- data/bridge/sdk-core/tests/integ_tests/workflow_tests.rs +0 -596
- data/bridge/sdk-core/tests/main.rs +0 -103
- data/bridge/sdk-core/tests/runner.rs +0 -132
- data/bridge/sdk-core/tests/wf_input_replay.rs +0 -32
- data/bridge/src/connection.rs +0 -202
- data/bridge/src/lib.rs +0 -494
- data/bridge/src/runtime.rs +0 -54
- data/bridge/src/test_server.rs +0 -153
- data/bridge/src/worker.rs +0 -197
- data/ext/Rakefile +0 -9
- data/lib/gen/dependencies/gogoproto/gogo_pb.rb +0 -14
- data/lib/gen/temporal/api/batch/v1/message_pb.rb +0 -50
- data/lib/gen/temporal/api/command/v1/message_pb.rb +0 -160
- data/lib/gen/temporal/api/common/v1/message_pb.rb +0 -73
- data/lib/gen/temporal/api/enums/v1/batch_operation_pb.rb +0 -33
- data/lib/gen/temporal/api/enums/v1/command_type_pb.rb +0 -37
- data/lib/gen/temporal/api/enums/v1/common_pb.rb +0 -42
- data/lib/gen/temporal/api/enums/v1/event_type_pb.rb +0 -68
- data/lib/gen/temporal/api/enums/v1/failed_cause_pb.rb +0 -79
- data/lib/gen/temporal/api/enums/v1/namespace_pb.rb +0 -37
- data/lib/gen/temporal/api/enums/v1/query_pb.rb +0 -31
- data/lib/gen/temporal/api/enums/v1/reset_pb.rb +0 -24
- data/lib/gen/temporal/api/enums/v1/schedule_pb.rb +0 -28
- data/lib/gen/temporal/api/enums/v1/task_queue_pb.rb +0 -30
- data/lib/gen/temporal/api/enums/v1/update_pb.rb +0 -25
- data/lib/gen/temporal/api/enums/v1/workflow_pb.rb +0 -89
- data/lib/gen/temporal/api/errordetails/v1/message_pb.rb +0 -84
- data/lib/gen/temporal/api/failure/v1/message_pb.rb +0 -83
- data/lib/gen/temporal/api/filter/v1/message_pb.rb +0 -40
- data/lib/gen/temporal/api/history/v1/message_pb.rb +0 -498
- data/lib/gen/temporal/api/namespace/v1/message_pb.rb +0 -64
- data/lib/gen/temporal/api/operatorservice/v1/request_response_pb.rb +0 -88
- data/lib/gen/temporal/api/operatorservice/v1/service_pb.rb +0 -20
- data/lib/gen/temporal/api/protocol/v1/message_pb.rb +0 -30
- data/lib/gen/temporal/api/query/v1/message_pb.rb +0 -38
- data/lib/gen/temporal/api/replication/v1/message_pb.rb +0 -37
- data/lib/gen/temporal/api/schedule/v1/message_pb.rb +0 -149
- data/lib/gen/temporal/api/sdk/v1/task_complete_metadata_pb.rb +0 -23
- data/lib/gen/temporal/api/taskqueue/v1/message_pb.rb +0 -73
- data/lib/gen/temporal/api/testservice/v1/service_pb.rb +0 -21
- data/lib/gen/temporal/api/update/v1/message_pb.rb +0 -72
- data/lib/gen/temporal/api/version/v1/message_pb.rb +0 -41
- data/lib/gen/temporal/api/workflow/v1/message_pb.rb +0 -111
- data/lib/gen/temporal/api/workflowservice/v1/request_response_pb.rb +0 -798
- data/lib/gen/temporal/api/workflowservice/v1/service_pb.rb +0 -20
- data/lib/gen/temporal/sdk/core/activity_result/activity_result_pb.rb +0 -62
- data/lib/gen/temporal/sdk/core/activity_task/activity_task_pb.rb +0 -61
- data/lib/gen/temporal/sdk/core/child_workflow/child_workflow_pb.rb +0 -61
- data/lib/gen/temporal/sdk/core/common/common_pb.rb +0 -26
- data/lib/gen/temporal/sdk/core/core_interface_pb.rb +0 -40
- data/lib/gen/temporal/sdk/core/external_data/external_data_pb.rb +0 -31
- data/lib/gen/temporal/sdk/core/workflow_activation/workflow_activation_pb.rb +0 -171
- data/lib/gen/temporal/sdk/core/workflow_commands/workflow_commands_pb.rb +0 -200
- data/lib/gen/temporal/sdk/core/workflow_completion/workflow_completion_pb.rb +0 -41
- data/lib/temporalio/bridge/connect_options.rb +0 -15
- data/lib/temporalio/bridge/error.rb +0 -8
- data/lib/temporalio/bridge/retry_config.rb +0 -24
- data/lib/temporalio/bridge/tls_options.rb +0 -19
- data/lib/temporalio/bridge.rb +0 -14
- data/lib/temporalio/client/implementation.rb +0 -340
- data/lib/temporalio/connection/retry_config.rb +0 -44
- data/lib/temporalio/connection/service.rb +0 -20
- data/lib/temporalio/connection/test_service.rb +0 -92
- data/lib/temporalio/connection/tls_options.rb +0 -51
- data/lib/temporalio/connection/workflow_service.rb +0 -731
- data/lib/temporalio/connection.rb +0 -86
- data/lib/temporalio/data_converter.rb +0 -191
- data/lib/temporalio/error/workflow_failure.rb +0 -19
- data/lib/temporalio/errors.rb +0 -40
- data/lib/temporalio/failure_converter/base.rb +0 -26
- data/lib/temporalio/failure_converter/basic.rb +0 -319
- data/lib/temporalio/failure_converter.rb +0 -7
- data/lib/temporalio/interceptor/activity_inbound.rb +0 -22
- data/lib/temporalio/interceptor/activity_outbound.rb +0 -24
- data/lib/temporalio/interceptor/chain.rb +0 -28
- data/lib/temporalio/interceptor/client.rb +0 -127
- data/lib/temporalio/interceptor.rb +0 -22
- data/lib/temporalio/payload_codec/base.rb +0 -32
- data/lib/temporalio/payload_converter/base.rb +0 -24
- data/lib/temporalio/payload_converter/bytes.rb +0 -27
- data/lib/temporalio/payload_converter/composite.rb +0 -49
- data/lib/temporalio/payload_converter/encoding_base.rb +0 -35
- data/lib/temporalio/payload_converter/json.rb +0 -26
- data/lib/temporalio/payload_converter/nil.rb +0 -26
- data/lib/temporalio/payload_converter.rb +0 -14
- data/lib/temporalio/retry_state.rb +0 -35
- data/lib/temporalio/testing/time_skipping_handle.rb +0 -32
- data/lib/temporalio/testing/time_skipping_interceptor.rb +0 -23
- data/lib/temporalio/timeout_type.rb +0 -29
- data/lib/temporalio/worker/activity_runner.rb +0 -114
- data/lib/temporalio/worker/activity_worker.rb +0 -164
- data/lib/temporalio/worker/reactor.rb +0 -46
- data/lib/temporalio/worker/runner.rb +0 -63
- data/lib/temporalio/worker/sync_worker.rb +0 -124
- data/lib/temporalio/worker/thread_pool_executor.rb +0 -51
- data/lib/temporalio/workflow/async.rb +0 -46
- data/lib/temporalio/workflow/execution_info.rb +0 -54
- data/lib/temporalio/workflow/execution_status.rb +0 -36
- data/lib/temporalio/workflow/id_reuse_policy.rb +0 -36
- data/lib/temporalio/workflow/query_reject_condition.rb +0 -33
- data/lib/thermite_patch.rb +0 -33
- data/sig/async.rbs +0 -17
- data/sig/protobuf.rbs +0 -16
- data/sig/protos/dependencies/gogoproto/gogo.rbs +0 -914
- data/sig/protos/google/protobuf/any.rbs +0 -157
- data/sig/protos/google/protobuf/descriptor.rbs +0 -2825
- data/sig/protos/google/protobuf/duration.rbs +0 -114
- data/sig/protos/google/protobuf/empty.rbs +0 -36
- data/sig/protos/google/protobuf/timestamp.rbs +0 -145
- data/sig/protos/google/protobuf/wrappers.rbs +0 -358
- data/sig/protos/temporal/api/batch/v1/message.rbs +0 -300
- data/sig/protos/temporal/api/command/v1/message.rbs +0 -1399
- data/sig/protos/temporal/api/common/v1/message.rbs +0 -528
- data/sig/protos/temporal/api/enums/v1/batch_operation.rbs +0 -79
- data/sig/protos/temporal/api/enums/v1/command_type.rbs +0 -68
- data/sig/protos/temporal/api/enums/v1/common.rbs +0 -118
- data/sig/protos/temporal/api/enums/v1/event_type.rbs +0 -264
- data/sig/protos/temporal/api/enums/v1/failed_cause.rbs +0 -277
- data/sig/protos/temporal/api/enums/v1/namespace.rbs +0 -108
- data/sig/protos/temporal/api/enums/v1/query.rbs +0 -81
- data/sig/protos/temporal/api/enums/v1/reset.rbs +0 -44
- data/sig/protos/temporal/api/enums/v1/schedule.rbs +0 -72
- data/sig/protos/temporal/api/enums/v1/task_queue.rbs +0 -92
- data/sig/protos/temporal/api/enums/v1/update.rbs +0 -64
- data/sig/protos/temporal/api/enums/v1/workflow.rbs +0 -371
- data/sig/protos/temporal/api/errordetails/v1/message.rbs +0 -551
- data/sig/protos/temporal/api/failure/v1/message.rbs +0 -581
- data/sig/protos/temporal/api/filter/v1/message.rbs +0 -171
- data/sig/protos/temporal/api/history/v1/message.rbs +0 -4609
- data/sig/protos/temporal/api/namespace/v1/message.rbs +0 -410
- data/sig/protos/temporal/api/operatorservice/v1/request_response.rbs +0 -643
- data/sig/protos/temporal/api/operatorservice/v1/service.rbs +0 -17
- data/sig/protos/temporal/api/protocol/v1/message.rbs +0 -84
- data/sig/protos/temporal/api/query/v1/message.rbs +0 -182
- data/sig/protos/temporal/api/replication/v1/message.rbs +0 -148
- data/sig/protos/temporal/api/schedule/v1/message.rbs +0 -1488
- data/sig/protos/temporal/api/sdk/v1/task_complete_metadata.rbs +0 -110
- data/sig/protos/temporal/api/taskqueue/v1/message.rbs +0 -486
- data/sig/protos/temporal/api/testservice/v1/request_response.rbs +0 -249
- data/sig/protos/temporal/api/testservice/v1/service.rbs +0 -15
- data/sig/protos/temporal/api/update/v1/message.rbs +0 -489
- data/sig/protos/temporal/api/version/v1/message.rbs +0 -184
- data/sig/protos/temporal/api/workflow/v1/message.rbs +0 -824
- data/sig/protos/temporal/api/workflowservice/v1/request_response.rbs +0 -7250
- data/sig/protos/temporal/api/workflowservice/v1/service.rbs +0 -22
- data/sig/protos/temporal/sdk/core/activity_result/activity_result.rbs +0 -380
- data/sig/protos/temporal/sdk/core/activity_task/activity_task.rbs +0 -386
- data/sig/protos/temporal/sdk/core/child_workflow/child_workflow.rbs +0 -323
- data/sig/protos/temporal/sdk/core/common/common.rbs +0 -62
- data/sig/protos/temporal/sdk/core/core_interface.rbs +0 -101
- data/sig/protos/temporal/sdk/core/external_data/external_data.rbs +0 -119
- data/sig/protos/temporal/sdk/core/workflow_activation/workflow_activation.rbs +0 -1473
- data/sig/protos/temporal/sdk/core/workflow_commands/workflow_commands.rbs +0 -1784
- data/sig/protos/temporal/sdk/core/workflow_completion/workflow_completion.rbs +0 -180
- data/sig/ruby.rbs +0 -12
- data/sig/temporalio/activity/context.rbs +0 -29
- data/sig/temporalio/activity/info.rbs +0 -43
- data/sig/temporalio/activity.rbs +0 -19
- data/sig/temporalio/bridge/connect_options.rbs +0 -19
- data/sig/temporalio/bridge/error.rbs +0 -8
- data/sig/temporalio/bridge/retry_config.rbs +0 -21
- data/sig/temporalio/bridge/tls_options.rbs +0 -17
- data/sig/temporalio/bridge.rbs +0 -71
- data/sig/temporalio/client/implementation.rbs +0 -38
- data/sig/temporalio/client/workflow_handle.rbs +0 -41
- data/sig/temporalio/client.rbs +0 -35
- data/sig/temporalio/connection/retry_config.rbs +0 -37
- data/sig/temporalio/connection/service.rbs +0 -14
- data/sig/temporalio/connection/test_service.rbs +0 -13
- data/sig/temporalio/connection/tls_options.rbs +0 -43
- data/sig/temporalio/connection/workflow_service.rbs +0 -48
- data/sig/temporalio/connection.rbs +0 -30
- data/sig/temporalio/data_converter.rbs +0 -35
- data/sig/temporalio/error/failure.rbs +0 -121
- data/sig/temporalio/error/workflow_failure.rbs +0 -9
- data/sig/temporalio/errors.rbs +0 -36
- data/sig/temporalio/failure_converter/base.rbs +0 -12
- data/sig/temporalio/failure_converter/basic.rbs +0 -86
- data/sig/temporalio/failure_converter.rbs +0 -5
- data/sig/temporalio/interceptor/activity_inbound.rbs +0 -21
- data/sig/temporalio/interceptor/activity_outbound.rbs +0 -10
- data/sig/temporalio/interceptor/chain.rbs +0 -24
- data/sig/temporalio/interceptor/client.rbs +0 -148
- data/sig/temporalio/interceptor.rbs +0 -6
- data/sig/temporalio/payload_codec/base.rbs +0 -12
- data/sig/temporalio/payload_converter/base.rbs +0 -12
- data/sig/temporalio/payload_converter/bytes.rbs +0 -9
- data/sig/temporalio/payload_converter/composite.rbs +0 -19
- data/sig/temporalio/payload_converter/encoding_base.rbs +0 -14
- data/sig/temporalio/payload_converter/json.rbs +0 -9
- data/sig/temporalio/payload_converter/nil.rbs +0 -9
- data/sig/temporalio/payload_converter.rbs +0 -5
- data/sig/temporalio/retry_policy.rbs +0 -25
- data/sig/temporalio/retry_state.rbs +0 -20
- data/sig/temporalio/runtime.rbs +0 -12
- data/sig/temporalio/testing/time_skipping_handle.rbs +0 -15
- data/sig/temporalio/testing/time_skipping_interceptor.rbs +0 -13
- data/sig/temporalio/testing/workflow_environment.rbs +0 -22
- data/sig/temporalio/testing.rbs +0 -35
- data/sig/temporalio/timeout_type.rbs +0 -15
- data/sig/temporalio/version.rbs +0 -3
- data/sig/temporalio/worker/activity_runner.rbs +0 -35
- data/sig/temporalio/worker/activity_worker.rbs +0 -44
- data/sig/temporalio/worker/reactor.rbs +0 -22
- data/sig/temporalio/worker/runner.rbs +0 -21
- data/sig/temporalio/worker/sync_worker.rbs +0 -23
- data/sig/temporalio/worker/thread_pool_executor.rbs +0 -23
- data/sig/temporalio/worker.rbs +0 -46
- data/sig/temporalio/workflow/async.rbs +0 -9
- data/sig/temporalio/workflow/execution_info.rbs +0 -55
- data/sig/temporalio/workflow/execution_status.rbs +0 -21
- data/sig/temporalio/workflow/future.rbs +0 -40
- data/sig/temporalio/workflow/id_reuse_policy.rbs +0 -15
- data/sig/temporalio/workflow/info.rbs +0 -55
- data/sig/temporalio/workflow/query_reject_condition.rbs +0 -14
- data/sig/temporalio.rbs +0 -2
- data/sig/thermite_patch.rbs +0 -15
|
@@ -1,112 +1,383 @@
|
|
|
1
|
-
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require 'delegate'
|
|
4
|
+
require 'temporalio/api'
|
|
5
|
+
require 'temporalio/api/testservice/v1/request_response'
|
|
2
6
|
require 'temporalio/client'
|
|
3
|
-
require 'temporalio/
|
|
7
|
+
require 'temporalio/client/connection/test_service'
|
|
8
|
+
require 'temporalio/client/workflow_handle'
|
|
9
|
+
require 'temporalio/converters'
|
|
10
|
+
require 'temporalio/internal/bridge/testing'
|
|
11
|
+
require 'temporalio/internal/proto_utils'
|
|
12
|
+
require 'temporalio/runtime'
|
|
13
|
+
require 'temporalio/version'
|
|
4
14
|
|
|
5
15
|
module Temporalio
|
|
6
16
|
module Testing
|
|
7
|
-
#
|
|
8
|
-
#
|
|
9
|
-
# Most developers will want to use the {Temporalio::Testing.start_time_skipping_environment} to
|
|
10
|
-
# start a test server process that automatically skips time as needed. Alternatively,
|
|
11
|
-
# {Temporalio::Testing.start_local_environment} may be used for a full, local Temporal server
|
|
12
|
-
# with more features.
|
|
13
|
-
#
|
|
14
|
-
# @note Unless using the above mentioned methods with an explicit block, you will need to call
|
|
15
|
-
# {#shutdown} after you're finished with this environment.
|
|
17
|
+
# Test environment with a Temporal server for running workflows and more.
|
|
16
18
|
class WorkflowEnvironment
|
|
17
|
-
# @return [
|
|
18
|
-
attr_reader :
|
|
19
|
-
|
|
20
|
-
# @return [String] A namespace for this environment.
|
|
21
|
-
attr_reader :namespace
|
|
19
|
+
# @return [Client] Client for the server.
|
|
20
|
+
attr_reader :client
|
|
22
21
|
|
|
23
|
-
#
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
@namespace = namespace
|
|
28
|
-
end
|
|
29
|
-
|
|
30
|
-
# A default client to be used with this environment.
|
|
22
|
+
# Start a local dev server. This is a full Temporal dev server from the CLI that by default downloaded to tmp if
|
|
23
|
+
# not already present. The dev server is run as a child process. All options that start with +dev_server_+ are for
|
|
24
|
+
# this specific implementation and therefore are not stable and may be changed as the underlying implementation
|
|
25
|
+
# changes.
|
|
31
26
|
#
|
|
32
|
-
#
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
27
|
+
# If a block is given it is passed the environment and the environment is shut down after. If a block is not
|
|
28
|
+
# given, the environment is returned and {shutdown} needs to be called manually.
|
|
29
|
+
#
|
|
30
|
+
# @param namespace [String] Namespace for the server.
|
|
31
|
+
# @param data_converter [Converters::DataConverter] Data converter for the client.
|
|
32
|
+
# @param interceptors [Array<Client::Interceptor>] Interceptors for the client.
|
|
33
|
+
# @param logger [Logger] Logger for the client.
|
|
34
|
+
# @param default_workflow_query_reject_condition [WorkflowQueryRejectCondition, nil] Default rejection condition
|
|
35
|
+
# for the client.
|
|
36
|
+
# @param ip [String] IP to bind to.
|
|
37
|
+
# @param port [Integer, nil] Port to bind on, or +nil+ for random.
|
|
38
|
+
# @param ui [Boolean] If +true+, also starts the UI.
|
|
39
|
+
# @param runtime [Runtime] Runtime for the server and client.
|
|
40
|
+
# @param dev_server_existing_path [String, nil] Existing CLI path to use instead of downloading and caching to
|
|
41
|
+
# tmp.
|
|
42
|
+
# @param dev_server_database_filename [String, nil] Persistent SQLite filename to use across local server runs.
|
|
43
|
+
# Default of +nil+ means in-memory only.
|
|
44
|
+
# @param dev_server_log_format [String] Log format for CLI dev server.
|
|
45
|
+
# @param dev_server_log_level [String] Log level for CLI dev server.
|
|
46
|
+
# @param dev_server_download_version [String] Version of dev server to download and cache.
|
|
47
|
+
# @param dev_server_download_dest_dir [String, nil] Where to download. Defaults to tmp.
|
|
48
|
+
# @param dev_server_extra_args [Array<String>] Any extra arguments for the CLI dev server.
|
|
49
|
+
#
|
|
50
|
+
# @yield [environment] If a block is given, it is called with the environment and upon complete the environment is
|
|
51
|
+
# shutdown.
|
|
52
|
+
# @yieldparam environment [WorkflowEnvironment] Environment that is shut down upon block completion.
|
|
53
|
+
#
|
|
54
|
+
# @return [WorkflowEnvironment, Object] Started local server environment with client if there was no block given,
|
|
55
|
+
# or block result if block was given.
|
|
56
|
+
def self.start_local(
|
|
57
|
+
namespace: 'default',
|
|
58
|
+
data_converter: Converters::DataConverter.default,
|
|
59
|
+
interceptors: [],
|
|
60
|
+
logger: Logger.new($stdout, level: Logger::WARN),
|
|
61
|
+
default_workflow_query_reject_condition: nil,
|
|
62
|
+
ip: '127.0.0.1',
|
|
63
|
+
port: nil,
|
|
64
|
+
ui: false, # rubocop:disable Naming/MethodParameterName
|
|
65
|
+
runtime: Runtime.default,
|
|
66
|
+
dev_server_existing_path: nil,
|
|
67
|
+
dev_server_database_filename: nil,
|
|
68
|
+
dev_server_log_format: 'pretty',
|
|
69
|
+
dev_server_log_level: 'warn',
|
|
70
|
+
dev_server_download_version: 'default',
|
|
71
|
+
dev_server_download_dest_dir: nil,
|
|
72
|
+
dev_server_extra_args: [],
|
|
73
|
+
&
|
|
74
|
+
)
|
|
75
|
+
server_options = Internal::Bridge::Testing::EphemeralServer::StartDevServerOptions.new(
|
|
76
|
+
existing_path: dev_server_existing_path,
|
|
77
|
+
sdk_name: 'sdk-ruby',
|
|
78
|
+
sdk_version: VERSION,
|
|
79
|
+
download_version: dev_server_download_version,
|
|
80
|
+
download_dest_dir: dev_server_download_dest_dir,
|
|
81
|
+
namespace:,
|
|
82
|
+
ip:,
|
|
83
|
+
port:,
|
|
84
|
+
database_filename: dev_server_database_filename,
|
|
85
|
+
ui:,
|
|
86
|
+
log_format: dev_server_log_format,
|
|
87
|
+
log_level: dev_server_log_level,
|
|
88
|
+
extra_args: dev_server_extra_args
|
|
89
|
+
)
|
|
90
|
+
_with_core_server(
|
|
91
|
+
core_server: Internal::Bridge::Testing::EphemeralServer.start_dev_server(
|
|
92
|
+
runtime._core_runtime, server_options
|
|
93
|
+
),
|
|
94
|
+
namespace:,
|
|
95
|
+
data_converter:,
|
|
96
|
+
interceptors:,
|
|
97
|
+
logger:,
|
|
98
|
+
default_workflow_query_reject_condition:,
|
|
99
|
+
runtime:,
|
|
100
|
+
supports_time_skipping: false,
|
|
101
|
+
& # steep:ignore
|
|
102
|
+
)
|
|
39
103
|
end
|
|
40
104
|
|
|
41
|
-
#
|
|
105
|
+
# Start a time-skipping test server. This server can skip time but may not have all of the Temporal features of
|
|
106
|
+
# the {start_local} form. By default, the server is downloaded to tmp if not already present. The test server is
|
|
107
|
+
# run as a child process. All options that start with +test_server_+ are for this specific implementation and
|
|
108
|
+
# therefore are not stable and may be changed as the underlying implementation changes.
|
|
42
109
|
#
|
|
43
|
-
#
|
|
44
|
-
#
|
|
110
|
+
# If a block is given it is passed the environment and the environment is shut down after. If a block is not
|
|
111
|
+
# given, the environment is returned and {shutdown} needs to be called manually.
|
|
45
112
|
#
|
|
46
|
-
# @param
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
113
|
+
# @param data_converter [Converters::DataConverter] Data converter for the client.
|
|
114
|
+
# @param interceptors [Array<Client::Interceptor>] Interceptors for the client.
|
|
115
|
+
# @param logger [Logger] Logger for the client.
|
|
116
|
+
# @param default_workflow_query_reject_condition [WorkflowQueryRejectCondition, nil] Default rejection condition
|
|
117
|
+
# for the client.
|
|
118
|
+
# @param port [Integer, nil] Port to bind on, or +nil+ for random.
|
|
119
|
+
# @param runtime [Runtime] Runtime for the server and client.
|
|
120
|
+
# @param test_server_existing_path [String, nil] Existing CLI path to use instead of downloading and caching to
|
|
121
|
+
# tmp.
|
|
122
|
+
# @param test_server_download_version [String] Version of test server to download and cache.
|
|
123
|
+
# @param test_server_download_dest_dir [String, nil] Where to download. Defaults to tmp.
|
|
124
|
+
# @param test_server_extra_args [Array<String>] Any extra arguments for the test server.
|
|
125
|
+
#
|
|
126
|
+
# @yield [environment] If a block is given, it is called with the environment and upon complete the environment is
|
|
127
|
+
# shutdown.
|
|
128
|
+
# @yieldparam environment [WorkflowEnvironment] Environment that is shut down upon block completion.
|
|
129
|
+
#
|
|
130
|
+
# @return [WorkflowEnvironment, Object] Started local server environment with client if there was no block given,
|
|
131
|
+
# or block result if block was given.
|
|
132
|
+
def self.start_time_skipping(
|
|
133
|
+
data_converter: Converters::DataConverter.default,
|
|
134
|
+
interceptors: [],
|
|
135
|
+
logger: Logger.new($stdout, level: Logger::WARN),
|
|
136
|
+
default_workflow_query_reject_condition: nil,
|
|
137
|
+
port: nil,
|
|
138
|
+
runtime: Runtime.default,
|
|
139
|
+
test_server_existing_path: nil,
|
|
140
|
+
test_server_download_version: 'default',
|
|
141
|
+
test_server_download_dest_dir: nil,
|
|
142
|
+
test_server_extra_args: [],
|
|
143
|
+
&
|
|
144
|
+
)
|
|
145
|
+
server_options = Internal::Bridge::Testing::EphemeralServer::StartTestServerOptions.new(
|
|
146
|
+
existing_path: test_server_existing_path,
|
|
147
|
+
sdk_name: 'sdk-ruby',
|
|
148
|
+
sdk_version: VERSION,
|
|
149
|
+
download_version: test_server_download_version,
|
|
150
|
+
download_dest_dir: test_server_download_dest_dir,
|
|
151
|
+
port:,
|
|
152
|
+
extra_args: test_server_extra_args
|
|
153
|
+
)
|
|
154
|
+
_with_core_server(
|
|
155
|
+
core_server: Internal::Bridge::Testing::EphemeralServer.start_test_server(
|
|
156
|
+
runtime._core_runtime, server_options
|
|
157
|
+
),
|
|
158
|
+
namespace: 'default',
|
|
159
|
+
data_converter:,
|
|
160
|
+
interceptors:,
|
|
161
|
+
logger:,
|
|
162
|
+
default_workflow_query_reject_condition:,
|
|
163
|
+
runtime:,
|
|
164
|
+
supports_time_skipping: true,
|
|
165
|
+
& # steep:ignore
|
|
52
166
|
)
|
|
53
|
-
|
|
167
|
+
end
|
|
54
168
|
|
|
55
|
-
|
|
169
|
+
# @!visibility private
|
|
170
|
+
def self._with_core_server(
|
|
171
|
+
core_server:,
|
|
172
|
+
namespace:,
|
|
173
|
+
data_converter:,
|
|
174
|
+
interceptors:,
|
|
175
|
+
logger:,
|
|
176
|
+
default_workflow_query_reject_condition:,
|
|
177
|
+
runtime:,
|
|
178
|
+
supports_time_skipping:
|
|
179
|
+
)
|
|
180
|
+
# Try to connect, shutdown if we can't
|
|
181
|
+
begin
|
|
182
|
+
client = Client.connect(
|
|
183
|
+
core_server.target,
|
|
184
|
+
namespace,
|
|
185
|
+
data_converter:,
|
|
186
|
+
interceptors:,
|
|
187
|
+
logger:,
|
|
188
|
+
default_workflow_query_reject_condition:,
|
|
189
|
+
runtime:
|
|
190
|
+
)
|
|
191
|
+
server = Ephemeral.new(client, core_server, supports_time_skipping:)
|
|
192
|
+
rescue Exception # rubocop:disable Lint/RescueException
|
|
193
|
+
core_server.shutdown
|
|
194
|
+
raise
|
|
195
|
+
end
|
|
196
|
+
if block_given?
|
|
197
|
+
begin
|
|
198
|
+
yield server
|
|
199
|
+
ensure
|
|
200
|
+
server.shutdown
|
|
201
|
+
end
|
|
202
|
+
else
|
|
203
|
+
server
|
|
204
|
+
end
|
|
56
205
|
end
|
|
57
206
|
|
|
58
|
-
#
|
|
59
|
-
#
|
|
60
|
-
# For non-time-skipping environments this is simply the system time. For time-skipping
|
|
61
|
-
# environments this is whatever time has been skipped to.
|
|
207
|
+
# Create workflow environment to an existing server with the given client.
|
|
62
208
|
#
|
|
63
|
-
# @
|
|
64
|
-
def
|
|
65
|
-
|
|
209
|
+
# @param client [Client] Client to existing server.
|
|
210
|
+
def initialize(client)
|
|
211
|
+
@client = client
|
|
212
|
+
end
|
|
66
213
|
|
|
67
|
-
|
|
214
|
+
# Shutdown this workflow environment.
|
|
215
|
+
def shutdown
|
|
216
|
+
# Do nothing by default
|
|
68
217
|
end
|
|
69
218
|
|
|
70
|
-
# Whether this environment supports time skipping.
|
|
71
|
-
#
|
|
72
|
-
# @return [Boolean]
|
|
219
|
+
# @return [Boolean] Whether this environment supports time skipping.
|
|
73
220
|
def supports_time_skipping?
|
|
74
|
-
|
|
221
|
+
false
|
|
75
222
|
end
|
|
76
223
|
|
|
77
|
-
#
|
|
78
|
-
|
|
79
|
-
|
|
224
|
+
# Advanced time.
|
|
225
|
+
#
|
|
226
|
+
# If this server supports time skipping, this will immediately advance time and return. If it does not, this is
|
|
227
|
+
# a standard {::sleep}.
|
|
228
|
+
#
|
|
229
|
+
# @param duration [Float] Duration seconds.
|
|
230
|
+
def sleep(duration)
|
|
231
|
+
Kernel.sleep(duration)
|
|
80
232
|
end
|
|
81
233
|
|
|
82
|
-
#
|
|
234
|
+
# Current time of the environment.
|
|
83
235
|
#
|
|
84
|
-
#
|
|
85
|
-
#
|
|
236
|
+
# If this server supports time skipping, this will be the current time as known to the environment. If it does
|
|
237
|
+
# not, this is a standard {::Time.now}.
|
|
86
238
|
#
|
|
87
|
-
# @
|
|
239
|
+
# @return [Time] Current time.
|
|
240
|
+
def current_time
|
|
241
|
+
Time.now
|
|
242
|
+
end
|
|
243
|
+
|
|
244
|
+
# Run a block with automatic time skipping disabled. This just runs the block for environments that don't support
|
|
245
|
+
# time skipping.
|
|
88
246
|
#
|
|
89
|
-
# @
|
|
90
|
-
|
|
91
|
-
|
|
247
|
+
# @yield Block to run.
|
|
248
|
+
# @return [Object] Result of the block.
|
|
249
|
+
def auto_time_skipping_disabled(&)
|
|
250
|
+
raise 'Block required' unless block_given?
|
|
92
251
|
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
252
|
+
yield
|
|
253
|
+
end
|
|
254
|
+
|
|
255
|
+
# @!visibility private
|
|
256
|
+
class Ephemeral < WorkflowEnvironment
|
|
257
|
+
def initialize(client, core_server, supports_time_skipping:)
|
|
258
|
+
# Add our interceptor at the end of the existing interceptors that skips time
|
|
259
|
+
client_options = client.options.with(
|
|
260
|
+
interceptors: client.options.interceptors + [TimeSkippingClientInterceptor.new(self)]
|
|
97
261
|
)
|
|
262
|
+
client = Client.new(**client_options.to_h) # steep:ignore
|
|
263
|
+
super(client)
|
|
264
|
+
|
|
265
|
+
@auto_time_skipping = true
|
|
266
|
+
@core_server = core_server
|
|
267
|
+
@test_service = Client::Connection::TestService.new(client.connection) if supports_time_skipping
|
|
268
|
+
end
|
|
269
|
+
|
|
270
|
+
# @!visibility private
|
|
271
|
+
def shutdown
|
|
272
|
+
@core_server.shutdown
|
|
273
|
+
end
|
|
274
|
+
|
|
275
|
+
# @!visibility private
|
|
276
|
+
def supports_time_skipping?
|
|
277
|
+
!@test_service.nil?
|
|
278
|
+
end
|
|
98
279
|
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
280
|
+
# @!visibility private
|
|
281
|
+
def sleep(duration)
|
|
282
|
+
return super unless supports_time_skipping?
|
|
283
|
+
|
|
284
|
+
@test_service.unlock_time_skipping_with_sleep(
|
|
285
|
+
Api::TestService::V1::SleepRequest.new(duration: Internal::ProtoUtils.seconds_to_duration(duration))
|
|
103
286
|
)
|
|
104
287
|
end
|
|
288
|
+
|
|
289
|
+
# @!visibility private
|
|
290
|
+
def current_time
|
|
291
|
+
return super unless supports_time_skipping?
|
|
292
|
+
|
|
293
|
+
resp = @test_service.get_current_time(Google::Protobuf::Empty.new)
|
|
294
|
+
Internal::ProtoUtils.timestamp_to_time(resp.time) or raise 'Time missing'
|
|
295
|
+
end
|
|
296
|
+
|
|
297
|
+
# @!visibility private
|
|
298
|
+
def auto_time_skipping_disabled(&)
|
|
299
|
+
raise 'Block required' unless block_given?
|
|
300
|
+
return super unless supports_time_skipping?
|
|
301
|
+
|
|
302
|
+
already_disabled = @auto_time_skipping
|
|
303
|
+
@auto_time_skipping = false
|
|
304
|
+
begin
|
|
305
|
+
yield
|
|
306
|
+
ensure
|
|
307
|
+
@auto_time_skipping = true unless already_disabled
|
|
308
|
+
end
|
|
309
|
+
end
|
|
310
|
+
|
|
311
|
+
# @!visibility private
|
|
312
|
+
def time_skipping_unlocked(&)
|
|
313
|
+
# If disabled or unsupported, no locking/unlocking, just run and return
|
|
314
|
+
return yield if !supports_time_skipping? || !@auto_time_skipping
|
|
315
|
+
|
|
316
|
+
# Unlock to start time skipping, lock again to stop it
|
|
317
|
+
@test_service.unlock_time_skipping(Api::TestService::V1::UnlockTimeSkippingRequest.new)
|
|
318
|
+
user_code_success = false
|
|
319
|
+
begin
|
|
320
|
+
result = yield
|
|
321
|
+
user_code_success = true
|
|
322
|
+
result
|
|
323
|
+
ensure
|
|
324
|
+
# Lock it back
|
|
325
|
+
begin
|
|
326
|
+
@test_service.lock_time_skipping(Api::TestService::V1::LockTimeSkippingRequest.new)
|
|
327
|
+
rescue StandardError => e
|
|
328
|
+
# Re-raise if user code succeeded, otherwise swallow
|
|
329
|
+
raise if user_code_success
|
|
330
|
+
|
|
331
|
+
client.options.logger.error('Failed locking time skipping after error')
|
|
332
|
+
client.options.logger.error(e)
|
|
333
|
+
end
|
|
334
|
+
end
|
|
335
|
+
end
|
|
105
336
|
end
|
|
106
337
|
|
|
107
|
-
|
|
338
|
+
private_constant :Ephemeral
|
|
339
|
+
|
|
340
|
+
# @!visibility private
|
|
341
|
+
class TimeSkippingClientInterceptor
|
|
342
|
+
include Client::Interceptor
|
|
343
|
+
|
|
344
|
+
def initialize(env)
|
|
345
|
+
@env = env
|
|
346
|
+
end
|
|
347
|
+
|
|
348
|
+
# @!visibility private
|
|
349
|
+
def intercept_client(next_interceptor)
|
|
350
|
+
Outbound.new(next_interceptor, @env)
|
|
351
|
+
end
|
|
352
|
+
|
|
353
|
+
# @!visibility private
|
|
354
|
+
class Outbound < Client::Interceptor::Outbound
|
|
355
|
+
def initialize(next_interceptor, env)
|
|
356
|
+
super(next_interceptor)
|
|
357
|
+
@env = env
|
|
358
|
+
end
|
|
359
|
+
|
|
360
|
+
# @!visibility private
|
|
361
|
+
def start_workflow(input)
|
|
362
|
+
TimeSkippingWorkflowHandle.new(super, @env)
|
|
363
|
+
end
|
|
364
|
+
end
|
|
365
|
+
|
|
366
|
+
# @!visibility private
|
|
367
|
+
class TimeSkippingWorkflowHandle < SimpleDelegator
|
|
368
|
+
def initialize(handle, env)
|
|
369
|
+
super(handle) # steep:ignore
|
|
370
|
+
@env = env
|
|
371
|
+
end
|
|
372
|
+
|
|
373
|
+
# @!visibility private
|
|
374
|
+
def result(follow_runs: true, rpc_options: nil)
|
|
375
|
+
@env.time_skipping_unlocked { super(follow_runs:, rpc_options:) }
|
|
376
|
+
end
|
|
377
|
+
end
|
|
378
|
+
end
|
|
108
379
|
|
|
109
|
-
|
|
380
|
+
private_constant :TimeSkippingClientInterceptor
|
|
110
381
|
end
|
|
111
382
|
end
|
|
112
383
|
end
|
data/lib/temporalio/testing.rb
CHANGED
|
@@ -1,175 +1,10 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
require 'temporalio/
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require 'temporalio/testing/activity_environment'
|
|
4
4
|
require 'temporalio/testing/workflow_environment'
|
|
5
|
-
require 'temporalio/version'
|
|
6
5
|
|
|
7
6
|
module Temporalio
|
|
7
|
+
# Module for all testing environments.
|
|
8
8
|
module Testing
|
|
9
|
-
DEFAULT_NAMESPACE = 'default'.freeze
|
|
10
|
-
|
|
11
|
-
class << self
|
|
12
|
-
# Start a full Temporal server locally, downloading if necessary.
|
|
13
|
-
#
|
|
14
|
-
# This environment is good for testing full server capabilities, but does not support time
|
|
15
|
-
# skipping like {.start_time_skipping} does.
|
|
16
|
-
# {Temporalio::Testing::WorkflowEnvironment#supports_time_skipping} will always return `false`
|
|
17
|
-
# for this environment. {Temporalio::Testing::WorkflowEnvironment#sleep} will sleep the actual
|
|
18
|
-
# amount of time and {Temporalio::Testing::WorkflowEnvironment#get_current_time}` will return
|
|
19
|
-
# the current time.
|
|
20
|
-
#
|
|
21
|
-
# Internally, this uses [Temporalite](https://github.com/temporalio/temporalite). Which is a
|
|
22
|
-
# self-contained binary for Temporal using Sqlite persistence. This will download Temporalite
|
|
23
|
-
# to a temporary directory by default if it has not already been downloaded before and
|
|
24
|
-
# `:existing_path` is not set.
|
|
25
|
-
#
|
|
26
|
-
# In the future, the Temporalite implementation may be changed to another implementation.
|
|
27
|
-
# Therefore, all `temporalite_` prefixed parameters are Temporalite specific and may not apply
|
|
28
|
-
# to newer versions.
|
|
29
|
-
#
|
|
30
|
-
# @param namespace [String] Namespace name to use for this environment.
|
|
31
|
-
# @param ip [String] IP address to bind to, or 127.0.0.1 by default.
|
|
32
|
-
# @param port [Integer] Port number to bind to, or an OS-provided port by default.
|
|
33
|
-
# @param download_dir [String] Directory to download binary to if a download is needed. If
|
|
34
|
-
# unset, this is the system's temporary directory.
|
|
35
|
-
# @param ui [Boolean] If `true`, will start a UI in Temporalite.
|
|
36
|
-
# @param temporalite_existing_path [String] Existing path to the Temporalite binary. If
|
|
37
|
-
# present, no download will be attempted to fetch the binary.
|
|
38
|
-
# @param temporalite_database_filename [String] Path to the Sqlite database to use for
|
|
39
|
-
# Temporalite. Unset default means only in-memory Sqlite will be used.
|
|
40
|
-
# @param temporalite_log_format [String] Log format for Temporalite.
|
|
41
|
-
# @param temporalite_log_level [String] Log level to use for Temporalite.
|
|
42
|
-
# @param temporalite_download_version [String] Specific Temporalite version to download.
|
|
43
|
-
# Defaults to `default` which downloads the version known to work best with this SDK.
|
|
44
|
-
# @param temporalite_extra_args [Array<String>] Extra arguments for the Temporalite binary.
|
|
45
|
-
#
|
|
46
|
-
# @yield Optionally you can provide a block which will ensure that the environment has been
|
|
47
|
-
# shut down after. The newly created {Temporalio::Testing::WorkflowEnvironment} will be
|
|
48
|
-
# passed into the block as a single argument. Alternatively you will need to call
|
|
49
|
-
# {Temporalio::Testing::WorkflowEnvironment#shutdown} explicitly after you're done with it.
|
|
50
|
-
#
|
|
51
|
-
# @return [Temporalio::Testing::WorkflowEnvironment] The newly started Temporalite workflow
|
|
52
|
-
# environment.
|
|
53
|
-
def start_local_environment(
|
|
54
|
-
namespace: DEFAULT_NAMESPACE,
|
|
55
|
-
ip: '127.0.0.1',
|
|
56
|
-
port: nil,
|
|
57
|
-
download_dir: nil,
|
|
58
|
-
ui: false,
|
|
59
|
-
temporalite_existing_path: nil,
|
|
60
|
-
temporalite_database_filename: nil,
|
|
61
|
-
temporalite_log_format: 'pretty',
|
|
62
|
-
temporalite_log_level: 'warn',
|
|
63
|
-
temporalite_download_version: 'default',
|
|
64
|
-
temporalite_extra_args: [],
|
|
65
|
-
&block
|
|
66
|
-
)
|
|
67
|
-
# TODO: Sync with the SDK's logger level when implemented
|
|
68
|
-
runtime = Temporalio::Runtime.instance
|
|
69
|
-
server = Temporalio::Bridge::TestServer.start_temporalite(
|
|
70
|
-
runtime.core_runtime,
|
|
71
|
-
temporalite_existing_path,
|
|
72
|
-
'sdk-ruby',
|
|
73
|
-
Temporalio::VERSION,
|
|
74
|
-
temporalite_download_version,
|
|
75
|
-
download_dir,
|
|
76
|
-
namespace,
|
|
77
|
-
ip,
|
|
78
|
-
port,
|
|
79
|
-
temporalite_database_filename,
|
|
80
|
-
ui,
|
|
81
|
-
temporalite_log_format,
|
|
82
|
-
temporalite_log_level,
|
|
83
|
-
temporalite_extra_args,
|
|
84
|
-
)
|
|
85
|
-
env = init_workflow_environment_for(server, namespace)
|
|
86
|
-
|
|
87
|
-
return env unless block
|
|
88
|
-
|
|
89
|
-
run_server(server, env, &block)
|
|
90
|
-
end
|
|
91
|
-
|
|
92
|
-
# Start a time skipping workflow environment.
|
|
93
|
-
#
|
|
94
|
-
# Time can be manually skipped forward using {Temporalio::Testing::WorkflowEnvironment#sleep}.
|
|
95
|
-
# The currently known time can be obtained via
|
|
96
|
-
# {Temporalio::Testing::WorkflowEnvironment#get_current_time}.
|
|
97
|
-
#
|
|
98
|
-
# @note Auto time skipping is not yet implemented.
|
|
99
|
-
#
|
|
100
|
-
# Internally, this environment lazily downloads a test-server binary for the current OS/arch
|
|
101
|
-
# into the temp directory if it is not already there. Then the executable is started and will
|
|
102
|
-
# be killed when {Temporalio::Testing::WorkflowEnvironment#shutdown} is called (which is
|
|
103
|
-
# implicitly done if a block is provided to this method).
|
|
104
|
-
#
|
|
105
|
-
# Users can reuse this environment for testing multiple independent workflows, but not
|
|
106
|
-
# concurrently. Time skipping, which is automatically done when awaiting a workflow result
|
|
107
|
-
# (pending implementation) and manually done on
|
|
108
|
-
# {Temporalio::Testing::WorkflowEnvironment#sleep}, is global to the environment, not to the
|
|
109
|
-
# workflow under test.
|
|
110
|
-
#
|
|
111
|
-
# In the future, the test server implementation may be changed to another implementation.
|
|
112
|
-
# Therefore, all `test_server_` prefixed parameters are test server specific and may not apply
|
|
113
|
-
# to newer versions.
|
|
114
|
-
#
|
|
115
|
-
# @param port [Integer] Port number to bind to, or an OS-provided port by default.
|
|
116
|
-
# @param download_dir [String] Directory to download binary to if a download is needed.
|
|
117
|
-
# If unset, this is the system's temporary directory.
|
|
118
|
-
# @param test_server_existing_path [String] Existing path to the test server binary. If
|
|
119
|
-
# present, no download will be attempted to fetch the binary.
|
|
120
|
-
# @param test_server_download_version [String] Specific test server version to download.
|
|
121
|
-
# Defaults to `default` which downloads the version known to work best with this SDK.
|
|
122
|
-
# @param test_server_extra_args [Array<String>] Extra arguments for the test server binary.
|
|
123
|
-
#
|
|
124
|
-
# @yield Optionally you can provide a block which will ensure that the environment has been
|
|
125
|
-
# shut down after. The newly created {Temporalio::Testing::WorkflowEnvironment} will be
|
|
126
|
-
# passed into the block as a single argument. Alternatively you will need to call
|
|
127
|
-
# {Temporalio::Testing::WorkflowEnvironment#shutdown} explicitly after you're done with it.
|
|
128
|
-
#
|
|
129
|
-
# @return [Temporalio::Testing::WorkflowEnvironment] The newly started TestServer workflow
|
|
130
|
-
# environment.
|
|
131
|
-
def start_time_skipping_environment(
|
|
132
|
-
port: nil,
|
|
133
|
-
download_dir: nil,
|
|
134
|
-
test_server_existing_path: nil,
|
|
135
|
-
test_server_download_version: 'default',
|
|
136
|
-
test_server_extra_args: [],
|
|
137
|
-
&block
|
|
138
|
-
)
|
|
139
|
-
# TODO: Use interceptors to inject a time skipping WorkflowHandle.
|
|
140
|
-
runtime = Temporalio::Runtime.instance
|
|
141
|
-
server = Temporalio::Bridge::TestServer.start(
|
|
142
|
-
runtime.core_runtime,
|
|
143
|
-
test_server_existing_path,
|
|
144
|
-
'sdk-ruby',
|
|
145
|
-
Temporalio::VERSION,
|
|
146
|
-
test_server_download_version,
|
|
147
|
-
download_dir,
|
|
148
|
-
port,
|
|
149
|
-
test_server_extra_args,
|
|
150
|
-
)
|
|
151
|
-
env = init_workflow_environment_for(server, DEFAULT_NAMESPACE)
|
|
152
|
-
|
|
153
|
-
return env unless block
|
|
154
|
-
|
|
155
|
-
run_server(server, env, &block)
|
|
156
|
-
end
|
|
157
|
-
|
|
158
|
-
private
|
|
159
|
-
|
|
160
|
-
def init_workflow_environment_for(server, namespace)
|
|
161
|
-
connection = Temporalio::Connection.new(server.target)
|
|
162
|
-
Temporalio::Testing::WorkflowEnvironment.new(server, connection, namespace)
|
|
163
|
-
rescue Temporalio::Bridge::Error # Shutdown if unable to connect to the server
|
|
164
|
-
server.shutdown
|
|
165
|
-
raise
|
|
166
|
-
end
|
|
167
|
-
|
|
168
|
-
def run_server(server, env, &block)
|
|
169
|
-
block.call(env)
|
|
170
|
-
ensure
|
|
171
|
-
server.shutdown
|
|
172
|
-
end
|
|
173
|
-
end
|
|
174
9
|
end
|
|
175
10
|
end
|
data/lib/temporalio/version.rb
CHANGED