Skip to content

Commit 0a37fad

Browse files
committed
Add helper to create client and manager objects
1 parent 6283fdc commit 0a37fad

14 files changed

+53
-41
lines changed

tests/ClientFunctionalTest.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ private function doSetUp()
2828
{
2929
parent::setUp();
3030

31-
$this->client = new Client(static::getUri());
31+
$this->client = static::createTestClient();
3232
$this->client->dropDatabase($this->getDatabaseName());
3333
}
3434

tests/DocumentationExamplesTest.php

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1270,7 +1270,7 @@ public function testTransactions_intro_example_1()
12701270

12711271
$this->assertNotNull('This test intentionally performs no assertions');
12721272

1273-
$client = new Client(static::getUri());
1273+
$client = static::createTestClient();
12741274

12751275
/* The WC is required: https://docs.mongodb.com/manual/core/transactions/#transactions-and-locks */
12761276
$client->hr->dropCollection('employees', ['writeConcern' => new WriteConcern('majority')]);
@@ -1445,7 +1445,7 @@ public function testTransactions_retry_example_3()
14451445

14461446
$this->assertNotNull('This test intentionally performs no assertions');
14471447

1448-
$client = new Client(static::getUri());
1448+
$client = static::createTestClient();
14491449

14501450
/* The WC is required: https://docs.mongodb.com/manual/core/transactions/#transactions-and-locks */
14511451
$client->hr->dropCollection('employees', ['writeConcern' => new WriteConcern('majority')]);
@@ -1470,7 +1470,7 @@ public function testCausalConsistency()
14701470
$this->assertNotNull('This test intentionally performs no assertions');
14711471

14721472
// Prep
1473-
$client = new Client(static::getUri());
1473+
$client = static::createTestClient();
14741474
$items = $client->selectDatabase(
14751475
'test',
14761476
[ 'writeConcern' => new WriteConcern(WriteConcern::MAJORITY) ]

tests/FunctionalTestCase.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ private function doSetUp()
5151
{
5252
parent::setUp();
5353

54-
$this->manager = new Manager(static::getUri());
54+
$this->manager = static::createTestManager();
5555
$this->configuredFailPoints = [];
5656
}
5757

@@ -86,7 +86,7 @@ public static function getUri($allowMultipleMongoses = false)
8686
return $uri;
8787
}
8888

89-
$manager = new Manager($uri);
89+
$manager = static::createTestManager($uri);
9090
if ($manager->selectServer(new ReadPreference(ReadPreference::RP_PRIMARY))->getType() !== Server::TYPE_MONGOS) {
9191
return $uri;
9292
}

