public async Task Test_GetAllScopes()
        {
            var bucket = await _fixture.Cluster.BucketAsync("default").ConfigureAwait(false);

            var collectionManager = (CollectionManager)bucket.Collections;

            const string scopeName1 = "test_scopex1", collectionName = "test_collection1", scopeName2 = "test_scopex2", scopeName3 = "test_scopex3", scopeName4 = "test_scopex4";
            var          scopeSpec1     = new ScopeSpec(scopeName1);
            var          scopeSpec2     = new ScopeSpec(scopeName2);
            var          scopeSpec3     = new ScopeSpec(scopeName3);
            var          scopeSpec4     = new ScopeSpec(scopeName4);
            var          collectionSpec = new CollectionSpec(scopeName1, collectionName);
            // create scope
            await collectionManager.CreateScopeAsync(scopeSpec1).ConfigureAwait(false);

            await collectionManager.CreateScopeAsync(scopeSpec2).ConfigureAwait(false);

            await collectionManager.CreateScopeAsync(scopeSpec3).ConfigureAwait(false);

            await collectionManager.CreateScopeAsync(scopeSpec4).ConfigureAwait(false);

            // get all scopes
            var getAllScopesResult = await collectionManager.GetAllScopesAsync().ConfigureAwait(false);

            Assert.NotNull(getAllScopesResult);
        }
