private IUnifiedTestOperation CreateOperation(BsonDocument operation, UnifiedEntityMap entityMap)
        {
            var factory = new UnifiedTestOperationFactory(entityMap, _additionalArgs);

            var operationName      = operation["name"].AsString;
            var operationTarget    = operation["object"].AsString;
            var operationArguments = operation.GetValue("arguments", null)?.AsBsonDocument;

            return(factory.CreateOperation(operationName, operationTarget, operationArguments));
        }
        private void AssertEvents(BsonArray eventItems, UnifiedEntityMap entityMap)
        {
            var unifiedEventMatcher = new UnifiedEventMatcher(new UnifiedValueMatcher(entityMap));

            foreach (var eventItem in eventItems)
            {
                var clientId      = eventItem["client"].AsString;
                var eventCapturer = entityMap.EventCapturers[clientId];
                var actualEvents  = eventCapturer.Events;

                unifiedEventMatcher.AssertEventsMatch(actualEvents, eventItem["events"].AsBsonArray);
            }
        }
        private void AssertEvents(BsonArray eventItems, UnifiedEntityMap entityMap)
        {
            var unifiedEventMatcher = new UnifiedEventMatcher(new UnifiedValueMatcher(entityMap));

            foreach (var eventItem in eventItems.Cast <BsonDocument>())
            {
                var clientId      = eventItem["client"].AsString;
                var eventCapturer = entityMap.EventCapturers[clientId];
                var eventType     = eventItem.GetValue("eventType", defaultValue: "command").AsString;
                var actualEvents  = UnifiedEventMatcher.FilterEventsByType(eventCapturer.Events, eventType);

                unifiedEventMatcher.AssertEventsMatch(actualEvents, eventItem["events"].AsBsonArray);
            }
        }
 public UnifiedLoopOperation(
     UnifiedEntityMap entityMap,
     BsonArray loopOperations,
     string storeErrorsAsEntity,
     string storeFailuresAsEntity,
     string storeIterationsAsEntity,
     string storeSuccessesAsEntity,
     CancellationToken loopCancellationToken)
 {
     _entityMap = Ensure.IsNotNull(entityMap, nameof(entityMap));
     _errorDescriptionDocuments   = new BsonArray();
     _failureDescriptionDocuments = new BsonArray();
     _loopOperations          = Ensure.IsNotNull(loopOperations, nameof(loopOperations));
     _storeErrorsAsEntity     = storeErrorsAsEntity;     // can be null
     _storeFailuresAsEntity   = storeFailuresAsEntity;   // can be null
     _storeIterationsAsEntity = storeIterationsAsEntity; // can be null
     _storeSuccessesAsEntity  = storeSuccessesAsEntity;  // can be null
     _loopCancellationToken   = loopCancellationToken;
 }
Пример #5
0
 public UnifiedAggregateOnCollectionOperationBuilder(UnifiedEntityMap entityMap)
 {
     _entityMap = entityMap;
 }
 public UnifiedCreateCollectionOperationBuilder(UnifiedEntityMap entityMap)
 {
     _entityMap = entityMap;
 }
 public UnifiedAbortTransactionOperationBuilder(UnifiedEntityMap entityMap)
 {
     _entityMap = entityMap;
 }
Пример #8
0
 public UnifiedListDatabasesOperationBuilder(UnifiedEntityMap entityMap)
 {
     _entityMap = entityMap;
 }
 public UnifiedDistinctOperationBuilder(UnifiedEntityMap entityMap)
 {
     _entityMap = entityMap;
 }
Пример #10
0
 public UnifiedListIndexesOperationBuilder(UnifiedEntityMap entityMap)
 {
     _entityMap = entityMap;
 }
Пример #11
0
 public UnifiedFindOneAndUpdateOperationBuilder(UnifiedEntityMap entityMap)
 {
     _entityMap = entityMap;
 }
Пример #12
0
 public UnifiedAssertSessionUnpinnedOperationBuilder(UnifiedEntityMap entityMap)
 {
     _entityMap = entityMap;
 }
Пример #13
0
 public UnifiedRunCommandOperationBuilder(UnifiedEntityMap entityMap)
 {
     _entityMap = entityMap;
 }
Пример #14
0
 public UnifiedGridFsDeleteOperationBuilder(UnifiedEntityMap entityMap)
 {
     _entityMap = entityMap;
 }
Пример #15
0
 public UnifiedTestOperationFactory(UnifiedEntityMap entityMap)
 {
     _entityMap = entityMap;
 }
 public UnifiedAggregateOnDatabaseOperationBuilder(UnifiedEntityMap entityMap)
 {
     _entityMap = entityMap;
 }
