Skip to content

Commit 7dc87ea

Browse files
committed
PHPC-1893: Implement ServerHeartbeatFailedEvent class
1 parent 5ebd979 commit 7dc87ea

21 files changed

+291
-1
lines changed

config.m4

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -175,6 +175,7 @@ if test "$PHP_MONGODB" != "no"; then
175175
src/MongoDB/Monitoring/Subscriber.c \
176176
src/MongoDB/Monitoring/ServerChangedEvent.c \
177177
src/MongoDB/Monitoring/ServerClosedEvent.c \
178+
src/MongoDB/Monitoring/ServerHeartbeatFailedEvent.c \
178179
src/MongoDB/Monitoring/ServerOpeningEvent.c \
179180
src/MongoDB/Monitoring/TopologyChangedEvent.c \
180181
src/MongoDB/Monitoring/TopologyClosedEvent.c \

config.w32

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -122,7 +122,7 @@ if (PHP_MONGODB != "no") {
122122
MONGODB_ADD_SOURCES("/src/BSON", "Binary.c BinaryInterface.c DBPointer.c Decimal128.c Decimal128Interface.c Int64.c Javascript.c JavascriptInterface.c MaxKey.c MaxKeyInterface.c MinKey.c MinKeyInterface.c ObjectId.c ObjectIdInterface.c Persistable.c Regex.c RegexInterface.c Serializable.c Symbol.c Timestamp.c TimestampInterface.c Type.c Undefined.c Unserializable.c UTCDateTime.c UTCDateTimeInterface.c functions.c");
123123
MONGODB_ADD_SOURCES("/src/MongoDB", "BulkWrite.c ClientEncryption.c Command.c Cursor.c CursorId.c CursorInterface.c Manager.c Query.c ReadConcern.c ReadPreference.c Server.c ServerApi.c ServerDescription.c Session.c TopologyDescription.c WriteConcern.c WriteConcernError.c WriteError.c WriteResult.c");
124124
MONGODB_ADD_SOURCES("/src/MongoDB/Exception", "AuthenticationException.c BulkWriteException.c CommandException.c ConnectionException.c ConnectionTimeoutException.c EncryptionException.c Exception.c ExecutionTimeoutException.c InvalidArgumentException.c LogicException.c RuntimeException.c ServerException.c SSLConnectionException.c UnexpectedValueException.c WriteException.c");
125-
MONGODB_ADD_SOURCES("/src/MongoDB/Monitoring", "CommandFailedEvent.c CommandStartedEvent.c CommandSubscriber.c CommandSucceededEvent.c SDAMSubscriber.c Subscriber.c ServerChangedEvent.c ServerClosedEvent.c ServerOpeningEvent.c TopologyChangedEvent.c TopologyClosedEvent.c TopologyOpeningEvent.c functions.c");
125+
MONGODB_ADD_SOURCES("/src/MongoDB/Monitoring", "CommandFailedEvent.c CommandStartedEvent.c CommandSubscriber.c CommandSucceededEvent.c SDAMSubscriber.c Subscriber.c ServerChangedEvent.c ServerClosedEvent.c ServerHeartbeatFailedEvent.c ServerOpeningEvent.c TopologyChangedEvent.c TopologyClosedEvent.c TopologyOpeningEvent.c functions.c");
126126
MONGODB_ADD_SOURCES("/src/libmongoc/src/common", PHP_MONGODB_COMMON_SOURCES);
127127
MONGODB_ADD_SOURCES("/src/libmongoc/src/libbson/src/bson", PHP_MONGODB_BSON_SOURCES);
128128
MONGODB_ADD_SOURCES("/src/libmongoc/src/libbson/src/jsonsl", PHP_MONGODB_JSONSL_SOURCES);

php_phongo.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3857,6 +3857,7 @@ PHP_MINIT_FUNCTION(mongodb)
38573857
php_phongo_sdamsubscriber_init_ce(INIT_FUNC_ARGS_PASSTHRU);
38583858
php_phongo_serverchangedevent_init_ce(INIT_FUNC_ARGS_PASSTHRU);
38593859
php_phongo_serverclosedevent_init_ce(INIT_FUNC_ARGS_PASSTHRU);
3860+
php_phongo_serverheartbeatfailedevent_init_ce(INIT_FUNC_ARGS_PASSTHRU);
38603861
php_phongo_serveropeningevent_init_ce(INIT_FUNC_ARGS_PASSTHRU);
38613862
php_phongo_topologychangedevent_init_ce(INIT_FUNC_ARGS_PASSTHRU);
38623863
php_phongo_topologyclosedevent_init_ce(INIT_FUNC_ARGS_PASSTHRU);

php_phongo_classes.h

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -167,6 +167,10 @@ static inline php_phongo_serverclosedevent_t* php_serverclosedevent_fetch_object
167167
{
168168
return (php_phongo_serverclosedevent_t*) ((char*) obj - XtOffsetOf(php_phongo_serverclosedevent_t, std));
169169
}
170+
static inline php_phongo_serverheartbeatfailedevent_t* php_serverheartbeatfailedevent_fetch_object(zend_object* obj)
171+
{
172+
return (php_phongo_serverheartbeatfailedevent_t*) ((char*) obj - XtOffsetOf(php_phongo_serverheartbeatfailedevent_t, std));
173+
}
170174
static inline php_phongo_serveropeningevent_t* php_serveropeningevent_fetch_object(zend_object* obj)
171175
{
172176
return (php_phongo_serveropeningevent_t*) ((char*) obj - XtOffsetOf(php_phongo_serveropeningevent_t, std));
@@ -220,6 +224,7 @@ static inline php_phongo_topologyopeningevent_t* php_topologyopeningevent_fetch_
220224
#define Z_COMMANDSUCCEEDEDEVENT_OBJ_P(zv) (php_commandsucceededevent_fetch_object(Z_OBJ_P(zv)))
221225
#define Z_SERVERCHANGEDEVENT_OBJ_P(zv) (php_serverchangedevent_fetch_object(Z_OBJ_P(zv)))
222226
#define Z_SERVERCLOSEDEVENT_OBJ_P(zv) (php_serverclosedevent_fetch_object(Z_OBJ_P(zv)))
227+
#define Z_SERVERHEARTBEATFAILEDEVENT_OBJ_P(zv) (php_serverheartbeatfailedevent_fetch_object(Z_OBJ_P(zv)))
223228
#define Z_SERVEROPENINGEVENT_OBJ_P(zv) (php_serveropeningevent_fetch_object(Z_OBJ_P(zv)))
224229
#define Z_TOPOLOGYCHANGEDEVENT_OBJ_P(zv) (php_topologychangedevent_fetch_object(Z_OBJ_P(zv)))
225230
#define Z_TOPOLOGYCLOSEDEVENT_OBJ_P(zv) (php_topologyclosedevent_fetch_object(Z_OBJ_P(zv)))
@@ -261,6 +266,7 @@ static inline php_phongo_topologyopeningevent_t* php_topologyopeningevent_fetch_
261266
#define Z_OBJ_COMMANDSUCCEEDEDEVENT(zo) (php_commandsucceededevent_fetch_object(zo))
262267
#define Z_OBJ_SERVERCHANGEDEVENT(zo) (php_serverchangedevent_fetch_object(zo))
263268
#define Z_OBJ_SERVERCLOSEDEVENT(zo) (php_serverclosedevent_fetch_object(zo))
269+
#define Z_OBJ_SERVERHEARTBEATFAILEDEVENT(zo) (php_serverheartbeatfailedevent_fetch_object(zo))
264270
#define Z_OBJ_SERVEROPENINGEVENT(zo) (php_serveropeningevent_fetch_object(zo))
265271
#define Z_OBJ_TOPOLOGYCHANGEDEVENT(zo) (php_topologychangedevent_fetch_object(zo))
266272
#define Z_OBJ_TOPOLOGYCLOSEDEVENT(zo) (php_topologyclosedevent_fetch_object(zo))
@@ -339,6 +345,7 @@ extern zend_class_entry* php_phongo_sdamsubscriber_ce;
339345
extern zend_class_entry* php_phongo_subscriber_ce;
340346
extern zend_class_entry* php_phongo_serverchangedevent_ce;
341347
extern zend_class_entry* php_phongo_serverclosedevent_ce;
348+
extern zend_class_entry* php_phongo_serverheartbeatfailedevent_ce;
342349
extern zend_class_entry* php_phongo_serveropeningevent_ce;
343350
extern zend_class_entry* php_phongo_topologychangedevent_ce;
344351
extern zend_class_entry* php_phongo_topologyclosedevent_ce;
@@ -417,6 +424,7 @@ extern void php_phongo_sdamsubscriber_init_ce(INIT_FUNC_ARGS);
417424
extern void php_phongo_subscriber_init_ce(INIT_FUNC_ARGS);
418425
extern void php_phongo_serverchangedevent_init_ce(INIT_FUNC_ARGS);
419426
extern void php_phongo_serverclosedevent_init_ce(INIT_FUNC_ARGS);
427+
extern void php_phongo_serverheartbeatfailedevent_init_ce(INIT_FUNC_ARGS);
420428
extern void php_phongo_serveropeningevent_init_ce(INIT_FUNC_ARGS);
421429
extern void php_phongo_topologychangedevent_init_ce(INIT_FUNC_ARGS);
422430
extern void php_phongo_topologyclosedevent_init_ce(INIT_FUNC_ARGS);

php_phongo_structs.h

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -300,6 +300,15 @@ typedef struct {
300300
zend_object std;
301301
} php_phongo_serverclosedevent_t;
302302

303+
typedef struct {
304+
bool awaited;
305+
int64_t duration;
306+
bson_error_t* error;
307+
char host[BSON_HOST_NAME_MAX + 1];
308+
uint16_t port;
309+
zend_object std;
310+
} php_phongo_serverheartbeatfailedevent_t;
311+
303312
typedef struct {
304313
bson_oid_t topology_id;
305314
char host[BSON_HOST_NAME_MAX + 1];
Lines changed: 159 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,159 @@
1+
/*
2+
* Copyright 2021-present MongoDB, Inc.
3+
*
4+
* Licensed under the Apache License, Version 2.0 (the "License");
5+
* you may not use this file except in compliance with the License.
6+
* You may obtain a copy of the License at
7+
*
8+
* http://www.apache.org/licenses/LICENSE-2.0
9+
*
10+
* Unless required by applicable law or agreed to in writing, software
11+
* distributed under the License is distributed on an "AS IS" BASIS,
12+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
* See the License for the specific language governing permissions and
14+
* limitations under the License.
15+
*/
16+
17+
#include <php.h>
18+
#include <Zend/zend_interfaces.h>
19+
20+
#ifdef HAVE_CONFIG_H
21+
#include "config.h"
22+
#endif
23+
24+
#include "phongo_compat.h"
25+
#include "php_phongo.h"
26+
27+
zend_class_entry* php_phongo_serverheartbeatfailedevent_ce;
28+
29+
/* {{{ proto boolean ServerHeartbeatFailedEvent::getAwaited()
30+
Returns whether this event came from an awaitable hello */
31+
static PHP_METHOD(ServerHeartbeatFailedEvent, getAwaited)
32+
{
33+
php_phongo_serverheartbeatfailedevent_t* intern = Z_SERVERHEARTBEATFAILEDEVENT_OBJ_P(getThis());
34+
35+
PHONGO_PARSE_PARAMETERS_NONE();
36+
37+
RETVAL_BOOL(intern->awaited);
38+
} /* }}} */
39+
40+
/* {{{ proto integer ServerHeartbeatFailedEvent::getDuration()
41+
Returns this event's duration in microseconds */
42+
static PHP_METHOD(ServerHeartbeatFailedEvent, getDuration)
43+
{
44+
php_phongo_serverheartbeatfailedevent_t* intern = Z_SERVERHEARTBEATFAILEDEVENT_OBJ_P(getThis());
45+
46+
PHONGO_PARSE_PARAMETERS_NONE();
47+
48+
RETVAL_LONG(intern->duration);
49+
} /* }}} */
50+
51+
/* {{{ proto string ServerHeartbeatFailedEvent::getHost()
52+
Returns this event's host */
53+
static PHP_METHOD(ServerHeartbeatFailedEvent, getHost)
54+
{
55+
php_phongo_serverheartbeatfailedevent_t* intern = Z_SERVERHEARTBEATFAILEDEVENT_OBJ_P(getThis());
56+
57+
PHONGO_PARSE_PARAMETERS_NONE();
58+
59+
RETVAL_STRING(intern->host);
60+
} /* }}} */
61+
62+
/* {{{ proto integer ServerHeartbeatFailedEvent::getPort()
63+
Returns this event's port */
64+
static PHP_METHOD(ServerHeartbeatFailedEvent, getPort)
65+
{
66+
php_phongo_serverheartbeatfailedevent_t* intern = Z_SERVERHEARTBEATFAILEDEVENT_OBJ_P(getThis());
67+
68+
PHONGO_PARSE_PARAMETERS_NONE();
69+
70+
RETVAL_LONG(intern->port);
71+
} /* }}} */
72+
73+
/* {{{ MongoDB\Driver\Monitoring\ServerHeartbeatFailedEvent function entries */
74+
ZEND_BEGIN_ARG_INFO_EX(ai_ServerHeartbeatFailedEvent_void, 0, 0, 0)
75+
ZEND_END_ARG_INFO()
76+
77+
static zend_function_entry php_phongo_serverheartbeatfailedevent_me[] = {
78+
/* clang-format off */
79+
ZEND_NAMED_ME(__construct, PHP_FN(MongoDB_disabled___construct), ai_ServerHeartbeatFailedEvent_void, ZEND_ACC_PRIVATE | ZEND_ACC_FINAL)
80+
PHP_ME(ServerHeartbeatFailedEvent, getAwaited, ai_ServerHeartbeatFailedEvent_void, ZEND_ACC_PUBLIC | ZEND_ACC_FINAL)
81+
PHP_ME(ServerHeartbeatFailedEvent, getDuration, ai_ServerHeartbeatFailedEvent_void, ZEND_ACC_PUBLIC | ZEND_ACC_FINAL)
82+
PHP_ME(ServerHeartbeatFailedEvent, getHost, ai_ServerHeartbeatFailedEvent_void, ZEND_ACC_PUBLIC | ZEND_ACC_FINAL)
83+
PHP_ME(ServerHeartbeatFailedEvent, getPort, ai_ServerHeartbeatFailedEvent_void, ZEND_ACC_PUBLIC | ZEND_ACC_FINAL)
84+
ZEND_NAMED_ME(__wakeup, PHP_FN(MongoDB_disabled___wakeup), ai_ServerHeartbeatFailedEvent_void, ZEND_ACC_PUBLIC | ZEND_ACC_FINAL)
85+
PHP_FE_END
86+
/* clang-format on */
87+
};
88+
/* }}} */
89+
90+
/* {{{ MongoDB\Driver\Monitoring\ServerHeartbeatFailedEvent object handlers */
91+
static zend_object_handlers php_phongo_handler_serverheartbeatfailedevent;
92+
93+
static void php_phongo_serverheartbeatfailedevent_free_object(zend_object* object) /* {{{ */
94+
{
95+
php_phongo_serverheartbeatfailedevent_t* intern = Z_OBJ_SERVERHEARTBEATFAILEDEVENT(object);
96+
97+
zend_object_std_dtor(&intern->std);
98+
} /* }}} */
99+
100+
static zend_object* php_phongo_serverheartbeatfailedevent_create_object(zend_class_entry* class_type) /* {{{ */
101+
{
102+
php_phongo_serverheartbeatfailedevent_t* intern = NULL;
103+
104+
intern = PHONGO_ALLOC_OBJECT_T(php_phongo_serverheartbeatfailedevent_t, class_type);
105+
106+
zend_object_std_init(&intern->std, class_type);
107+
object_properties_init(&intern->std, class_type);
108+
109+
intern->std.handlers = &php_phongo_handler_serverheartbeatfailedevent;
110+
111+
return &intern->std;
112+
} /* }}} */
113+
114+
static HashTable* php_phongo_serverheartbeatfailedevent_get_debug_info(phongo_compat_object_handler_type* object, int* is_temp) /* {{{ */
115+
{
116+
php_phongo_serverheartbeatfailedevent_t* intern;
117+
zval retval = ZVAL_STATIC_INIT;
118+
119+
intern = Z_OBJ_SERVERHEARTBEATFAILEDEVENT(PHONGO_COMPAT_GET_OBJ(object));
120+
*is_temp = 1;
121+
array_init_size(&retval, 4);
122+
123+
ADD_ASSOC_STRING(&retval, "host", intern->host);
124+
ADD_ASSOC_LONG_EX(&retval, "port", intern->port);
125+
ADD_ASSOC_BOOL_EX(&retval, "awaited", intern->awaited);
126+
ADD_ASSOC_LONG_EX(&retval, "duration", intern->duration);
127+
128+
return Z_ARRVAL(retval);
129+
} /* }}} */
130+
/* }}} */
131+
132+
void php_phongo_serverheartbeatfailedevent_init_ce(INIT_FUNC_ARGS) /* {{{ */
133+
{
134+
zend_class_entry ce;
135+
(void) type;
136+
(void) module_number;
137+
138+
INIT_NS_CLASS_ENTRY(ce, "MongoDB\\Driver\\Monitoring", "ServerHeartbeatFailedEvent", php_phongo_serverheartbeatfailedevent_me);
139+
php_phongo_serverheartbeatfailedevent_ce = zend_register_internal_class(&ce);
140+
php_phongo_serverheartbeatfailedevent_ce->create_object = php_phongo_serverheartbeatfailedevent_create_object;
141+
PHONGO_CE_FINAL(php_phongo_serverheartbeatfailedevent_ce);
142+
PHONGO_CE_DISABLE_SERIALIZATION(php_phongo_serverheartbeatfailedevent_ce);
143+
144+
memcpy(&php_phongo_handler_serverheartbeatfailedevent, phongo_get_std_object_handlers(), sizeof(zend_object_handlers));
145+
php_phongo_handler_serverheartbeatfailedevent.get_debug_info = php_phongo_serverheartbeatfailedevent_get_debug_info;
146+
php_phongo_handler_serverheartbeatfailedevent.free_obj = php_phongo_serverheartbeatfailedevent_free_object;
147+
php_phongo_handler_serverheartbeatfailedevent.offset = XtOffsetOf(php_phongo_serverheartbeatfailedevent_t, std);
148+
149+
return;
150+
} /* }}} */
151+
152+
/*
153+
* Local variables:
154+
* tab-width: 4
155+
* c-basic-offset: 4
156+
* End:
157+
* vim600: noet sw=4 ts=4 fdm=marker
158+
* vim<600: noet sw=4 ts=4
159+
*/

src/phongo_apm.c

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -331,6 +331,42 @@ static void phongo_apm_server_closed(const mongoc_apm_server_closed_t* event)
331331
FREE_HASHTABLE(subscribers);
332332
}
333333

334+
static void phongo_apm_server_heartbeat_failed(const mongoc_apm_server_heartbeat_failed_t* event)
335+
{
336+
mongoc_client_t* client;
337+
HashTable* subscribers;
338+
php_phongo_serverheartbeatfailedevent_t* p_event;
339+
zval z_event;
340+
const mongoc_host_list_t* host_list;
341+
342+
client = mongoc_apm_server_heartbeat_failed_get_context(event);
343+
subscribers = phongo_apm_get_subscribers_to_notify(php_phongo_sdamsubscriber_ce, client);
344+
345+
/* Return early if there are no APM subscribers to notify */
346+
if (zend_hash_num_elements(subscribers) == 0) {
347+
goto cleanup;
348+
}
349+
350+
object_init_ex(&z_event, php_phongo_serverheartbeatfailedevent_ce);
351+
p_event = Z_SERVERHEARTBEATFAILEDEVENT_OBJ_P(&z_event);
352+
353+
host_list = mongoc_apm_server_heartbeat_failed_get_host(event);
354+
memset(p_event->host, 0, sizeof(p_event->host));
355+
bson_strncpy(p_event->host, host_list->host, sizeof(p_event->host));
356+
p_event->port = host_list->port;
357+
358+
p_event->awaited = mongoc_apm_server_heartbeat_failed_get_awaited(event);
359+
p_event->duration = mongoc_apm_server_heartbeat_failed_get_duration(event);
360+
mongoc_apm_server_heartbeat_failed_get_error(event, p_event->error);
361+
362+
phongo_apm_dispatch_event(subscribers, "serverClosed", &z_event);
363+
zval_ptr_dtor(&z_event);
364+
365+
cleanup:
366+
zend_hash_destroy(subscribers);
367+
FREE_HASHTABLE(subscribers);
368+
}
369+
334370
static void phongo_apm_server_opening(const mongoc_apm_server_opening_t* event)
335371
{
336372
mongoc_client_t* client;
@@ -465,6 +501,7 @@ bool phongo_apm_set_callbacks(mongoc_client_t* client)
465501
mongoc_apm_set_command_failed_cb(callbacks, phongo_apm_command_failed);
466502
mongoc_apm_set_server_changed_cb(callbacks, phongo_apm_server_changed);
467503
mongoc_apm_set_server_closed_cb(callbacks, phongo_apm_server_closed);
504+
mongoc_apm_set_server_heartbeat_failed_cb(callbacks, phongo_apm_server_heartbeat_failed);
468505
mongoc_apm_set_server_opening_cb(callbacks, phongo_apm_server_opening);
469506
mongoc_apm_set_topology_changed_cb(callbacks, phongo_apm_topology_changed);
470507
mongoc_apm_set_topology_closed_cb(callbacks, phongo_apm_topology_closed);

tests/apm/monitoring-serverChanged-001.phpt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,8 @@ class MySubscriber implements MongoDB\Driver\Monitoring\SDAMSubscriber
2929

3030
public function serverClosed(MongoDB\Driver\Monitoring\ServerClosedEvent $event) {}
3131

32+
public function serverHeartbeatFailed(MongoDB\Driver\Monitoring\ServerHeartbeatFailedEvent $event) {}
33+
3234
public function serverOpening(MongoDB\Driver\Monitoring\ServerOpeningEvent $event) {}
3335

3436
public function topologyChanged(MongoDB\Driver\Monitoring\TopologyChangedEvent $event) {}

tests/apm/monitoring-serverClosed-001.phpt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,8 @@ class MySubscriber implements MongoDB\Driver\Monitoring\SDAMSubscriber
2727
echo "- getTopologyId() returns an ObjectId: ", ($event->getTopologyId() instanceof MongoDB\BSON\ObjectId) ? 'yes' : 'no', "\n";
2828
}
2929

30+
public function serverHeartbeatFailed(MongoDB\Driver\Monitoring\ServerHeartbeatFailedEvent $event) {}
31+
3032
public function serverOpening(MongoDB\Driver\Monitoring\ServerOpeningEvent $event) {}
3133

3234
public function topologyChanged(MongoDB\Driver\Monitoring\TopologyChangedEvent $event) {}
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
--TEST--
2+
MongoDB\Driver\Monitoring\ServerHeartbeatFailed
3+
--SKIPIF--
4+
<?php require __DIR__ . "/../utils/basic-skipif.inc"; ?>
5+
<?php skip_if_not_live(); ?>
6+
--FILE--
7+
<?php
8+
require_once __DIR__ . "/../utils/basic.inc";
9+
10+
$m = create_test_manager();
11+
12+
class MySubscriber implements MongoDB\Driver\Monitoring\SDAMSubscriber
13+
{
14+
public function serverChanged(MongoDB\Driver\Monitoring\ServerChangedEvent $event) {}
15+
16+
public function serverClosed(MongoDB\Driver\Monitoring\ServerClosedEvent $event) {}
17+
18+
public function serverHeartbeatFailed(MongoDB\Driver\Monitoring\ServerHeartbeatFailedEvent $event)
19+
{
20+
echo "- getAwaited() returns a boolean: ", is_bool($event->getAwaited()) ? 'yes' : 'no', "\n";
21+
echo "- getDuration() returns an integer: ", is_integer($event->getDuration()) ? 'yes' : 'no', "\n";
22+
echo "- getHost() returns a string: ", is_string($event->getHost()) ? 'yes' : 'no', "\n";
23+
echo "- getPort() returns an integer: ", is_integer($event->getPort()) ? 'yes' : 'no', "\n";
24+
}
25+
26+
public function serverOpening(MongoDB\Driver\Monitoring\ServerOpeningEvent $event) {}
27+
28+
public function topologyChanged(MongoDB\Driver\Monitoring\TopologyChangedEvent $event) {}
29+
30+
public function topologyClosed(MongoDB\Driver\Monitoring\TopologyClosedEvent $event) {}
31+
32+
public function topologyOpening(MongoDB\Driver\Monitoring\TopologyOpeningEvent $event) {}
33+
}
34+
35+
$subscriber = new MySubscriber;
36+
$m->addSubscriber($subscriber);
37+
38+
$command = new MongoDB\Driver\Command(['ping' => 1]);
39+
$m->executeCommand(DATABASE_NAME, $command);
40+
41+
?>
42+
===DONE===
43+
<?php exit(0); ?>
44+
--EXPECT--
45+
- getAwaited() returns a boolean: yes
46+
- getDuration() returns an integer: yes
47+
- getHost() returns a string: yes
48+
- getPort() returns an integer: yes
49+
===DONE===

tests/apm/monitoring-serverOpening-001.phpt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,8 @@ class MySubscriber implements MongoDB\Driver\Monitoring\SDAMSubscriber
1717

1818
public function serverClosed(MongoDB\Driver\Monitoring\ServerClosedEvent $event) {}
1919

20+
public function serverHeartbeatFailed(MongoDB\Driver\Monitoring\ServerHeartbeatFailedEvent $event) {}
21+
2022
public function serverOpening(MongoDB\Driver\Monitoring\ServerOpeningEvent $event)
2123
{
2224
if ($this->serverOpened) {

tests/apm/monitoring-topologyChanged-001.phpt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,8 @@ class MySubscriber implements MongoDB\Driver\Monitoring\SDAMSubscriber
1717

1818
public function serverClosed(MongoDB\Driver\Monitoring\ServerClosedEvent $event) {}
1919

20+
public function serverHeartbeatFailed(MongoDB\Driver\Monitoring\ServerHeartbeatFailedEvent $event) {}
21+
2022
public function serverOpening(MongoDB\Driver\Monitoring\ServerOpeningEvent $event) {}
2123

2224
public function topologyChanged(MongoDB\Driver\Monitoring\TopologyChangedEvent $event)

tests/apm/monitoring-topologyClosed-001.phpt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@ class MySubscriber implements MongoDB\Driver\Monitoring\SDAMSubscriber
1515

1616
public function serverClosed(MongoDB\Driver\Monitoring\ServerClosedEvent $event) {}
1717

18+
public function serverHeartbeatFailed(MongoDB\Driver\Monitoring\ServerHeartbeatFailedEvent $event) {}
19+
1820
public function serverOpening(MongoDB\Driver\Monitoring\ServerOpeningEvent $event) {}
1921

2022
public function topologyChanged(MongoDB\Driver\Monitoring\TopologyChangedEvent $event) {}

tests/apm/monitoring-topologyOpening-001.phpt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@ class MySubscriber implements MongoDB\Driver\Monitoring\SDAMSubscriber
1515

1616
public function serverClosed(MongoDB\Driver\Monitoring\ServerClosedEvent $event) {}
1717

18+
public function serverHeartbeatFailed(MongoDB\Driver\Monitoring\ServerHeartbeatFailedEvent $event) {}
19+
1820
public function serverOpening(MongoDB\Driver\Monitoring\ServerOpeningEvent $event) {}
1921

2022
public function topologyChanged(MongoDB\Driver\Monitoring\TopologyChangedEvent $event) {}

0 commit comments

Comments
 (0)