Commit Graph

124 Commits

Author SHA1 Message Date
Andreas Braun
5f3503c01c PHPC-2165: Expose server error replies in BulkWriteResult (#1385) 2022-12-06 08:18:16 +01:00
Andreas Braun
4fd0fa96a6 PHPC-2141: Emit deprecation notice for WriteResult getters with unacknowledged writes (#1367) 2022-10-05 16:15:38 +02:00
Andreas Braun
04f504c9fa PHPC-2121: Skip failing test (#1365)
* PHPC-2121: Skip failing test

* Add todo comment to SKIPIF check

Co-authored-by: Jeremy Mikola <jmikola@gmail.com>

Co-authored-by: Jeremy Mikola <jmikola@gmail.com>
2022-09-16 08:48:51 +02:00
Jeremy Mikola
93efe0aeb6 PHPC-2073: Remove references to pre-3.6 servers (#1305)
* Remove pre-3.6 server versions from Evergreen matrix

* Remove skipped tests for pre-3.6 servers

* Remove old mongo-orchestration configs and Evergreen tasks

* Remove flaky replica set tests

These tests assume a particular replica set member is always the primary, so tag assertions may fail if a different member is elected. The server-getTags-002.phpt test has more flexible assertions for replica set tags, so we can safely remove these tests.
2022-03-01 20:30:00 -05:00
Jeremy Mikola
220541ac3c Skip test pending libmongoc segfault fix (CDRIVER-4290) 2022-02-10 13:20:52 -05:00
Jeremy Mikola
2db00e0e24 PHPC-2064: Call skip_if_not_clean after other skip functions
"nocache" output from skip_if_not_clean may cause "skip" output from other functions to be ignored. Changing the order so that skip_if_not_clean is always called last will fix this in most cases (excluding tests that call skip_if_not_clean multiple times).
2022-02-10 13:20:52 -05:00
Jeremy Mikola
c2410ab0e7 PHPC-2023 and PHPC-2030: Allow observation of events dispatched during client destruction (#1292)
* PHPC-2023: Allow observation of TopologyClosedEvent

Observation is only possible for non-persistent clients freed before RSHUTDOWN. This change also allows for reliable testing of ServerClosedEvent.

* PHPC-2030: Test observation of commands issued during client destruction

Command monitoring events can only be observed for non-persistent clients freed before RSHUTDOWN.
2022-01-14 10:08:12 -05:00
Jeremy Mikola
10b3a1fe70 PHPC-1150: SDAM Monitoring (#1289)
* PHPC-1805: Implement ServerDescription class

* PHPC-1910: Implement Server::getServerDescription()

* PHPC-1934: Check for uninitialized intern in ServerDescription get_properties_hash

* PHPC-1925: Change ServerDescription::getType() to return a string

* PHPC-1891: Implement TopologyDescription class

* PHPC-1892: Implement SDAMSubscriber interface

* PHPC-1893: Implement SDAM event classes

* Revise server and topology event classes and tests

Use phongo_objectid_init in getTopologyId() methods. Report topologyId as an ObjectId in debug info. Report TopologyDescription servers as ServerDescription in debug info.

Copy parameters in phongo_serverdescription_init and phongo_topologydescription_init for consistency with other functions (e.g. phongo_readconcern_init). This also creates phongo_serverdescription_init_ex for when we want to skip copying in Server::getServerDescription().

* PHPC-1953: Add tests for debug handlers

* PHPC-1959: Utilize Manager::addSubscriber() in tests

Skip TopologyClosedEvent test (pending PHPC-2023)

* PHPC-1958: Assert same topologyId for SDAM events

* PHPC-2025: Support load balancer in ServerDescription and TopologyDescription

* PHPC-2026: Handle 64-bit lastUpdateTime for 32-bit platforms

Co-authored-by: Tanli Su <46271307+tanlisu@users.noreply.github.com>
Co-authored-by: Andreas Braun <git@alcaeus.org>
Co-authored-by: Tanli Su <tanli.su@gmail.com>
2022-01-10 13:14:10 -05:00
Jeremy Mikola
36f6ce0ebc PHPC-1878 and PHPC-2008: Fix tests using local database (#1277)
* PHPC-1878: Explicitly use w:1 for local database

* PHPC-2008: Skip test requiring role to drop local collection

The "restore" role is required to drop collections in the "local" database. Mongo Orchestration does not yet grant that role for its users.
2021-11-30 10:54:16 -05:00
Jeremy Mikola
f9fe7efe03 PHPC-1985: Report unset round_trip_time as null in Server debug output (#1265) 2021-10-15 15:32:45 -04:00
Jeremy Mikola
cfac8b8d1f PHPC-1985: Server::getLatency() should return null if unset 2021-10-15 13:44:32 -04:00
Jeremy Mikola
ae74c7a1cd PHPC-1752: Fix tests for load balanced topologies
Skip tests expecting gossiped $clusterTime on first command. This may be a bug in libmongoc, per CDRIVER-4174.

Make exception assertion in TLS tests more flexible. Expect parent ConnectionException to accomodate load balanced clients, which do not use server selection. Both exception messages will include a common prefix from libmongoc.

Do not assert exception message for failed TLS connection. While the message will typically include "TLS handshake failed", that is not guaranteed.

Make ping response assertions in TLS tests more flexible. Sharded clusters and replica sets may return additional fields in the ping response (e.g. cluster time). These tests were originally written to expect a standalone response.

Allow unset RTT (-1) for load balanced client.

Note SRV caveat for is_replica_set test function.

Allow load balancers for tests that require sharded clusters. Load balancers should always proxy a mongos, so existing skip functions that check for mongos can now allow a load balancer. If there is some incompatibility specific to LBs, we can address that later with a LB-specific skip function.

Require mongos for pinning tests. Pinning does not apply to load balanced clients, since there is only one connection.
2021-10-15 13:44:32 -04:00
Jeremy Mikola
797a5c81f7 PHPC-1980: Server::TYPE_LOAD_BALANCER constant 2021-10-15 13:44:31 -04:00
Andreas Braun
b27fa4d019 PHPC-1965 Re-enable PHP 8.1 build on GH Actions (#1258)
* Re-enable PHP 8.1 build on GH Actions

* Work around different error wording in PHP 8.1

* Limit failing tests to PHP < 8.1

* Add tests for PHPC-1839 for PHP >= 8.1
2021-09-07 08:18:08 +02:00
Tanli Su
0aadc0e891 Clean up server-debug.phpt (#1242) 2021-07-30 17:29:58 -04:00
Jeremy Mikola
717fa6b295 PHPC-1870 and PHPC-1872: Fix zSeries builds and testing with RS arbiters (#1232)
* PHPC-1870: Include config.h after php.h to avoid redef of WORDS_BIGENDIAN

This should fix zSeries build failures introduced by 324182a8e6

* PHPC-1872: Count data-bearing nodes for write concern

WC using the total server count cannot be satisfied if the RS includes arbiters.
2021-06-29 11:19:04 -04:00
Andreas Braun
a612c370f6 PHPC-1756: Remove oppressive terminology from source code (#1221)
* Use latest version of libmongoc

* Remove deprecated terminology for primary

* Remove deprecated terminology for secondary

* Fix clang-format

* Remove check for legacy field

* Fix missing space in error expectation

* Harden test expectation around primary checks
2021-06-22 19:30:56 +02:00
Andreas Braun
deead9687e PHPC-1716 Allow configuring server API version in manager (#1204)
* Introduce MongoDB\Driver\ServerApi

* Accept serverApi driver option

* Introduce create_test_manager factory to create manager

A centralised entry point is required to inject the API_VERSION env variable later.

* Add build variant to test with requireApiVersion=true

* Fix wrong configuration for auth variable

This changed when migrating from our own scripts to drivers-evergreen-tools and was not updated properly, causing all tests to run with auth disabled.

* Declare ZEND_PARSE_PARAMETERS_NONE macro

This macro is missing on PHP < 7.3

* Remove duplicated API param storage

* Add missing semicolons

* Add ZEND_PARSE_PARAMETERS_NON_EX macro

* Extract error handling functionality to separate macros

* Throw if internal mongoc_server_api_t is already initialised

* Use imported namespaces in tools file

* Fix type info for reflection

* Use American English spelling

* Only use typed serialize signature on PHP 8+

* Update PHONGO_PARSE_PARAMETERS_NONE macro for PHP < 7.3

* Remove usage of ZEND_STRL within zend_hash_str_add

This causes compile failures on PHP < 7.3 that I have yet to understand.

* Fix errors in new PHONGO_PARSE_PARAMETERS macros
2021-03-26 15:43:48 +01:00
Andreas Braun
ddfe1c3321 Fix running auth tests (#1206)
* Fix running auth tests

* Fix flaky tests on replica sets

* Remove arbiters from replica set config

This was done for auth due to a bug fixed in 3.7.7, but the change was not reverted (see https://github.com/mongodb-labs/drivers-evergreen-tools/pull/38).

* Harden test against non-deterministic return order
2021-03-25 10:25:42 +01:00
Andreas Braun
ed31cba5cb PHPC-1739 Move from travis-ci to GitHub Actions (#1199)
* Add GitHub Action workflow for tests

* Add workflow to check formatting

* Remove travis-ci config

* Fix clang-format error

* Add shared json extension for tests

* Hide output for xfail tests

* Use mongo-orchestration configs from drivers-evergreen-tools

* Drop obsolete test scripts

This drops the legacy VM environment and remnants of the travis-ci config

* Remove obsolete server_id config

* Add note about MONGO_ORCHESTRATION_URI to contribution docs

* Restore previous XFAIL behaviour

This did not have the expected effect of preventing diff output for tests that expect failures, so it can be reverted.

* Make SSL certificate path configurable for tests

Since mongo-orchestration will always bring its own certificates, we need to set the correct SSL certificate directory for our tests. This is skipped on GitHub Actions as we don't test SSL builds there (yet). If SSL_DIR was not set, tests requiring SSL will be skipped.

* Fix code review nits
2021-02-23 14:49:54 +01:00
Andreas Braun
60febd0f28 PHPC-1699: Ensure all argument parsing errors throw InvalidArgumentException (#1173)
Co-authored-by: Jeremy Mikola <jmikola@gmail.com>
2020-10-28 08:20:32 +01:00
Jeremy Mikola
ca4c52eb1c PHPC-1692: Test suite fixes for PHP 8 2020-10-13 15:24:02 +02:00
Jeremy Mikola
b1b4122e85 Fix titles of Server session pinning tests 2020-07-29 16:44:07 -04:00
Jeremy Mikola
b8bd32f8f3 Use executeCommand for create in txn pinning tests
The previous inconsistency was likely the result of copypasta (especially where executeReadCommand was used). There is no issue with using executeCommand here since an explicit write concern is provided (nothing will be inherited).
2020-07-29 16:44:07 -04:00
Jeremy Mikola
bc73a1c50b PHPC-169: Test read and write concern inheritance 2020-07-29 16:44:07 -04:00
Andreas Braun
a8f35c8036 PHPC-1290: Fix appveyor test failures 2019-09-02 16:19:33 +02:00
Andreas Braun
d750c7013c PHPC-1290: Run relevant tests on sharded clusters 2019-08-29 07:26:43 +02:00
Andreas Braun
201acd92f4 PHPC-1290: Update sharded test clusters to have multiple mongoses
This is necessary because session pinning doesn't work when connected to a single mongos node
2019-08-28 20:10:47 +02:00
Andreas Braun
5ad804ac21 PHPC-1290: Add tests for server selection in sharded transactions 2019-08-28 20:10:47 +02:00
Andreas Braun
ea7489bf72 PHPC-1369: Update libmongoc to latest 1.15-dev 2019-08-12 07:49:29 +02:00
Jeremy Mikola
d0e4d89147 PHPC-1413: Disable retryWrites for tests inserting on secondary 2019-07-23 09:38:17 -04:00
Jeremy Mikola
9a52fcdf91 PHPC-1412: Disable retryWrites for tests using local DB
Additionally, we can use the generated collection name instead of "example".
2019-07-23 09:38:17 -04:00
Jeremy Mikola
ff57d46c85 PHPC-1364: Remove XFAIL for issue fixed in libmongoc 1.14 2019-05-03 12:44:27 -04:00
Jeremy Mikola
a3731b0e48 PHPC-691: Test Server execute methods send RP to mongos 2019-02-14 16:38:51 -05:00
Derick Rethans
668d4e2113 Mark tests that fail due to CDRIVER-2902 as XFAIL 2019-02-14 15:35:31 -05:00
Derick Rethans
44d85048fe Adding some debugging information, as this seems like a transient failure 2019-02-14 15:35:31 -05:00
Derick Rethans
bcbdcbfebf These tests are >= 3.6, as they use changeStreams 2019-02-14 15:35:31 -05:00
Derick Rethans
a11546ab3a PHPC-1235: Update tests due to changes in MongoDB 4.1 2019-02-14 15:35:30 -05:00
Jeremy Mikola
bb358d6296 Merge branch 'v1.5' 2018-09-19 15:23:27 -04:00
Jeremy Mikola
6fee1909b6 Fix port via parse_url() when default URI is used
The default URI is "mongodb://127.0.0.1/" and does not include a port. Since parse_url() will not yield a "port" index in that case we should fill in the default (i.e. 27017).

This is related to dd5e9e9b73.
2018-09-19 14:16:29 -04:00
Derick Rethans
897c3f5b4b Merge branch 'v1.5' 2018-08-30 11:45:37 +01:00
Derick Rethans
8a28fcb6a5 PHPC-1177: Add skip clauses to tests that must run with simple auth 2018-08-30 11:44:07 +01:00
Derick Rethans
772ae9a714 PHPC-1177: Remove entries instead of drop as MO permissions don't allow dropping "local" db connections 2018-08-30 11:44:07 +01:00
Derick Rethans
dd5e9e9b73 PHPC-1177: Fixed parse_url in for Server::__construct() test 2018-08-30 11:44:07 +01:00
Derick Rethans
7d1ac7b523 PHPC-1220: Create skip function for insufficient replica set members 2018-08-10 11:26:42 +01:00
Derick Rethans
c80778a153 PHPC-1173: Reimplement replica set seedlist tests 2018-08-10 11:26:42 +01:00
Derick Rethans
e272bb5e47 PHPC-1249: Fix tests running against MongoDB 3.0 replicaset 2018-07-20 16:39:37 +01:00
Jeremy Mikola
dcc2fdf259 PHPC-1113: Use XFAIL instead of skips for tests to be reimplemented 2018-05-03 11:52:45 -04:00
Jeremy Mikola
8ca94d01e6 PHPC-1113: Use >=3.1 for version skips instead of >3.0.99 2018-05-03 11:37:04 -04:00
Jeremy Mikola
f7d8169976 Select primary server for use in write command tests 2018-05-02 16:45:02 -04:00