Пример #17
0
 public UnifiedCreateFindCursorOperationBuilder(UnifiedEntityMap entityMap)
 {
     _entityMap = entityMap;
 }
 public UnifiedListCollectionsOperationBuilder(UnifiedEntityMap entityMap)
 {
     _entityMap = entityMap;
 }
        private void AssertResult(OperationResult actualResult, BsonDocument operation, UnifiedEntityMap entityMap)
        {
            if (operation.GetValue("ignoreResultAndError", defaultValue: false).ToBoolean())
            {
                return;
            }

            if (operation.TryGetValue("expectResult", out var expectedResult))
            {
                actualResult.Exception.Should().BeNull();

                new UnifiedValueMatcher(entityMap).AssertValuesMatch(actualResult.Result, expectedResult);
            }
            if (operation.TryGetValue("expectError", out var expectedError))
            {
                actualResult.Exception.Should().NotBeNull();
                actualResult.Result.Should().BeNull();

                new UnifiedErrorMatcher().AssertErrorsMatch(actualResult.Exception, expectedError.AsBsonDocument);
            }
            else
            {
                actualResult.Exception.Should().BeNull();
            }
            if (operation.TryGetValue("saveResultAsEntity", out var saveResultAsEntity))
            {
                if (actualResult.Result != null)
                {
                    entityMap.AddResult(saveResultAsEntity.AsString, actualResult.Result);
                }
                else if (actualResult.ChangeStream != null)
                {
                    entityMap.ChangeStreams.Add(saveResultAsEntity.AsString, actualResult.ChangeStream);
                }
                else if (actualResult.Cursor != null)
                {
                    entityMap.Cursors.Add(saveResultAsEntity.AsString, actualResult.Cursor);
                }
                else
                {
                    throw new AssertionException($"Expected result to be present but none found to save with id: '{saveResultAsEntity.AsString}'.");
                }
            }
        }
 public UnifiedAssertNumberConnectionsCheckedOutOperationBuilder(UnifiedEntityMap entityMap)
 {
     _entityMap = entityMap;
 }
        public void Run(
            string schemaVersion,
            BsonArray testSetRunOnRequirements,
            BsonArray entities,
            BsonArray initialData,
            BsonArray runOnRequirements,
            string skipReason,
            BsonArray operations,
            BsonArray expectedEvents,
            BsonArray outcome,
            bool async)
        {
            if (_runHasBeenCalled)
            {
                throw new InvalidOperationException("The test suite has already been run.");
            }
            _runHasBeenCalled = true;

            var schemaSemanticVersion = SemanticVersion.Parse(schemaVersion);

            if (schemaSemanticVersion < new SemanticVersion(1, 0, 0) ||
                schemaSemanticVersion > new SemanticVersion(1, 6, 0))
            {
                throw new FormatException($"Schema version '{schemaVersion}' is not supported.");
            }
            if (testSetRunOnRequirements != null)
            {
                RequireServer.Check().RunOn(testSetRunOnRequirements);
            }
            if (runOnRequirements != null)
            {
                RequireServer.Check().RunOn(runOnRequirements);
            }
            if (skipReason != null)
            {
                throw new SkipException($"Test skipped because '{skipReason}'.");
            }

            KillOpenTransactions(DriverTestConfiguration.Client);

            _entityMap = new UnifiedEntityMapBuilder(_eventFormatters, _loggerFactory).Build(entities);

            if (initialData != null)
            {
                AddInitialData(DriverTestConfiguration.Client, initialData);
            }

            foreach (var operation in operations)
            {
                var cancellationToken = CancellationToken.None;
                CreateAndRunOperation(operation.AsBsonDocument, async, cancellationToken);
            }

            if (expectedEvents != null)
            {
                AssertEvents(expectedEvents, _entityMap);
            }
            if (outcome != null)
            {
                AssertOutcome(DriverTestConfiguration.Client, outcome);
            }
        }
Пример #22
0
 public UnifiedInsertOneOperationBuilder(UnifiedEntityMap entityMap)
 {
     _entityMap = entityMap;
 }
 public UnifiedCountDocumentsOperationBuilder(UnifiedEntityMap entityMap)
 {
     _entityMap = entityMap;
 }
Пример #24
0
 public UnifiedBulkWriteOperationBuilder(UnifiedEntityMap entityMap)
 {
     _entityMap = entityMap;
 }
 public UnifiedDeleteManyOperationBuilder(UnifiedEntityMap entityMap)
 {
     _entityMap = entityMap;
 }
 public UnifiedAssertDifferentLsidOnLastTwoCommandsOperationBuilder(UnifiedEntityMap entityMap)
 {
     _entityMap = entityMap;
 }
 public UnifiedIterateUntilDocumentOrErrorOperationBuilder(UnifiedEntityMap entityMap)
 {
     _entityMap = entityMap;
 }
Пример #28
0
 public UnifiedEndSessionOperationBuilder(UnifiedEntityMap entityMap)
 {
     _entityMap = entityMap;
 }
Пример #29
0
 public UnifiedReplaceOneOperationBuilder(UnifiedEntityMap entityMap)
 {
     _entityMap = entityMap;
 }
 public UnifiedEstimatedDocumentCountOperationBuilder(UnifiedEntityMap entityMap)
 {
     _entityMap = entityMap;
 }