diff --git a/src/DDTrace/Integrations/Mongo/MongoClientIntegration.php b/src/DDTrace/Integrations/Mongo/MongoClientIntegration.php index 2b49ffdf9d4..25c3ad6acbb 100644 --- a/src/DDTrace/Integrations/Mongo/MongoClientIntegration.php +++ b/src/DDTrace/Integrations/Mongo/MongoClientIntegration.php @@ -13,6 +13,8 @@ final class MongoClientIntegration extends Integration protected static function loadIntegration() { + // MongoClient::__construct ([ string $server = "mongodb://localhost:27017" + // [, array $options = array("connect" => TRUE) [, array $driver_options ]]] ) self::traceMethod('__construct', function (Span $span, array $args) { if (isset($args[0])) { $span->setTag(Tags\MONGODB_SERVER, Obfuscation::dsn($args[0])); @@ -25,24 +27,29 @@ protected static function loadIntegration() $span->setTag(Tags\MONGODB_DATABASE, $args[1]['db']); } }); + // MongoCollection MongoClient::selectCollection ( string $db , string $collection ) self::traceMethod('selectCollection', function (Span $span, array $args) { $span->setTag(Tags\MONGODB_DATABASE, $args[0]); $span->setTag(Tags\MONGODB_COLLECTION, $args[1]); }); + // MongoDB MongoClient::selectDB ( string $name ) self::traceMethod('selectDB', function (Span $span, array $args) { $span->setTag(Tags\MONGODB_DATABASE, $args[0]); }); + // bool MongoClient::setReadPreference ( string $read_preference [, array $tags ] ) self::traceMethod('setReadPreference', function (Span $span, array $args) { $span->setTag(Tags\MONGODB_READ_PREFERENCE, $args[0]); }); - //self::traceMethod('getConnections'); + // Methods that don't need extra tags added self::traceMethod('getHosts'); self::traceMethod('getReadPreference'); self::traceMethod('getWriteConcern'); - //self::traceMethod('listDBs'); + self::traceMethod('listDBs'); self::traceMethod('setWriteConcern'); } + // If the `db` option isn't provided via the constructor, we extract + // the database name from the DSN string if it exists. private static function extractDatabaseNameFromDsn($dsn) { $matches = []; diff --git a/src/DDTrace/Integrations/Mongo/MongoCollectionIntegration.php b/src/DDTrace/Integrations/Mongo/MongoCollectionIntegration.php index 21bb0b57d64..55dde1ec91b 100644 --- a/src/DDTrace/Integrations/Mongo/MongoCollectionIntegration.php +++ b/src/DDTrace/Integrations/Mongo/MongoCollectionIntegration.php @@ -12,15 +12,18 @@ final class MongoCollectionIntegration extends Integration protected static function loadIntegration() { + // MongoCollection::__construct ( MongoDB $db , string $name ) self::traceMethod('__construct', function (Span $span, array $args) { $span->setTag(Tags\MONGODB_DATABASE, (string) $args[0]); $span->setTag(Tags\MONGODB_COLLECTION, $args[1]); }); + // int MongoCollection::count ([ array $query = array() [, array $options = array() ]] ) self::traceMethod('count', function (Span $span, array $args) { if (isset($args[0])) { $span->setTag(Tags\MONGODB_QUERY, json_encode($args[0])); } }); + // array MongoCollection::createDBRef ( mixed $document_or_id ) self::traceMethod('createDBRef', null, function (Span $span, $ref) { if (!is_array($ref)) { return; @@ -32,24 +35,30 @@ protected static function loadIntegration() $span->setTag(Tags\MONGODB_COLLECTION, $ref['$ref']); } }); + // array MongoCollection::distinct ( string $key [, array $query ] ) self::traceMethod('distinct', function (Span $span, array $args) { if (isset($args[1])) { $span->setTag(Tags\MONGODB_QUERY, json_encode($args[1])); } }); + // MongoCursor MongoCollection::find ([ array $query = array() [, array $fields = array() ]] ) self::traceMethod('find', function (Span $span, array $args) { if (isset($args[0])) { $span->setTag(Tags\MONGODB_QUERY, json_encode($args[0])); } }); + // array MongoCollection::findAndModify ( array $query [, array $update [, array $fields [, array $options ]]] ) self::traceMethod('findAndModify', function (Span $span, array $args) { $span->setTag(Tags\MONGODB_QUERY, json_encode($args[0])); }); + // array MongoCollection::findOne ([ array $query = array() [, array $fields = array() + // [, array $options = array() ]]] ) self::traceMethod('findOne', function (Span $span, array $args) { if (isset($args[0])) { $span->setTag(Tags\MONGODB_QUERY, json_encode($args[0])); } }); + // array MongoCollection::getDBRef ( array $ref ) self::traceMethod('getDBRef', function (Span $span, array $args) { if (isset($args[0]['$id'])) { $span->setTag(Tags\MONGODB_BSON_ID, $args[0]['$id']); @@ -58,19 +67,23 @@ protected static function loadIntegration() $span->setTag(Tags\MONGODB_COLLECTION, $args[0]['$ref']); } }); + // bool|array MongoCollection::remove ([ array $criteria = array() [, array $options = array() ]] ) self::traceMethod('remove', function (Span $span, array $args) { if (isset($args[0])) { $span->setTag(Tags\MONGODB_QUERY, json_encode($args[0])); } }); + // bool MongoCollection::setReadPreference ( string $read_preference [, array $tags ] ) self::traceMethod('setReadPreference', function (Span $span, array $args) { $span->setTag(Tags\MONGODB_READ_PREFERENCE, $args[0]); }); + // bool|array MongoCollection::update ( array $criteria , array $new_object [, array $options = array() ] ) self::traceMethod('update', function (Span $span, array $args) { if (isset($args[0])) { $span->setTag(Tags\MONGODB_QUERY, json_encode($args[0])); } }); + // Methods that don't need extra tags added self::traceMethod('aggregate'); self::traceMethod('aggregateCursor'); self::traceMethod('batchInsert'); diff --git a/src/DDTrace/Integrations/Mongo/MongoDBIntegration.php b/src/DDTrace/Integrations/Mongo/MongoDBIntegration.php index d6103da2869..233c7067bc1 100644 --- a/src/DDTrace/Integrations/Mongo/MongoDBIntegration.php +++ b/src/DDTrace/Integrations/Mongo/MongoDBIntegration.php @@ -12,6 +12,7 @@ final class MongoDBIntegration extends Integration protected static function loadIntegration() { + // array MongoDB::command ( array $command [, array $options = array() [, string &$hash ]] ) self::traceMethod('command', function (Span $span, array $args) { if (isset($args[0]['query'])) { $span->setTag(Tags\MONGODB_QUERY, json_encode($args[0]['query'])); @@ -22,6 +23,7 @@ protected static function loadIntegration() $span->setTag(Tags\MONGODB_TIMEOUT, $args[1]['timeout']); } }); + // array MongoDB::createDBRef ( string $collection , mixed $document_or_id ) self::traceMethod('createDBRef', function (Span $span, array $args) { $span->setTag(Tags\MONGODB_COLLECTION, $args[0]); }, function (Span $span, $ref) { @@ -29,23 +31,29 @@ protected static function loadIntegration() $span->setTag(Tags\MONGODB_BSON_ID, (string) $ref['$id']); } }); + // MongoCollection MongoDB::createCollection ( string $name [, array $options ] ) self::traceMethod('createCollection', function (Span $span, array $args) { $span->setTag(Tags\MONGODB_COLLECTION, $args[0]); }); + // MongoCollection MongoDB::selectCollection ( string $name ) self::traceMethod('selectCollection', function (Span $span, array $args) { $span->setTag(Tags\MONGODB_COLLECTION, $args[0]); }); + // array MongoDB::getDBRef ( array $ref ) self::traceMethod('getDBRef', function (Span $span, array $args) { if (isset($args[0]['$ref'])) { $span->setTag(Tags\MONGODB_COLLECTION, $args[0]['$ref']); } }); + // int MongoDB::setProfilingLevel ( int $level ) self::traceMethod('setProfilingLevel', function (Span $span, array $args) { $span->setTag(Tags\MONGODB_PROFILING_LEVEL, $args[0]); }); + // bool MongoDB::setReadPreference ( string $read_preference [, array $tags ] ) self::traceMethod('setReadPreference', function (Span $span, array $args) { $span->setTag(Tags\MONGODB_READ_PREFERENCE, $args[0]); }); + // Methods that don't need extra tags added self::traceMethod('drop'); self::traceMethod('execute'); self::traceMethod('forceError'); diff --git a/tests/Integration/Integrations/Mongo/MongoTest.php b/tests/Integration/Integrations/Mongo/MongoTest.php index 63ae3badbee..a9a885b11b6 100644 --- a/tests/Integration/Integrations/Mongo/MongoTest.php +++ b/tests/Integration/Integrations/Mongo/MongoTest.php @@ -175,11 +175,10 @@ public function testClientMethods($method) public function clientMethods() { return [ - //['getConnections'], ['getHosts'], ['getReadPreference'], ['getWriteConcern'], - //['listDBs'], + ['listDBs'], ]; }