diff --git a/bindings/python/CMakeLists.txt b/bindings/python/CMakeLists.txt index 2fe304a0dc..802514c485 100644 --- a/bindings/python/CMakeLists.txt +++ b/bindings/python/CMakeLists.txt @@ -77,7 +77,7 @@ add_dependencies(packages python_package) if (NOT WIN32 AND NOT OPEN_FOR_IDE) add_fdbclient_test( - NAME fdbcli_tests + NAME single_process_fdbcli_tests COMMAND ${CMAKE_SOURCE_DIR}/bindings/python/tests/fdbcli_tests.py ${CMAKE_BINARY_DIR}/bin/fdbcli @CLUSTER_FILE@ @@ -92,4 +92,24 @@ if (NOT WIN32 AND NOT OPEN_FOR_IDE) @CLUSTER_FILE@ 5 ) + if (TARGET external_client) # external_client copies fdb_c to bindings/c/libfdb_c.so + add_fdbclient_test( + NAME single_process_external_client_fdbcli_tests + COMMAND ${CMAKE_SOURCE_DIR}/bindings/python/tests/fdbcli_tests.py + ${CMAKE_BINARY_DIR}/bin/fdbcli + @CLUSTER_FILE@ + 1 + ${CMAKE_BINARY_DIR}/bindings/c/libfdb_c.so + ) + add_fdbclient_test( + NAME multi_process_external_client_fdbcli_tests + PROCESS_NUMBER 5 + TEST_TIMEOUT 120 # The test can take near to 1 minutes sometime, set timeout to 2 minutes to be safe + COMMAND ${CMAKE_SOURCE_DIR}/bindings/python/tests/fdbcli_tests.py + ${CMAKE_BINARY_DIR}/bin/fdbcli + @CLUSTER_FILE@ + 5 + ${CMAKE_BINARY_DIR}/bindings/c/libfdb_c.so + ) + endif() endif() diff --git a/bindings/python/tests/fdbcli_tests.py b/bindings/python/tests/fdbcli_tests.py index 0529443923..25511b7b33 100755 --- a/bindings/python/tests/fdbcli_tests.py +++ b/bindings/python/tests/fdbcli_tests.py @@ -1,6 +1,7 @@ #!/usr/bin/env python3 import sys +import os import subprocess import logging import functools @@ -450,8 +451,14 @@ def wait_for_database_available(logger): time.sleep(1) if __name__ == '__main__': - # fdbcli_tests.py - assert len(sys.argv) == 4, "Please pass arguments: " + # fdbcli_tests.py [external_client_library_path] + assert len(sys.argv) == 4 or len(sys.argv) == 5, "Please pass arguments: [external_client_library_path]" + # set external client library + if len(sys.argv) == 5: + external_client_library_path = sys.argv[4] + # disable local client and use the external client library + os.environ['FDB_NETWORK_OPTION_DISABLE_LOCAL_CLIENT'] = '' + os.environ['FDB_NETWORK_OPTION_EXTERNAL_CLIENT_LIBRARY'] = external_client_library_path # shell command template command_template = [sys.argv[1], '-C', sys.argv[2], '--exec'] # tests for fdbcli commands