public async Task ExecuteAsync_should_create_collection_when_Capped_is_set(
            [Values(false, true)]
            bool capped)
        {
            var maxSize = capped ? (long?)10000 : null;
            var subject = new CreateCollectionOperation(_collectionNamespace, _messageEncoderSettings)
            {
                Capped  = capped,
                MaxSize = maxSize
            };

            using (var binding = SuiteConfiguration.GetReadWriteBinding())
            {
                var result = await subject.ExecuteAsync(binding);

                result["ok"].ToBoolean().Should().BeTrue();

                var stats = await GetCollectionStatsAsync(binding);

                stats["ns"].ToString().Should().Be(_collectionNamespace.FullName);
                if (capped)
                {
                    stats["capped"].ToBoolean().Should().BeTrue();
                }
                else
                {
                    stats.Contains("capped").Should().BeFalse();
                }
            }
        }
 private BsonDocument ExecuteOperation(CreateCollectionOperation subject, IWriteBinding binding, bool async)
 {
     if (async)
     {
         return(subject.ExecuteAsync(binding, CancellationToken.None).GetAwaiter().GetResult());
     }
     else
     {
         return(subject.Execute(binding, CancellationToken.None));
     }
 }
예제 #3
0
        public async Task ExecuteAsync_should_return_expected_result()
        {
            using (var binding = SuiteConfiguration.GetReadWriteBinding())
            {
                var subject = new DropCollectionOperation(_collectionNamespace, _messageEncoderSettings);
                var createCollectionOperation = new CreateCollectionOperation(_collectionNamespace, _messageEncoderSettings);
                await createCollectionOperation.ExecuteAsync(binding, CancellationToken.None);

                var result = await subject.ExecuteAsync(binding, CancellationToken.None);

                result["ok"].ToBoolean().Should().BeTrue();
                result["ns"].ToString().Should().Be(_collectionNamespace.FullName);
            }
        }
        public async Task ExecuteAsync_should_create_collection()
        {
            var subject = new CreateCollectionOperation(_collectionNamespace, _messageEncoderSettings);

            using (var binding = CoreTestConfiguration.GetReadWriteBinding())
            {
                var result = await subject.ExecuteAsync(binding, CancellationToken.None);

                result["ok"].ToBoolean().Should().BeTrue();

                var stats = await GetCollectionStatsAsync(binding);

                stats["ns"].ToString().Should().Be(_collectionNamespace.FullName);
            }
        }
예제 #5
0
 private void EnsureCollectionExists(IWriteBinding binding, CollectionNamespace collectionNamespace)
 {
     try
     {
         var operation = new CreateCollectionOperation(collectionNamespace, _messageEncoderSettings);
         operation.ExecuteAsync(binding, CancellationToken.None).GetAwaiter().GetResult();
     }
     catch (MongoCommandException ex)
     {
         if (ex.Message == "Command create failed: collection already exists.")
         {
             return;
         }
         throw;
     }
 }
예제 #6
0
        public async Task ExecuteAsync_should_create_collection_when_UsePowerOf2Sizes_is_set(
            [Values(false, true)]
            bool usePowerOf2Sizes)
        {
            var subject = new CreateCollectionOperation(_collectionNamespace, _messageEncoderSettings)
            {
                UsePowerOf2Sizes = usePowerOf2Sizes
            };

            using (var binding = SuiteConfiguration.GetReadWriteBinding())
            {
                var result = await subject.ExecuteAsync(binding, CancellationToken.None);

                result["ok"].ToBoolean().Should().BeTrue();

                var stats = await GetCollectionStatsAsync(binding);

                stats["ns"].ToString().Should().Be(_collectionNamespace.FullName);
                stats["userFlags"].ToInt32().Should().Be(usePowerOf2Sizes ? 1 : 0);
            }
        }
예제 #7
0
        public async Task ExecuteAsync_should_create_collection_when_AutoIndexId_is_set(
            [Values(false, true)]
            bool autoIndexId)
        {
            var subject = new CreateCollectionOperation(_collectionNamespace, _messageEncoderSettings)
            {
                AutoIndexId = autoIndexId
            };

            using (var binding = SuiteConfiguration.GetReadWriteBinding())
            {
                var result = await subject.ExecuteAsync(binding, CancellationToken.None);

                result["ok"].ToBoolean().Should().BeTrue();

                var listIndexesOperation = new ListIndexesOperation(_collectionNamespace, _messageEncoderSettings);
                var indexes = await listIndexesOperation.ExecuteAsync(binding, CancellationToken.None);

                indexes.Count().Should().Be(autoIndexId ? 1 : 0);
            }
        }
        public async Task ExecuteAsync_should_create_collection_when_AutoIndexId_is_set(
            [Values(false, true)]
            bool autoIndexId)
        {
            var subject = new CreateCollectionOperation(_collectionNamespace, _messageEncoderSettings)
            {
                AutoIndexId = autoIndexId
            };

            using (var binding = SuiteConfiguration.GetReadWriteBinding())
            {
                var result = await subject.ExecuteAsync(binding);

                result["ok"].ToBoolean().Should().BeTrue();

                var stats = await GetCollectionStatsAsync(binding);

                stats["ns"].ToString().Should().Be(_collectionNamespace.FullName);
                stats["systemFlags"].ToInt32().Should().Be(autoIndexId ? 1 : 0);
            }
        }
예제 #9
0
        public async Task ExecuteAsync_should_create_collection_when_MaxSize_is_set()
        {
            var maxSize = 10000L;
            var subject = new CreateCollectionOperation(_collectionNamespace, _messageEncoderSettings)
            {
                Capped  = true,
                MaxSize = maxSize
            };

            using (var binding = SuiteConfiguration.GetReadWriteBinding())
            {
                var result = await subject.ExecuteAsync(binding, CancellationToken.None);

                result["ok"].ToBoolean().Should().BeTrue();

                var stats = await GetCollectionStatsAsync(binding);

                stats["ns"].ToString().Should().Be(_collectionNamespace.FullName);
                stats["capped"].ToBoolean().Should().BeTrue();
                // TODO: not sure how to verify that the maxSize took effect
            }
        }
예제 #10
0
        public async Task ExecuteAsync_should_create_collection_when_MaxDocuments_is_set()
        {
            var maxDocuments = 123L;
            var subject      = new CreateCollectionOperation(_collectionNamespace, _messageEncoderSettings)
            {
                Capped       = true,
                MaxSize      = 10000L,
                MaxDocuments = maxDocuments
            };

            using (var binding = SuiteConfiguration.GetReadWriteBinding())
            {
                var result = await subject.ExecuteAsync(binding, CancellationToken.None);

                result["ok"].ToBoolean().Should().BeTrue();

                var stats = await GetCollectionStatsAsync(binding);

                stats["ns"].ToString().Should().Be(_collectionNamespace.FullName);
                stats["capped"].ToBoolean().Should().BeTrue();
                stats["max"].ToInt64().Should().Be(maxDocuments);
            }
        }