Пример #1
0
        public async Task ScopeAsync_Throws_NotSupportedException_When_Name_Is_Not_Default()
        {
            var localhost    = new Uri("http://10.112.192.102:8091");
            var bucketConfig = ResourceHelper.ReadResource <BucketConfig>("mycache.json");

            bucketConfig.Nodes.RemoveAt(1);

            var mockClusterNode = new Mock <IClusterNode>();

            mockClusterNode.Setup(x => x.EndPoint).Returns(localhost.GetIpEndPoint(8091, false));
            mockClusterNode.Setup(x => x.BootstrapUri).Returns(localhost);
            mockClusterNode.Setup(x => x.SelectBucket("default")).Returns(Task.CompletedTask);

            var mockHttpClusterMap = new Mock <HttpClusterMapBase>();

            mockHttpClusterMap.Setup(x =>
                                     x.GetClusterMapAsync("default", localhost, CancellationToken.None)).
            Returns(Task.FromResult(bucketConfig));

            var bucket = new MemcachedBucket("default", new ClusterContext(), mockHttpClusterMap.Object);
            await bucket.BootstrapAsync(mockClusterNode.Object).ConfigureAwait(false);

            await Assert.ThrowsAsync <NotSupportedException>(async() =>
            {
                await bucket.ScopeAsync("xxxx").ConfigureAwait(false);
            }).ConfigureAwait(false);
        }
Пример #2
0
        public async Task Indexer_Succeeds_When_Name_Is_Default()
        {
            var localhost    = new Uri("http://10.112.192.102:8091");
            var bucketConfig = ResourceHelper.ReadResource <BucketConfig>("mycache.json");

            bucketConfig.Nodes.RemoveAt(1);

            var mockClusterNode = new Mock <IClusterNode>();

            mockClusterNode.Setup(x => x.EndPoint).Returns(localhost.GetIpEndPoint(8091, false));
            mockClusterNode.Setup(x => x.BootstrapUri).Returns(localhost);
            mockClusterNode.Setup(x => x.SelectBucket("default")).Returns(Task.CompletedTask);

            var mockHttpClusterMap = new Mock <HttpClusterMapBase>();

            mockHttpClusterMap.Setup(x =>
                                     x.GetClusterMapAsync("default", localhost, CancellationToken.None)).
            Returns(Task.FromResult(bucketConfig));

            var bucket = new MemcachedBucket("default", new ClusterContext(), mockHttpClusterMap.Object);
            await bucket.BootstrapAsync(mockClusterNode.Object).ConfigureAwait(false);

            var scope = await bucket[BucketBase.DefaultScopeName].ConfigureAwait(false);

            Assert.Equal(BucketBase.DefaultScopeName, scope.Name);
        }
        public void Setup()
        {
            var mockController = new Mock <IClusterController>();

            mockController.Setup(x => x.Configuration).Returns(new ClientConfiguration());

            _bucket = new MemcachedBucket(mockController.Object, string.Empty, new DefaultConverter(), new DefaultTranscoder(), null);
        }
Пример #4
0
        public async Task ViewQueryAsync_Throws_NotSupportedException()
        {
            var bucket = new MemcachedBucket("default", new ClusterContext());

            await Assert.ThrowsAsync <NotSupportedException>(async() =>
            {
                await bucket.ViewQueryAsync("designDoc", "viewName").ConfigureAwait(false);
            }).ConfigureAwait(false);
        }
Пример #5
0
        public async Task ScopeAsync_Succeeds_When_Name_Is_Default()
        {
            var bucket = new MemcachedBucket("default", new Configuration(), new ConfigContext(new Configuration()));
            await bucket.Bootstrap().ConfigureAwait(false);

            var scope = await bucket.ScopeAsync(BucketBase.DefaultScope).ConfigureAwait(false);

            Assert.Equal(BucketBase.DefaultScope, scope.Name);
        }
