Add atomic op functions to the tenant object in Python.
Fix a Python tester bug for tenant operations.
Fix a build error with the binding tester package.
* Auto-formatting fdb_c_shim_tests.py
* Define the old release versions used for testing in one place; Using PYTHONPATH to find python modules from other project directories
* Remove obsolete upgrade tests; add direct upgrade tests from older versions
* Trigger tests
* blob/apitester: rename tenantDebugString() -> debugTenantStr()
* blob/apitester: fix int64_t initialization to -1
* blob/apitester: add missing override for randomOperation()
* blob/cpp: cpp blob tenant operations
* apitester: add tenant to execution context
* apitester: DatabaseOps abstraction
This creates a base abstract class for Database and Tenant operations to
share.
* blob/apitester: add setup phase to verifyRange() prior to operations
This let's us ensure blob storage is setup prior to running apitester
against the cluster.
* apitester: expand execOperation() to take a tenant
Now that db operations can be transparently applied to tenants or
databases through the IDatabaseOps interface, allow execOperation() to
take a tenant accordingly.
* blob/testerapi: blobbify in TesterApiWorkload setup
Before we were blobbifying wholesale through TestRunner. This makes the
change to blobbifying and verifying in setup, so the workload can
properly test database and tenant scope functions.
* Mako: Add Timeout Support
* Mako: Change log levels, do not count timeouts as errors, and add function that checks if error is expected for async run mode
* Mako: Fix formatting
* Network setup to fail on the initialization failures of external clients
* MVC: A more intuitive error when failing to load an API function
* Testing initializing FDB client with different configuration options
* Enable strict external client configuration check only for new API versions
* Upgrade FDB package version to 7.3.0; Update upgrade tests
* run_c_api_tests an option to disable log dump
* ApiTester: Utility for self-conflicting transactions
* ApiTester: A reusable code for making write transactions self-conflicting; Make atomic operation transactions self-conflicting
* Fix errors statistic in sync mode
* Fix error statistics and restart behavior in async mode
* Fix #iterations stopping criterion
* Prevent edge cases with regards to target tps and iteration specification
* Fix mistake in async logic
* fix throttling and add one more case to validation
* small changes
* Mako: Remove unnecessary force_inline's and small change to header include statement
* Mako: Replace `auto err = fdb::Error{}`
* Mako: Move error statistics updates into future.hpp
* Mako: Async: Rename restartIteration -> onIterationEnd
* Mako: Move transaction creation in sync mode
* Mako: Clean up future.hpp by moving stats updates out of it
* Upgrade tests: dump thread call stacks of the tester process if it fails to terminate
* ApiTester: log before and after stopping the network thread
* Catch and print exceptions in closeTraceFile; Close trace file at the end of MVC runNetwork
* Change trace event name for MVC runNetwork termination
Co-authored-by: A.J. Beamon <aj.beamon@snowflake.com>
Co-authored-by: A.J. Beamon <aj.beamon@snowflake.com>
* ApiTester: Include server configuration into TOML files
* ApiTests: Generate a separate ctest target for every API test file
* Fix upgrade test script after refactoring
* ApiTests: test with multiple processes. Limit TLS tests to a single process
* ApiTests: Reformat TOML files without indentation
* ApiTests: adding explicit dependencies on the relevant binaries to the ctest command
* Disable delete-on-sharedobj-load client knob
To have symbolized stack traces upon xSAN error reproduce
* Add knob support to run_c_api_tests.py
* Apply DELETE_NATIVE_LIB_AFTER_LOADING knob to all C API tests
* ApiTester: test transaction timeout
* ApiTester: Turn off buggify for timeout tests
* ApiTester: Enable failure injection in timeout tests; make write transactions self-conflicting
* Consistently use 4 spaces instead of mixing with tabs
Co-authored-by: Andrew Noyes <andrew.noyes@snowflake.com>
* ApiTester: cancel pending futures for non-transactional operations
* Clear future callback in case of abort signal to avoid memory leaks
* Abortable future: Make sure all callbacks are cleared in case of premature signal; addressing comments
* Abortable future: remove debugging asserts
* Abortable future: restore the previous method for cancelling wrapped future
* Removing debugging code
All python documentations indicate you shouldn't put prefixes like 'lib' or
suffixes like '.so', '.dll', or '.dylib' in argument to ctypes.util.find_library(),
unlike ctypes.CDLL() which demands an exact file name.
I suppose this case hasn't been tested.
* ApiTester: Refactoring removing unnecessary transaction actor classes
* ApiTester: enable executing non-transactional database operations
* ApiTester: a test for fdb_database_list_blobbified_ranges
* ApiTester: Fix memory ownership of the end key in randomGetRangeOp
* ApiTester: reuse get range result validation in blob granule tests
Currently ApiVersion is scattered and hardcoded across the bindings.
Let's at least clean it up so it's once per file or less and use some
redirection against FDB_API_VERSION or API_VERSION.
* ApiTester: test with invalid cluster files
* More asserts in monitorProxies
* ApiTester: Test tampering the cluster file
* Fix update of connection string from the cluster file to use the new connection string only if it valid
* ApiTester: add linker dependency on std++fs
* upgrade_test: no-cleanup-on-error option
* ApiTester: use atomic operations to change and access the transaction handle
* Remove API 720 guards for tenants (experimental feature) and the cluster ID special keys (no need to guard)
* Enable the relaxed special key access in transactions that need to use special key-space APIs introduced in 7.2
* ApiTester: enable access to database instances in workloads
* ApiTester: Inject database create errors
* Fix getClusterProtocol and database shared object initialization in case of database create errors
* Check deferred error in all Thread-Safe API calls returning a future
* ApiTester: disable injection of database create errors for tests with old versions
* Save thread indexes for client instances in MVC
* An option to inlude client thread identifiers into trace file names
* Avoid using new trace file options in client versions not supporting them
* Remove redundant include generated by IDE
* Use different base trace file names for client threads by default. Provide an option to revert to using a shared base file name
* Fixing typos in the description of trace_share_among_client_threads
* ApiTester: More asserts on workload status; Fixing data race in the cleanup phase
* ApiTester: comments explaining assumptions behind synchronization in TransactionContext; declaring immutable fields as const
* Add build dependency between fdb_c_shim and fdb_c
* blob granule fixes from api tests
* Adding BlobGranuleErrors workload
* bug fixes and debugging improvements for blob granule api tests
* cleanup and refactoring of bg api tests
* better memory management for loadAndMaterialize
* Test more C API in upgrade tests
* Fix saving results in blob granule API correctness test
* Enable multitenancy in upgrade test with API version >=720
* Disable the upgrade test with blob granule workload
Currently GRV is reporting proxy_memory_limit_exceeded error which has
error message claiming Commit proxy failing. This split should remove
such confusion.
* Enable configuring the next future protocol version as the current protocol version in FDB client, fdbserver, and fdbcli
* Auto format python files used in upgrade tests
* Add a test for upgrading to a future FDB version
* Emphasize that the options for using future protocol version are intended for test purposes only
* Make the global variable for current protocol version visible only locally
* Refactirng to avoid using currentProtocolVersion() in static intialization
* Update go bindings
* Adding sources of the Implib.so project
* Run C unit tests and API tests with the shim library
* Reuse compilation of C test binaries with and without shim library
* Resolve client library path from an environment variable
* Refactoring: Reusable module for downloading FDB binaries
* Testing client shim library with current version and last release version
* Tests for specifying client library over an environment variable
* Enable C shim library tests on ARM
* Restore the original path for including fdb_api.hpp
* Improve cmake dependencies on doctest
* Remove unnecessary Implib.so files
* Shim library: API to specify path to the library, additional tests
* Adding shim library to Linux distribution packages
* Update link dependencies of fdb_c_shim_lib_tester
* Add dependencies on Implib.so sources
* Abort on fatal errors of shim library
* fix typo
* Don't build fdb c shim with ubsan
This avoids duplicate symbols when linking. It doesn't really make sense
to assemble files with -fsanitize=undefined anyway, since it won't
insert instrumentation.
* Consolidate boost_asan with boost_target
* Package inferred directories to the resulting tarball in ctest_to_joshua (except for the root source and build directories). This allows the API tests (which specify the workloads as a directory containing the workload specification files) to now work.
* Add bin/mkcert which is used by some tests.
* Rewrite fdb_c_shim_tests.py to specify its dependencies on command line.
* Adding sources of the Implib.so project
* Run C unit tests and API tests with the shim library
* Reuse compilation of C test binaries with and without shim library
* Resolve client library path from an environment variable
* Refactoring: Reusable module for downloading FDB binaries
* Testing client shim library with current version and last release version
* Tests for specifying client library over an environment variable
* Enable C shim library tests on ARM
* Restore the original path for including fdb_api.hpp
* Add an internal C API to support memory connection records
* Track shared state in the client using a unique and immutable cluster ID from the cluster
* Add missing code to store the clusterId in the database state object
* Update some arguments to pass by const&