Skip to content

Commit a267e05

Browse files
committed
Comprehensive tests for RC, RP, and WC debug output and BSON serialization
1 parent 6d46d62 commit a267e05

9 files changed

+550
-0
lines changed
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
--TEST--
2+
MongoDB\Driver\ReadConcern::bsonSerialize()
3+
--FILE--
4+
<?php
5+
6+
require_once __DIR__ . '/../utils/tools.php';
7+
8+
$tests = [
9+
new MongoDB\Driver\ReadConcern(),
10+
new MongoDB\Driver\ReadConcern(MongoDB\Driver\ReadConcern::LINEARIZABLE),
11+
new MongoDB\Driver\ReadConcern(MongoDB\Driver\ReadConcern::LOCAL),
12+
new MongoDB\Driver\ReadConcern(MongoDB\Driver\ReadConcern::MAJORITY),
13+
];
14+
15+
foreach ($tests as $test) {
16+
echo toJSON(fromPHP($test)), "\n";
17+
}
18+
19+
?>
20+
===DONE===
21+
<?php exit(0); ?>
22+
--EXPECT--
23+
{ }
24+
{ "level" : "linearizable" }
25+
{ "level" : "local" }
26+
{ "level" : "majority" }
27+
===DONE===
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
--TEST--
2+
MongoDB\Driver\ReadConcern::bsonSerialize() returns an object
3+
--FILE--
4+
<?php
5+
6+
require_once __DIR__ . '/../utils/tools.php';
7+
8+
$tests = [
9+
new MongoDB\Driver\ReadConcern(),
10+
new MongoDB\Driver\ReadConcern(MongoDB\Driver\ReadConcern::LINEARIZABLE),
11+
new MongoDB\Driver\ReadConcern(MongoDB\Driver\ReadConcern::LOCAL),
12+
new MongoDB\Driver\ReadConcern(MongoDB\Driver\ReadConcern::MAJORITY),
13+
];
14+
15+
foreach ($tests as $test) {
16+
var_dump($test->bsonSerialize());
17+
}
18+
19+
?>
20+
===DONE===
21+
<?php exit(0); ?>
22+
--EXPECTF--
23+
object(stdClass)#%d (%d) {
24+
}
25+
object(stdClass)#%d (%d) {
26+
["level"]=>
27+
string(12) "linearizable"
28+
}
29+
object(stdClass)#%d (%d) {
30+
["level"]=>
31+
string(5) "local"
32+
}
33+
object(stdClass)#%d (%d) {
34+
["level"]=>
35+
string(8) "majority"
36+
}
37+
===DONE===
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
--TEST--
2+
MongoDB\Driver\ReadConcern debug output
3+
--FILE--
4+
<?php
5+
6+
require_once __DIR__ . '/../utils/tools.php';
7+
8+
$tests = [
9+
new MongoDB\Driver\ReadConcern(),
10+
new MongoDB\Driver\ReadConcern(MongoDB\Driver\ReadConcern::LINEARIZABLE),
11+
new MongoDB\Driver\ReadConcern(MongoDB\Driver\ReadConcern::LOCAL),
12+
new MongoDB\Driver\ReadConcern(MongoDB\Driver\ReadConcern::MAJORITY),
13+
];
14+
15+
foreach ($tests as $test) {
16+
var_dump($test);
17+
}
18+
19+
?>
20+
===DONE===
21+
<?php exit(0); ?>
22+
--EXPECTF--
23+
object(MongoDB\Driver\ReadConcern)#%d (%d) {
24+
}
25+
object(MongoDB\Driver\ReadConcern)#%d (%d) {
26+
["level"]=>
27+
string(12) "linearizable"
28+
}
29+
object(MongoDB\Driver\ReadConcern)#%d (%d) {
30+
["level"]=>
31+
string(5) "local"
32+
}
33+
object(MongoDB\Driver\ReadConcern)#%d (%d) {
34+
["level"]=>
35+
string(8) "majority"
36+
}
37+
===DONE===
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
--TEST--
2+
MongoDB\Driver\ReadPreference::bsonSerialize()
3+
--FILE--
4+
<?php
5+
6+
require_once __DIR__ . '/../utils/tools.php';
7+
8+
$tests = [
9+
new MongoDB\Driver\ReadPreference(MongoDB\Driver\ReadPreference::RP_PRIMARY),
10+
new MongoDB\Driver\ReadPreference(MongoDB\Driver\ReadPreference::RP_PRIMARY_PREFERRED),
11+
new MongoDB\Driver\ReadPreference(MongoDB\Driver\ReadPreference::RP_SECONDARY),
12+
new MongoDB\Driver\ReadPreference(MongoDB\Driver\ReadPreference::RP_SECONDARY_PREFERRED),
13+
new MongoDB\Driver\ReadPreference(MongoDB\Driver\ReadPreference::RP_NEAREST),
14+
new MongoDB\Driver\ReadPreference(MongoDB\Driver\ReadPreference::RP_PRIMARY, []),
15+
new MongoDB\Driver\ReadPreference(MongoDB\Driver\ReadPreference::RP_SECONDARY, [['dc' => 'ny']]),
16+
new MongoDB\Driver\ReadPreference(MongoDB\Driver\ReadPreference::RP_SECONDARY, [['dc' => 'ny'], ['dc' => 'sf', 'use' => 'reporting'], []]),
17+
new MongoDB\Driver\ReadPreference(MongoDB\Driver\ReadPreference::RP_SECONDARY, null, ['maxStalenessMS' => 1000]),
18+
];
19+
20+
foreach ($tests as $test) {
21+
echo toJSON(fromPHP($test)), "\n";
22+
}
23+
24+
?>
25+
===DONE===
26+
<?php exit(0); ?>
27+
--EXPECT--
28+
{ "mode" : "primary" }
29+
{ "mode" : "primaryPreferred" }
30+
{ "mode" : "secondary" }
31+
{ "mode" : "secondaryPreferred" }
32+
{ "mode" : "nearest" }
33+
{ "mode" : "primary" }
34+
{ "mode" : "secondary", "tags" : [ { "dc" : "ny" } ] }
35+
{ "mode" : "secondary", "tags" : [ { "dc" : "ny" }, { "dc" : "sf", "use" : "reporting" }, { } ] }
36+
{ "mode" : "secondary", "maxStalenessMS" : 1000 }
37+
===DONE===
Lines changed: 92 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,92 @@
1+
--TEST--
2+
MongoDB\Driver\ReadPreference::bsonSerialize() returns an object
3+
--FILE--
4+
<?php
5+
6+
require_once __DIR__ . '/../utils/tools.php';
7+
8+
$tests = [
9+
new MongoDB\Driver\ReadPreference(MongoDB\Driver\ReadPreference::RP_PRIMARY),
10+
new MongoDB\Driver\ReadPreference(MongoDB\Driver\ReadPreference::RP_PRIMARY_PREFERRED),
11+
new MongoDB\Driver\ReadPreference(MongoDB\Driver\ReadPreference::RP_SECONDARY),
12+
new MongoDB\Driver\ReadPreference(MongoDB\Driver\ReadPreference::RP_SECONDARY_PREFERRED),
13+
new MongoDB\Driver\ReadPreference(MongoDB\Driver\ReadPreference::RP_NEAREST),
14+
new MongoDB\Driver\ReadPreference(MongoDB\Driver\ReadPreference::RP_PRIMARY, []),
15+
new MongoDB\Driver\ReadPreference(MongoDB\Driver\ReadPreference::RP_SECONDARY, [['dc' => 'ny']]),
16+
new MongoDB\Driver\ReadPreference(MongoDB\Driver\ReadPreference::RP_SECONDARY, [['dc' => 'ny'], ['dc' => 'sf', 'use' => 'reporting'], []]),
17+
new MongoDB\Driver\ReadPreference(MongoDB\Driver\ReadPreference::RP_SECONDARY, null, ['maxStalenessMS' => 1000]),
18+
];
19+
20+
foreach ($tests as $test) {
21+
var_dump($test->bsonSerialize());
22+
}
23+
24+
?>
25+
===DONE===
26+
<?php exit(0); ?>
27+
--EXPECTF--
28+
object(stdClass)#%d (%d) {
29+
["mode"]=>
30+
string(7) "primary"
31+
}
32+
object(stdClass)#%d (%d) {
33+
["mode"]=>
34+
string(16) "primaryPreferred"
35+
}
36+
object(stdClass)#%d (%d) {
37+
["mode"]=>
38+
string(9) "secondary"
39+
}
40+
object(stdClass)#%d (%d) {
41+
["mode"]=>
42+
string(18) "secondaryPreferred"
43+
}
44+
object(stdClass)#%d (%d) {
45+
["mode"]=>
46+
string(7) "nearest"
47+
}
48+
object(stdClass)#%d (%d) {
49+
["mode"]=>
50+
string(7) "primary"
51+
}
52+
object(stdClass)#%d (%d) {
53+
["mode"]=>
54+
string(9) "secondary"
55+
["tags"]=>
56+
array(1) {
57+
[0]=>
58+
object(stdClass)#%d (%d) {
59+
["dc"]=>
60+
string(2) "ny"
61+
}
62+
}
63+
}
64+
object(stdClass)#%d (%d) {
65+
["mode"]=>
66+
string(9) "secondary"
67+
["tags"]=>
68+
array(3) {
69+
[0]=>
70+
object(stdClass)#%d (%d) {
71+
["dc"]=>
72+
string(2) "ny"
73+
}
74+
[1]=>
75+
object(stdClass)#%d (%d) {
76+
["dc"]=>
77+
string(2) "sf"
78+
["use"]=>
79+
string(9) "reporting"
80+
}
81+
[2]=>
82+
object(stdClass)#%d (%d) {
83+
}
84+
}
85+
}
86+
object(stdClass)#%d (%d) {
87+
["mode"]=>
88+
string(9) "secondary"
89+
["maxStalenessMS"]=>
90+
int(1000)
91+
}
92+
===DONE===
Lines changed: 92 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,92 @@
1+
--TEST--
2+
MongoDB\Driver\ReadPreference debug output
3+
--FILE--
4+
<?php
5+
6+
require_once __DIR__ . '/../utils/tools.php';
7+
8+
$tests = [
9+
new MongoDB\Driver\ReadPreference(MongoDB\Driver\ReadPreference::RP_PRIMARY),
10+
new MongoDB\Driver\ReadPreference(MongoDB\Driver\ReadPreference::RP_PRIMARY_PREFERRED),
11+
new MongoDB\Driver\ReadPreference(MongoDB\Driver\ReadPreference::RP_SECONDARY),
12+
new MongoDB\Driver\ReadPreference(MongoDB\Driver\ReadPreference::RP_SECONDARY_PREFERRED),
13+
new MongoDB\Driver\ReadPreference(MongoDB\Driver\ReadPreference::RP_NEAREST),
14+
new MongoDB\Driver\ReadPreference(MongoDB\Driver\ReadPreference::RP_PRIMARY, []),
15+
new MongoDB\Driver\ReadPreference(MongoDB\Driver\ReadPreference::RP_SECONDARY, [['dc' => 'ny']]),
16+
new MongoDB\Driver\ReadPreference(MongoDB\Driver\ReadPreference::RP_SECONDARY, [['dc' => 'ny'], ['dc' => 'sf', 'use' => 'reporting'], []]),
17+
new MongoDB\Driver\ReadPreference(MongoDB\Driver\ReadPreference::RP_SECONDARY, null, ['maxStalenessMS' => 1000]),
18+
];
19+
20+
foreach ($tests as $test) {
21+
var_dump($test);
22+
}
23+
24+
?>
25+
===DONE===
26+
<?php exit(0); ?>
27+
--EXPECTF--
28+
object(MongoDB\Driver\ReadPreference)#%d (%d) {
29+
["mode"]=>
30+
string(7) "primary"
31+
}
32+
object(MongoDB\Driver\ReadPreference)#%d (%d) {
33+
["mode"]=>
34+
string(16) "primaryPreferred"
35+
}
36+
object(MongoDB\Driver\ReadPreference)#%d (%d) {
37+
["mode"]=>
38+
string(9) "secondary"
39+
}
40+
object(MongoDB\Driver\ReadPreference)#%d (%d) {
41+
["mode"]=>
42+
string(18) "secondaryPreferred"
43+
}
44+
object(MongoDB\Driver\ReadPreference)#%d (%d) {
45+
["mode"]=>
46+
string(7) "nearest"
47+
}
48+
object(MongoDB\Driver\ReadPreference)#%d (%d) {
49+
["mode"]=>
50+
string(7) "primary"
51+
}
52+
object(MongoDB\Driver\ReadPreference)#%d (%d) {
53+
["mode"]=>
54+
string(9) "secondary"
55+
["tags"]=>
56+
array(1) {
57+
[0]=>
58+
object(stdClass)#%d (%d) {
59+
["dc"]=>
60+
string(2) "ny"
61+
}
62+
}
63+
}
64+
object(MongoDB\Driver\ReadPreference)#%d (%d) {
65+
["mode"]=>
66+
string(9) "secondary"
67+
["tags"]=>
68+
array(3) {
69+
[0]=>
70+
object(stdClass)#%d (%d) {
71+
["dc"]=>
72+
string(2) "ny"
73+
}
74+
[1]=>
75+
object(stdClass)#%d (%d) {
76+
["dc"]=>
77+
string(2) "sf"
78+
["use"]=>
79+
string(9) "reporting"
80+
}
81+
[2]=>
82+
object(stdClass)#%d (%d) {
83+
}
84+
}
85+
}
86+
object(MongoDB\Driver\ReadPreference)#%d (%d) {
87+
["mode"]=>
88+
string(9) "secondary"
89+
["maxStalenessMS"]=>
90+
int(1000)
91+
}
92+
===DONE===
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
--TEST--
2+
MongoDB\Driver\WriteConcern::bsonSerialize()
3+
--FILE--
4+
<?php
5+
6+
require_once __DIR__ . '/../utils/tools.php';
7+
8+
$tests = [
9+
new MongoDB\Driver\WriteConcern(-3), // MONGOC_WRITE_CONCERN_W_MAJORITY
10+
new MongoDB\Driver\WriteConcern(-2), // MONGOC_WRITE_CONCERN_W_DEFAULT
11+
new MongoDB\Driver\WriteConcern(-1),
12+
new MongoDB\Driver\WriteConcern(0),
13+
new MongoDB\Driver\WriteConcern(1),
14+
new MongoDB\Driver\WriteConcern(MongoDB\Driver\WriteConcern::MAJORITY),
15+
new MongoDB\Driver\WriteConcern('tag'),
16+
new MongoDB\Driver\WriteConcern(1, 0),
17+
new MongoDB\Driver\WriteConcern(1, 0, false),
18+
new MongoDB\Driver\WriteConcern(1, 1000),
19+
new MongoDB\Driver\WriteConcern(1, 1000, true),
20+
new MongoDB\Driver\WriteConcern(-2, 0, true),
21+
// Note: wtimeout is only applicable applies for w > 1
22+
new MongoDB\Driver\WriteConcern(-2, 1000),
23+
];
24+
25+
foreach ($tests as $test) {
26+
echo toJSON(fromPHP($test)), "\n";
27+
}
28+
29+
?>
30+
===DONE===
31+
<?php exit(0); ?>
32+
--EXPECT--
33+
{ "w" : "majority" }
34+
{ }
35+
{ "w" : -1 }
36+
{ "w" : 0 }
37+
{ "w" : 1 }
38+
{ "w" : "majority" }
39+
{ "w" : "tag" }
40+
{ "w" : 1 }
41+
{ "w" : 1, "j" : false }
42+
{ "w" : 1, "wtimeout" : 1000 }
43+
{ "w" : 1, "j" : true, "wtimeout" : 1000 }
44+
{ "j" : true }
45+
{ "wtimeout" : 1000 }
46+
===DONE===

0 commit comments

Comments
 (0)