public void CreateCommand_should_throw_when_ReadConcern_is_set_but_not_supported() { var subject = new MapReduceOperation <BsonDocument>(_collectionNamespace, _mapFunction, _reduceFunction, _resultSerializer, _messageEncoderSettings) { ReadConcern = ReadConcern.Majority }; var connectionDescription = OperationTestHelper.CreateConnectionDescription(Feature.ReadConcern.LastNotSupportedVersion); var session = OperationTestHelper.CreateSession(); var exception = Record.Exception(() => subject.CreateCommand(connectionDescription, session)); exception.Should().BeOfType <MongoClientException>(); }
public void CreateCommand_should_throw_when_ReadConcern_is_set_but_not_supported() { var subject = new CountOperation(_collectionNamespace, _messageEncoderSettings) { ReadConcern = new ReadConcern(ReadConcernLevel.Linearizable) }; var connectionDescription = OperationTestHelper.CreateConnectionDescription(Feature.ReadConcern.LastNotSupportedVersion); var session = OperationTestHelper.CreateSession(); var exception = Record.Exception(() => subject.CreateCommand(connectionDescription, session)); exception.Should().BeOfType <MongoClientException>(); }
public void CreateCommand_should_throw_when_ReadConcern_is_set_and_not_supported() { var subject = new DistinctOperation <int>(_collectionNamespace, _valueSerializer, _fieldName, _messageEncoderSettings) { ReadConcern = new ReadConcern(ReadConcernLevel.Local) }; var connectionDescription = OperationTestHelper.CreateConnectionDescription(Feature.ReadConcern.LastNotSupportedVersion); var session = OperationTestHelper.CreateSession(); var exception = Record.Exception(() => subject.CreateCommand(connectionDescription, session)); exception.Should().BeOfType <MongoClientException>(); }
public void CreateCommand_should_throw_when_Collation_is_set_but_not_supported() { var subject = new CountOperation(_collectionNamespace, _messageEncoderSettings) { Collation = new Collation("en_US") }; var connectionDescription = OperationTestHelper.CreateConnectionDescription(Feature.Collation.LastNotSupportedVersion); var session = OperationTestHelper.CreateSession(); var exception = Record.Exception(() => subject.CreateCommand(connectionDescription, session)); exception.Should().BeOfType <NotSupportedException>(); }
public void CreateCommand_should_return_expected_result() { var subject = new DropCollectionOperation(_collectionNamespace, _messageEncoderSettings); var expectedResult = new BsonDocument { { "drop", _collectionNamespace.CollectionName } }; var session = OperationTestHelper.CreateSession(); var connectionDescription = OperationTestHelper.CreateConnectionDescription(); var result = subject.CreateCommand(session, connectionDescription); result.Should().Be(expectedResult); }
public void CreateCommand_should_throw_when_Collation_is_set() { var subject = new AggregateOperation <BsonDocument>(_collectionNamespace, __pipeline, __resultSerializer, _messageEncoderSettings) { Collation = new Collation("en_US") }; var connectionDescription = OperationTestHelper.CreateConnectionDescription(Feature.Collation.LastNotSupportedVersion); var session = OperationTestHelper.CreateSession(); var exception = Record.Exception(() => subject.CreateCommand(connectionDescription, session)); exception.Should().BeOfType <NotSupportedException>(); }
public void CreateCommand_should_create_the_correct_command( [Values("3.0.0", "3.2.0")] string serverVersionString, [Values(null, ReadConcernLevel.Local, ReadConcernLevel.Majority)] ReadConcernLevel?readConcernLevel) { var serverVersion = SemanticVersion.Parse(serverVersionString); var filter = new BsonDocument("x", 1); var limit = 10; var maxDistance = 30; var maxTime = TimeSpan.FromMilliseconds(50); var near = new BsonArray { 10, 20 }; var readConcern = new ReadConcern(readConcernLevel); var subject = new GeoSearchOperation <BsonDocument>(_collectionNamespace, near, BsonDocumentSerializer.Instance, _messageEncoderSettings) { Search = filter, Limit = limit, MaxDistance = maxDistance, MaxTime = maxTime, ReadConcern = readConcern }; var connectionDescription = OperationTestHelper.CreateConnectionDescription(serverVersion); var session = OperationTestHelper.CreateSession(); if (!readConcern.IsServerDefault && !Feature.ReadConcern.IsSupported(serverVersion)) { var exception = Record.Exception(() => subject.CreateCommand(connectionDescription, session)); exception.Should().BeOfType <MongoClientException>(); } else { var result = subject.CreateCommand(connectionDescription, session); var expectedResult = new BsonDocument { { "geoSearch", _collectionNamespace.CollectionName }, { "near", near }, { "limit", limit }, { "maxDistance", maxDistance }, { "search", filter }, { "maxTimeMS", (int)maxTime.TotalMilliseconds }, { "readConcern", () => readConcern.ToBsonDocument(), !readConcern.IsServerDefault } }; result.Should().Be(expectedResult); result["maxTimeMS"].BsonType.Should().Be(BsonType.Int32); } }
public void CreateCommand_should_throw_when_commitQuorum_is_specified_and_not_supported() { var requests = new[] { new CreateIndexRequest(new BsonDocument("x", 1)) }; var commitQuorum = CreateIndexCommitQuorum.Create(1); var subject = new CreateIndexesUsingCommandOperation(_collectionNamespace, requests, _messageEncoderSettings) { CommitQuorum = commitQuorum }; var session = OperationTestHelper.CreateSession(); var connectionDescription = OperationTestHelper.CreateConnectionDescription(serverVersion: Feature.CreateIndexCommitQuorum.LastNotSupportedVersion); var exception = Record.Exception(() => subject.CreateCommand(session, connectionDescription)); exception.Should().BeOfType <NotSupportedException>(); }
public void CreateCommand_should_return_expected_result() { var subject = new FindCommandOperation <BsonDocument>(_collectionNamespace, BsonDocumentSerializer.Instance, _messageEncoderSettings); var connectionDescription = OperationTestHelper.CreateConnectionDescription(); var session = OperationTestHelper.CreateSession(); var result = subject.CreateCommand(connectionDescription, session); var expectedResult = new BsonDocument { { "find", _collectionNamespace.CollectionName } }; result.Should().Be(expectedResult); }
public void CreateCommand_should_throw_when_read_concern_is_not_supported() { var mapFunction = "function() { emit(this.x, this.v); }"; var reduceFunction = "function(key, values) { var sum = 0; for (var i = 0; i < values.length; i++) { sum += values[i]; }; return sum; }"; var subject = new MapReduceLegacyOperation(_collectionNamespace, mapFunction, reduceFunction, _messageEncoderSettings) { ReadConcern = ReadConcern.Majority }; var connectionDescription = OperationTestHelper.CreateConnectionDescription(Feature.ReadConcern.LastNotSupportedVersion); var session = OperationTestHelper.CreateSession(); Action act = () => subject.CreateCommand(connectionDescription, session); act.ShouldThrow <MongoClientException>(); }
public void CreateCommand_should_return_expected_result_when_ReadConcern_is_set( [Values(null, ReadConcernLevel.Linearizable, ReadConcernLevel.Local)] ReadConcernLevel?level) { var readConcern = level == null ? ReadConcern.Default : new ReadConcern(level); var subject = new EstimatedDocumentCountOperation(_collectionNamespace, _messageEncoderSettings) { ReadConcern = readConcern }; var connectionDescription = OperationTestHelper.CreateConnectionDescription(); var session = OperationTestHelper.CreateSession(); var result = CreateCommand(subject, connectionDescription, session); AssertCommandDocument(result, readConcern: readConcern.IsServerDefault?null: readConcern.ToBsonDocument()); }
public void CreateCommand_should_return_expected_result() { var subject = new DistinctOperation <int>(_collectionNamespace, _valueSerializer, _fieldName, _messageEncoderSettings); var connectionDescription = OperationTestHelper.CreateConnectionDescription(); var session = OperationTestHelper.CreateSession(); var result = subject.CreateCommand(connectionDescription, session); var expectedResult = new BsonDocument { { "distinct", _collectionNamespace.CollectionName }, { "key", _fieldName } }; result.Should().Be(expectedResult); }
public void CreateCommand_should_return_expected_result() { var subject = new AggregateToCollectionOperation(_collectionNamespace, __pipeline, _messageEncoderSettings); var session = OperationTestHelper.CreateSession(); var connectionDescription = OperationTestHelper.CreateConnectionDescription(); var result = subject.CreateCommand(session, connectionDescription); var expectedResult = new BsonDocument { { "aggregate", _collectionNamespace.CollectionName }, { "pipeline", new BsonArray(__pipeline) }, { "cursor", new BsonDocument() } }; result.Should().Be(expectedResult); }
public void CreateCommand_should_return_the_expected_result() { var subject = new AggregateOperation <BsonDocument>(_collectionNamespace, __pipeline, __resultSerializer, _messageEncoderSettings); var serverVersion = Feature.AggregateCursorResult.FirstSupportedVersion; var connectionDescription = OperationTestHelper.CreateConnectionDescription(serverVersion); var session = OperationTestHelper.CreateSession(); var result = subject.CreateCommand(connectionDescription, session); var expectedResult = new BsonDocument { { "aggregate", _collectionNamespace.CollectionName }, { "pipeline", new BsonArray(__pipeline) }, { "cursor", new BsonDocument() } }; result.Should().Be(expectedResult); }
public void CreateCommand_should_return_the_expected_result() { var subject = new FakeMapReduceOperation(_collectionNamespace, _mapFunction, _reduceFunction, _messageEncoderSettings); var session = OperationTestHelper.CreateSession(); var connectionDescription = OperationTestHelper.CreateConnectionDescription(); var result = subject.CreateCommand(session, connectionDescription); var expectedResult = new BsonDocument { { "mapReduce", _collectionNamespace.CollectionName }, { "map", _mapFunction }, { "reduce", _reduceFunction }, { "out", new BsonDocument("fake", 1) } }; result.Should().Be(expectedResult); }
public void CreateCommand_should_return_expected_result() { var subject = new GeoNearOperation <BsonDocument>(_collectionNamespace, _near, _resultSerializer, _messageEncoderSettings); var connectionDescription = OperationTestHelper.CreateConnectionDescription(); var session = OperationTestHelper.CreateSession(); var result = subject.CreateCommand(connectionDescription, session); var expectedResult = new BsonDocument { { "geoNear", _collectionNamespace.CollectionName }, { "near", new BsonArray { 1, 2 } } }; result.Should().Be(expectedResult); }
public void CreateCommand_should_return_expected_result_when_creating_one_index() { var requests = new[] { new CreateIndexRequest(new BsonDocument("x", 1)) }; var subject = new CreateIndexesUsingCommandOperation(_collectionNamespace, requests, _messageEncoderSettings); var session = OperationTestHelper.CreateSession(); var connectionDescription = OperationTestHelper.CreateConnectionDescription(); var result = subject.CreateCommand(session, connectionDescription); var expectedResult = new BsonDocument { { "createIndexes", _collectionNamespace.CollectionName }, { "indexes", new BsonArray { requests[0].CreateIndexDocument(null) } } }; result.Should().Be(expectedResult); }
public void CreateCommand_should_return_expected_result( [Values(null, 100L)] long?transactionNumber) { var subject = new FindOneAndReplaceOperation <BsonDocument>(_collectionNamespace, _filter, _replacement, BsonDocumentSerializer.Instance, _messageEncoderSettings); var session = OperationTestHelper.CreateSession(); var connectionDescription = OperationTestHelper.CreateConnectionDescription(); var result = subject.CreateCommand(session, connectionDescription, transactionNumber); var expectedResult = new BsonDocument { { "findAndModify", _collectionNamespace.CollectionName }, { "query", _filter }, { "update", _replacement }, { "txnNumber", () => transactionNumber, transactionNumber != null } }; result.Should().Be(expectedResult); }
public void CreateCommand_should_return_expected_result( [Values("a", "b")] string viewName) { var subject = new CreateViewOperation(_databaseNamespace, viewName, _collectionNamespace.CollectionName, _pipeline, _messageEncoderSettings); var session = OperationTestHelper.CreateSession(); var connectionDescription = OperationTestHelper.CreateConnectionDescription(); var result = subject.CreateCommand(session, connectionDescription); var expectedResult = new BsonDocument { { "create", viewName }, { "viewOn", _collectionNamespace.CollectionName }, { "pipeline", new BsonArray(_pipeline) } }; result.Should().Be(expectedResult); }
public void CreateCommand_should_return_expected_result_when_MaxTime_is_set(long maxTimeTicks, int expectedMaxTimeMS) { var subject = new CountOperation(_collectionNamespace, _messageEncoderSettings) { MaxTime = TimeSpan.FromTicks(maxTimeTicks) }; var connectionDescription = OperationTestHelper.CreateConnectionDescription(); var session = OperationTestHelper.CreateSession(); var result = subject.CreateCommand(connectionDescription, session); var expectedResult = new BsonDocument { { "count", _collectionNamespace.CollectionName }, { "maxTimeMS", expectedMaxTimeMS } }; result.Should().Be(expectedResult); result["maxTimeMS"].BsonType.Should().Be(BsonType.Int32); }
public void CreateCommand_should_return_the_expected_result_when_using_causal_consistency( [Values(null, ReadConcernLevel.Linearizable, ReadConcernLevel.Local)] ReadConcernLevel?level) { var readConcern = level == null ? ReadConcern.Default : new ReadConcern(level); var subject = new EstimatedDocumentCountOperation(_collectionNamespace, _messageEncoderSettings) { ReadConcern = readConcern }; var connectionDescription = OperationTestHelper.CreateConnectionDescription(supportsSessions: true); var session = OperationTestHelper.CreateSession(true, new BsonTimestamp(100)); var result = CreateCommand(subject, connectionDescription, session); var expectedReadConcernDocument = readConcern.ToBsonDocument(); expectedReadConcernDocument["afterClusterTime"] = new BsonTimestamp(100); AssertCommandDocument(result, readConcern: expectedReadConcernDocument); }
public void CreateCommand_should_return_expected_result_when_MaxTime_is_Set(long maxTimeTicks, int expectedMaxTimeMS) { var indexName = "x_1"; var maxTime = TimeSpan.FromTicks(maxTimeTicks); var subject = new DropIndexOperation(_collectionNamespace, indexName, _messageEncoderSettings); subject.MaxTime = maxTime; var expectedResult = new BsonDocument { { "dropIndexes", _collectionNamespace.CollectionName }, { "index", indexName }, { "maxTimeMS", expectedMaxTimeMS } }; var session = OperationTestHelper.CreateSession(); var connectionDescription = OperationTestHelper.CreateConnectionDescription(); var result = subject.CreateCommand(session, connectionDescription); result.Should().Be(expectedResult); result["maxTimeMS"].BsonType.Should().Be(BsonType.Int32); }
public void CreateCommand_should_return_expected_result_when_Capped_is_set( [Values(null, false, true)] bool?capped) { var subject = new CreateCollectionOperation(_collectionNamespace, _messageEncoderSettings) { Capped = capped }; var session = OperationTestHelper.CreateSession(); var connectionDescription = OperationTestHelper.CreateConnectionDescription(); var result = subject.CreateCommand(session, connectionDescription); var expectedResult = new BsonDocument { { "create", _collectionNamespace.CollectionName }, { "capped", () => capped.Value, capped != null } }; result.Should().Be(expectedResult); }
public void CreateCommand_should_return_expected_result_when_MaxSize_is_set( [Values(null, 1L, 2L)] long?maxSize) { var subject = new CreateCollectionOperation(_collectionNamespace, _messageEncoderSettings) { MaxSize = maxSize }; var session = OperationTestHelper.CreateSession(); var connectionDescription = OperationTestHelper.CreateConnectionDescription(); var result = subject.CreateCommand(session, connectionDescription); var expectedResult = new BsonDocument { { "create", _collectionNamespace.CollectionName }, { "size", () => maxSize.Value, maxSize != null } }; result.Should().Be(expectedResult); }
public void CreateCommand_should_return_expected_result_when_NoPadding_is_set( [Values(null, false, true)] bool?noPadding) { var subject = new CreateCollectionOperation(_collectionNamespace, _messageEncoderSettings) { NoPadding = noPadding }; var session = OperationTestHelper.CreateSession(); var connectionDescription = OperationTestHelper.CreateConnectionDescription(); var result = subject.CreateCommand(session, connectionDescription); var expectedResult = new BsonDocument { { "create", _collectionNamespace.CollectionName }, { "flags", () => noPadding.Value ? 2 : 0, noPadding != null } }; result.Should().Be(expectedResult); }
public void CreateCommand_should_return_expected_result_when_UsePowerOf2Sizes_is_set( [Values(null, false, true)] bool?usePowerOf2Sizes) { var subject = new CreateCollectionOperation(_collectionNamespace, _messageEncoderSettings) { UsePowerOf2Sizes = usePowerOf2Sizes }; var session = OperationTestHelper.CreateSession(); var connectionDescription = OperationTestHelper.CreateConnectionDescription(); var result = subject.CreateCommand(session, connectionDescription); var expectedResult = new BsonDocument { { "create", _collectionNamespace.CollectionName }, { "flags", () => usePowerOf2Sizes.Value ? 1 : 0, usePowerOf2Sizes != null } }; result.Should().Be(expectedResult); }
public void CreateCommand_should_return_expected_result_when_dropTarget_is_provided( [Values(false, true)] bool dropTarget) { var subject = new RenameCollectionOperation(_collectionNamespace, _newCollectionNamespace, _messageEncoderSettings) { DropTarget = dropTarget }; var expectedResult = new BsonDocument { { "renameCollection", _collectionNamespace.FullName }, { "to", _newCollectionNamespace.FullName }, { "dropTarget", dropTarget } }; var session = OperationTestHelper.CreateSession(); var connectionDescription = OperationTestHelper.CreateConnectionDescription(); var result = subject.CreateCommand(session, connectionDescription); result.Should().Be(expectedResult); }
public void CreateCommand_should_return_expected_result_when_ValidationLevel_is_set( [Values(null, DocumentValidationLevel.Moderate, DocumentValidationLevel.Off)] DocumentValidationLevel?validationLevel) { var subject = new CreateCollectionOperation(_collectionNamespace, _messageEncoderSettings) { ValidationLevel = validationLevel }; var session = OperationTestHelper.CreateSession(); var connectionDescription = OperationTestHelper.CreateConnectionDescription(); var result = subject.CreateCommand(session, connectionDescription); var expectedResult = new BsonDocument { { "create", _collectionNamespace.CollectionName }, { "validationLevel", () => validationLevel.ToString().ToLowerInvariant(), validationLevel != null } }; result.Should().Be(expectedResult); }
public void CreateCommand_should_create_the_correct_command( [Values(WireVersion.Server30, WireVersion.Server32)] int maxWireVersion, [Values(null, ReadConcernLevel.Local, ReadConcernLevel.Majority)] ReadConcernLevel?readConcernLevel) { var filter = new BsonDocument("x", 1); var limit = 10; var maxDistance = 30; var maxTime = TimeSpan.FromMilliseconds(50); var near = new BsonArray { 10, 20 }; var readConcern = new ReadConcern(readConcernLevel); var subject = new GeoSearchOperation <BsonDocument>(_collectionNamespace, near, BsonDocumentSerializer.Instance, _messageEncoderSettings) { Search = filter, Limit = limit, MaxDistance = maxDistance, MaxTime = maxTime, ReadConcern = readConcern }; var connectionDescription = OperationTestHelper.CreateConnectionDescription(maxWireVersion); var session = OperationTestHelper.CreateSession(); var result = subject.CreateCommand(connectionDescription, session); var expectedResult = new BsonDocument { { "geoSearch", _collectionNamespace.CollectionName }, { "near", near }, { "limit", limit }, { "maxDistance", maxDistance }, { "search", filter }, { "maxTimeMS", (int)maxTime.TotalMilliseconds }, { "readConcern", () => readConcern.ToBsonDocument(), !readConcern.IsServerDefault } }; result.Should().Be(expectedResult); result["maxTimeMS"].BsonType.Should().Be(BsonType.Int32); }
public void ReadConcern_document_should_contain_the_expected_values( [Values(false, true)] bool supportsSessions, [Values(false, true)] bool causallyConsistent, [Values(null, 10L)] long?operationTime, [Values(null, ReadConcernLevel.Majority)] ReadConcernLevel?level) { var connectionDescription = OperationTestHelper.CreateConnectionDescription(supportsSessions: supportsSessions); BsonTimestamp timestamp = operationTime == null ? null : new BsonTimestamp(operationTime.Value); var session = OperationTestHelper.CreateSession(causallyConsistent, timestamp); var readConcern = ReadConcern.Default; if (level != null) { readConcern = readConcern.With(level.Value); } var command = new BsonDocument(); ReadConcernHelper.AppendReadConcern(command, readConcern, connectionDescription, session); if ((!supportsSessions || !causallyConsistent || operationTime == null) && level == null) { command.ElementCount.Should().Be(0); } else { command.Contains("readConcern").Should().BeTrue(); } if (level != null) { command["readConcern"]["level"].AsString.Should().Be("majority"); } if (supportsSessions && causallyConsistent && operationTime != null) { command["readConcern"]["afterClusterTime"].AsBsonTimestamp.Value.Should().Be(operationTime.Value); } }