Skip to content

Commit f15d862

Browse files
authored
PHPC-2601: Add crypt_shared version to a manager's debug output (#1847)
* PHPC-2156: Unskip previously failing test * PHPC-2601: Add crypt_shared version to manager debug output * Skip crypt_shared tests on 32-bit platforms
1 parent b58783c commit f15d862

File tree

7 files changed

+78
-3
lines changed

7 files changed

+78
-3
lines changed

src/MongoDB/Manager.c

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -828,7 +828,7 @@ static HashTable* php_phongo_manager_get_debug_info(zend_object* object, int* is
828828
*is_temp = 1;
829829
intern = Z_OBJ_MANAGER(object);
830830

831-
array_init_size(&retval, 2);
831+
array_init_size(&retval, 3);
832832

833833
ADD_ASSOC_STRING(&retval, "uri", mongoc_uri_get_string(mongoc_client_get_uri(intern->client)));
834834

@@ -851,6 +851,16 @@ static HashTable* php_phongo_manager_get_debug_info(zend_object* object, int* is
851851

852852
ADD_ASSOC_ZVAL_EX(&retval, "cluster", &cluster);
853853

854+
{
855+
const char* crypt_shared_version = mongoc_client_get_crypt_shared_version(intern->client);
856+
857+
if (crypt_shared_version) {
858+
ADD_ASSOC_STRING(&retval, "cryptSharedVersion", crypt_shared_version);
859+
} else {
860+
ADD_ASSOC_NULL_EX(&retval, "cryptSharedVersion");
861+
}
862+
}
863+
854864
done:
855865
mongoc_server_descriptions_destroy_all(sds, n);
856866

tests/manager/bug0940-001.phpt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,5 +20,7 @@ object(MongoDB\Driver\Manager)#%d (%d) {
2020
["cluster"]=>
2121
array(0) {
2222
}
23+
["cryptSharedVersion"]=>
24+
NULL
2325
}
2426
===DONE===

tests/manager/manager-ctor-auto_encryption-002.phpt

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,6 @@ MongoDB\Driver\Manager::__construct(): crypt_shared is required
44
<?php require __DIR__ . "/../utils/basic-skipif.inc"; ?>
55
<?php skip_if_not_libmongocrypt(); ?>
66
<?php skip_if_no_crypt_shared(); ?>
7-
--XFAIL--
8-
crypt_shared log output breaks build (PHPC-2156)
97
--FILE--
108
<?php
119

tests/manager/manager-ctor-ssl-001.phpt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,12 +21,16 @@ object(MongoDB\Driver\Manager)#%d (%d) {
2121
["cluster"]=>
2222
array(0) {
2323
}
24+
["cryptSharedVersion"]=>
25+
NULL
2426
}
2527
object(MongoDB\Driver\Manager)#%d (%d) {
2628
["uri"]=>
2729
string(20) "mongodb://127.0.0.1/"
2830
["cluster"]=>
2931
array(0) {
3032
}
33+
["cryptSharedVersion"]=>
34+
NULL
3135
}
3236
===DONE===

tests/manager/manager-debug-004.phpt

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
--TEST--
2+
MongoDB\Driver\Manager debug output with crypt_shared
3+
--SKIPIF--
4+
<?php require __DIR__ . "/../utils/basic-skipif.inc"; ?>
5+
<?php skip_if_not_libmongocrypt(); ?>
6+
<?php skip_if_no_crypt_shared(); ?>
7+
--FILE--
8+
<?php
9+
10+
require_once __DIR__ . '/../utils/basic.inc';
11+
12+
// First, create a test manager without auto-encryption
13+
$manager = create_test_manager();
14+
15+
var_dump($manager);
16+
var_dump(get_module_info('crypt_shared library version'));
17+
18+
$autoEncryptionOptions = [
19+
'keyVaultNamespace' => CSFLE_KEY_VAULT_NS,
20+
'kmsProviders' => ['local' => ['key' => new MongoDB\BSON\Binary(CSFLE_LOCAL_KEY, 0)]],
21+
'extraOptions' => ['cryptSharedLibRequired' => true],
22+
];
23+
24+
$manager = create_test_manager(null, [], ['autoEncryption' => $autoEncryptionOptions]);
25+
26+
var_dump($manager);
27+
var_dump(get_module_info('crypt_shared library version'));
28+
29+
?>
30+
===DONE===
31+
<?php exit(0); ?>
32+
--EXPECTF--
33+
object(MongoDB\Driver\Manager)#%d (%d) {
34+
["uri"]=>
35+
string(%d) "%s"
36+
["cluster"]=>
37+
array(0) {
38+
}
39+
["cryptSharedVersion"]=>
40+
NULL
41+
}
42+
string(7) "unknown"
43+
object(MongoDB\Driver\Manager)#%d (%d) {
44+
["uri"]=>
45+
string(%d) "%s"
46+
["cluster"]=>
47+
array(0) {
48+
}
49+
["cryptSharedVersion"]=>
50+
string(%d) "mongo_crypt%a"
51+
}
52+
string(7) "unknown"
53+
===DONE===

tests/manager/manager-var-dump-001.phpt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,8 @@ object(MongoDB\Driver\Manager)#%d (%d) {
2828
["cluster"]=>
2929
array(0) {
3030
}
31+
["cryptSharedVersion"]=>
32+
NULL
3133
}
3234
object(MongoDB\Driver\Manager)#%d (%d) {
3335
["uri"]=>
@@ -60,5 +62,7 @@ object(MongoDB\Driver\Manager)#%d (%d) {
6062
int(%d)
6163
}
6264
}
65+
["cryptSharedVersion"]=>
66+
NULL
6367
}
6468
===DONE===

tests/utils/skipif.php

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -459,6 +459,10 @@ function skip_if_crypt_shared()
459459

460460
function skip_if_no_crypt_shared()
461461
{
462+
if (PHP_INT_SIZE !== 8) {
463+
exit('skip crypt_shared is only available on 64-bit systems');
464+
}
465+
462466
// Intentionally consider empty values for CRYPT_SHARED_LIB_PATH
463467
if ( ! getenv('CRYPT_SHARED_LIB_PATH')) {
464468
exit('skip crypt_shared is not available');

0 commit comments

Comments
 (0)