示例#2
0
        public async Task Test_Collection_Exists()
        {
            var bucket = await _fixture.Cluster.BucketAsync("default");

            var collectionManager = (CollectionManager)bucket.Collections;

            const string scopeName = "my_scope", collectionName = "my_collection";
            var          scopeSpec      = new ScopeSpec(scopeName);
            var          collectionSpec = new CollectionSpec(scopeName, collectionName);

            try
            {
                // create scope
                //await collectionManager.CreateScopeAsync(scopeSpec);

                // create collection
                // await collectionManager.CreateCollectionAsync(collectionSpec);

                var collection = bucket.Scope(scopeName).Collection(collectionName);
                var result     = await collection.UpsertAsync("key3", new { });

                var result2 = await collection.UpsertAsync("key3", new { boo = "bee" }, new UpsertOptions().Expiry(TimeSpan.FromMilliseconds(100000)));
            }
            catch
            {
                // ???
            }
            finally
            {
                // drop collection
                //await collectionManager.DropCollectionAsync(collectionSpec);
                //await collectionManager.DropScopeAsync(scopeName);
            }
        }
        public async Task Test_SingleScopeMaxNumberOfCollections()
        {
            var bucket = await _fixture.Cluster.BucketAsync("default").ConfigureAwait(false);

            var    collectionManager = (CollectionManager)bucket.Collections;
            string scopeName         = "singlescope1";
            var    scopeSpec         = new ScopeSpec(scopeName);

            try
            {
                await collectionManager.CreateScopeAsync(scopeSpec).ConfigureAwait(false);

                for (int i = 0; i < 1000; i++)
                {
                    var collectionSpec = new CollectionSpec(scopeName, (1000 + i).ToString());
                    await collectionManager.CreateCollectionAsync(collectionSpec).ConfigureAwait(false);

                    var collectionExistsResult = await collectionManager.CollectionExistsAsync(collectionSpec).ConfigureAwait(false);

                    Assert.True(collectionExistsResult);
                }
            }
            finally
            {
                // drop scope
                await collectionManager.DropScopeAsync(scopeName).ConfigureAwait(false);
            }
        }
        public async Task Test_CollectionExists()
        {
            var bucket = await _fixture.Cluster.BucketAsync("default").ConfigureAwait(false);

            var collectionManager = (CollectionManager)bucket.Collections;

            const string scopeName = "test_scope3", collectionName = "test_collection3";
            var          scopeSpec      = new ScopeSpec(scopeName);
            var          collectionSpec = new CollectionSpec(scopeName, collectionName);

            try
            {
                // create scope
                await collectionManager.CreateScopeAsync(scopeSpec).ConfigureAwait(false);

                // create collection
                await collectionManager.CreateCollectionAsync(collectionSpec).ConfigureAwait(false);

                // collection exists
                var collectionExistsResult = await collectionManager.CollectionExistsAsync(collectionSpec).ConfigureAwait(false);

                Assert.True(collectionExistsResult);
            }
            finally
            {
                // drop collection
                await collectionManager.DropCollectionAsync(collectionSpec).ConfigureAwait(false);

                // drop scope
                await collectionManager.DropScopeAsync(scopeName).ConfigureAwait(false);
            }
        }
        public async Task Test_CollectionManager_With_MinExpiry()
        {
            var bucket = await _fixture.Cluster.BucketAsync("default").ConfigureAwait(false);

            var collectionManager = (CollectionManager)bucket.Collections;

            const string scopeName = "test_scope", collectionName = "test_collection";
            var          scopeSpec      = new ScopeSpec(scopeName);
            var          collectionSpec = new CollectionSpec(scopeName, collectionName)
            {
                MaxExpiry = TimeSpan.FromMinutes(10)
            };

            try
            {
                // create scope
                await collectionManager.CreateScopeAsync(scopeSpec).ConfigureAwait(false);

                // scope exists
                var scopeExistsResult = await collectionManager.ScopeExistsAsync(scopeName).ConfigureAwait(false);

                Assert.True(scopeExistsResult);

                // get scope
                var getScopeResult = await collectionManager.GetScopeAsync(scopeName).ConfigureAwait(false);

                Assert.Equal(scopeName, getScopeResult.Name);

                // get all scopes
                var getAllScopesResult = await collectionManager.GetAllScopesAsync().ConfigureAwait(false);

                var scope = getAllScopesResult.SingleOrDefault(x => x.Name == scopeName);
                Assert.NotNull(scope);

                // create collection
                await collectionManager.CreateCollectionAsync(collectionSpec).ConfigureAwait(false);

                // collection exists
                scope = await collectionManager.GetScopeAsync(scopeName).ConfigureAwait(false);

                Assert.Equal(TimeSpan.FromMinutes(10), scope.Collections.First(x => x.Name == collectionName).MaxExpiry);
            }
            finally
            {
                // drop collection
                await collectionManager.DropCollectionAsync(collectionSpec).ConfigureAwait(false);

                // drop scope
                await collectionManager.DropScopeAsync(scopeName).ConfigureAwait(false);
            }
        }
        public async Task Test_CollectionExistsException()
        {
            var bucket = await _fixture.Cluster.BucketAsync("default").ConfigureAwait(false);

            var collectionManager = (CollectionManager)bucket.Collections;

            const string scopeName = "test_scope5", collectionName = "test_collection5";
            var          scopeSpec      = new ScopeSpec(scopeName);
            var          collectionSpec = new CollectionSpec(scopeName, collectionName);

            try
            {
                await collectionManager.CreateScopeAsync(scopeSpec).ConfigureAwait(false);

                // get scope
                var getScopeResult = await collectionManager.GetScopeAsync(scopeName).ConfigureAwait(false);

                Assert.Equal(scopeName, getScopeResult.Name);

                // create collection
                await collectionManager.CreateCollectionAsync(collectionSpec).ConfigureAwait(false);

                // collection exists
                var collectionExistsResult = await collectionManager.CollectionExistsAsync(collectionSpec).ConfigureAwait(false);

                Assert.True(collectionExistsResult);

                // scope exists
                var scopeExistsResult = await collectionManager.ScopeExistsAsync(scopeName).ConfigureAwait(false);

                Assert.True(scopeExistsResult);

                await collectionManager.CreateCollectionAsync(collectionSpec).ConfigureAwait(false);
            }
            catch (CollectionExistsException e)
            {
                Assert.Equal("Collection with name test_collection5 already exists in scope test_scope5", e.Message);
            }

            finally
            {
                // drop collection
                await collectionManager.DropCollectionAsync(collectionSpec).ConfigureAwait(false);

                // drop scope
                await collectionManager.DropScopeAsync(scopeName).ConfigureAwait(false);
            }
        }
        public async Task Test_CollectionManager()
        {
            var bucket = await _fixture.Cluster.BucketAsync("default");

            var collectionManager = bucket.Collections;

            const string scopeName = "test_scope", collectionName = "test_collection";
            var          scopeSpec      = new ScopeSpec(scopeName);
            var          collectionSpec = new CollectionSpec(scopeName, collectionName);

            try
            {
                // create scope
                await collectionManager.CreateScopeAsync(scopeSpec);

                // scope exists
                var scopeExistsResult = await collectionManager.ScopeExistsAsync(scopeName);

                Assert.True(scopeExistsResult);

                // get scope
                var getScopeResult = await collectionManager.GetScopeAsync(scopeName);

                Assert.Equal(scopeName, getScopeResult.Name);

                // get all scopes
                var getAllScopesResult = await collectionManager.GetAllScopesAsync();

                var scope = getAllScopesResult.SingleOrDefault(x => x.Name == scopeName);
                Assert.NotNull(scope);

                // create collection
                await collectionManager.CreateCollectionAsync(collectionSpec);

                // collection exists
                var collectionExistsResult = await collectionManager.CollectionExistsAsync(collectionSpec);

                Assert.True(collectionExistsResult);
            }
            finally
            {
                // drop collection
                await collectionManager.DropCollectionAsync(collectionSpec);

                // drop scope
                await collectionManager.DropScopeAsync(scopeName);
            }
        }
        public async System.Threading.Tasks.Task Test_Collections_QueryOps()
        {
            var bucket = await _fixture.Cluster.BucketAsync("default").ConfigureAwait(false);

            var    collectionManager = (CollectionManager)bucket.Collections;
            string scopeName         = "query_test_scope2";
            string collectionName    = "query_test_collection2";
            string docId             = "mydoc2";
            var    scopeSpec         = new ScopeSpec(scopeName);

            try
            {
                await collectionManager.CreateScopeAsync(scopeSpec).ConfigureAwait(false);

                var collectionSpec = new CollectionSpec(scopeName, collectionName);
                await collectionManager.CreateCollectionAsync(collectionSpec).ConfigureAwait(false);

                var collectionExistsResult = await collectionManager.CollectionExistsAsync(collectionSpec).ConfigureAwait(false);

                Assert.True(collectionExistsResult);
                var collection = bucket.Scope(scopeName).Collection(collectionName);
                var task       = await collection.InsertAsync(docId, new { }).ConfigureAwait(false);

                var options = new QueryOptions("select * from `" + collectionName + "` where meta().id=\"" + docId + "\"")
                {
                    QueryContext = "namespace:bucket:scope:collection"
                };
                var args = options.GetFormValues();
                Assert.Equal("namespace:bucket:scope:collection", args["query_context"]);
                options = new QueryOptions("SELECT * FROM `$bucket` WHERE collectionName=$name").
                          Parameter("bucket", "default").
                          Parameter("collectionName", "query_test_collection2");

                var values = options.GetFormValues();
                Assert.Equal("default", values["$bucket"]);
                Assert.Equal("query_test_collection2", values["$name"]);
            }
            finally
            {
                // drop scope
                await collectionManager.DropScopeAsync(scopeName).ConfigureAwait(false);
            }
        }
        public async Task Test_DropNonExistentCollection()
        {
            var bucket = await _fixture.Cluster.BucketAsync("default").ConfigureAwait(false);

            var collectionManager = (CollectionManager)bucket.Collections;

            const string scopeName = "test_scope6", collectionName = "test_collection6";
            var          scopeSpec      = new ScopeSpec(scopeName);
            var          collectionSpec = new CollectionSpec(scopeName, collectionName);

            var collectionSpecNone = new CollectionSpec("scope_only", "collection_null");
            var scopeSpec1         = new ScopeSpec("scope_only");

            try
            {
                await collectionManager.CreateScopeAsync(scopeSpec).ConfigureAwait(false);

                // get scope
                var getScopeResult = await collectionManager.GetScopeAsync(scopeName).ConfigureAwait(false);

                Assert.Equal(scopeName, getScopeResult.Name);

                // create collection
                await collectionManager.CreateCollectionAsync(collectionSpec).ConfigureAwait(false);

                await collectionManager.CreateScopeAsync(scopeSpec1).ConfigureAwait(false);

                await collectionManager.DropCollectionAsync(collectionSpecNone).ConfigureAwait(false);
            }
            catch (CollectionNotFoundException e)
            {
                Assert.Equal("Collection with name collection_null not found in scope scope_only", e.Message);
            }
            finally
            {
                // drop collection
                await collectionManager.DropCollectionAsync(collectionSpec).ConfigureAwait(false);

                // drop scope
                await collectionManager.DropScopeAsync(scopeName).ConfigureAwait(false);
            }
        }
        public async Task Test_ScopeNotFound()
        {
            var bucket = await _fixture.Cluster.BucketAsync("default").ConfigureAwait(false);

            var collectionManager = (CollectionManager)bucket.Collections;

            const string scopeName = "test_scope1", collectionName = "test_collection1";
            var          scopeSpec             = new ScopeSpec(scopeName);
            var          collectionSpec        = new CollectionSpec(scopeName, collectionName);
            var          collectionSpecInvalid = new CollectionSpec("noscope", "emptycollection");

            try
            {
                await collectionManager.CreateScopeAsync(scopeSpec).ConfigureAwait(false);


                // get scope
                var getScopeResult = await collectionManager.GetScopeAsync(scopeName).ConfigureAwait(false);

                Assert.Equal(scopeName, getScopeResult.Name);

                // create collection
                await collectionManager.CreateCollectionAsync(collectionSpecInvalid).ConfigureAwait(false);

                var scopeExistsResult = await collectionManager.ScopeExistsAsync("noscope").ConfigureAwait(false);

                Assert.False(scopeExistsResult);

                // collection exists
                var collectionExistsResult = await collectionManager.CollectionExistsAsync(collectionSpecInvalid).ConfigureAwait(false);

                Assert.False(collectionExistsResult);
            }
            finally
            {
                // drop collection
                await collectionManager.DropCollectionAsync(collectionSpec).ConfigureAwait(false);

                // drop scope
                await collectionManager.DropScopeAsync(scopeName).ConfigureAwait(false);
            }
        }
        public async Task Test_Collections_DataverseCollectionQuery()
        {
            var cluster = await _fixture.GetCluster().ConfigureAwait(false);

            var bucket = await _fixture.Cluster.BucketAsync("default").ConfigureAwait(false);

            string dataverseName     = bucket.Name + "." + scopeName;
            var    collectionManager = (CollectionManager)bucket.Collections;
            var    scopeSpec         = new ScopeSpec(scopeName);
            var    analytics         = cluster.AnalyticsIndexes;
            await analytics.CreateDataverseAsync(dataverseName);

            string statement = "CREATE ANALYTICS COLLECTION `" + dataverseName + "`.`" + collectionName + "` ON `" + bucket.Name + "`.`" + scopeName + "`.`" + collectionName + "`";

            try
            {
                var analyticsResult = await cluster.AnalyticsQueryAsync <TestRequest>(statement).ConfigureAwait(false);

                var result = await analyticsResult.ToListAsync().ConfigureAwait(false);

                await collectionManager.CreateScopeAsync(scopeSpec).ConfigureAwait(false);

                var collectionSpec = new CollectionSpec(scopeName, collectionName);
                await collectionManager.CreateCollectionAsync(collectionSpec).ConfigureAwait(false);

                var collectionExistsResult = await collectionManager.CollectionExistsAsync(collectionSpec).ConfigureAwait(false);

                Assert.True(collectionExistsResult);
                var scope = bucket.Scope(scopeName);
                statement       = "SELECT * FROM `" + collectionName + "` where `" + collectionName + "`.foo= \"bar\"";
                analyticsResult = await cluster.AnalyticsQueryAsync <TestRequest>(statement).ConfigureAwait(false);

                result = await analyticsResult.ToListAsync().ConfigureAwait(false);

                Assert.True(result.Any());
            }
            finally
            {
                // drop scope
                await collectionManager.DropScopeAsync(scopeName).ConfigureAwait(false);
            }
        }
