コード例 #1
0
        public async Task ExplainAsync_for_count_should_execute_an_ExplainOperation()
        {
            var countModel = new CountModel
            {
                Criteria = new BsonDocument("x", 1),
                Hint     = "funny",
                Limit    = 10,
                MaxTime  = TimeSpan.FromSeconds(20),
                Skip     = 30
            };

            var model = new ExplainModel(countModel)
            {
                Verbosity = ExplainVerbosity.ExecutionStats
            };

            await _subject.ExplainAsync(model, Timeout.InfiniteTimeSpan, CancellationToken.None);

            var call = _operationExecutor.GetReadCall <BsonDocument>();

            call.Operation.Should().BeOfType <ExplainOperation>();
            var operation = (ExplainOperation)call.Operation;

            operation.DatabaseNamespace.DatabaseName.Should().Be("foo");
            operation.Command.Should().NotBeNull();
            operation.Verbosity.Should().Be(model.Verbosity.ToCore());
        }
コード例 #2
0
        private Task <BsonDocument> ExplainCountAsync(CountModel model, ExplainVerbosity verbosity, TimeSpan?timeout, CancellationToken cancellationToken)
        {
            var countOperation   = CreateCountOperation(model);
            var explainOperation = countOperation.ToExplainOperation(verbosity.ToCore());

            return(ExecuteReadOperation(explainOperation, timeout, cancellationToken));
        }
コード例 #3
0
        public Task <long> CountAsync(CountModel model, TimeSpan?timeout, CancellationToken cancellationToken)
        {
            Ensure.IsNotNull(model, "model");

            var operation = CreateCountOperation(model);

            return(ExecuteReadOperation(operation, timeout, cancellationToken));
        }
コード例 #4
0
 private CountOperation CreateCountOperation(CountModel model)
 {
     return(new CountOperation(
                _collectionNamespace,
                _messageEncoderSettings)
     {
         Criteria = ConvertToBsonDocument(model.Criteria),
         Hint = model.Hint is string?BsonValue.Create((string)model.Hint) : ConvertToBsonDocument(model.Hint),
                    Limit = model.Limit,
                    MaxTime = model.MaxTime,
                    Skip = model.Skip
     });
 }
コード例 #5
0
        public Task <long> CountAsync(CountModel model, TimeSpan?timeout, CancellationToken cancellationToken)
        {
            Ensure.IsNotNull(model, "model");

            var operation = new CountOperation(
                _collectionNamespace,
                GetMessageEncoderSettings())
            {
                Filter                           = ConvertToBsonDocument(model.Filter),
                Hint                             = model.Hint is string?BsonValue.Create((string)model.Hint) : ConvertToBsonDocument(model.Hint),
                                         Limit   = model.Limit,
                                         MaxTime = model.MaxTime,
                                         Skip    = model.Skip
            };

            return(ExecuteReadOperation(operation, timeout, cancellationToken));
        }
コード例 #6
0
        public async Task CountAsync_should_execute_the_CountOperation()
        {
            var model = new CountModel
            {
                Filter = new BsonDocument("x", 1),
                Hint = "funny",
                Limit = 10,
                MaxTime = TimeSpan.FromSeconds(20),
                Skip = 30
            };
            await _subject.CountAsync(model, Timeout.InfiniteTimeSpan, CancellationToken.None);

            var call = _operationExecutor.GetReadCall<long>();

            call.Operation.Should().BeOfType<CountOperation>();
            var operation = (CountOperation)call.Operation;
            operation.CollectionNamespace.FullName.Should().Be("foo.bar");
            operation.Filter.Should().Be((BsonDocument)model.Filter);
            operation.Hint.Should().Be((string)model.Hint);
            operation.Limit.Should().Be(model.Limit);
            operation.MaxTime.Should().Be(model.MaxTime);
            operation.Skip.Should().Be(model.Skip);
        }
コード例 #7
0
        public async Task CountAsync_should_execute_the_CountOperation()
        {
            var model = new CountModel
            {
                Criteria = new BsonDocument("x", 1),
                Hint     = "funny",
                Limit    = 10,
                MaxTime  = TimeSpan.FromSeconds(20),
                Skip     = 30
            };
            await _subject.CountAsync(model, Timeout.InfiniteTimeSpan, CancellationToken.None);

            var call = _operationExecutor.GetReadCall <long>();

            call.Operation.Should().BeOfType <CountOperation>();
            var operation = (CountOperation)call.Operation;

            operation.CollectionNamespace.FullName.Should().Be("foo.bar");
            operation.Criteria.Should().Be((BsonDocument)model.Criteria);
            operation.Hint.Should().Be((string)model.Hint);
            operation.Limit.Should().Be(model.Limit);
            operation.MaxTime.Should().Be(model.MaxTime);
            operation.Skip.Should().Be(model.Skip);
        }