[DRIVERS-1967] Update serverless testing for load balancer fronting single proxy Created: 29/Oct/21  Updated: 01/Sep/23

Status: Implementing
Project: Drivers
Component/s: Serverless
Fix Version/s: None

Type: Task Priority: Major - P3
Reporter: Kevin Albertson Assignee: Jeremy Mikola
Resolution: Unresolved Votes: 0
Labels: evg-config, size-small, test-runner
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified

Issue Links:
Depends
Gantt End to End
Issue split
split to CDRIVER-4212 Update serverless testing for load ba... Backlog
split to CXX-2408 Update serverless testing for load ba... Backlog
split to CSHARP-3947 Update serverless testing for load ba... Closed
split to GODRIVER-2214 Update serverless testing for load ba... Closed
split to JAVA-4385 Update serverless testing for load ba... Closed
split to MOTOR-851 Update serverless testing for load ba... Closed
split to NODE-3735 Update serverless testing for load ba... Closed
split to PHPLIB-757 Update serverless testing for load ba... Closed
split to PYTHON-2986 Update serverless testing for load ba... Closed
split to RUBY-2838 Update serverless testing for load ba... Closed
split to RUST-1090 Update serverless testing for load ba... Closed
Related
related to DRIVERS-2713 Permit legacy transaction tests to ru... Implementing
related to DRIVERS-2432 Run unified tests from all specs agai... Implementing
related to DRIVERS-2278 getParameter is not supported on Atla... Closed
Epic Link: Run Test Suites Against Serverless in Evergreen
Driver Changes: Needed
Quarter: FY22Q2
Downstream Changes Summary:

Evergreen scripts for serverless provisioning have been updated in mongodb-labs/drivers-evergreen-tools@577c905. The serverless-expansion.yml file generated by create-serverless.sh now has only two relevant expansions: SERVERLESS_URI and SERVERLESS_INSTANCE_NAME:

  • SERVERLESS_URI is the SRV URI to be used for all connections to the serverless instance. Drivers MUST still add the username and password when using this connection string.
  • SERVERLESS_INSTANCE_NAME is used by the delete-instance.sh script. Additionally, drivers MAY define SERVERLESS_INSTANCE_NAME before calling create-instance.sh if they do not want to use a randomly generated name.

Drivers MUST update the Evergreen environment variables specified in the Atlas Serverless credentials Google Doc. Drivers that have previously implemented DRIVERS-1375 will note that only the SERVERLESS_DRIVERS_GROUP variable has changed. It now points to a new Atlas project, which is configured to provision serverless instances where the load balancer is backed by a single proxy.

Revised guidelines for handling useMultipleMongoses in legacy and unified test runners are discussed in mongodb/specifications@1b471f1. To summarize, since the URI now points to a load balancer backing a single serverless proxy, useMultipleMongoses is ignored when testing against Atlas Serverless.

Driver Compliance:
Key Status/Resolution FixVersion
CDRIVER-4212 Backlog
CXX-2408 Backlog
CSHARP-3947 Fixed 2.16.0
GODRIVER-2214 Done
JAVA-4385 Fixed 4.6.1
NODE-3735 Fixed 4.9.0
PHPLIB-757 Fixed 1.13.0-beta1, 1.13.0
PYTHON-2986 Fixed 3.13, 4.2
MOTOR-851 Duplicate
RUBY-2838 Fixed 2.18.0
RUST-1090 Done
SWIFT-1404 Done

 Description   

Summary

Serverless tests currently rely on two URIs to the same Serverless project:

  • MULTI_ATLASPROXY_SERVERLESS_URI points to a load balancer fronting multiple Atlas Proxy processes.
  • SINGLE_ATLASPROXY_SERVERLESS_URI points to a single Atlas Proxy process.

After CLOUDP-100715, it will no longer be possible to directly connect to an Atlas Proxy. The proposed plan in CLOUDP-100717 is to enable projects for testing with a load balancer fronting one Atlas Proxy. But it will not be possible to have both URIs to the same Serverless project.

Decide on a new strategy for testing Serverless, and update Serverless tests.

Motivation

Is this issue urgent?

Yes. CLOUDP-100715 is planned to start soon and estimated to complete within 6 weeks.

Is this ticket only for tests?

Yes



 Comments   
Comment by Githook User [ 07/Jul/22 ]

Author:

{'name': 'Steven Silvester', 'email': 'steven.silvester@ieee.org', 'username': 'blink1073'}

Message: DRIVERS-1967 Fix changelog date (#1271)
Branch: master
https://github.com/mongodb/specifications/commit/d3c137032867a8b3ecd36406d45fa9a15b08b569

Comment by Githook User [ 26/Apr/22 ]

Author:

{'name': 'Jeremy Mikola', 'email': 'jmikola@gmail.com', 'username': 'jmikola'}

Message: DRIVERS-1967: Serverless testing uses load balancer fronting single proxy (#1186)

Copies clarifications to legacy test formats
Branch: master
https://github.com/mongodb/specifications/commit/1b471f1a691578a6592c328218188c8be7b3b15b

Comment by Githook User [ 26/Apr/22 ]

Author:

{'name': 'Jeremy Mikola', 'email': 'jmikola@gmail.com', 'username': 'jmikola'}

Message: DRIVERS-1967: Serverless testing uses load balancer fronting single proxy (#194)

Updates serverless scripts to use a multi-tenant MongoDB (MTM) deployment with the SINGLE_TARGET_SERVERLESS_DEPLOYMENT feature flag enabled (CLOUDP-117288).

This simplifies much of the original logic since there is now only a single SRV URI. For BC, create-instance.sh still outputs all of the original expansions. Those can be cleaned up at a later date after all downstream drivers migrate to the new expansions.

The create-instance.sh script was also updated to solicit an explicit instance name (e.g. generated within the Evergreen config).
Branch: master
https://github.com/mongodb-labs/drivers-evergreen-tools/commit/577c905c59069dbeb8b116cc07a7f82211982140

Comment by Jeremy Mikola [ 20/Apr/22 ]

Spec and Evergreen tools PRs:

Generated at Thu Feb 08 08:24:23 UTC 2024 using Jira 9.7.1#970001-sha1:2222b88b221c4928ef0de3161136cc90c8356a66.