Class: Temporalio::Testing::WorkflowEnvironment
- Inherits:
-
Object
- Object
- Temporalio::Testing::WorkflowEnvironment
- Defined in:
- lib/temporalio/testing/workflow_environment.rb
Overview
Test environment with a Temporal server for running workflows and more.
Instance Attribute Summary collapse
-
#client ⇒ Client
readonly
Client for the server.
Class Method Summary collapse
-
.start_local(namespace: 'default', data_converter: Converters::DataConverter.default, interceptors: [], logger: Logger.new($stdout, level: Logger::WARN), default_workflow_query_reject_condition: nil, ip: '127.0.0.1', port: nil, ui: false, ui_port: nil, search_attributes: [], runtime: Runtime.default, dev_server_existing_path: nil, dev_server_database_filename: nil, dev_server_log_format: 'pretty', dev_server_log_level: 'warn', dev_server_download_version: 'default', dev_server_download_dest_dir: nil, dev_server_extra_args: []) {|environment| ... } ⇒ WorkflowEnvironment, Object
Start a local dev server.
-
.start_time_skipping(data_converter: Converters::DataConverter.default, interceptors: [], logger: Logger.new($stdout, level: Logger::WARN), default_workflow_query_reject_condition: nil, port: nil, runtime: Runtime.default, test_server_existing_path: nil, test_server_download_version: 'default', test_server_download_dest_dir: nil, test_server_extra_args: []) {|environment| ... } ⇒ WorkflowEnvironment, Object
Start a time-skipping test server.
Instance Method Summary collapse
-
#auto_time_skipping_disabled { ... } ⇒ Object
Run a block with automatic time skipping disabled.
-
#current_time ⇒ Time
Current time of the environment.
-
#initialize(client) ⇒ WorkflowEnvironment
constructor
Create workflow environment to an existing server with the given client.
-
#shutdown ⇒ Object
Shutdown this workflow environment.
-
#sleep(duration) ⇒ Object
Advanced time.
-
#supports_time_skipping? ⇒ Boolean
Whether this environment supports time skipping.
Constructor Details
#initialize(client) ⇒ WorkflowEnvironment
Create workflow environment to an existing server with the given client.
225 226 227 |
# File 'lib/temporalio/testing/workflow_environment.rb', line 225 def initialize(client) @client = client end |
Instance Attribute Details
#client ⇒ Client (readonly)
Returns Client for the server.
21 22 23 |
# File 'lib/temporalio/testing/workflow_environment.rb', line 21 def client @client end |
Class Method Details
.start_local(namespace: 'default', data_converter: Converters::DataConverter.default, interceptors: [], logger: Logger.new($stdout, level: Logger::WARN), default_workflow_query_reject_condition: nil, ip: '127.0.0.1', port: nil, ui: false, ui_port: nil, search_attributes: [], runtime: Runtime.default, dev_server_existing_path: nil, dev_server_database_filename: nil, dev_server_log_format: 'pretty', dev_server_log_level: 'warn', dev_server_download_version: 'default', dev_server_download_dest_dir: nil, dev_server_extra_args: []) {|environment| ... } ⇒ WorkflowEnvironment, Object
Start a local dev server. This is a full Temporal dev server from the CLI that by default downloaded to tmp if not already present. The dev server is run as a child process. All options that start with dev_server_
are for this specific implementation and therefore are not stable and may be changed as the underlying implementation changes.
If a block is given it is passed the environment and the environment is shut down after. If a block is not given, the environment is returned and #shutdown needs to be called manually.
59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 |
# File 'lib/temporalio/testing/workflow_environment.rb', line 59 def self.start_local( namespace: 'default', data_converter: Converters::DataConverter.default, interceptors: [], logger: Logger.new($stdout, level: Logger::WARN), default_workflow_query_reject_condition: nil, ip: '127.0.0.1', port: nil, ui: false, # rubocop:disable Naming/MethodParameterName ui_port: nil, search_attributes: [], runtime: Runtime.default, dev_server_existing_path: nil, dev_server_database_filename: nil, dev_server_log_format: 'pretty', dev_server_log_level: 'warn', dev_server_download_version: 'default', dev_server_download_dest_dir: nil, dev_server_extra_args: [], & ) # Add search attribute args unless search_attributes.empty? dev_server_extra_args += search_attributes.flat_map do |key| raise 'Search attribute must be Key' unless key.is_a?(SearchAttributes::Key) ['--search-attribute', "#{key.name}=#{SearchAttributes::IndexedValueType::PROTO_NAMES[key.type]}"] end end = Internal::Bridge::Testing::EphemeralServer::StartDevServerOptions.new( existing_path: dev_server_existing_path, sdk_name: 'sdk-ruby', sdk_version: VERSION, download_version: dev_server_download_version, download_dest_dir: dev_server_download_dest_dir, namespace:, ip:, port:, database_filename: dev_server_database_filename, ui:, ui_port: ui ? ui_port : nil, log_format: dev_server_log_format, log_level: dev_server_log_level, extra_args: dev_server_extra_args ) _with_core_server( core_server: Internal::Bridge::Testing::EphemeralServer.start_dev_server( runtime._core_runtime, ), namespace:, data_converter:, interceptors:, logger:, default_workflow_query_reject_condition:, runtime:, supports_time_skipping: false, & # steep:ignore ) end |
.start_time_skipping(data_converter: Converters::DataConverter.default, interceptors: [], logger: Logger.new($stdout, level: Logger::WARN), default_workflow_query_reject_condition: nil, port: nil, runtime: Runtime.default, test_server_existing_path: nil, test_server_download_version: 'default', test_server_download_dest_dir: nil, test_server_extra_args: []) {|environment| ... } ⇒ WorkflowEnvironment, Object
Start a time-skipping test server. This server can skip time but may not have all of the Temporal features of the start_local form. By default, the server is downloaded to tmp if not already present. The test server is run as a child process. All options that start with test_server_
are for this specific implementation and therefore are not stable and may be changed as the underlying implementation changes.
If a block is given it is passed the environment and the environment is shut down after. If a block is not given, the environment is returned and #shutdown needs to be called manually.
147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 |
# File 'lib/temporalio/testing/workflow_environment.rb', line 147 def self.start_time_skipping( data_converter: Converters::DataConverter.default, interceptors: [], logger: Logger.new($stdout, level: Logger::WARN), default_workflow_query_reject_condition: nil, port: nil, runtime: Runtime.default, test_server_existing_path: nil, test_server_download_version: 'default', test_server_download_dest_dir: nil, test_server_extra_args: [], & ) = Internal::Bridge::Testing::EphemeralServer::StartTestServerOptions.new( existing_path: test_server_existing_path, sdk_name: 'sdk-ruby', sdk_version: VERSION, download_version: test_server_download_version, download_dest_dir: test_server_download_dest_dir, port:, extra_args: test_server_extra_args ) _with_core_server( core_server: Internal::Bridge::Testing::EphemeralServer.start_test_server( runtime._core_runtime, ), namespace: 'default', data_converter:, interceptors:, logger:, default_workflow_query_reject_condition:, runtime:, supports_time_skipping: true, & # steep:ignore ) end |
Instance Method Details
#auto_time_skipping_disabled { ... } ⇒ Object
Run a block with automatic time skipping disabled. This just runs the block for environments that don’t support time skipping.
264 265 266 267 268 |
# File 'lib/temporalio/testing/workflow_environment.rb', line 264 def auto_time_skipping_disabled(&) raise 'Block required' unless block_given? yield end |
#current_time ⇒ Time
Current time of the environment.
If this server supports time skipping, this will be the current time as known to the environment. If it does not, this is a standard Time.now.
255 256 257 |
# File 'lib/temporalio/testing/workflow_environment.rb', line 255 def current_time Time.now end |
#shutdown ⇒ Object
Shutdown this workflow environment.
230 231 232 |
# File 'lib/temporalio/testing/workflow_environment.rb', line 230 def shutdown # Do nothing by default end |
#sleep(duration) ⇒ Object
Advanced time.
If this server supports time skipping, this will immediately advance time and return. If it does not, this is a standard sleep.
245 246 247 |
# File 'lib/temporalio/testing/workflow_environment.rb', line 245 def sleep(duration) Kernel.sleep(duration) end |
#supports_time_skipping? ⇒ Boolean
Returns Whether this environment supports time skipping.
235 236 237 |
# File 'lib/temporalio/testing/workflow_environment.rb', line 235 def supports_time_skipping? false end |