示例#12
0
        private async Task CreateScopeIfNecessaryAsync(string scopeName)
        {
            try
            {
                var scopes = await _bucket.Collections.GetAllScopesAsync();

                if (scopes.Any(s => s.Name == scopeName))
                {
                    return;
                }
                var spec = new ScopeSpec(scopeName);
                await _collManager.CreateScopeAsync(spec);

                //_bucket.Scope(scopeName);
            }
            catch (Exception)
            {
                _logger.LogInformation($"Problem creating or checking Scope `{scopeName}`...");
            }

            _logger.LogInformation($"Done");
        }
        public async Task Test_RemoveOps()
        {
            var bucket = await _fixture.Cluster.BucketAsync("default").ConfigureAwait(false);

            var collectionManager = (CollectionManager)bucket.Collections;

            const string scopeName = "my_scope1", collectionName = "my_collection1";
            var          scopeSpec      = new ScopeSpec(scopeName);
            var          collectionSpec = new CollectionSpec(scopeName, collectionName);

            // create scope
            await collectionManager.CreateScopeAsync(scopeSpec).ConfigureAwait(false);

            // create collection
            await collectionManager.CreateCollectionAsync(collectionSpec).ConfigureAwait(false);

            var collection = bucket.Scope(scopeName).Collection(collectionName);
            var tasks      = new List <Task>();

            for (var i = 0; i < 20; i++)
            {
                await collection.RemoveAsync($"mykey-{i}").ConfigureAwait(false);
            }
        }
示例#14
0
 public virtual void Visit(ScopeSpec scopeSpec)
 {
 }