Exemple #1
0
 protected async Task <TResult> ExecuteOperationAsync <TResult>(IReadOperation <TResult> operation)
 {
     using (var binding = SuiteConfiguration.GetReadBinding())
     {
         return(await operation.ExecuteAsync(binding, CancellationToken.None));
     }
 }
        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();
                }
            }
        }
        public void TestFixtureSetUp()
        {
            var databaseNamespace = SuiteConfiguration.GetDatabaseNamespaceForTestFixture();

            _collectionNamespace    = new CollectionNamespace(databaseNamespace, "old");
            _newCollectionNamespace = new CollectionNamespace(databaseNamespace, "new");
            _messageEncoderSettings = SuiteConfiguration.MessageEncoderSettings;
        }
Exemple #4
0
        // helper methods
        public void DropCollection()
        {
            var operation = new DropCollectionOperation(_collectionNamespace, _messageEncoderSettings);

            using (var binding = SuiteConfiguration.GetReadWriteBinding())
            {
                operation.Execute(binding);
            }
        }
Exemple #5
0
        // helper methods
        public void DropCollection()
        {
            var operation = new DropCollectionOperation(_collectionNamespace, _messageEncoderSettings);

            using (var binding = SuiteConfiguration.GetReadWriteBinding())
            {
                operation.ExecuteAsync(binding, CancellationToken.None).GetAwaiter().GetResult();
            }
        }
        public async Task ExecuteAsync_should_not_throw_when_collection_does_not_exist()
        {
            using (var binding = SuiteConfiguration.GetReadWriteBinding())
            {
                var indexName = "x_1";
                var subject   = new DropIndexOperation(_collectionNamespace, indexName, _messageEncoderSettings);

                await subject.ExecuteAsync(binding, CancellationToken.None); // should not throw
            }
        }
Exemple #7
0
        public async Task ExecuteAsync_should_not_throw_when_collection_does_not_exist()
        {
            using (var binding = SuiteConfiguration.GetReadWriteBinding())
            {
                var subject = new DropCollectionOperation(_collectionNamespace, _messageEncoderSettings);
                var dropCollectionOperation = new DropCollectionOperation(_collectionNamespace, _messageEncoderSettings);
                await dropCollectionOperation.ExecuteAsync(binding, CancellationToken.None);

                await subject.ExecuteAsync(binding, CancellationToken.None); // this will throw if we have a problem...
            }
        }
        public async Task ExecuteAsync_should_return_expected_result_when_collection_does_not_exist()
        {
            using (var binding = SuiteConfiguration.GetReadWriteBinding())
            {
                var subject = new ListIndexesOperation(_collectionNamespace, _messageEncoderSettings);
                await DropCollectionAsync(binding);

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

                result.Count().Should().Be(0);
            }
        }
Exemple #9
0
        public async Task ExecuteAsync_should_return_expected_result()
        {
            using (var binding = SuiteConfiguration.GetReadWriteBinding())
            {
                var subject = new ListDatabaseNamesOperation(_messageEncoderSettings);
                EnsureDatabaseExists(binding);

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

                result.Should().Contain(_databaseNamespace.DatabaseName);
            }
        }
 private void EnsureStorageEngine()
 {
     if (_storageEngines != null)
     {
         var storageEngine = SuiteConfiguration.GetStorageEngine();
         if (!_storageEngines.Contains(storageEngine))
         {
             var message = string.Format("Requires storage engine \"{0}\", but currently connected to a server using storage engine \"{1}\".", StorageEngines, storageEngine);
             Assert.Ignore(message);
         }
     }
 }
        public async Task ExecuteAsync_should_return_expected_result()
        {
            using (var binding = SuiteConfiguration.GetReadWriteBinding())
            {
                var subject = new RenameCollectionOperation(_collectionNamespace, _newCollectionNamespace, _messageEncoderSettings);
                EnsureCollectionExists(binding, _collectionNamespace);
                EnsureCollectionDoesNotExist(binding, _newCollectionNamespace);

                var result = await subject.ExecuteAsync(binding);

                result["ok"].ToBoolean().Should().BeTrue();
            }
        }
        public async Task ExecuteAsync_should_return_expected_result()
        {
            var subject = new CountOperation(_collectionNamespace, _messageEncoderSettings);

            long result;

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

            result.Should().Be(5);
        }
        public async Task ExecuteAsync_should_return_expected_result()
        {
            using (var binding = SuiteConfiguration.GetReadWriteBinding())
            {
                EnsureDatabaseExists(binding);
                var subject = new DropDatabaseOperation(_databaseNamespace, _messageEncoderSettings);

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

                result["ok"].ToBoolean().Should().BeTrue();
                result["dropped"].ToString().Should().Be(_databaseNamespace.DatabaseName);
            }
        }
        public async Task ExecuteAsync_should_not_throw_when_collection_does_not_exist()
        {
            using (var binding = SuiteConfiguration.GetReadWriteBinding())
            {
                var subject = new DropCollectionOperation(_collectionNamespace, _messageEncoderSettings);
                var dropCollectionOperation = new DropCollectionOperation(_collectionNamespace, _messageEncoderSettings);
                await dropCollectionOperation.ExecuteAsync(binding);

                Func <Task> action = async() => { await subject.ExecuteAsync(binding); };

                action.ShouldNotThrow();
            }
        }
