description: "poc-transactions" schemaVersion: "1.0" runOnRequirements: - minServerVersion: "4.0" topologies: [ replicaset ] - minServerVersion: "4.1.8" topologies: [ sharded-replicaset ] createEntities: - client: id: &client0 client0 observeEvents: [ commandStartedEvent ] - database: id: &database0 database0 client: *client0 databaseName: &database0Name transaction-tests - collection: id: &collection0 collection0 database: *database0 collectionName: &collection0Name test - session: id: &session0 session0 client: *client0 initialData: - collectionName: *collection0Name databaseName: *database0Name documents: [] tests: - description: "Client side error in command starting transaction" operations: - name: startTransaction object: *session0 - name: updateOne object: *collection0 arguments: session: *session0 filter: { _id: 1 } update: { x: 1 } # Original test only asserted a generic error expectError: { isClientError: true } - name: assertSessionTransactionState object: testRunner arguments: session: *session0 state: starting - description: "explicitly create collection using create command" runOnRequirements: - minServerVersion: "4.3.4" topologies: [ replicaset, sharded-replicaset ] operations: - name: dropCollection object: *database0 arguments: collection: *collection0Name - name: startTransaction object: *session0 - name: createCollection object: *database0 arguments: session: *session0 collection: *collection0Name - name: assertCollectionNotExists object: testRunner arguments: databaseName: *database0Name collectionName: *collection0Name - name: commitTransaction object: *session0 - name: assertCollectionExists object: testRunner arguments: databaseName: *database0Name collectionName: *collection0Name expectEvents: - client: *client0 events: - commandStartedEvent: command: drop: *collection0Name writeConcern: { $$exists: false } commandName: drop databaseName: *database0Name - commandStartedEvent: command: create: *collection0Name lsid: { $$sessionLsid: *session0 } txnNumber: 1 startTransaction: true autocommit: false writeConcern: { $$exists: false } commandName: create databaseName: *database0Name - commandStartedEvent: command: commitTransaction: 1 lsid: { $$sessionLsid: *session0 } txnNumber: 1 startTransaction: { $$exists: false } autocommit: false writeConcern: { $$exists: false } commandName: commitTransaction databaseName: admin - description: "create index on a non-existing collection" runOnRequirements: - minServerVersion: "4.3.4" topologies: [ replicaset, sharded-replicaset ] operations: - name: dropCollection object: *database0 arguments: collection: *collection0Name - name: startTransaction object: *session0 - name: createIndex object: *collection0 arguments: session: *session0 name: &indexName "x_1" keys: { x: 1 } - name: assertIndexNotExists object: testRunner arguments: databaseName: *database0Name collectionName: *collection0Name indexName: *indexName - name: commitTransaction object: *session0 - name: assertIndexExists object: testRunner arguments: databaseName: *database0Name collectionName: *collection0Name indexName: *indexName expectEvents: - client: *client0 events: - commandStartedEvent: command: drop: *collection0Name writeConcern: { $$exists: false } commandName: drop databaseName: *database0Name - commandStartedEvent: command: createIndexes: *collection0Name indexes: - name: *indexName key: { x: 1 } lsid: { $$sessionLsid: *session0 } txnNumber: 1 startTransaction: true autocommit: false writeConcern: { $$exists: false } commandName: createIndexes databaseName: *database0Name - commandStartedEvent: command: commitTransaction: 1 lsid: { $$sessionLsid: *session0 } txnNumber: 1 startTransaction: { $$exists: false } autocommit: false writeConcern: { $$exists: false } commandName: commitTransaction databaseName: admin