tests/Operation/FindAndModifyFunctionalTest.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ class FindAndModifyFunctionalTest extends FunctionalTestCase
1717
*/
1818
public function testManagerReadConcernIsOmitted()
1919
{
20-
$manager = new Manager(static::getUri(), ['readConcernLevel' => 'majority']);
20+
$manager = static::createTestManager(null, ['readConcernLevel' => 'majority']);
2121
$server = $manager->selectServer(new ReadPreference(ReadPreference::RP_PRIMARY));
2222

2323
(new CommandObserver())->observe(

tests/Operation/WatchFunctionalTest.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -166,7 +166,7 @@ public function testNextResumesAfterConnectionException()
166166
/* In order to trigger a dropped connection, we'll use a new client with
167167
* a socket timeout that is less than the change stream's maxAwaitTimeMS
168168
* option. */
169-
$manager = new Manager(static::getUri(), ['socketTimeoutMS' => 50]);
169+
$manager = static::createTestManager(null, ['socketTimeoutMS' => 50]);
170170
$primaryServer = $manager->selectServer(new ReadPreference(ReadPreference::RP_PRIMARY));
171171

172172
$operation = new Watch($manager, $this->getDatabaseName(), $this->getCollectionName(), [], $this->defaultOptions);

tests/SpecTests/AtlasDataLakeSpecTest.php

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -135,7 +135,7 @@ public function testKillCursors()
135135

136136
(new CommandObserver())->observe(
137137
function () {
138-
$client = new Client(static::getUri());
138+
$client = static::createTestClient();
139139
$client->test->driverdata->find([], ['batchSize' => 2, 'limit' => 3]);
140140
},
141141
function (array $event) use (&$cursorId, &$cursorNamespace) {
@@ -205,7 +205,7 @@ public function testConnectWithoutAuth()
205205

206206
$uri = $parts['scheme'] . '://' . $parts['host'] . $port . $path . $query;
207207

208-
$client = new Client($uri);
208+
$client = static::createTestClient($uri);
209209
$cursor = $client->selectDatabase($this->getDatabaseName())->command(['ping' => 1]);
210210

211211
$this->assertInstanceOf(Cursor::class, $cursor);
@@ -217,7 +217,7 @@ public function testConnectWithoutAuth()
217217
*/
218218
public function testConnectwithSCRAMSHA1()
219219
{
220-
$client = new Client(static::getUri(), ['authMechanism' => 'SCRAM-SHA-1']);
220+
$client = static::createTestClient(null, ['authMechanism' => 'SCRAM-SHA-1']);
221221
$cursor = $client->selectDatabase($this->getDatabaseName())->command(['ping' => 1]);
222222

223223
$this->assertInstanceOf(Cursor::class, $cursor);
@@ -229,7 +229,7 @@ public function testConnectwithSCRAMSHA1()
229229
*/
230230
public function testConnectwithSCRAMSHA256()
231231
{
232-
$client = new Client(static::getUri(), ['authMechanism' => 'SCRAM-SHA-256']);
232+
$client = static::createTestClient(null, ['authMechanism' => 'SCRAM-SHA-256']);
233233
$cursor = $client->selectDatabase($this->getDatabaseName())->command(['ping' => 1]);
234234

235235
$this->assertInstanceOf(Cursor::class, $cursor);

tests/SpecTests/ClientSideEncryptionSpecTest.php

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -206,7 +206,7 @@ public function testDataKeyAndDoubleEncryption(string $providerName, $masterKey)
206206
'keyVaultClient' => $client,
207207
];
208208

209-
$clientEncrypted = new Client(static::getUri(), [], ['autoEncryption' => $autoEncryptionOpts]);
209+
$clientEncrypted = static::createTestClient(null, [], ['autoEncryption' => $autoEncryptionOpts]);
210210
$clientEncryption = $clientEncrypted->createClientEncryption($encryptionOpts);
211211

212212
$commands = [];
@@ -323,7 +323,7 @@ public function testExternalKeyVault($withExternalKeyVault)
323323
];
324324

325325
if ($withExternalKeyVault) {
326-
$encryptionOpts['keyVaultClient'] = new Client(static::getUri(), ['username' => 'fake-user', 'password' => 'fake-pwd']);
326+
$encryptionOpts['keyVaultClient'] = static::createTestClient(null, ['username' => 'fake-user', 'password' => 'fake-pwd']);
327327
}
328328

329329
$autoEncryptionOpts = $encryptionOpts + [
@@ -332,7 +332,7 @@ public function testExternalKeyVault($withExternalKeyVault)
332332
],
333333
];
334334

335-
$clientEncrypted = new Client(static::getUri(), [], ['autoEncryption' => $autoEncryptionOpts]);
335+
$clientEncrypted = static::createTestClient(null, [], ['autoEncryption' => $autoEncryptionOpts]);
336336
$clientEncryption = $clientEncrypted->createClientEncryption($encryptionOpts);
337337

338338
try {
@@ -469,7 +469,7 @@ public function testBSONSizeLimitsAndBatchSplitting(Closure $test)
469469
'keyVaultClient' => $client,
470470
];
471471

472-
$clientEncrypted = new Client(static::getUri(), [], ['autoEncryption' => $autoEncryptionOpts]);
472+
$clientEncrypted = static::createTestClient(null, [], ['autoEncryption' => $autoEncryptionOpts]);
473473

474474
$collection = $clientEncrypted->selectCollection('db', 'coll');
475475

@@ -483,7 +483,7 @@ public function testBSONSizeLimitsAndBatchSplitting(Closure $test)
483483
*/
484484
public function testViewsAreProhibited()
485485
{
486-
$client = new Client(static::getUri());
486+
$client = static::createTestClient();
487487

488488
$client->selectCollection('db', 'view')->drop();
489489
$client->selectDatabase('db')->command(['create' => 'view', 'viewOn' => 'coll']);
@@ -495,7 +495,7 @@ public function testViewsAreProhibited()
495495
],
496496
];
497497

498-
$clientEncrypted = new Client(static::getUri(), [], ['autoEncryption' => $autoEncryptionOpts]);
498+
$clientEncrypted = static::createTestClient(null, [], ['autoEncryption' => $autoEncryptionOpts]);
499499

500500
try {
501501
$clientEncrypted->selectCollection('db', 'view')->insertOne(['foo' => 'bar']);
@@ -557,7 +557,7 @@ public function testCorpus($schemaMap = true)
557557
$corpus = (array) $this->decodeJson(file_get_contents(__DIR__ . '/client-side-encryption/corpus/corpus.json'));
558558
$corpusCopied = [];
559559

560-
$clientEncrypted = new Client(static::getUri(), [], ['autoEncryption' => $autoEncryptionOpts]);
560+
$clientEncrypted = static::createTestClient(null, [], ['autoEncryption' => $autoEncryptionOpts]);
561561
$clientEncryption = $clientEncrypted->createClientEncryption($encryptionOpts);
562562

563563
$collection = $clientEncrypted->selectCollection('db', 'coll');
@@ -621,7 +621,7 @@ public function testCorpus($schemaMap = true)
621621
*/
622622
public function testCustomEndpoint(Closure $test)
623623
{
624-
$client = new Client(static::getUri());
624+
$client = static::createTestClient();
625625

626626
$clientEncryption = $client->createClientEncryption([
627627
'keyVaultNamespace' => 'keyvault.datakeys',
@@ -758,7 +758,7 @@ public function testBypassSpawningMongocryptdViaBypassSpawn()
758758
],
759759
];
760760

761-
$clientEncrypted = new Client(static::getUri(), [], ['autoEncryption' => $autoEncryptionOpts]);
761+
$clientEncrypted = static::createTestClient(null, [], ['autoEncryption' => $autoEncryptionOpts]);
762762

763763
try {
764764
$clientEncrypted->selectCollection('db', 'coll')->insertOne(['encrypted' => 'test']);
@@ -787,11 +787,11 @@ public function testBypassSpawningMongocryptdViaBypassAutoEncryption()
787787
],
788788
];
789789

790-
$clientEncrypted = new Client(static::getUri(), [], ['autoEncryption' => $autoEncryptionOpts]);
790+
$clientEncrypted = static::createTestClient(null, [], ['autoEncryption' => $autoEncryptionOpts]);
791791

792792
$clientEncrypted->selectCollection('db', 'coll')->insertOne(['encrypted' => 'test']);
793793

794-
$clientMongocryptd = new Client('mongodb://localhost:27021');
794+
$clientMongocryptd = static::createTestClient('mongodb://localhost:27021');
795795

796796
$this->expectException(ConnectionTimeoutException::class);
797797
$clientMongocryptd->selectDatabase('db')->command(['isMaster' => true]);

tests/SpecTests/Context.php

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,7 @@ public static function fromChangeStreams(stdClass $test, $databaseName, $collect
9393
{
9494
$o = new self($databaseName, $collectionName);
9595

96-
$o->client = new Client(FunctionalTestCase::getUri());
96+
$o->client = FunctionalTestCase::createTestClient();
9797

9898
return $o;
9999
}
@@ -132,10 +132,10 @@ public static function fromClientSideEncryption(stdClass $test, $databaseName, $
132132
$o->outcomeCollectionName = $test->outcome->collection->name;
133133
}
134134

135-
$o->client = new Client(FunctionalTestCase::getUri(), $clientOptions, $driverOptions);
135+
$o->client = FunctionalTestCase::createTestClient(null, $clientOptions, $driverOptions);
136136

137137
if ($autoEncryptionOptions !== []) {
138-
$o->encryptedClient = new Client(FunctionalTestCase::getUri(), $clientOptions, $driverOptions + ['autoEncryption' => $autoEncryptionOptions]);
138+
$o->encryptedClient = FunctionalTestCase::createTestClient(null, $clientOptions, $driverOptions + ['autoEncryption' => $autoEncryptionOptions]);
139139
}
140140

141141
return $o;
@@ -145,7 +145,7 @@ public static function fromCommandMonitoring(stdClass $test, $databaseName, $col
145145
{
146146
$o = new self($databaseName, $collectionName);
147147

148-
$o->client = new Client(FunctionalTestCase::getUri());
148+
$o->client = FunctionalTestCase::createTestClient();
149149

150150
return $o;
151151
}
@@ -169,7 +169,7 @@ public static function fromCrud(stdClass $test, $databaseName, $collectionName)
169169
'readPreference' => new ReadPreference('primary'),
170170
];
171171

172-
$o->client = new Client(FunctionalTestCase::getUri(), $clientOptions);
172+
$o->client = FunctionalTestCase::createTestClient(null, $clientOptions);
173173

174174
return $o;
175175
}
@@ -184,7 +184,7 @@ public static function fromReadWriteConcern(stdClass $test, $databaseName, $coll
184184

185185
$clientOptions = isset($test->clientOptions) ? (array) $test->clientOptions : [];
186186

187-
$o->client = new Client(FunctionalTestCase::getUri(), $clientOptions);
187+
$o->client = FunctionalTestCase::createTestClient(null, $clientOptions);
188188

189189
return $o;
190190
}
@@ -197,7 +197,7 @@ public static function fromRetryableReads(stdClass $test, $databaseName, $collec
197197

198198
$clientOptions = isset($test->clientOptions) ? (array) $test->clientOptions : [];
199199

200-
$o->client = new Client(FunctionalTestCase::getUri(), $clientOptions);
200+
$o->client = FunctionalTestCase::createTestClient(null, $clientOptions);
201201

202202
return $o;
203203
}
@@ -212,7 +212,7 @@ public static function fromRetryableWrites(stdClass $test, $databaseName, $colle
212212
$o->outcomeCollectionName = $test->outcome->collection->name;
213213
}
214214

215-
$o->client = new Client(FunctionalTestCase::getUri($useMultipleMongoses), $clientOptions);
215+
$o->client = FunctionalTestCase::createTestClient(FunctionalTestCase::getUri($useMultipleMongoses), $clientOptions);
216216

217217
return $o;
218218
}
@@ -237,7 +237,7 @@ public static function fromTransactions(stdClass $test, $databaseName, $collecti
237237
* re-using a previously persisted libmongoc client object. */
238238
$clientOptions += ['p' => mt_rand()];
239239

240-
$o->client = new Client(FunctionalTestCase::getUri($useMultipleMongoses), $clientOptions);
240+
$o->client = FunctionalTestCase::createTestClient(FunctionalTestCase::getUri($useMultipleMongoses), $clientOptions);
241241

242242
$session0Options = isset($test->sessionOptions->session0) ? (array) $test->sessionOptions->session0 : [];
243243
$session1Options = isset($test->sessionOptions->session1) ? (array) $test->sessionOptions->session1 : [];

tests/SpecTests/CrudSpecTest.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -144,7 +144,7 @@ public function testErrInfoIsPropagated()
144144
],
145145
]);
146146

