diff --git a/source/crud/tests/README.rst b/source/crud/tests/README.rst index 864290e9b6..cb05082b15 100644 --- a/source/crud/tests/README.rst +++ b/source/crud/tests/README.rst @@ -61,6 +61,12 @@ Each YAML file has the following keys: and "sharded". If this field is omitted, the default is all topologies (i.e. ``["single", "replicaset", "sharded"]``). + - ``serverless``: (optional) Whether or not the test should be run on + serverless instances imitating sharded clusters. Valid values are "require", + "forbid", and "allow". If "require", the test MUST only be run on serverless + instances. If "forbid", the test MUST NOT be run on Serverless instances. If + omitted or "allow", this option has no effect. + - ``collection_name`` (optional): The collection to use for testing. - ``database_name`` (optional): The database to use for testing. @@ -338,4 +344,4 @@ Test that a writeConcernError "errInfo" is propagated to the user in whatever wa }, "mode": { "times": 1 } } -Then, perform an insert on the same database. Assert that an error occurs and that the "errInfo" is accessible and matches the one set in the failpoint. \ No newline at end of file +Then, perform an insert on the same database. Assert that an error occurs and that the "errInfo" is accessible and matches the one set in the failpoint. diff --git a/source/crud/tests/unified/aggregate.json b/source/crud/tests/unified/aggregate.json new file mode 100644 index 0000000000..ee84f430c9 --- /dev/null +++ b/source/crud/tests/unified/aggregate.json @@ -0,0 +1,189 @@ +{ + "description": "aggregate", + "schemaVersion": "1.0", + "createEntities": [ + { + "client": { + "id": "client0", + "useMultipleMongoses": true, + "observeEvents": [ + "commandStartedEvent" + ] + } + }, + { + "database": { + "id": "database0", + "client": "client0", + "databaseName": "aggregate-tests" + } + }, + { + "collection": { + "id": "collection0", + "database": "database0", + "collectionName": "coll0" + } + } + ], + "initialData": [ + { + "collectionName": "coll0", + "databaseName": "aggregate-tests", + "documents": [ + { + "_id": 1, + "x": 11 + }, + { + "_id": 2, + "x": 22 + }, + { + "_id": 3, + "x": 33 + }, + { + "_id": 4, + "x": 44 + }, + { + "_id": 5, + "x": 55 + }, + { + "_id": 6, + "x": 66 + }, + { + "_id": 7, + "x": 77 + }, + { + "_id": 8, + "x": 88 + } + ] + } + ], + "tests": [ + { + "description": "aggregate with multiple batches works", + "operations": [ + { + "name": "aggregate", + "arguments": { + "pipeline": [ + { + "$match": { + "_id": { + "$gt": 1 + } + } + } + ], + "batchSize": 2 + }, + "object": "collection0", + "expectResult": [ + { + "_id": 2, + "x": 22 + }, + { + "_id": 3, + "x": 33 + }, + { + "_id": 4, + "x": 44 + }, + { + "_id": 5, + "x": 55 + }, + { + "_id": 6, + "x": 66 + }, + { + "_id": 7, + "x": 77 + }, + { + "_id": 8, + "x": 88 + } + ] + } + ], + "expectEvents": [ + { + "client": "client0", + "events": [ + { + "commandStartedEvent": { + "command": { + "aggregate": "coll0", + "pipeline": [ + { + "$match": { + "_id": { + "$gt": 1 + } + } + } + ], + "cursor": { + "batchSize": 2 + } + }, + "commandName": "aggregate", + "databaseName": "aggregate-tests" + } + }, + { + "commandStartedEvent": { + "command": { + "getMore": { + "$$exists": true + }, + "collection": "coll0", + "batchSize": 2 + }, + "commandName": "getMore", + "databaseName": "aggregate-tests" + } + }, + { + "commandStartedEvent": { + "command": { + "getMore": { + "$$exists": true + }, + "collection": "coll0", + "batchSize": 2 + }, + "commandName": "getMore", + "databaseName": "aggregate-tests" + } + }, + { + "commandStartedEvent": { + "command": { + "getMore": { + "$$exists": true + }, + "collection": "coll0", + "batchSize": 2 + }, + "commandName": "getMore", + "databaseName": "aggregate-tests" + } + } + ] + } + ] + } + ] +} diff --git a/source/crud/tests/unified/aggregate.yml b/source/crud/tests/unified/aggregate.yml new file mode 100644 index 0000000000..4b4a5a1de2 --- /dev/null +++ b/source/crud/tests/unified/aggregate.yml @@ -0,0 +1,79 @@ +description: "aggregate" + +schemaVersion: "1.0" + +createEntities: + - client: + id: &client0 client0 + useMultipleMongoses: true # ensure cursors pin to a single server + observeEvents: [ commandStartedEvent ] + - database: + id: &database0 database0 + client: *client0 + databaseName: &database0Name aggregate-tests + - collection: + id: &collection0 collection0 + database: *database0 + collectionName: &collection0Name coll0 + +initialData: + - collectionName: *collection0Name + databaseName: *database0Name + documents: + - { _id: 1, x: 11 } + - { _id: 2, x: 22 } + - { _id: 3, x: 33 } + - { _id: 4, x: 44 } + - { _id: 5, x: 55 } + - { _id: 6, x: 66 } + - { _id: 7, x: 77 } + - { _id: 8, x: 88 } + +tests: + - description: "aggregate with multiple batches works" + operations: + - name: aggregate + arguments: + pipeline: [ { $match: { _id: { $gt: 1 } }} ] + batchSize: 2 + object: *collection0 + expectResult: + - { _id: 2, x: 22 } + - { _id: 3, x: 33 } + - { _id: 4, x: 44 } + - { _id: 5, x: 55 } + - { _id: 6, x: 66 } + - { _id: 7, x: 77 } + - { _id: 8, x: 88 } + expectEvents: + - client: *client0 + events: + - commandStartedEvent: + command: + aggregate: *collection0Name + pipeline: [ { $match: { _id: { $gt: 1 } }} ] + cursor: { batchSize: 2 } + commandName: aggregate + databaseName: *database0Name + - commandStartedEvent: + command: + getMore: { $$exists: true } + collection: *collection0Name + batchSize: 2 + commandName: getMore + databaseName: *database0Name + - commandStartedEvent: + command: + getMore: { $$exists: true } + collection: *collection0Name + batchSize: 2 + commandName: getMore + databaseName: *database0Name + - commandStartedEvent: + command: + getMore: { $$exists: true } + collection: *collection0Name + batchSize: 2 + commandName: getMore + databaseName: *database0Name + diff --git a/source/crud/tests/unified/estimatedDocumentCount.json b/source/crud/tests/unified/estimatedDocumentCount.json index bcd66ea954..92c2706fb9 100644 --- a/source/crud/tests/unified/estimatedDocumentCount.json +++ b/source/crud/tests/unified/estimatedDocumentCount.json @@ -1,6 +1,6 @@ { "description": "estimatedDocumentCount", - "schemaVersion": "1.0", + "schemaVersion": "1.3", "createEntities": [ { "client": { @@ -61,7 +61,8 @@ "description": "estimatedDocumentCount uses $collStats on 4.9.0 or greater", "runOnRequirements": [ { - "minServerVersion": "4.9.0" + "minServerVersion": "4.9.0", + "serverless": "forbid" } ], "operations": [ @@ -107,7 +108,8 @@ "description": "estimatedDocumentCount with maxTimeMS on 4.9.0 or greater", "runOnRequirements": [ { - "minServerVersion": "4.9.0" + "minServerVersion": "4.9.0", + "serverless": "forbid" } ], "operations": [ @@ -157,7 +159,8 @@ "description": "estimatedDocumentCount on non-existent collection on 4.9.0 or greater", "runOnRequirements": [ { - "minServerVersion": "4.9.0" + "minServerVersion": "4.9.0", + "serverless": "forbid" } ], "operations": [ @@ -203,7 +206,8 @@ "description": "estimatedDocumentCount errors correctly on 4.9.0 or greater--command error", "runOnRequirements": [ { - "minServerVersion": "4.9.0" + "minServerVersion": "4.9.0", + "serverless": "forbid" } ], "operations": [ @@ -270,7 +274,8 @@ "description": "estimatedDocumentCount errors correctly on 4.9.0 or greater--socket error", "runOnRequirements": [ { - "minServerVersion": "4.9.0" + "minServerVersion": "4.9.0", + "serverless": "forbid" } ], "operations": [ diff --git a/source/crud/tests/unified/estimatedDocumentCount.yml b/source/crud/tests/unified/estimatedDocumentCount.yml index c3286ec176..e0811d9e4b 100644 --- a/source/crud/tests/unified/estimatedDocumentCount.yml +++ b/source/crud/tests/unified/estimatedDocumentCount.yml @@ -1,6 +1,6 @@ description: "estimatedDocumentCount" -schemaVersion: "1.0" +schemaVersion: "1.3" createEntities: - client: @@ -34,6 +34,7 @@ tests: - description: "estimatedDocumentCount uses $collStats on 4.9.0 or greater" runOnRequirements: - minServerVersion: "4.9.0" + serverless: forbid operations: - name: estimatedDocumentCount object: *collection0 @@ -53,6 +54,7 @@ tests: - description: "estimatedDocumentCount with maxTimeMS on 4.9.0 or greater" runOnRequirements: - minServerVersion: "4.9.0" + serverless: forbid operations: - name: estimatedDocumentCount object: *collection0 @@ -75,6 +77,7 @@ tests: - description: "estimatedDocumentCount on non-existent collection on 4.9.0 or greater" runOnRequirements: - minServerVersion: "4.9.0" + serverless: forbid operations: - name: estimatedDocumentCount object: *collection1 @@ -94,6 +97,7 @@ tests: - description: "estimatedDocumentCount errors correctly on 4.9.0 or greater--command error" runOnRequirements: - minServerVersion: "4.9.0" + serverless: forbid operations: - name: failPoint object: testRunner @@ -124,6 +128,7 @@ tests: - description: "estimatedDocumentCount errors correctly on 4.9.0 or greater--socket error" runOnRequirements: - minServerVersion: "4.9.0" + serverless: forbid operations: - name: failPoint object: testRunner diff --git a/source/crud/tests/unified/find.json b/source/crud/tests/unified/find.json new file mode 100644 index 0000000000..1372b078c4 --- /dev/null +++ b/source/crud/tests/unified/find.json @@ -0,0 +1,178 @@ +{ + "description": "find", + "schemaVersion": "1.0", + "createEntities": [ + { + "client": { + "id": "client0", + "useMultipleMongoses": true, + "observeEvents": [ + "commandStartedEvent" + ] + } + }, + { + "database": { + "id": "database0", + "client": "client0", + "databaseName": "find-tests" + } + }, + { + "collection": { + "id": "collection0", + "database": "database0", + "collectionName": "coll0" + } + } + ], + "initialData": [ + { + "collectionName": "coll0", + "databaseName": "find-tests", + "documents": [ + { + "_id": 1, + "x": 11 + }, + { + "_id": 2, + "x": 22 + }, + { + "_id": 3, + "x": 33 + }, + { + "_id": 4, + "x": 44 + }, + { + "_id": 5, + "x": 55 + }, + { + "_id": 6, + "x": 66 + }, + { + "_id": 7, + "x": 77 + }, + { + "_id": 8, + "x": 88 + } + ] + } + ], + "tests": [ + { + "description": "find with multiple batches works", + "operations": [ + { + "name": "find", + "arguments": { + "filter": { + "_id": { + "$gt": 1 + } + }, + "batchSize": 2 + }, + "object": "collection0", + "expectResult": [ + { + "_id": 2, + "x": 22 + }, + { + "_id": 3, + "x": 33 + }, + { + "_id": 4, + "x": 44 + }, + { + "_id": 5, + "x": 55 + }, + { + "_id": 6, + "x": 66 + }, + { + "_id": 7, + "x": 77 + }, + { + "_id": 8, + "x": 88 + } + ] + } + ], + "expectEvents": [ + { + "client": "client0", + "events": [ + { + "commandStartedEvent": { + "command": { + "find": "coll0", + "filter": { + "_id": { + "$gt": 1 + } + } + }, + "commandName": "find", + "databaseName": "find-tests" + } + }, + { + "commandStartedEvent": { + "command": { + "getMore": { + "$$exists": true + }, + "collection": "coll0", + "batchSize": 2 + }, + "commandName": "getMore", + "databaseName": "find-tests" + } + }, + { + "commandStartedEvent": { + "command": { + "getMore": { + "$$exists": true + }, + "collection": "coll0", + "batchSize": 2 + }, + "commandName": "getMore", + "databaseName": "find-tests" + } + }, + { + "commandStartedEvent": { + "command": { + "getMore": { + "$$exists": true + }, + "collection": "coll0", + "batchSize": 2 + }, + "commandName": "getMore", + "databaseName": "find-tests" + } + } + ] + } + ] + } + ] +} diff --git a/source/crud/tests/unified/find.yml b/source/crud/tests/unified/find.yml new file mode 100644 index 0000000000..704a45a947 --- /dev/null +++ b/source/crud/tests/unified/find.yml @@ -0,0 +1,78 @@ +description: "find" + +schemaVersion: "1.0" + +createEntities: + - client: + id: &client0 client0 + useMultipleMongoses: true # ensure cursors pin to a single server + observeEvents: [ commandStartedEvent ] + - database: + id: &database0 database0 + client: *client0 + databaseName: &database0Name find-tests + - collection: + id: &collection0 collection0 + database: *database0 + collectionName: &collection0Name coll0 + +initialData: + - collectionName: *collection0Name + databaseName: *database0Name + documents: + - { _id: 1, x: 11 } + - { _id: 2, x: 22 } + - { _id: 3, x: 33 } + - { _id: 4, x: 44 } + - { _id: 5, x: 55 } + - { _id: 6, x: 66 } + - { _id: 7, x: 77 } + - { _id: 8, x: 88 } + +tests: + - description: "find with multiple batches works" + operations: + - name: find + arguments: + filter: { _id: { $gt: 1 } } + batchSize: 2 + object: *collection0 + expectResult: + - { _id: 2, x: 22 } + - { _id: 3, x: 33 } + - { _id: 4, x: 44 } + - { _id: 5, x: 55 } + - { _id: 6, x: 66 } + - { _id: 7, x: 77 } + - { _id: 8, x: 88 } + expectEvents: + - client: *client0 + events: + - commandStartedEvent: + command: + find: *collection0Name + filter: { _id: { $gt: 1 } } + commandName: find + databaseName: *database0Name + - commandStartedEvent: + command: + getMore: { $$exists: true } + collection: *collection0Name + batchSize: 2 + commandName: getMore + databaseName: *database0Name + - commandStartedEvent: + command: + getMore: { $$exists: true } + collection: *collection0Name + batchSize: 2 + commandName: getMore + databaseName: *database0Name + - commandStartedEvent: + command: + getMore: { $$exists: true } + collection: *collection0Name + batchSize: 2 + commandName: getMore + databaseName: *database0Name + diff --git a/source/crud/tests/v2/db-aggregate.json b/source/crud/tests/v2/db-aggregate.json index d88b9e1819..e90f86bbcc 100644 --- a/source/crud/tests/v2/db-aggregate.json +++ b/source/crud/tests/v2/db-aggregate.json @@ -1,7 +1,8 @@ { "runOn": [ { - "minServerVersion": "3.6.0" + "minServerVersion": "3.6.0", + "serverless": "forbid" } ], "database_name": "admin", diff --git a/source/crud/tests/v2/db-aggregate.yml b/source/crud/tests/v2/db-aggregate.yml index e9a814858d..af054905ce 100644 --- a/source/crud/tests/v2/db-aggregate.yml +++ b/source/crud/tests/v2/db-aggregate.yml @@ -1,6 +1,7 @@ runOn: - minServerVersion: "3.6.0" + serverless: "forbid" # serverless does not support $listLocalSessions or $currentOp database_name: &database_name "admin" diff --git a/source/serverless-testing/tests/README.rst b/source/serverless-testing/tests/README.rst new file mode 100644 index 0000000000..bffac5513c --- /dev/null +++ b/source/serverless-testing/tests/README.rst @@ -0,0 +1,84 @@ +================ +Serverless Tests +================ + +.. contents:: + +---- + +Introduction +============ + +This file describes a subset of existing tests that drivers MUST use to assert +compatibility with serverless MongoDB. + +Test Configuration +================== + +These tests MUST be run against a live serverless instance on Atlas. A new +serverless instance MUST be created each time the test suite is run, and it MUST +be deleted once the tests have completed, regardless of their outcome. The +`serverless directory in the drivers-evergreen-tools repository`_ contains +scripts for creating and deleting serverless instances, and the ``config.yml`` +contains an example evergreen configuration that uses them to run the tests. + +.. _serverless directory in the drivers-evergreen-tools repository: https://github.com/mongodb-labs/drivers-evergreen-tools/tree/master/.evergreen/serverless + +All tests MUST be run with wire protocol compression and authentication +enabled. Additionally, serverless requires the usage of the versioned API, so +the tests MUST be run with a server API version specified. + +Required Variables +~~~~~~~~~~~~~~~~~~ + +Managing the serverless instances and connecting to them requires a few +variables to be specified. The variables marked "private" are confidential and +MUST be specified as private Evergreen variables or used only in private +Evergreen projects. If using a public Evergreen project, xtrace MUST be disabled +when using these variables to help prevent accidental leaks. + +- ``${SERVERLESS_DRIVERS_GROUP}``: Contains the ID of the Atlas group dedicated + to drivers testing of serverless MongoDB. + +- ``${SERVERLESS_API_PUBLIC_KEY}``: The public key required to use the Atlas API + for provisioning of serverless instances. + +- ``${SERVERLESS_API_PRIVATE_KEY}``: (private) The private key required to use + the Atlas API for provisioning of serverless instances. + +- ``${SERVERLESS_ATLAS_USER}``: (private) The SCRAM username used to + authenticate to any serverless instance created in the drivers testing Atlas + group. + +- ``${SERVERLESS_ATLAS_PASSWORD}``: (private) The SCRAM password used to + authenticate to any serverless instance created in the drivers testing Atlas + group. + + +Existing Spec Tests +=================== + +Tests defined in the following specifications MUST be included in a driver's +serverless testing suite, including prose tests: + +- CRUD, including the v1, v2, and unified tests + +In the future, this list will be expanded to include a greater portion of the +tests once the serverless proxy has more robust failCommand support. + +Note that the formats for the JSON/YAML tests of these specifications were +updated to include a new ``runOnRequirement`` specifically for serverless +testing, so make sure to update the affected test runners to support this +requirement and then sync the tests. + +The serverless proxy presents itself as a mongos, so any test meant to run +against sharded clusters will be executed by the runners, with the exception of +the tests affected by the previously mentioned ``runOnRequirement``. + +Other Tests +=========== + +Any other existing tests for cursor behavior that a driver may have implemented +independently of any spec requirements SHOULD also be included in the driver's +serverless testing suite. Note that ChangeStreams are not supported by the +proxy, so tests for them cannot be included. diff --git a/source/unified-test-format/schema-1.2.json b/source/unified-test-format/schema-1.3.json similarity index 98% rename from source/unified-test-format/schema-1.2.json rename to source/unified-test-format/schema-1.3.json index 00b25bc580..cfb5de3f12 100644 --- a/source/unified-test-format/schema-1.2.json +++ b/source/unified-test-format/schema-1.3.json @@ -55,6 +55,10 @@ "enum": ["single", "replicaset", "sharded", "sharded-replicaset"] } }, + "serverless": { + "type": "string", + "enum": ["require", "forbid", "allow"] + }, "serverParameters": { "type": "object", "minProperties": 1 diff --git a/source/unified-test-format/tests/Makefile b/source/unified-test-format/tests/Makefile index d0dae29265..ac731a5b67 100644 --- a/source/unified-test-format/tests/Makefile +++ b/source/unified-test-format/tests/Makefile @@ -1,4 +1,4 @@ -SCHEMA=../schema-1.2.json +SCHEMA=../schema-1.3.json .PHONY: all invalid valid-fail valid-pass versioned-api HAS_AJV diff --git a/source/unified-test-format/tests/valid-pass/poc-crud.json b/source/unified-test-format/tests/valid-pass/poc-crud.json index 2ed86d6150..d0033331b2 100644 --- a/source/unified-test-format/tests/valid-pass/poc-crud.json +++ b/source/unified-test-format/tests/valid-pass/poc-crud.json @@ -1,6 +1,6 @@ { "description": "poc-crud", - "schemaVersion": "1.0", + "schemaVersion": "1.3", "createEntities": [ { "client": { @@ -406,7 +406,8 @@ "description": "Aggregate with $listLocalSessions", "runOnRequirements": [ { - "minServerVersion": "3.6.0" + "minServerVersion": "3.6.0", + "serverless": "forbid" } ], "operations": [ diff --git a/source/unified-test-format/tests/valid-pass/poc-crud.yml b/source/unified-test-format/tests/valid-pass/poc-crud.yml index 7d101a077a..811e543c24 100644 --- a/source/unified-test-format/tests/valid-pass/poc-crud.yml +++ b/source/unified-test-format/tests/valid-pass/poc-crud.yml @@ -1,6 +1,6 @@ description: "poc-crud" -schemaVersion: "1.0" +schemaVersion: "1.3" createEntities: - client: @@ -170,6 +170,7 @@ tests: - description: "Aggregate with $listLocalSessions" runOnRequirements: - minServerVersion: "3.6.0" + serverless: forbid # serverless does not support $listLocalSessions operations: - name: aggregate object: *database1 diff --git a/source/unified-test-format/unified-test-format.rst b/source/unified-test-format/unified-test-format.rst index f967d2b996..3485bc0ac3 100644 --- a/source/unified-test-format/unified-test-format.rst +++ b/source/unified-test-format/unified-test-format.rst @@ -3,13 +3,13 @@ Unified Test Format =================== :Spec Title: Unified Test Format -:Spec Version: 1.2.4 +:Spec Version: 1.3.0 :Author: Jeremy Mikola :Advisors: Prashant Mital, Isabel Atkinson, Thomas Reggi :Status: Accepted :Type: Standards :Minimum Server Version: N/A -:Last Modified: 2021-04-08 +:Last Modified: 2021-04-09 .. contents:: @@ -369,6 +369,12 @@ The structure of this object is as follows: "sharded" topology, test runners MUST accept any type of sharded cluster (i.e. "sharded" implies "sharded-replicaset", but not vice versa). +- ``serverless``: Optional string. Whether or not the test should be run on + serverless instances imitating sharded clusters. Valid values are "require", + "forbid", and "allow". If "require", the test MUST only be run on serverless + instances. If "forbid", the test MUST NOT be run on Serverless instances. If + omitted or "allow", this option has no effect. + - ``serverParameters``: Optional object of server parameters to check against. To check server parameters, drivers send a ``{ getParameter: 1, : 1 }`` command to the server using the @@ -2977,6 +2983,8 @@ spec changes developed in parallel or during the same release cycle. Change Log ========== +:2021-04-09: Introduce ``serverless`` `runOnRequirement`_. + :2021-04-08: List additional error codes that may be ignored when calling ``killAllSessions`` and note that the command should not be called when connected to Atlas. diff --git a/source/versioned-api/tests/crud-api-version-1-strict.json b/source/versioned-api/tests/crud-api-version-1-strict.json index 2705b505a8..be16878bb5 100644 --- a/source/versioned-api/tests/crud-api-version-1-strict.json +++ b/source/versioned-api/tests/crud-api-version-1-strict.json @@ -1,6 +1,6 @@ { "description": "CRUD Api Version 1 (strict)", - "schemaVersion": "1.1", + "schemaVersion": "1.3", "runOnRequirements": [ { "minServerVersion": "4.9" @@ -141,6 +141,11 @@ }, { "description": "aggregate on database appends declared API version", + "runOnRequirements": [ + { + "serverless": "forbid" + } + ], "operations": [ { "name": "aggregate", diff --git a/source/versioned-api/tests/crud-api-version-1-strict.yml b/source/versioned-api/tests/crud-api-version-1-strict.yml index 83b72f756a..8fb44dc4ca 100644 --- a/source/versioned-api/tests/crud-api-version-1-strict.yml +++ b/source/versioned-api/tests/crud-api-version-1-strict.yml @@ -1,6 +1,6 @@ description: "CRUD Api Version 1 (strict)" -schemaVersion: "1.1" +schemaVersion: "1.3" runOnRequirements: - minServerVersion: "4.9" @@ -62,6 +62,8 @@ tests: <<: *expectedApiVersion - description: "aggregate on database appends declared API version" + runOnRequirements: + - serverless: "forbid" operations: - name: aggregate object: *adminDatabase diff --git a/source/versioned-api/tests/crud-api-version-1.json b/source/versioned-api/tests/crud-api-version-1.json index 9171858376..530bde1fac 100644 --- a/source/versioned-api/tests/crud-api-version-1.json +++ b/source/versioned-api/tests/crud-api-version-1.json @@ -1,6 +1,6 @@ { "description": "CRUD Api Version 1", - "schemaVersion": "1.1", + "schemaVersion": "1.3", "runOnRequirements": [ { "minServerVersion": "4.9" @@ -141,6 +141,11 @@ }, { "description": "aggregate on database appends declared API version", + "runOnRequirements": [ + { + "serverless": "forbid" + } + ], "operations": [ { "name": "aggregate", diff --git a/source/versioned-api/tests/crud-api-version-1.yml b/source/versioned-api/tests/crud-api-version-1.yml index 3c72e079de..bf98cbd14d 100644 --- a/source/versioned-api/tests/crud-api-version-1.yml +++ b/source/versioned-api/tests/crud-api-version-1.yml @@ -1,6 +1,6 @@ description: "CRUD Api Version 1" -schemaVersion: "1.1" +schemaVersion: "1.3" runOnRequirements: - minServerVersion: "4.9" @@ -64,6 +64,8 @@ tests: <<: *expectedApiVersion - description: "aggregate on database appends declared API version" + runOnRequirements: + - serverless: forbid operations: - name: aggregate object: *adminDatabase