Tests - Need the imptp functionality for the Python wrapper
All wrappers need a version of the imptp part of the test framework so this needs to be written for the Python wrapper. This test will heavily exercise the wrapper (making sure that the wrapper is easily usable) providing some heavy-weight processing using the wrapper.
The imptp piece of the test framework is a multi-process database facility (how many processes is configurable by the caller). Each process is doing SETs that both create new records (a DB fill type operation), and SETs that modify existing records. There are also KILLs of existing records going on. In short, imptp is a bit of a database filler/thrasher and is used by a great many tests in the system. The primary driving script is com/imptp.csh which randomly picks either the M version or one of the wrappers (C, Go, Rust currently). As noted above, imptp is a multi-process facility. Note the tests that use imptp often stop it with MUPIP STOP of all running imptp processes so signal handling using the wrapper needs to be in good shape to avoid unpleasantness.
All of the imptp pieces are in the directory https://gitlab.com/YottaDB/DB/YDBTest/-/tree/master/com - the interesting files are the following:
- imptp.csh - Main driver script for imptp all flavors - this needs to be modified to add a Python possibility. Assuming the new Python wrapper gets to be imptp flavor 5, setting the envvar ydb_imptp_flavor to 5 would cause the Python wrapper to ALWAYS be run. In fact, we will run E_ALLs with this set so all tests use it and work well with it.
- imptp.m - M flavor of imptp.
- simpleapi_imptp.c, simplethreadapi_imptp.c - C flavor of imptp.
- imptp-rs - sub-directory containing the Rust implementation.
- imp.go, imptpgo.go, impjobgo.go - Go flavor of imptp.
As noted below, this issue has a pre-req of issue #1 (closed).