147-
$client = new Client(static::getUri());
147+
$client = FunctionalTestCase::createTestClient();
148148

149149
try {
150150
$client->selectCollection($this->getDatabaseName(), $this->getCollectionName())->insertOne(['fail' => 1]);

tests/SpecTests/PrimaryStepDownSpecTest.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ private function doSetUp()
3838
{
3939
parent::setUp();
4040

41-
$this->client = new Client(static::getUri(), ['retryWrites' => false, 'heartbeatFrequencyMS' => 500, 'serverSelectionTimeoutMS' => 20000, 'serverSelectionTryOnce' => false]);
41+
$this->client = self::createTestClient(null, ['retryWrites' => false, 'heartbeatFrequencyMS' => 500, 'serverSelectionTimeoutMS' => 20000, 'serverSelectionTryOnce' => false]);
4242

4343
$this->dropAndRecreateCollection();
4444
$this->collection = $this->client->selectCollection($this->getDatabaseName(), $this->getCollectionName());

tests/SpecTests/TransactionsSpecTest.php

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -209,7 +209,7 @@ public function testStartingNewTransactionOnPinnedSessionUnpinsSession()
209209
$this->markTestSkipped('Mongos pinning tests can only run on sharded clusters using replica sets');
210210
}
211211

212-
$client = new Client($this->getUri(true));
212+
$client = self::createTestClient($this->getUri(true));
213213

214214
$session = $client->startSession();
215215
$collection = $client->selectCollection($this->getDatabaseName(), $this->getCollectionName());
@@ -247,7 +247,7 @@ public function testRunningNonTransactionOperationOnPinnedSessionUnpinsSession()
247247
$this->markTestSkipped('Mongos pinning tests can only run on sharded clusters using replica sets');
248248
}
249249

