Skip to content

Commit 7d26cfc

Browse files
authored
PHPC-2022: Use mongoc_host_list in event structs (#1291)
Limit ServerHeartbeatFailedEvent test to non-auth standalone
1 parent 10b3a1f commit 7d26cfc

9 files changed

+52
-87
lines changed

php_phongo_structs.h

Lines changed: 20 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -292,50 +292,44 @@ typedef struct {
292292

293293
typedef struct {
294294
bson_oid_t topology_id;
295-
char host[BSON_HOST_NAME_MAX + 1];
296-
uint16_t port;
295+
mongoc_host_list_t host;
297296
mongoc_server_description_t* new_server_description;
298297
mongoc_server_description_t* old_server_description;
299298
zend_object std;
300299
} php_phongo_serverchangedevent_t;
301300

302301
typedef struct {
303-
bson_oid_t topology_id;
304-
char host[BSON_HOST_NAME_MAX + 1];
305-
uint16_t port;
306-
zend_object std;
302+
bson_oid_t topology_id;
303+
mongoc_host_list_t host;
304+
zend_object std;
307305
} php_phongo_serverclosedevent_t;
308306

309307
typedef struct {
310-
bool awaited;
311-
uint64_t duration_micros;
312-
zval z_error;
313-
char host[BSON_HOST_NAME_MAX + 1];
314-
uint16_t port;
315-
zend_object std;
308+
bool awaited;
309+
uint64_t duration_micros;
310+
zval z_error;
311+
mongoc_host_list_t host;
312+
zend_object std;
316313
} php_phongo_serverheartbeatfailedevent_t;
317314

318315
typedef struct {
319-
bool awaited;
320-
char host[BSON_HOST_NAME_MAX + 1];
321-
uint16_t port;
322-
zend_object std;
316+
bool awaited;
317+
mongoc_host_list_t host;
318+
zend_object std;
323319
} php_phongo_serverheartbeatstartedevent_t;
324320

325321
typedef struct {
326-
bool awaited;
327-
uint64_t duration_micros;
328-
char host[BSON_HOST_NAME_MAX + 1];
329-
uint16_t port;
330-
bson_t* reply;
331-
zend_object std;
322+
bool awaited;
323+
uint64_t duration_micros;
324+
mongoc_host_list_t host;
325+
bson_t* reply;
326+
zend_object std;
332327
} php_phongo_serverheartbeatsucceededevent_t;
333328

334329
typedef struct {
335-
bson_oid_t topology_id;
336-
char host[BSON_HOST_NAME_MAX + 1];
337-
uint16_t port;
338-
zend_object std;
330+
bson_oid_t topology_id;
331+
mongoc_host_list_t host;
332+
zend_object std;
339333
} php_phongo_serveropeningevent_t;
340334

341335
typedef struct {

src/MongoDB/Monitoring/ServerChangedEvent.c

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ static PHP_METHOD(ServerChangedEvent, getHost)
3434

3535
PHONGO_PARSE_PARAMETERS_NONE();
3636

37-
RETVAL_STRING(intern->host);
37+
RETVAL_STRING(intern->host.host);
3838
} /* }}} */
3939

4040
/* {{{ proto integer ServerChangedEvent::getPort()
@@ -45,7 +45,7 @@ static PHP_METHOD(ServerChangedEvent, getPort)
4545

4646
PHONGO_PARSE_PARAMETERS_NONE();
4747

48-
RETVAL_LONG(intern->port);
48+
RETVAL_LONG(intern->host.port);
4949
} /* }}} */
5050

5151
/* {{{ proto MongoDB\Driver\ServerDescription ServerChangedEvent::getNewDescription()
@@ -140,8 +140,8 @@ static HashTable* php_phongo_serverchangedevent_get_debug_info(phongo_compat_obj
140140
*is_temp = 1;
141141
array_init_size(&retval, 4);
142142

143-
ADD_ASSOC_STRING(&retval, "host", intern->host);
144-
ADD_ASSOC_LONG_EX(&retval, "port", intern->port);
143+
ADD_ASSOC_STRING(&retval, "host", intern->host.host);
144+
ADD_ASSOC_LONG_EX(&retval, "port", intern->host.port);
145145

146146
{
147147
zval topology_id;

src/MongoDB/Monitoring/ServerClosedEvent.c

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ static PHP_METHOD(ServerClosedEvent, getHost)
3434

3535
PHONGO_PARSE_PARAMETERS_NONE();
3636

37-
RETVAL_STRING(intern->host);
37+
RETVAL_STRING(intern->host.host);
3838
} /* }}} */
3939

4040
/* {{{ proto integer ServerClosedEvent::getPort()
@@ -45,7 +45,7 @@ static PHP_METHOD(ServerClosedEvent, getPort)
4545

4646
PHONGO_PARSE_PARAMETERS_NONE();
4747

48-
RETVAL_LONG(intern->port);
48+
RETVAL_LONG(intern->host.port);
4949
} /* }}} */
5050

5151
/* {{{ proto MongoDB\BSON\ObjectId ServerClosedEvent::getTopologyId()
@@ -108,8 +108,8 @@ static HashTable* php_phongo_serverclosedevent_get_debug_info(phongo_compat_obje
108108
*is_temp = 1;
109109
array_init_size(&retval, 3);
110110

111-
ADD_ASSOC_STRING(&retval, "host", intern->host);
112-
ADD_ASSOC_LONG_EX(&retval, "port", intern->port);
111+
ADD_ASSOC_STRING(&retval, "host", intern->host.host);
112+
ADD_ASSOC_LONG_EX(&retval, "port", intern->host.port);
113113

114114
{
115115
zval topology_id;

src/MongoDB/Monitoring/ServerHeartbeatFailedEvent.c

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ static PHP_METHOD(ServerHeartbeatFailedEvent, getHost)
5656

5757
PHONGO_PARSE_PARAMETERS_NONE();
5858

59-
RETVAL_STRING(intern->host);
59+
RETVAL_STRING(intern->host.host);
6060
} /* }}} */
6161

6262
/* {{{ proto integer ServerHeartbeatFailedEvent::getPort()
@@ -67,7 +67,7 @@ static PHP_METHOD(ServerHeartbeatFailedEvent, getPort)
6767

6868
PHONGO_PARSE_PARAMETERS_NONE();
6969

70-
RETVAL_LONG(intern->port);
70+
RETVAL_LONG(intern->host.port);
7171
} /* }}} */
7272

7373
/* {{{ proto boolean ServerHeartbeatFailedEvent::isAwaited()
@@ -136,8 +136,8 @@ static HashTable* php_phongo_serverheartbeatfailedevent_get_debug_info(phongo_co
136136
*is_temp = 1;
137137
array_init_size(&retval, 5);
138138

139-
ADD_ASSOC_STRING(&retval, "host", intern->host);
140-
ADD_ASSOC_LONG_EX(&retval, "port", intern->port);
139+
ADD_ASSOC_STRING(&retval, "host", intern->host.host);
140+
ADD_ASSOC_LONG_EX(&retval, "port", intern->host.port);
141141
ADD_ASSOC_BOOL_EX(&retval, "awaited", intern->awaited);
142142
ADD_ASSOC_INT64(&retval, "durationMicros", intern->duration_micros);
143143

src/MongoDB/Monitoring/ServerHeartbeatStartedEvent.c

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ static PHP_METHOD(ServerHeartbeatStartedEvent, getHost)
3434

3535
PHONGO_PARSE_PARAMETERS_NONE();
3636

37-
RETVAL_STRING(intern->host);
37+
RETVAL_STRING(intern->host.host);
3838
} /* }}} */
3939

4040
/* {{{ proto integer ServerHeartbeatStartedEvent::getPort()
@@ -45,7 +45,7 @@ static PHP_METHOD(ServerHeartbeatStartedEvent, getPort)
4545

4646
PHONGO_PARSE_PARAMETERS_NONE();
4747

48-
RETVAL_LONG(intern->port);
48+
RETVAL_LONG(intern->host.port);
4949
} /* }}} */
5050

5151
/* {{{ proto boolean ServerHeartbeatStartedEvent::isAwaited()
@@ -108,8 +108,8 @@ static HashTable* php_phongo_serverheartbeatstartedevent_get_debug_info(phongo_c
108108
*is_temp = 1;
109109
array_init_size(&retval, 4);
110110

111-
ADD_ASSOC_STRING(&retval, "host", intern->host);
112-
ADD_ASSOC_LONG_EX(&retval, "port", intern->port);
111+
ADD_ASSOC_STRING(&retval, "host", intern->host.host);
112+
ADD_ASSOC_LONG_EX(&retval, "port", intern->host.port);
113113
ADD_ASSOC_BOOL_EX(&retval, "awaited", intern->awaited);
114114

115115
return Z_ARRVAL(retval);

src/MongoDB/Monitoring/ServerHeartbeatSucceededEvent.c

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ static PHP_METHOD(ServerHeartbeatSucceededEvent, getHost)
4545

4646
PHONGO_PARSE_PARAMETERS_NONE();
4747

48-
RETVAL_STRING(intern->host);
48+
RETVAL_STRING(intern->host.host);
4949
} /* }}} */
5050

5151
/* {{{ proto integer ServerHeartbeatSucceededEvent::getPort()
@@ -56,7 +56,7 @@ static PHP_METHOD(ServerHeartbeatSucceededEvent, getPort)
5656

5757
PHONGO_PARSE_PARAMETERS_NONE();
5858

59-
RETVAL_LONG(intern->port);
59+
RETVAL_LONG(intern->host.port);
6060
} /* }}} */
6161

6262
/* {{{ proto integer ServerHeartbeatSucceededEvent::getReply()
@@ -147,8 +147,8 @@ static HashTable* php_phongo_serverheartbeatsucceededevent_get_debug_info(phongo
147147
*is_temp = 1;
148148
array_init_size(&retval, 4);
149149

150-
ADD_ASSOC_STRING(&retval, "host", intern->host);
151-
ADD_ASSOC_LONG_EX(&retval, "port", intern->port);
150+
ADD_ASSOC_STRING(&retval, "host", intern->host.host);
151+
ADD_ASSOC_LONG_EX(&retval, "port", intern->host.port);
152152
ADD_ASSOC_BOOL_EX(&retval, "awaited", intern->awaited);
153153

154154
if (!php_phongo_bson_to_zval_ex(bson_get_data(intern->reply), intern->reply->len, &reply_state)) {

src/MongoDB/Monitoring/ServerOpeningEvent.c

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ static PHP_METHOD(ServerOpeningEvent, getHost)
3434

3535
PHONGO_PARSE_PARAMETERS_NONE();
3636

37-
RETVAL_STRING(intern->host);
37+
RETVAL_STRING(intern->host.host);
3838
} /* }}} */
3939

4040
/* {{{ proto integer ServerOpeningEvent::getPort()
@@ -45,7 +45,7 @@ static PHP_METHOD(ServerOpeningEvent, getPort)
4545

4646
PHONGO_PARSE_PARAMETERS_NONE();
4747

48-
RETVAL_LONG(intern->port);
48+
RETVAL_LONG(intern->host.port);
4949
} /* }}} */
5050

5151
/* {{{ proto MongoDB\BSON\ObjectId ServerOpeningEvent::getTopologyId()
@@ -108,8 +108,8 @@ static HashTable* php_phongo_serveropeningevent_get_debug_info(phongo_compat_obj
108108
*is_temp = 1;
109109
array_init_size(&retval, 3);
110110

111-
ADD_ASSOC_STRING(&retval, "host", intern->host);
112-
ADD_ASSOC_LONG_EX(&retval, "port", intern->port);
111+
ADD_ASSOC_STRING(&retval, "host", intern->host.host);
112+
ADD_ASSOC_LONG_EX(&retval, "port", intern->host.port);
113113

114114
{
115115
zval topology_id;

src/phongo_apm.c

Lines changed: 6 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -283,7 +283,6 @@ static void phongo_apm_server_changed(const mongoc_apm_server_changed_t* event)
283283
HashTable* subscribers;
284284
php_phongo_serverchangedevent_t* p_event;
285285
zval z_event;
286-
const mongoc_host_list_t* host_list;
287286

288287
client = mongoc_apm_server_changed_get_context(event);
289288
subscribers = phongo_apm_get_subscribers_to_notify(php_phongo_sdamsubscriber_ce, client);
@@ -296,10 +295,7 @@ static void phongo_apm_server_changed(const mongoc_apm_server_changed_t* event)
296295
object_init_ex(&z_event, php_phongo_serverchangedevent_ce);
297296
p_event = Z_SERVERCHANGEDEVENT_OBJ_P(&z_event);
298297

299-
host_list = mongoc_apm_server_changed_get_host(event);
300-
memcpy(&p_event->host, &host_list->host, BSON_HOST_NAME_MAX + 1);
301-
p_event->port = host_list->port;
302-
298+
memcpy(&p_event->host, mongoc_apm_server_changed_get_host(event), sizeof(mongoc_host_list_t));
303299
mongoc_apm_server_changed_get_topology_id(event, &p_event->topology_id);
304300
p_event->new_server_description = mongoc_server_description_new_copy(mongoc_apm_server_changed_get_new_description(event));
305301
p_event->old_server_description = mongoc_server_description_new_copy(mongoc_apm_server_changed_get_previous_description(event));
@@ -318,7 +314,6 @@ static void phongo_apm_server_closed(const mongoc_apm_server_closed_t* event)
318314
HashTable* subscribers;
319315
php_phongo_serverclosedevent_t* p_event;
320316
zval z_event;
321-
const mongoc_host_list_t* host_list;
322317

323318
client = mongoc_apm_server_closed_get_context(event);
324319
subscribers = phongo_apm_get_subscribers_to_notify(php_phongo_sdamsubscriber_ce, client);
@@ -331,11 +326,7 @@ static void phongo_apm_server_closed(const mongoc_apm_server_closed_t* event)
331326
object_init_ex(&z_event, php_phongo_serverclosedevent_ce);
332327
p_event = Z_SERVERCLOSEDEVENT_OBJ_P(&z_event);
333328

334-
host_list = mongoc_apm_server_closed_get_host(event);
335-
memset(p_event->host, 0, sizeof(p_event->host));
336-
bson_strncpy(p_event->host, host_list->host, sizeof(p_event->host));
337-
p_event->port = host_list->port;
338-
329+
memcpy(&p_event->host, mongoc_apm_server_closed_get_host(event), sizeof(mongoc_host_list_t));
339330
mongoc_apm_server_closed_get_topology_id(event, &p_event->topology_id);
340331

341332
phongo_apm_dispatch_event(subscribers, "serverClosed", &z_event);
@@ -352,7 +343,6 @@ static void phongo_apm_server_heartbeat_failed(const mongoc_apm_server_heartbeat
352343
HashTable* subscribers;
353344
php_phongo_serverheartbeatfailedevent_t* p_event;
354345
zval z_event;
355-
const mongoc_host_list_t* host_list;
356346
bson_error_t tmp_error = { 0 };
357347

358348
client = mongoc_apm_server_heartbeat_failed_get_context(event);
@@ -366,11 +356,7 @@ static void phongo_apm_server_heartbeat_failed(const mongoc_apm_server_heartbeat
366356
object_init_ex(&z_event, php_phongo_serverheartbeatfailedevent_ce);
367357
p_event = Z_SERVERHEARTBEATFAILEDEVENT_OBJ_P(&z_event);
368358

369-
host_list = mongoc_apm_server_heartbeat_failed_get_host(event);
370-
memset(p_event->host, 0, sizeof(p_event->host));
371-
bson_strncpy(p_event->host, host_list->host, sizeof(p_event->host));
372-
p_event->port = host_list->port;
373-
359+
memcpy(&p_event->host, mongoc_apm_server_heartbeat_failed_get_host(event), sizeof(mongoc_host_list_t));
374360
p_event->awaited = mongoc_apm_server_heartbeat_failed_get_awaited(event);
375361
p_event->duration_micros = mongoc_apm_server_heartbeat_failed_get_duration(event);
376362

@@ -397,7 +383,6 @@ static void phongo_apm_server_heartbeat_succeeded(const mongoc_apm_server_heartb
397383
HashTable* subscribers;
398384
php_phongo_serverheartbeatsucceededevent_t* p_event;
399385
zval z_event;
400-
const mongoc_host_list_t* host_list;
401386

402387
client = mongoc_apm_server_heartbeat_succeeded_get_context(event);
403388
subscribers = phongo_apm_get_subscribers_to_notify(php_phongo_sdamsubscriber_ce, client);
@@ -410,11 +395,7 @@ static void phongo_apm_server_heartbeat_succeeded(const mongoc_apm_server_heartb
410395
object_init_ex(&z_event, php_phongo_serverheartbeatsucceededevent_ce);
411396
p_event = Z_SERVERHEARTBEATSUCCEEDEDEVENT_OBJ_P(&z_event);
412397

413-
host_list = mongoc_apm_server_heartbeat_succeeded_get_host(event);
414-
memset(p_event->host, 0, sizeof(p_event->host));
415-
bson_strncpy(p_event->host, host_list->host, sizeof(p_event->host));
416-
p_event->port = host_list->port;
417-
398+
memcpy(&p_event->host, mongoc_apm_server_heartbeat_succeeded_get_host(event), sizeof(mongoc_host_list_t));
418399
p_event->awaited = mongoc_apm_server_heartbeat_succeeded_get_awaited(event);
419400
p_event->duration_micros = mongoc_apm_server_heartbeat_succeeded_get_duration(event);
420401
p_event->reply = bson_copy(mongoc_apm_server_heartbeat_succeeded_get_reply(event));
@@ -433,7 +414,6 @@ static void phongo_apm_server_heartbeat_started(const mongoc_apm_server_heartbea
433414
HashTable* subscribers;
434415
php_phongo_serverheartbeatstartedevent_t* p_event;
435416
zval z_event;
436-
const mongoc_host_list_t* host_list;
437417

438418
client = mongoc_apm_server_heartbeat_started_get_context(event);
439419
subscribers = phongo_apm_get_subscribers_to_notify(php_phongo_sdamsubscriber_ce, client);
@@ -446,11 +426,7 @@ static void phongo_apm_server_heartbeat_started(const mongoc_apm_server_heartbea
446426
object_init_ex(&z_event, php_phongo_serverheartbeatstartedevent_ce);
447427
p_event = Z_SERVERHEARTBEATSTARTEDEVENT_OBJ_P(&z_event);
448428

449-
host_list = mongoc_apm_server_heartbeat_started_get_host(event);
450-
memset(p_event->host, 0, sizeof(p_event->host));
451-
bson_strncpy(p_event->host, host_list->host, sizeof(p_event->host));
452-
p_event->port = host_list->port;
453-
429+
memcpy(&p_event->host, mongoc_apm_server_heartbeat_started_get_host(event), sizeof(mongoc_host_list_t));
454430
p_event->awaited = mongoc_apm_server_heartbeat_started_get_awaited(event);
455431

456432
phongo_apm_dispatch_event(subscribers, "serverHeartbeatStarted", &z_event);
@@ -467,7 +443,6 @@ static void phongo_apm_server_opening(const mongoc_apm_server_opening_t* event)
467443
HashTable* subscribers;
468444
php_phongo_serveropeningevent_t* p_event;
469445
zval z_event;
470-
const mongoc_host_list_t* host_list;
471446

472447
client = mongoc_apm_server_opening_get_context(event);
473448
subscribers = phongo_apm_get_subscribers_to_notify(php_phongo_sdamsubscriber_ce, client);
@@ -480,11 +455,7 @@ static void phongo_apm_server_opening(const mongoc_apm_server_opening_t* event)
480455
object_init_ex(&z_event, php_phongo_serveropeningevent_ce);
481456
p_event = Z_SERVEROPENINGEVENT_OBJ_P(&z_event);
482457

483-
host_list = mongoc_apm_server_opening_get_host(event);
484-
memset(p_event->host, 0, sizeof(p_event->host));
485-
bson_strncpy(p_event->host, host_list->host, sizeof(p_event->host));
486-
p_event->port = host_list->port;
487-
458+
memcpy(&p_event->host, mongoc_apm_server_opening_get_host(event), sizeof(mongoc_host_list_t));
488459
mongoc_apm_server_opening_get_topology_id(event, &p_event->topology_id);
489460

490461
phongo_apm_dispatch_event(subscribers, "serverOpening", &z_event);

tests/apm/serverHeartbeatFailedEvent-001.phpt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@ MongoDB\Driver\Monitoring\ServerHeartbeatFailedEvent
44
<?php require __DIR__ . "/../utils/basic-skipif.inc"; ?>
55
<?php skip_if_not_live(); ?>
66
<?php skip_if_no_failcommand_failpoint(); ?>
7-
<?php skip_if_multiple_mongos(); ?>
8-
<?php skip_if_load_balanced(); ?>
7+
<?php skip_if_not_standalone(); ?>
8+
<?php skip_if_auth(); ?>
99
--FILE--
1010
<?php
1111
require_once __DIR__ . "/../utils/basic.inc";

0 commit comments

Comments
 (0)