public void Projection_get_and_set_should_work( [Values(null, "{ a : 1 }", "{ b : 1 }")] string json) { var subject = new FindOpcodeOperation <BsonDocument>(_collectionNamespace, BsonDocumentSerializer.Instance, _messageEncoderSettings); var value = json == null ? null : BsonDocument.Parse(json); subject.Projection = value; var result = subject.Projection; result.Should().Be(value); }
public void MaxTime_set_should_throw_when_value_is_invalid( [Values(-10001, -9999, -1)] long maxTimeTicks) { var subject = new FindOpcodeOperation <BsonDocument>(_collectionNamespace, BsonDocumentSerializer.Instance, _messageEncoderSettings); var value = TimeSpan.FromTicks(maxTimeTicks); var exception = Record.Exception(() => subject.MaxTime = value); var e = exception.Should().BeOfType <ArgumentOutOfRangeException>().Subject; e.ParamName.Should().Be("value"); }
public async Task ExecuteAsync_should_find_all_the_documents_matching_the_query() { RequireServer.Check(); EnsureTestData(); var subject = new FindOpcodeOperation <BsonDocument>(_collectionNamespace, BsonDocumentSerializer.Instance, _messageEncoderSettings); var cursor = await ExecuteOperationAsync(subject); var result = await ReadCursorToEndAsync(cursor); result.Should().HaveCount(5); }
public void CollectionNamespace_get_should_return_expected_result( [Values("a", "b")] string collectionName) { var databaseNamespace = new DatabaseNamespace("test"); var collectionNamespace = new CollectionNamespace(databaseNamespace, collectionName); var subject = new FindOpcodeOperation <BsonDocument>(collectionNamespace, BsonDocumentSerializer.Instance, _messageEncoderSettings); var result = subject.CollectionNamespace; result.Should().Be(collectionNamespace); }
public void MaxTime_get_and_set_should_work( [Values(null, 1)] int?seconds) { var subject = new FindOpcodeOperation <BsonDocument>(_collectionNamespace, BsonDocumentSerializer.Instance, _messageEncoderSettings); var value = seconds == null ? (TimeSpan?)null : TimeSpan.FromSeconds(seconds.Value); subject.MaxTime = value; var result = subject.MaxTime; result.Should().Be(value); }
public void Snapshot_get_and_set_should_work( [Values(null, false, true)] bool?value) { var subject = new FindOpcodeOperation <BsonDocument>(_collectionNamespace, BsonDocumentSerializer.Instance, _messageEncoderSettings); #pragma warning disable 618 subject.Snapshot = value; var result = subject.Snapshot; #pragma warning restore result.Should().Be(value); }
public void MessageEncoderSettings_get_should_return_expected_result( [Values(GuidRepresentation.CSharpLegacy, GuidRepresentation.Standard)] GuidRepresentation guidRepresentation) { var messageEncoderSettings = new MessageEncoderSettings { { "GuidRepresentation", guidRepresentation } }; var subject = new FindOpcodeOperation <BsonDocument>(_collectionNamespace, BsonDocumentSerializer.Instance, messageEncoderSettings); var result = subject.MessageEncoderSettings; result.Should().BeEquivalentTo(messageEncoderSettings); }
public async Task ExecuteAsync_should_find_all_the_documents_matching_the_query_when_split_across_batches() { var subject = new FindOpcodeOperation <BsonDocument>(_collectionNamespace, BsonDocumentSerializer.Instance, _messageEncoderSettings) { BatchSize = 2 }; var cursor = await ExecuteOperationAsync(subject); var result = await ReadCursorToEndAsync(cursor); result.Should().HaveCount(5); }
public void Execute_should_throw_when_maxTime_is_exceeded( [Values(false, true)] bool async) { RequireServer.Check().ClusterTypes(ClusterType.Standalone, ClusterType.ReplicaSet); var subject = new FindOpcodeOperation <BsonDocument>(_collectionNamespace, BsonDocumentSerializer.Instance, _messageEncoderSettings); subject.MaxTime = TimeSpan.FromSeconds(9001); using (var failPoint = FailPoint.ConfigureAlwaysOn(_cluster, _session, FailPointName.MaxTimeAlwaysTimeout)) { var exception = Record.Exception(() => ExecuteOperation(subject, failPoint.Binding, async)); exception.Should().BeOfType <MongoExecutionTimeoutException>(); } }
public async Task ExecuteAsync_should_find_all_the_documents_matching_the_query_when_split_across_batches() { RequireServer.Check().VersionLessThan("3.5.0"); // TODO: should work against 3.6.0 but doesn't in Evergreen (works locally) EnsureTestData(); var subject = new FindOpcodeOperation <BsonDocument>(_collectionNamespace, BsonDocumentSerializer.Instance, _messageEncoderSettings) { BatchSize = 2 }; using (var cursor = await ExecuteOperationAsync(subject)) { var result = await ReadCursorToEndAsync(cursor); result.Should().HaveCount(5); } }
internal FindOpcodeOperation <TDocument> CreateFindOpcodeOperation() { if (!_readConcern.IsServerDefault) { throw new MongoClientException($"ReadConcern {_readConcern} is not supported by FindOpcodeOperation."); } if (_collation != null) { throw new NotSupportedException($"OP_QUERY does not support collations."); } if (_allowDiskUse.HasValue) { throw new NotSupportedException($"OP_QUERY does not support allowDiskUse."); } #pragma warning disable 618 var operation = new FindOpcodeOperation <TDocument>( _collectionNamespace, _resultSerializer, _messageEncoderSettings) { AllowPartialResults = _allowPartialResults, BatchSize = _batchSize, Comment = _comment, CursorType = _cursorType, Filter = _filter, FirstBatchSize = _firstBatchSize, Hint = _hint, Limit = (_singleBatch ?? false) ? -Math.Abs(_limit.Value) : _limit, Max = _max, MaxScan = _maxScan, MaxTime = _maxTime, Min = _min, Modifiers = _modifiers, NoCursorTimeout = _noCursorTimeout, OplogReplay = _oplogReplay, Projection = _projection, ShowRecordId = _showRecordId, Skip = _skip, Snapshot = _snapshot, Sort = _sort }; return(operation); }
public async Task ExecuteAsync_should_find_documents_matching_options() { var subject = new FindOpcodeOperation <BsonDocument>(_collectionNamespace, BsonDocumentSerializer.Instance, _messageEncoderSettings) { Comment = "funny", Filter = BsonDocument.Parse("{ y : 1 }"), Limit = 4, MaxTime = TimeSpan.FromSeconds(20), Projection = BsonDocument.Parse("{ y : 1 }"), Skip = 1, Sort = BsonDocument.Parse("{ _id : -1 }") }; var cursor = await ExecuteOperationAsync(subject); var result = await ReadCursorToEndAsync(cursor); result.Should().HaveCount(1); }
public FindOpcodeExplainOperation(FindOpcodeOperation <BsonDocument> explainOperation) { _explainOperation = explainOperation; }