public VBucketKeyMapper(HashAlgorithm algorithm, List <IServer> servers, VBucketServerMap vBucketServerMap) { HashAlgorithm = algorithm; _servers = servers; _vBucketServerMap = vBucketServerMap; _vBuckets = CreateVBuckets(); }
public void Setup() { _vBucketServerMap1 = new VBucketServerMap { HashAlgorithm = "CRC", NumReplicas = 1, ServerList = new[] { "192.168.56.101:11210", "192.168.56.104:11210" }, VBucketMap = new int[][] { new[] { 1, 0 }, new[] { 1, 0 }, new[] { 1, 0 } } }; _vBucketServerMap2 = new VBucketServerMap { HashAlgorithm = "CRC", NumReplicas = 1, ServerList = new[] { "192.168.56.101:11210", "192.168.56.104:11210" }, VBucketMap = new int[][] { new[] { 1, 0 }, new[] { 1, 0 }, new[] { 1, 0 } } }; _vBucketServerMap3 = new VBucketServerMap { HashAlgorithm = "CRC", NumReplicas = 1, ServerList = new[] { "192.168.56.101:11210", "192.168.56.103:11210" }, VBucketMap = new int[][] { new[] { 0, 1 }, new[] { 1, 0 }, new[] { 1, 0 } } }; }
public static NodeExt[] ReorderToServerList(this NodeExt[] nodes, VBucketServerMap serverMap) { if (nodes == null) return null; var reordered = new NodeExt[nodes.Length]; var serversList = serverMap.ServerList; if (serversList == null || serversList.Length == 0) { reordered = nodes; } else { for (var i = 0; i < serversList.Length; i++) { var host = serversList[i].Split(':')[0]; foreach (var n in nodes.Where(n => n.Hostname != null && n.Hostname.Split(':')[0].Equals(host))) { reordered[i] = n; break; } } for (var i = 0; i < nodes.Length; i++) { var cur = nodes[i]; if (!reordered.Contains(cur)) { reordered[i] = cur; } } } return reordered; }
public VBucketKeyMapper(List <IServer> servers, VBucketServerMap vBucketServerMap) { _servers = servers; _vBucketServerMap = vBucketServerMap; _vBuckets = CreateVBucketMap(); _vForwardBuckets = CreateVBucketMapForwards(); _mask = _vBuckets.Count - 1; }
public VBucketKeyMapper(HashAlgorithm algorithm, List<IServer> servers, VBucketServerMap vBucketServerMap) { HashAlgorithm = algorithm; _servers = servers; _vBucketServerMap = vBucketServerMap; _vBuckets = CreateVBucketMap(); _vForwardBuckets = CreateVBucketMapForwards(); }
public VBucketKeyMapper(IDictionary<IPAddress, IServer> servers, VBucketServerMap vBucketServerMap, int revision) { Rev = revision; _servers = servers; _vBucketServerMap = vBucketServerMap; _vBuckets = CreateVBucketMap(); _vForwardBuckets = CreateVBucketMapForwards(); _mask = _vBuckets.Count-1; }
public VBucketKeyMapper(IDictionary <IPAddress, IServer> servers, VBucketServerMap vBucketServerMap, int revision) { Rev = revision; _servers = servers; _vBucketServerMap = vBucketServerMap; _vBuckets = CreateVBucketMap(); _vForwardBuckets = CreateVBucketMapForwards(); _mask = _vBuckets.Count - 1; }
public VBucket(IDictionary<IPAddress, IServer> cluster, int index, int primary, int[] replicas, int rev, VBucketServerMap vBucketServerMap) { _cluster = cluster; Index = index; Primary = primary; _replicas = replicas; Rev = rev; _vBucketServerMap = vBucketServerMap; }
public VBucket(IDictionary <IPAddress, IServer> cluster, int index, int primary, int[] replicas, int rev, VBucketServerMap vBucketServerMap) { _cluster = cluster; Index = index; Primary = primary; _replicas = replicas; Rev = rev; _vBucketServerMap = vBucketServerMap; }
public VBucket(IDictionary <IPEndPoint, IServer> cluster, int index, int primary, int[] replicas, uint rev, VBucketServerMap vBucketServerMap, string bucketName) { _cluster = cluster; Index = index; Primary = primary; _replicas = replicas; Rev = rev; _vBucketServerMap = vBucketServerMap; BucketName = bucketName; }
public VBucketKeyMapper(IDictionary <IPEndPoint, IServer> servers, VBucketServerMap vBucketServerMap, uint revision, string bucketName) { Rev = revision; _servers = servers; _vBucketServerMap = vBucketServerMap; _bucketName = bucketName; _vBuckets = CreateVBucketMap(); _vForwardBuckets = CreateVBucketMapForwards(); _mask = _vBuckets.Count - 1; }
public VBucket(IDictionary<IPAddress, IServer> cluster, int index, int primary, int[] replicas, uint rev, VBucketServerMap vBucketServerMap, string bucketName, ILogger logger) { Log = logger; _cluster = cluster; Index = index; Primary = primary; _replicas = replicas; Rev = rev; _vBucketServerMap = vBucketServerMap; BucketName = bucketName; }
public void SetUp() { _bucketConfig = ConfigUtil.ServerConfig.Buckets.First(); _vBucketServerMap = _bucketConfig.VBucketServerMap; _servers = _vBucketServerMap. ServerList. Select(server => new Server(ObjectFactory.CreateIOStrategy(server), new NodeAdapter(new Node(), new NodeExt()), new ClientConfiguration(), _bucketConfig)). Cast <IServer>(). ToList(); }
public VBucketKeyMapper(IDictionary<IPAddress, IServer> servers, VBucketServerMap vBucketServerMap, uint revision, string bucketName, ILogger logger) { Log = logger; Rev = revision; _servers = servers; _vBucketServerMap = vBucketServerMap; _bucketName = bucketName; _vBuckets = CreateVBucketMap(); _vForwardBuckets = CreateVBucketMapForwards(); _mask = _vBuckets.Count - 1; }
public void SetUp() { var bucket = ConfigUtil.ServerConfig.Buckets.First(); _vBucketServerMap = bucket.VBucketServerMap; _servers = _vBucketServerMap. ServerList. Select(server => new Server(ObjectFactory.CreateIOStrategy(server), new Node(), new ClientConfiguration())). Cast<IServer>(). ToList(); }
public void TestMapKey(int index, string key) { var config = ResourceHelper.ReadResource(@"Documents\config.json", InternalSerializationContext.Default.BucketConfig); var vBucketServerMap = new VBucketServerMap(config.VBucketServerMap); IKeyMapper mapper = new VBucketKeyMapper(config, vBucketServerMap, new VBucketFactory(new Mock <ILogger <VBucket> >().Object)); var vBucket = (VBucket)mapper.MapKey(key); Assert.Equal(index, vBucket.Index); }
public void Test_That_Key_XXXXX_Maps_To_VBucket_389() { const int actual = 389; var config = ResourceHelper.ReadResource(@"Documents\config.json", InternalSerializationContext.Default.BucketConfig); var vBucketServerMap = new VBucketServerMap(config.VBucketServerMap); IKeyMapper mapper = new VBucketKeyMapper(config, vBucketServerMap, new VBucketFactory(new Mock <ILogger <VBucket> >().Object)); var vBucket = (IVBucket)mapper.MapKey(Key); Assert.Equal(vBucket.Index, actual); }
public void ReadFromReplica_WhenKeyNotFound_ReturnsKeyNotFound() { var controller = new Mock <IClusterController>(); controller.Setup(x => x.Configuration).Returns(new ClientConfiguration()); var server1 = new Mock <IServer>(); server1.Setup(x => x.Send(It.IsAny <IOperation <dynamic> >())).Returns(new OperationResult <dynamic> { Status = ResponseStatus.KeyNotFound }); server1.Setup(x => x.EndPoint).Returns(new IPEndPoint(IPAddress.Loopback, 8091)); var server2 = new Mock <IServer>(); server2.Setup(x => x.Send(It.IsAny <IOperation <dynamic> >())).Returns(new OperationResult <dynamic> { Status = ResponseStatus.KeyNotFound }); server2.Setup(x => x.EndPoint).Returns(new IPEndPoint(IPAddress.Parse("255.255.0.0"), 8091)); var vBucketServerMap = new VBucketServerMap { ServerList = new[] { "localhost:8901", "255.255.0.0:8091" }, VBucketMap = new[] { new[] { 0, 1 } }, VBucketMapForward = new[] { new[] { 1 } } }; var keyMapper = new VBucketKeyMapper(new Dictionary <IPAddress, IServer> { { IPAddress.Loopback, server1.Object }, { IPAddress.Parse("255.255.0.0"), server2.Object } }, vBucketServerMap, 3, "default"); var configInfo = new Mock <IConfigInfo>(); configInfo.Setup(x => x.IsDataCapable).Returns(true); configInfo.Setup(x => x.GetKeyMapper()).Returns(keyMapper); configInfo.Setup(x => x.ClientConfig).Returns(new ClientConfiguration()); var pending = new ConcurrentDictionary <uint, IOperation>(); var executor = new CouchbaseRequestExecuter(controller.Object, configInfo.Object, "default", pending); var op = new ReplicaRead <dynamic>("thekey", null, new DefaultTranscoder(), 100); var result = executor.ReadFromReplica(op); Assert.AreEqual(ResponseStatus.KeyNotFound, result.Status); }
public void SetUp() { _bucketConfig = ConfigUtil.ServerConfig.Buckets.First(x=>x.Name =="default"); _vBucketServerMap = _bucketConfig.VBucketServerMap; _servers = new Dictionary<IPAddress, IServer>(); foreach (var node in _bucketConfig.GetNodes()) { _servers.Add(node.GetIPAddress(), new Server(new FakeIOService(node.GetIPEndPoint(), new FakeConnectionPool(), false), node, new ClientConfiguration(), _bucketConfig, new FakeTranscoder())); } }
public void SetUp() { _bucketConfig = ConfigUtil.ServerConfig.Buckets.First(x => x.Name == "default"); _vBucketServerMap = _bucketConfig.VBucketServerMap; _servers = new Dictionary <IPEndPoint, IServer>(); foreach (var node in _bucketConfig.GetNodes()) { _servers.Add(new IPEndPoint(node.GetIPAddress(), 8091), new Server(new FakeIOService(node.GetIPEndPoint(), new FakeConnectionPool(), false), node, new ClientConfiguration(), _bucketConfig, new FakeTranscoder())); } }
public void VBucket_HasCorrectBucketname() { var expected = "default"; var config = ResourceHelper.ReadResource(@"Documents\config.json", InternalSerializationContext.Default.BucketConfig); var vBucketServerMap = new VBucketServerMap(config.VBucketServerMap); IKeyMapper mapper = new VBucketKeyMapper(config, vBucketServerMap, new VBucketFactory(new Mock <ILogger <VBucket> >().Object)); var vBucket = (IVBucket)mapper.MapKey(Key); Assert.Equal(expected, vBucket.BucketName); }
public void WhenForwardMapIsAvailable_AndRevisionIsZero_OperationUsesVBucket() { var controller = new Mock <IClusterController>(); controller.Setup(x => x.Configuration).Returns(new ClientConfiguration()); var server1 = new Mock <IServer>(); server1.Setup(x => x.Send(It.IsAny <IOperation <dynamic> >())).Returns(new OperationResult <dynamic>()); server1.Setup(x => x.EndPoint).Returns(new IPEndPoint(IPAddress.Loopback, 8091)); var server2 = new Mock <IServer>(); server2.Setup(x => x.Send(It.IsAny <IOperation <dynamic> >())).Returns(new OperationResult <dynamic>()); server2.Setup(x => x.EndPoint).Returns(new IPEndPoint(IPAddress.Parse("255.255.0.0"), 8091)); var vBucketServerMap = new VBucketServerMap { ServerList = new[] { "localhost:8901", "255.255.0.0:8091" }, VBucketMap = new[] { new[] { 0 } }, VBucketMapForward = new[] { new[] { 1 } } }; var keyMapper = new VBucketKeyMapper(new Dictionary <IPAddress, IServer> { { IPAddress.Loopback, server1.Object }, { IPAddress.Parse("255.255.0.0"), server2.Object } }, vBucketServerMap, 1, "default"); var configInfo = new Mock <IConfigInfo>(); configInfo.Setup(x => x.IsDataCapable).Returns(true); configInfo.Setup(x => x.GetKeyMapper()).Returns(keyMapper); configInfo.Setup(x => x.ClientConfig).Returns(new ClientConfiguration()); var pending = new ConcurrentDictionary <uint, IOperation>(); var executor = new CouchbaseRequestExecuter(controller.Object, configInfo.Object, "default", pending); var op = new Get <dynamic>("thekey", null, new DefaultTranscoder(), 100); op.LastConfigRevisionTried = 0; var result = executor.SendWithRetry(op); Assert.AreEqual(op.VBucket.LocatePrimary().EndPoint, keyMapper.GetVBuckets().First().Value.LocatePrimary().EndPoint); }
public void VBucket_Supports_LocalHost() { var expected = "default"; var config = ResourceHelper.ReadResource(@"Documents\configs\config-localhost.json", InternalSerializationContext.Default.BucketConfig); config.ReplacePlaceholderWithBootstrapHost("127.0.0.1"); var vBucketServerMap = new VBucketServerMap(config.VBucketServerMap); IKeyMapper mapper = new VBucketKeyMapper(config, vBucketServerMap, new VBucketFactory(new Mock <ILogger <VBucket> >().Object)); var vBucket = (IVBucket)mapper.MapKey(Key); Assert.Equal(expected, vBucket.BucketName); }
public VBucketTests() { var serverConfigJson = ResourceHelper.ReadResource("bootstrap-config.json"); var bucketConfig = JsonConvert.DeserializeObject <BucketConfig>(serverConfigJson); _vBucketServerMap = bucketConfig.VBucketServerMap; _servers = new List <IPEndPoint>(); foreach (var node in bucketConfig.GetNodes()) { _servers.Add(node.GetIpEndPoint(false)); } var vBucketMap = _vBucketServerMap.VBucketMap.First(); var primary = vBucketMap[0]; var replicas = new [] { vBucketMap[1] }; _vBucket = new VBucket(_servers, 0, primary, replicas, bucketConfig.Rev, _vBucketServerMap, "default"); }
public override int GetHashCode() { unchecked { var hashCode = (int)Rev; hashCode = (hashCode * 397) ^ (Name != null ? Name.GetHashCode() : 0); hashCode = (hashCode * 397) ^ (Uri != null ? Uri.GetHashCode() : 0); hashCode = (hashCode * 397) ^ (StreamingUri != null ? StreamingUri.GetHashCode() : 0); hashCode = (hashCode * 397) ^ (Nodes != null ? Nodes.GetHashCode() : 0); hashCode = (hashCode * 397) ^ (NodesExt != null ? NodesExt.GetHashCode() : 0); hashCode = (hashCode * 397) ^ (NodeLocator != null ? NodeLocator.GetHashCode() : 0); hashCode = (hashCode * 397) ^ (Uuid != null ? Uuid.GetHashCode() : 0); hashCode = (hashCode * 397) ^ (Ddocs != null ? Ddocs.GetHashCode() : 0); hashCode = (hashCode * 397) ^ (VBucketServerMap != null ? VBucketServerMap.GetHashCode() : 0); hashCode = (hashCode * 397) ^ (BucketCapabilitiesVer != null ? BucketCapabilitiesVer.GetHashCode() : 0); hashCode = (hashCode * 397) ^ (BucketCapabilities != null ? BucketCapabilities.GetHashCode() : 0); return(hashCode); } }
public void SetUp() { var bucketConfig = ConfigUtil.ServerConfig.Buckets.First(x=>x.Name=="default"); _vBucketServerMap = bucketConfig.VBucketServerMap; _servers = new Dictionary<IPAddress, IServer>(); foreach (var node in bucketConfig.GetNodes()) { _servers.Add(node.GetIPAddress(), new Server(new FakeIOStrategy(node.GetIPEndPoint(), new FakeConnectionPool(), false), node, new ClientConfiguration(), bucketConfig, new FakeTranscoder())); } var vBucketMap = _vBucketServerMap.VBucketMap.First(); var primary = vBucketMap[0]; var replicas = new int[]{vBucketMap[1]}; _vBucket = new VBucket(_servers, 0, primary, replicas, bucketConfig.Rev, _vBucketServerMap); }
public void WhenForwardMapIsAvailable_AndRevisionIsSame_OperationUsesForwardMapVBucket() { var controller = new Mock<IClusterController>(); controller.Setup(x => x.Configuration).Returns(new ClientConfiguration()); var server1 = new Mock<IServer>(); server1.Setup(x => x.Send(It.IsAny<IOperation<dynamic>>())).Returns(new OperationResult<dynamic>()); server1.Setup(x => x.EndPoint).Returns(new IPEndPoint(IPAddress.Loopback, 8091)); var server2 = new Mock<IServer>(); server2.Setup(x => x.Send(It.IsAny<IOperation<dynamic>>())).Returns(new OperationResult<dynamic>()); server2.Setup(x => x.EndPoint).Returns(new IPEndPoint(IPAddress.Parse("255.255.0.0"), 8091)); var vBucketServerMap = new VBucketServerMap { ServerList = new[] { "localhost:8901", "255.255.0.0:8091" }, VBucketMap = new[] {new[] {0}}, VBucketMapForward = new[] {new[] {1}} }; var keyMapper = new VBucketKeyMapper(new Dictionary<IPAddress, IServer> { { IPAddress.Loopback, server1.Object}, { IPAddress.Parse("255.255.0.0"), server2.Object} }, vBucketServerMap, 2, "default"); var configInfo = new Mock<IConfigInfo>(); configInfo.Setup(x => x.IsDataCapable).Returns(true); configInfo.Setup(x => x.GetKeyMapper()).Returns(keyMapper); configInfo.Setup(x => x.ClientConfig).Returns(new ClientConfiguration()); var pending = new ConcurrentDictionary<uint, IOperation>(); var executor = new CouchbaseRequestExecuter(controller.Object, configInfo.Object, "default", pending); var op = new Get<dynamic>("thekey", null, new DefaultTranscoder(), 100); op.LastConfigRevisionTried = 2; var result = executor.SendWithRetry(op); Assert.AreEqual(op.VBucket.LocatePrimary().EndPoint, keyMapper.GetVBucketsForwards().First().Value.LocatePrimary().EndPoint); }
public VBucketTests() { var serverConfigJson = ResourceHelper.ReadResource("bootstrap-config.json"); var bucketConfig = JsonConvert.DeserializeObject <BucketConfig>(serverConfigJson); var(vBucketServerMap, _) = GetServerMapAndIpEndPoints(bucketConfig.VBucketServerMap); _vBucketServerMap = vBucketServerMap; _servers = new List <IPEndPoint>(); foreach (var node in bucketConfig.GetNodes()) { _servers.Add(new IPEndPoint(IPAddress.Parse(node.Hostname), node.KeyValue)); } var vBucketMap = _vBucketServerMap.VBucketMap.First(); var primary = vBucketMap[0]; var replicas = new [] { vBucketMap[1] }; _vBucket = new VBucket(_servers, 0, primary, replicas, bucketConfig.Rev, _vBucketServerMap, "default", new Mock <ILogger <VBucket> >().Object); }
public VBucketTests() { var bucketConfig = ResourceHelper.ReadResource("bootstrap-config.json", InternalSerializationContext.Default.BucketConfig); var vBucketServerMap = GetServerMap(bucketConfig.VBucketServerMap); _vBucketServerMap = vBucketServerMap; _servers = new List <HostEndpointWithPort>(); foreach (var node in bucketConfig.GetNodes()) { _servers.Add(new HostEndpointWithPort(node.Hostname, node.KeyValue)); } var vBucketMap = _vBucketServerMap.VBucketMap.First(); var primary = vBucketMap[0]; var replicas = new [] { vBucketMap[1] }; _vBucket = new VBucket(_servers, 0, primary, replicas, bucketConfig.Rev, _vBucketServerMap, "default", new Mock <ILogger <VBucket> >().Object); }
public void SetUp() { var bucketConfig = ConfigUtil.ServerConfig.Buckets.First(x => x.Name == "default"); _vBucketServerMap = bucketConfig.VBucketServerMap; _servers = new Dictionary <IPAddress, IServer>(); foreach (var node in bucketConfig.GetNodes()) { _servers.Add(node.GetIPAddress(), new Server(new FakeIOService(node.GetIPEndPoint(), new FakeConnectionPool(), false), node, new ClientConfiguration(), bucketConfig, new FakeTranscoder())); } var vBucketMap = _vBucketServerMap.VBucketMap.First(); var primary = vBucketMap[0]; var replicas = new int[] { vBucketMap[1] }; _vBucket = new VBucket(_servers, 0, primary, replicas, bucketConfig.Rev, _vBucketServerMap); }
public static Node[] ReorderToServerList(this Node[] nodes, VBucketServerMap serverMap) { var reordered = new Node[nodes.Length]; var serversList = serverMap.ServerList; if (serversList == null || serversList.Length == 0) { reordered = nodes; } else { for (var i = 0; i < serversList.Length; i++) { var host = serversList[i].Split(':')[0]; foreach (var n in nodes.Where(n => n.Hostname.Split(':')[0].Equals(host))) { reordered[i] = n; break; } } } return reordered; }
public void Config_With_FFMaps_Uses_Them_When_NMVB(string nodeIp, ResponseStatus responseStatus) { var config = ResourceHelper.ReadResource(@"Documents\configs\config-with-ffmaps.json", InternalSerializationContext.Default.BucketConfig); var vBucketServerMap = new VBucketServerMap(config.VBucketServerMap); IKeyMapper mapper = new VBucketKeyMapper(config, vBucketServerMap, new VBucketFactory(new Mock <ILogger <VBucket> >().Object)); var vBucket = (IVBucket)mapper.MapKey(Key); var op = new Get <dynamic>() { Header = new OperationHeader { Status = responseStatus } }; var mappedKey = mapper.MapKey("mykey", op.WasNmvb()); Assert.Equal(nodeIp, mappedKey.LocatePrimary().ToString()); }
public VBucketKeyMapper(List<IServer> servers, VBucketServerMap vBucketServerMap) : this(new Crc32(), servers, vBucketServerMap) { }
public IVBucket Create(ICollection <IPEndPoint> endPoints, short index, short primary, short[] replicas, uint rev, VBucketServerMap vBucketServerMap, string bucketName) => new VBucket(endPoints, index, primary, replicas, rev, vBucketServerMap, bucketName, _logger);
public void ReadFromReplica_WhenKeyNotFound_ReturnsKeyNotFound() { var controller = new Mock<IClusterController>(); controller.Setup(x => x.Configuration).Returns(new ClientConfiguration()); var server1 = new Mock<IServer>(); server1.Setup(x => x.Send(It.IsAny<IOperation<dynamic>>())).Returns(new OperationResult<dynamic> { Status = ResponseStatus.KeyNotFound }); server1.Setup(x => x.EndPoint).Returns(new IPEndPoint(IPAddress.Loopback, 8091)); var server2 = new Mock<IServer>(); server2.Setup(x => x.Send(It.IsAny<IOperation<dynamic>>())).Returns(new OperationResult<dynamic> {Status = ResponseStatus.KeyNotFound}); server2.Setup(x => x.EndPoint).Returns(new IPEndPoint(IPAddress.Parse("255.255.0.0"), 8091)); var vBucketServerMap = new VBucketServerMap { ServerList = new[] { "localhost:8901", "255.255.0.0:8091" }, VBucketMap = new[] { new[] { 0, 1 } }, VBucketMapForward = new[] { new[] { 1 } } }; var keyMapper = new VBucketKeyMapper(new Dictionary<IPAddress, IServer> { { IPAddress.Loopback, server1.Object}, { IPAddress.Parse("255.255.0.0"), server2.Object} }, vBucketServerMap, 3, "default"); var configInfo = new Mock<IConfigInfo>(); configInfo.Setup(x => x.IsDataCapable).Returns(true); configInfo.Setup(x => x.GetKeyMapper()).Returns(keyMapper); configInfo.Setup(x => x.ClientConfig).Returns(new ClientConfiguration()); var pending = new ConcurrentDictionary<uint, IOperation>(); var executor = new CouchbaseRequestExecuter(controller.Object, configInfo.Object, "default", pending); var op = new ReplicaRead<dynamic>("thekey", null, new DefaultTranscoder(), 100); var result = executor.ReadFromReplica(op); Assert.AreEqual(ResponseStatus.KeyNotFound, result.Status); }
public VBucketKeyMapper(List <IServer> servers, VBucketServerMap vBucketServerMap) : this(new Crc32(), servers, vBucketServerMap) { }
public BucketConfig() { VBucketServerMap = new VBucketServerMap(); }
public BucketConfig() { Nodes = new List <Node>(); VBucketServerMap = new VBucketServerMap(); }