diff --git a/src/MongoDB/Manager.c b/src/MongoDB/Manager.c index 86d693dd5..2bf02fbdf 100644 --- a/src/MongoDB/Manager.c +++ b/src/MongoDB/Manager.c @@ -828,7 +828,7 @@ static HashTable* php_phongo_manager_get_debug_info(zend_object* object, int* is *is_temp = 1; intern = Z_OBJ_MANAGER(object); - array_init_size(&retval, 2); + array_init_size(&retval, 3); ADD_ASSOC_STRING(&retval, "uri", mongoc_uri_get_string(mongoc_client_get_uri(intern->client))); @@ -851,6 +851,16 @@ static HashTable* php_phongo_manager_get_debug_info(zend_object* object, int* is ADD_ASSOC_ZVAL_EX(&retval, "cluster", &cluster); + { + const char* crypt_shared_version = mongoc_client_get_crypt_shared_version(intern->client); + + if (crypt_shared_version) { + ADD_ASSOC_STRING(&retval, "cryptSharedVersion", crypt_shared_version); + } else { + ADD_ASSOC_NULL_EX(&retval, "cryptSharedVersion"); + } + } + done: mongoc_server_descriptions_destroy_all(sds, n); diff --git a/tests/manager/bug0940-001.phpt b/tests/manager/bug0940-001.phpt index 4decd5489..154df4397 100644 --- a/tests/manager/bug0940-001.phpt +++ b/tests/manager/bug0940-001.phpt @@ -20,5 +20,7 @@ object(MongoDB\Driver\Manager)#%d (%d) { ["cluster"]=> array(0) { } + ["cryptSharedVersion"]=> + NULL } ===DONE=== diff --git a/tests/manager/manager-ctor-auto_encryption-002.phpt b/tests/manager/manager-ctor-auto_encryption-002.phpt index 5e17c672c..a5fc0252a 100644 --- a/tests/manager/manager-ctor-auto_encryption-002.phpt +++ b/tests/manager/manager-ctor-auto_encryption-002.phpt @@ -4,8 +4,6 @@ MongoDB\Driver\Manager::__construct(): crypt_shared is required ---XFAIL-- -crypt_shared log output breaks build (PHPC-2156) --FILE-- array(0) { } + ["cryptSharedVersion"]=> + NULL } object(MongoDB\Driver\Manager)#%d (%d) { ["uri"]=> @@ -28,5 +30,7 @@ object(MongoDB\Driver\Manager)#%d (%d) { ["cluster"]=> array(0) { } + ["cryptSharedVersion"]=> + NULL } ===DONE=== diff --git a/tests/manager/manager-debug-004.phpt b/tests/manager/manager-debug-004.phpt new file mode 100644 index 000000000..a42919f27 --- /dev/null +++ b/tests/manager/manager-debug-004.phpt @@ -0,0 +1,53 @@ +--TEST-- +MongoDB\Driver\Manager debug output with crypt_shared +--SKIPIF-- + + + +--FILE-- + CSFLE_KEY_VAULT_NS, + 'kmsProviders' => ['local' => ['key' => new MongoDB\BSON\Binary(CSFLE_LOCAL_KEY, 0)]], + 'extraOptions' => ['cryptSharedLibRequired' => true], +]; + +$manager = create_test_manager(null, [], ['autoEncryption' => $autoEncryptionOptions]); + +var_dump($manager); +var_dump(get_module_info('crypt_shared library version')); + +?> +===DONE=== + +--EXPECTF-- +object(MongoDB\Driver\Manager)#%d (%d) { + ["uri"]=> + string(%d) "%s" + ["cluster"]=> + array(0) { + } + ["cryptSharedVersion"]=> + NULL +} +string(7) "unknown" +object(MongoDB\Driver\Manager)#%d (%d) { + ["uri"]=> + string(%d) "%s" + ["cluster"]=> + array(0) { + } + ["cryptSharedVersion"]=> + string(%d) "mongo_crypt%a" +} +string(7) "unknown" +===DONE=== diff --git a/tests/manager/manager-var-dump-001.phpt b/tests/manager/manager-var-dump-001.phpt index 1644ee090..d117a1488 100644 --- a/tests/manager/manager-var-dump-001.phpt +++ b/tests/manager/manager-var-dump-001.phpt @@ -28,6 +28,8 @@ object(MongoDB\Driver\Manager)#%d (%d) { ["cluster"]=> array(0) { } + ["cryptSharedVersion"]=> + NULL } object(MongoDB\Driver\Manager)#%d (%d) { ["uri"]=> @@ -60,5 +62,7 @@ object(MongoDB\Driver\Manager)#%d (%d) { int(%d) } } + ["cryptSharedVersion"]=> + NULL } ===DONE=== diff --git a/tests/utils/skipif.php b/tests/utils/skipif.php index 46c5afe36..668333d9e 100644 --- a/tests/utils/skipif.php +++ b/tests/utils/skipif.php @@ -459,6 +459,10 @@ function skip_if_crypt_shared() function skip_if_no_crypt_shared() { + if (PHP_INT_SIZE !== 8) { + exit('skip crypt_shared is only available on 64-bit systems'); + } + // Intentionally consider empty values for CRYPT_SHARED_LIB_PATH if ( ! getenv('CRYPT_SHARED_LIB_PATH')) { exit('skip crypt_shared is not available');