Add context_id to py_func and lua_func for shared persistent subprocess

- py_func and lua_func items accept a context_id parameter; items sharing
  the same id reuse the same subprocess for the duration of the test run
- Subprocess-side tm.setgd/tm.gd use a local fallback dict for non-JSON-
  serializable values (py_func only); serializable values reach the main
  process global dict and are accessible from any test item or subprocess
- Shared subprocess engines are cleaned up in process.py finally block
- LuaProcessBase gains is_alive() (was missing, broke all lua_func items)
- Validation tests cover serializable sharing across different context ids,
  non-serializable sharing within the same context_id, and cross-item access
- RST documentation updated for both py_func and lua_func items

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-04-18 16:02:36 +02:00
parent 49354b8664
commit d92f518e1e
12 changed files with 390 additions and 52 deletions

View File

@@ -179,3 +179,36 @@
file: $(test_path)$(psep)lua_func.lua
func_name: tuple_return
param: [ 0, "OK" ]
- group:
name: context_id tests
steps:
- lua_func:
name: set context value
key: $(test)_PASS
file: $(test_path)$(psep)lua_func.lua
func_name: set_context_value
context_id: lua_ctx_test
param:
- hello lua
expected_result: hello lua
- lua_func:
name: get context value (same context_id)
key: $(test)_PASS
file: $(test_path)$(psep)lua_func.lua
func_name: get_context_value
context_id: lua_ctx_test
expected_result: hello lua
- lua_func:
name: get context value (no context_id, from main gd)
key: $(test)_PASS
file: $(test_path)$(psep)lua_func.lua
func_name: get_context_value
expected_result: hello lua
- lua_func:
name: get context value (different context_id)
key: $(test)_PASS
file: $(test_path)$(psep)lua_func.lua
func_name: get_context_value
context_id: lua_ctx_other
expected_result: hello lua