Skip to content

Commit 5a93dbc

Browse files
author
Robert Gruber
committed
Differentiate profiling count between GridFS and regular-count queries
1 parent bdef7a7 commit 5a93dbc

File tree

2 files changed

+41
-1
lines changed

2 files changed

+41
-1
lines changed

DataCollector/PrettyDataCollector.php

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,9 @@ public function collect(Request $request, Response $response, \Exception $except
9595
$query .= '.batchInsert('.$this->bsonEncode($log['data']).')';
9696
}
9797
} elseif (isset($log['command'])) {
98-
$query .= '.runCommand('.$this->bsonEncode($log['data']).')';
98+
$query .= '.runCommand(' . $this->bsonEncode($log['data']) . ')';
99+
} elseif (isset($log['storeFile'])) {
100+
$query .= '.storeFile('.$log['count'].', '.$this->bsonEncode($log['options']).')';
99101
} elseif (isset($log['count'])) {
100102
$query .= '.count(';
101103
if ($log['query'] || $log['limit'] || $log['skip']) {

Tests/DataCollector/PrettyDataCollectorTest.php

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -124,4 +124,42 @@ public function testCollectLimit()
124124
$this->assertEquals(3, $collector->getQueryCount());
125125
$this->assertEquals($formatted, $collector->getQueries());
126126
}
127+
128+
public function testQueryCountVsGridFsStoreFile()
129+
{
130+
$queries = [
131+
[
132+
'count' => true,
133+
'query' => [
134+
'path' => '/',
135+
],
136+
'limit' => ['limit' => true, 'limitNum' => 5],
137+
'skip' => ['skip' => true, 'limitSkip' => 0],
138+
'options' => [],
139+
'db' => 'foo',
140+
'collection' => 'Route',
141+
],
142+
[
143+
'storeFile' => true,
144+
'count' => 5,
145+
'options' => [],
146+
'db' => 'foo',
147+
'collection' => 'User.files',
148+
],
149+
];
150+
$formatted = [
151+
'use foo;',
152+
'db.Route.count({ "path": "/" }, { "limit": true, "limitNum": 5 }, { "skip": true, "limitSkip": 0 });',
153+
'db.User.files.storeFile(5, [ ]);',
154+
];
155+
156+
$collector = new PrettyDataCollector();
157+
foreach ($queries as $query) {
158+
$collector->logQuery($query);
159+
}
160+
$collector->collect(new Request(), new Response());
161+
162+
$this->assertEquals(2, $collector->getQueryCount());
163+
$this->assertEquals($formatted, $collector->getQueries());
164+
}
127165
}

0 commit comments

Comments
 (0)