Exemple #15
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_return_expected_result()
        {
            var function = "return 1";
            var subject  = new EvalOperation(_databaseNamespace, function, _messageEncoderSettings);

            BsonValue result;

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

            result.Should().Be(1);
        }
        public async Task ExecuteAsync_should_return_expected_result_when_database_does_not_exist()
        {
            using (var binding = SuiteConfiguration.GetReadWriteBinding())
            {
                var subject = new ListIndexesOperation(_collectionNamespace, _messageEncoderSettings);
                await DropDatabaseAsync(binding);

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

                var list = await result.ToListAsync();

                list.Count.Should().Be(0);
            }
        }
        public async Task ExecuteAsync_should_return_expected_result()
        {
            using (var binding = SuiteConfiguration.GetReadWriteBinding())
            {
                var subject = new ListIndexesOperation(_collectionNamespace, _messageEncoderSettings);
                await EnsureCollectionExistsAsync(binding);

                var expectedNames = new[] { "_id_" };

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

                result.Select(index => index["name"].AsString).Should().BeEquivalentTo(expectedNames);
            }
        }
Exemple #19
0
        public async Task ExecuteAsync_should_return_expected_result_when_skip_is_provided()
        {
            var subject = new CountOperation(_collectionNamespace, _messageEncoderSettings);

            subject.Skip = 3;

            long result;

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

            result.Should().Be(2);
        }
        public async Task ExecuteAsync_should_create_collection()
        {
            var subject = new CreateCollectionOperation(_collectionNamespace, _messageEncoderSettings);

            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);
            }
        }
        public async Task ExecuteAsync_should_return_expected_result_when_filter_is_provided()
        {
            var subject = new CountOperation(_collectionNamespace, _messageEncoderSettings);

            subject.Filter = BsonDocument.Parse("{ _id : { $gt : 1 } }");

            long result;

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

            result.Should().Be(4);
        }
Exemple #22
0
        public async Task ExecuteAsync_should_return_expected_result_when_hint_is_provided()
        {
            var subject = new CountOperation(_collectionNamespace, _messageEncoderSettings);

            subject.Hint = BsonDocument.Parse("{ _id : 1 }");

            long result;

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

            result.Should().Be(5);
        }
        public async Task ExecuteAsync_should_return_expected_result_when_args_are_provided()
        {
            var function = "function(x) { return x; }";
            var subject  = new EvalOperation(_databaseNamespace, function, _messageEncoderSettings);

            subject.Args = new BsonValue[] { 1 };

            BsonValue result;

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

            result.Should().Be(1);
        }
        public async Task ExecuteAsync_should_return_expected_result_when_dropTarget_is_true_and_newCollectionNamespace_exists()
        {
            using (var binding = SuiteConfiguration.GetReadWriteBinding())
            {
                var subject = new RenameCollectionOperation(_collectionNamespace, _newCollectionNamespace, _messageEncoderSettings)
                {
                    DropTarget = true
                };
                EnsureCollectionExists(binding, _collectionNamespace);
                EnsureCollectionExists(binding, _newCollectionNamespace);

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

                result["ok"].ToBoolean().Should().BeTrue();
            }
        }
        public async Task ExecuteAsync_should_return_expected_result_when_noLock_is_provided()
        {
            var function = "return 1";
            var subject  = new EvalOperation(_databaseNamespace, function, _messageEncoderSettings);

            subject.NoLock = true;

            BsonValue result;

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

            result.Should().Be(1);
        }
        public void ExecuteAsync_should_throw_when_dropTarget_is_false_and_newCollectionNamespace_exists()
        {
            using (var binding = SuiteConfiguration.GetReadWriteBinding())
            {
                var subject = new RenameCollectionOperation(_collectionNamespace, _newCollectionNamespace, _messageEncoderSettings)
                {
                    DropTarget = false
                };
                EnsureCollectionExists(binding, _collectionNamespace);
                EnsureCollectionExists(binding, _newCollectionNamespace);

                Func <Task> action = () => subject.ExecuteAsync(binding);

                action.ShouldThrow <MongoCommandException>();
            }
        }
        public async Task ExecuteAsync_should_return_expected_result()
        {
            using (var binding = SuiteConfiguration.GetReadWriteBinding())
            {
                var keys                 = new BsonDocument("x", 1);
                var requests             = new[] { new CreateIndexRequest(keys) };
                var createIndexOperation = new CreateIndexesOperation(_collectionNamespace, requests, _messageEncoderSettings);
                await createIndexOperation.ExecuteAsync(binding, CancellationToken.None);

                var indexName = "x_1";
                var subject   = new DropIndexOperation(_collectionNamespace, indexName, _messageEncoderSettings);

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

                result["ok"].ToBoolean().Should().BeTrue();
            }
        }
        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);
            }
        }
Exemple #29
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);
            }
        }
Exemple #30
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);
            }
        }