1--TEST--
2MongoDB\Driver\Monitoring\addSubscriber(): Adding three subscribers
3--SKIPIF--
4<?php require __DIR__ . "/../utils/basic-skipif.inc"; ?>
5<?php skip_if_not_live(); ?>
6<?php skip_if_not_clean(); ?>
7--FILE--
8<?php
9require_once __DIR__ . "/../utils/basic.inc";
10
11$m = new MongoDB\Driver\Manager(URI);
12
13class MySubscriber implements MongoDB\Driver\Monitoring\CommandSubscriber
14{
15    private $instanceName;
16
17    public function __construct( $instanceName )
18    {
19        $this->instanceName = $instanceName;
20    }
21
22    public function commandStarted( \MongoDB\Driver\Monitoring\CommandStartedEvent $event )
23    {
24        echo "- ({$this->instanceName}) - started: ", $event->getCommandName(), "\n";
25    }
26
27    public function commandSucceeded( \MongoDB\Driver\Monitoring\CommandSucceededEvent $event )
28    {
29    }
30
31    public function commandFailed( \MongoDB\Driver\Monitoring\CommandFailedEvent $event )
32    {
33    }
34}
35
36$query = new MongoDB\Driver\Query( [] );
37$subscriber1 = new MySubscriber( "ONE" );
38$subscriber2 = new MySubscriber( "TWO" );
39$subscriber3 = new MySubscriber( "THR" );
40
41echo "Before addSubscriber\n";
42$cursor = $m->executeQuery( "demo.test", $query );
43
44MongoDB\Driver\Monitoring\addSubscriber( $subscriber1 );
45
46echo "After addSubscriber (ONE)\n";
47$cursor = $m->executeQuery( "demo.test", $query );
48
49MongoDB\Driver\Monitoring\addSubscriber( $subscriber2 );
50
51echo "After addSubscriber (TWO)\n";
52$cursor = $m->executeQuery( "demo.test", $query );
53
54MongoDB\Driver\Monitoring\addSubscriber( $subscriber3 );
55
56echo "After addSubscriber (THR)\n";
57$cursor = $m->executeQuery( "demo.test", $query );
58?>
59--EXPECT--
60Before addSubscriber
61After addSubscriber (ONE)
62- (ONE) - started: find
63After addSubscriber (TWO)
64- (ONE) - started: find
65- (TWO) - started: find
66After addSubscriber (THR)
67- (ONE) - started: find
68- (TWO) - started: find
69- (THR) - started: find
70