Пример #6
0
        public async Task ScopeAsync_Throws_NotSupportedException_When_Name_Is_Not_Default()
        {
            var bucket = new MemcachedBucket("default", new Configuration(), new ConfigContext(new Configuration()));
            await bucket.Bootstrap().ConfigureAwait(false);

            await Assert.ThrowsAsync <NotSupportedException>(async() =>
            {
                await bucket.ScopeAsync("xxxx").ConfigureAwait(false);
            }).ConfigureAwait(false);
        }
Пример #7
0
        public async Task <IBucket> BootstrapBucketAsync(string name, Uri uri, BucketType type)
        {
            var node = GetUnassignedNode(uri, ClusterOptions.EnableIPV6Addressing);

            if (node == null)
            {
                var endpoint = uri.GetIpEndPoint(ClusterOptions.KvPort, ClusterOptions.UseInterNetworkV6Addresses);
                node = await ClusterNode.CreateAsync(this, endpoint);

                node.BootstrapUri = uri;
                AddNode(node);
            }

            BucketBase bucket = null;

            switch (type)
            {
            case BucketType.Couchbase:
            case BucketType.Ephemeral:
                bucket = new CouchbaseBucket(name, this);
                break;

            case BucketType.Memcached:
                bucket = new MemcachedBucket(name, this);
                break;

            default:
                throw new ArgumentOutOfRangeException(nameof(type), type, null);
            }

            try
            {
                await bucket.BootstrapAsync(node);

                RegisterBucket(bucket);
                return(bucket);
            }
            catch (Exception e)
            {
                Log.LogError(e, @"Could not bootstrap {name}");
                UnRegisterBucket(bucket);
                throw;
            }
        }
        public IBucket CreateBucket(string bucketName, string password)
        {
            var     success = false;
            IBucket bucket  = null;

            foreach (var provider in _configProviders)
            {
                try
                {
                    Log.DebugFormat("Trying to boostrap with {0}.", provider);
                    var config = provider.GetConfig(bucketName, password);
                    switch (config.NodeLocator)
                    {
                    case NodeLocatorEnum.VBucket:
                        bucket = new CouchbaseBucket(this, bucketName, _converter, _serializer);
                        bucket.AddRef();
                        break;

                    case NodeLocatorEnum.Ketama:
                        bucket = new MemcachedBucket(this, bucketName, _converter, _serializer);
                        bucket.AddRef();
                        break;

                    default:
                        throw new ArgumentOutOfRangeException();
                    }

                    var configObserver = bucket as IConfigObserver;
                    if (provider.ObserverExists(configObserver))
                    {
                        Log.DebugFormat("Using existing bootstrap {0}.", provider);
                        configObserver.NotifyConfigChanged(config);
                        success = true;
                        break;
                    }

                    if (provider.RegisterObserver(configObserver) &&
                        _buckets.TryAdd(bucket.Name, bucket))
                    {
                        Log.DebugFormat("Successfully boostrap using {0}.", provider);
                        configObserver.NotifyConfigChanged(config);
                        success = true;
                        break;
                    }
                    configObserver.NotifyConfigChanged(config);
                    success = true;
                    break;
                }
                catch (BucketNotFoundException e)
                {
                    Log.Warn(e);
                }
                catch (ConfigException e)
                {
                    Log.Warn(e);
                }
                catch (AuthenticationException e)
                {
                    Log.Warn(e);
                    break;
                }
            }

            if (!success)
            {
                throw new ConfigException("Could not bootstrap {0}. See log for details.", bucketName);
            }
            return(bucket);
        }
Пример #9
0
        public async Task Indexer_Throws_NotSupportedException_When_Name_Is_Not_Default()
        {
            var bucket = new MemcachedBucket("default", new ClusterContext());

            await Assert.ThrowsAsync <NotSupportedException>(async() => { await bucket["xxxxx"].ConfigureAwait(false); }).ConfigureAwait(false);
        }
Пример #10
0
        public void ViewIndexes_Throws_NotSupportedException()
        {
            var bucket = new MemcachedBucket("default", new ClusterContext());

            Assert.Throws <NotSupportedException>(() => bucket.Views);
        }