Skip to content

Commit 7d1ac7b

Browse files
committed
PHPC-1220: Create skip function for insufficient replica set members
1 parent c80778a commit 7d1ac7b

9 files changed

+55
-0
lines changed

tests/manager/manager-executeBulkWrite-012.phpt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ MongoDB\Driver\Manager::executeBulkWrite() with legacy write concern (replica se
33
--SKIPIF--
44
<?php require __DIR__ . "/../utils/basic-skipif.inc"; ?>
55
<?php skip_if_not_replica_set(); ?>
6+
<?php skip_if_not_enough_data_nodes(2); ?>
67
<?php skip_if_not_clean(); ?>
78
--FILE--
89
<?php

tests/manager/manager-getservers-002.phpt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@ MongoDB\Driver\Manager::getServers() (replica set)
33
--SKIPIF--
44
<?php require __DIR__ . "/../utils/basic-skipif.inc"; ?>
55
<?php skip_if_not_replica_set(); ?>
6+
<?php skip_if_not_enough_nodes(3); ?>
7+
<?php skip_if_no_arbiter(); ?>
68
<?php skip_if_not_clean(); ?>
79
--FILE--
810
<?php

tests/replicaset/server-001.phpt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ MongoDB\Driver\Server: Manager->getServer() returning correct server
33
--SKIPIF--
44
<?php require __DIR__ . "/../utils/basic-skipif.inc"; ?>
55
<?php skip_if_not_replica_set(); ?>
6+
<?php skip_if_not_enough_data_nodes(2, 2); ?>
67
--FILE--
78
<?php
89
require_once __DIR__ . "/../utils/basic.inc";

tests/replicaset/server-002.phpt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ MongoDB\Driver\Server: Manager->getServer() returning correct server
33
--SKIPIF--
44
<?php require __DIR__ . "/../utils/basic-skipif.inc"; ?>
55
<?php skip_if_not_replica_set(); ?>
6+
<?php skip_if_not_enough_data_nodes(2, 2); ?>
67
--FILE--
78
<?php
89
require_once __DIR__ . "/../utils/basic.inc";

tests/server/server-executeBulkWrite-003.phpt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ MongoDB\Driver\Server::executeBulkWrite() with legacy write concern (replica set
33
--SKIPIF--
44
<?php require __DIR__ . "/../utils/basic-skipif.inc"; ?>
55
<?php skip_if_not_replica_set(); ?>
6+
<?php skip_if_not_enough_data_nodes(2); ?>
67
<?php skip_if_not_clean(); ?>
78
--FILE--
89
<?php

tests/server/server-executeBulkWrite-004.phpt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ MongoDB\Driver\Server::executeBulkWrite() with legacy write concern (replica set
33
--SKIPIF--
44
<?php require __DIR__ . "/../utils/basic-skipif.inc"; ?>
55
<?php skip_if_not_replica_set(); ?>
6+
<?php skip_if_not_enough_data_nodes(2); ?>
67
<?php skip_if_not_clean(); ?>
78
--FILE--
89
<?php

tests/server/server-executeBulkWrite-006.phpt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ MongoDB\Driver\Server::executeBulkWrite() with legacy write concern (replica set
33
--SKIPIF--
44
<?php require __DIR__ . "/../utils/basic-skipif.inc"; ?>
55
<?php skip_if_not_replica_set(); ?>
6+
<?php skip_if_not_enough_data_nodes(2); ?>
67
<?php skip_if_not_clean(); ?>
78
--FILE--
89
<?php

tests/server/server-executeBulkWrite-007.phpt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ MongoDB\Driver\Server::executeBulkWrite() with write concern (replica set second
33
--SKIPIF--
44
<?php require __DIR__ . "/../utils/basic-skipif.inc"; ?>
55
<?php skip_if_not_replica_set(); ?>
6+
<?php skip_if_not_enough_data_nodes(2); ?>
67
<?php skip_if_not_clean(); ?>
78
--FILE--
89
<?php

tests/utils/skipif.php

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,52 @@ function skip_if_no_secondary()
7373
}
7474
}
7575

76+
/**
77+
* Skips the test if the topology does not have enough data carrying nodes
78+
*/
79+
function skip_if_not_enough_data_nodes($requiredNodes, $maxNodeCount = null)
80+
{
81+
try {
82+
$primary = get_primary_server(URI);
83+
} catch (ConnectionException $e) {
84+
exit('skip primary server is not accessible: ' . $e->getMessage());
85+
}
86+
$info = $primary->getInfo();
87+
88+
$dataNodeCount = isset($info['hosts']) ? count($info['hosts']) : 0;
89+
90+
if ($dataNodeCount < $requiredNodes) {
91+
exit("skip not enough nodes available (wanted: {$requiredNodes}, available: " . count($info['hosts']) . ')');
92+
}
93+
if ($maxNodeCount !== null && $dataNodeCount > $requiredNodes) {
94+
exit("skip too many nodes available (wanted: {$requiredNodes}, available: " . count($info['hosts']) . ')');
95+
}
96+
}
97+
98+
/**
99+
* Skips the test if the topology does not have enough nodes
100+
*/
101+
function skip_if_not_enough_nodes($requiredNodes, $maxNodeCount = null)
102+
{
103+
try {
104+
$primary = get_primary_server(URI);
105+
} catch (ConnectionException $e) {
106+
exit('skip primary server is not accessible: ' . $e->getMessage());
107+
}
108+
$info = $primary->getInfo();
109+
110+
$nodeCount =
111+
(isset($info['hosts']) ? count($info['hosts']) : 0) +
112+
(isset($info['arbiters']) ? count($info['arbiters']) : 0);
113+
114+
if ($nodeCount < $requiredNodes) {
115+
exit("skip not enough nodes available (wanted: {$requiredNodes}, available: " . count($info['hosts']) . ')');
116+
}
117+
if ($maxNodeCount !== null && $nodeCount > $requiredNodes) {
118+
exit("skip too many nodes available (wanted: {$requiredNodes}, available: " . count($info['hosts']) . ')');
119+
}
120+
}
121+
76122
/**
77123
* Skips the test if the topology is a standalone.
78124
*/

0 commit comments

Comments
 (0)