250-
$client = new Client($this->getUri(true));
250+
$client = self::createTestClient($this->getUri(true));
251251

252252
$session = $client->startSession();
253253
$collection = $client->selectCollection($this->getDatabaseName(), $this->getCollectionName());
@@ -292,7 +292,7 @@ protected function createTestCollection()
292292
*/
293293
private static function killAllSessions()
294294
{
295-
$manager = new Manager(static::getUri());
295+
$manager = static::createTestManager();
296296
$primary = $manager->selectServer(new ReadPreference('primary'));
297297

298298
$servers = $primary->getType() === Server::TYPE_MONGOS

tests/TestCase.php

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@
33
namespace MongoDB\Tests;
44

55
use InvalidArgumentException;
6+
use MongoDB\Client;
7+
use MongoDB\Driver\Manager;
68
use MongoDB\Driver\ReadConcern;
79
use MongoDB\Driver\ReadPreference;
810
use MongoDB\Driver\WriteConcern;
@@ -41,6 +43,16 @@ public static function getUri()
4143
return getenv('MONGODB_URI') ?: 'mongodb://127.0.0.1:27017';
4244
}
4345

46+
public static function createTestClient(string $uri = null, array $options = [], array $driverOptions = []): Client
47+
{
48+
return new Client($uri ?? static::getUri(), $options, $driverOptions);
49+
}
50+
51+
public static function createTestManager(string $uri = null, array $options = [], array $driverOptions = []): Manager
52+
{
53+
return new Manager($uri ?? static::getUri(), $options, $driverOptions);
54+
}
55+
4456
/**
4557
* Asserts that a document has expected values for some fields.
4658
*

tests/UnifiedSpecTests/Context.php

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -266,7 +266,7 @@ private function createClient(string $id, stdClass $o)
266266
);
267267
}
268268

269-
$this->entityMap->set($id, new Client($uri, $uriOptions, $driverOptions));
269+
$this->entityMap->set($id, UnifiedSpecTest::createTestClient($uri, $uriOptions, $driverOptions));
270270
}
271271

272272
private function createCollection(string $id, stdClass $o)
@@ -410,7 +410,7 @@ private static function removeMultipleMongoses(string $uri) : string
410410
{
411411
assertStringStartsWith('mongodb://', $uri);
412412

413-
$manager = new Manager($uri);
413+
$manager = UnifiedSpecTest::createTestManager($uri);
414414

415415
// Nothing to do if the URI does not refer to a sharded cluster
416416
if ($manager->selectServer(new ReadPreference(ReadPreference::PRIMARY))->getType() !== Server::TYPE_MONGOS) {
@@ -450,7 +450,7 @@ private static function requireMultipleMongoses(string $uri)
450450
{
451451
assertStringStartsWith('mongodb://', $uri);
452452

453-
$manager = new Manager($uri);
453+
$manager = UnifiedSpecTest::createTestManager($uri);
454454

455455
// Nothing to do if the URI does not refer to a sharded cluster
456456
if ($manager->selectServer(new ReadPreference(ReadPreference::PRIMARY))->getType() !== Server::TYPE_MONGOS) {

tests/UnifiedSpecTests/UnifiedSpecTest.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ private static function doSetUpBeforeClass()
5252

5353
/* Provide internal client unmodified URI, since it may need to execute
5454
* commands on multiple mongoses (e.g. killAllSessions) */
55-
self::$internalClient = new Client(static::getUri(true));
55+
self::$internalClient = self::createTestClient(static::getUri(true));
5656
self::killAllSessions();
5757
}
5858

0 commit comments

Comments
 (0)