コード例 #1
0
 public void TestFixtureSetUp()
 {
     var ipEndpoint = UriExtensions.GetEndPoint(_address);
     var connectionPoolConfig = new PoolConfiguration { UseSsl = false };
     _connectionPool = new ConnectionPool<Connection>(connectionPoolConfig, ipEndpoint);
     _ioService = new PooledIOService(_connectionPool);
 }
コード例 #2
0
 internal static IIOService CreateIOService(INodeAdapter node)
 {
     var server = node.Hostname.Replace("8091", node.KeyValue.ToString(CultureInfo.InvariantCulture));
     var connectionPool = new ConnectionPool<Connection>(new PoolConfiguration(), UriExtensions.GetEndPoint(server));
     var ioService = new PooledIOService(connectionPool);
     return ioService;
 }
コード例 #3
0
        public void When_EnhanchedDurability_Is_False_Hello_Doesnt_Requests_MutationSeqNo()
        {
            var mockConnection = new Mock <IConnection>();

            mockConnection.Setup(x => x.MustEnableServerFeatures).Returns(true);

            var mockConnectionPool = new Mock <IConnectionPool>();

            mockConnectionPool.Setup(x => x.Acquire()).Returns(mockConnection.Object);
            mockConnectionPool.SetupGet(x => x.Configuration).Returns(new PoolConfiguration {
                UseEnhancedDurability = false
            });
            mockConnectionPool.Setup(x => x.Connections).Returns(new List <IConnection> {
                mockConnection.Object
            });

            var service = new PooledIOService(mockConnectionPool.Object);

            service.Execute(new FakeOperationWithRequiredKey("key", null, new DefaultTranscoder(), 0));

            var features      = new short[] { (byte)ServerFeatures.SubdocXAttributes, (byte)ServerFeatures.SelectBucket };
            var expectedBytes = new Hello(features.ToArray(), new DefaultTranscoder(), 0, 0).Write();

            mockConnectionPool.Verify(x => x.Acquire(), Times.Once);
            mockConnection.Verify(x => x.Send(It.Is <byte[]>(bytes => bytes.SequenceEqual(expectedBytes))));
        }
コード例 #4
0
        internal static IIOService CreateIOService(string server)
        {
            var connectionPool = new ConnectionPool <Connection>(new PoolConfiguration(), UriExtensions.GetEndPoint(server));
            var ioService      = new PooledIOService(connectionPool);

            return(ioService);
        }
コード例 #5
0
        internal static IIOService CreateIOService(INodeAdapter node)
        {
            var server         = node.Hostname.Replace("8091", node.KeyValue.ToString(CultureInfo.InvariantCulture));
            var connectionPool = new ConnectionPool <Connection>(new PoolConfiguration(), UriExtensions.GetEndPoint(server));
            var ioService      = new PooledIOService(connectionPool);

            return(ioService);
        }
コード例 #6
0
        public virtual void OneTimeSetUp()
        {
            EndPoint = UriExtensions.GetEndPoint(Address);
            var connectionPoolConfig = new PoolConfiguration();

            _connectionPool = new ConnectionPool <Connection>(connectionPoolConfig, EndPoint);
            IOService       = new PooledIOService(_connectionPool);
            Transcoder      = new DefaultTranscoder();
        }
コード例 #7
0
        public void OneTimeSetUp()
        {
            var ipEndpoint           = UriExtensions.GetEndPoint(_address);
            var connectionPoolConfig = new PoolConfiguration {
                UseSsl = false
            };

            _connectionPool = new ConnectionPool <Connection>(connectionPoolConfig, ipEndpoint);
            _ioService      = new PooledIOService(_connectionPool);
        }
コード例 #8
0
        public void Result_Has_Failure_Status_If_ErrorMap_Available()
        {
            const string codeString = "2c"; // 44
            var          code       = short.Parse(codeString, NumberStyles.HexNumber);
            var          errorCode  = new ErrorCode {
                Name = "test"
            };
            var errorMap = new ErrorMap
            {
                Version  = 1,
                Revision = 1,
                Errors   = new Dictionary <string, ErrorCode>
                {
                    { codeString, errorCode }
                }
            };

            var converter     = new DefaultConverter();
            var responseBytes = new byte[24];

            converter.FromByte((byte)Magic.Response, responseBytes, HeaderIndexFor.Magic);
            converter.FromInt16(code, responseBytes, HeaderIndexFor.Status);

            var mockConnection = new Mock <IConnection>();

            mockConnection.Setup(x => x.IsConnected).Returns(true);
            mockConnection.Setup(x => x.Send(It.IsAny <byte[]>())).Returns(responseBytes);

            var mockConnectionPool = new Mock <IConnectionPool>();

            mockConnectionPool.Setup(x => x.Acquire()).Returns(mockConnection.Object);
            mockConnectionPool.SetupGet(x => x.Configuration).Returns(new PoolConfiguration
            {
                ClientConfiguration = new ClientConfiguration {
                    Tracer = NullTracer.Instance
                }
            });
            mockConnectionPool.Setup(x => x.Connections).Returns(new List <IConnection> {
                mockConnection.Object
            });

            var service = new PooledIOService(mockConnectionPool.Object)
            {
                ErrorMap = errorMap
            };

            var result = service.Execute(new FakeOperationWithRequiredKey("key", null, new DefaultTranscoder(), 0, 0));

            Assert.AreEqual(ResponseStatus.Failure, result.Status);
            Assert.AreEqual(errorCode.ToString(), result.Message);
        }
コード例 #9
0
        public void When_SaslMechinism_Is_Set_On_PoolIOService_And_Authentication_Fails_Return_AuthenticationError()
        {
            var mockAuthenticator = new Mock<ISaslMechanism>();
            mockAuthenticator.Setup(x => x.Authenticate(It.IsAny<IConnection>(), Username, Password))
                .Returns(false);
            mockAuthenticator.SetupGet(x => x.Username).Returns(BucketName);

            var service = new PooledIOService(_connectionPool, mockAuthenticator.Object);
            var operation = new SaslStart("PLAIN", GetAuthData(Username, Password), new DefaultTranscoder(), OperationLifespan);
            var response = service.Execute(operation);

            Assert.AreEqual(string.Format("Authentication failed for bucket '{0}'", BucketName), response.Message);
            Assert.AreEqual(ResponseStatus.AuthenticationError, response.Status);
            Assert.IsFalse(response.Success);
        }
コード例 #10
0
        public void When_SaslMechinism_Is_Set_On_PoolIOService_And_Authentication_Fails_Return_AuthenticationError()
        {
            var mockAuthenticator = new Mock <ISaslMechanism>();

            mockAuthenticator.Setup(x => x.Authenticate(It.IsAny <IConnection>(), Username, Password))
            .Returns(false);
            mockAuthenticator.SetupGet(x => x.Username).Returns(BucketName);

            var service   = new PooledIOService(_connectionPool, mockAuthenticator.Object);
            var operation = new SaslStart("PLAIN", GetAuthData(Username, Password), new DefaultTranscoder(), OperationLifespan);
            var response  = service.Execute(operation);

            Assert.AreEqual(string.Format("Authentication failed for bucket '{0}'", BucketName), response.Message);
            Assert.AreEqual(ResponseStatus.AuthenticationError, response.Status);
            Assert.IsFalse(response.Success);
        }
コード例 #11
0
        public void When_Operation_Fails_Without_SocketException_ClientFailure_Is_Returned()
        {
            var mockedSasl = new Mock <ISaslMechanism>();

            var mockedConnection = new Mock <IConnection>();

            mockedConnection.Setup(x => x.Send(It.IsAny <byte[]>())).Throws <IndexOutOfRangeException>();
            mockedConnection.Setup(x => x.IsAuthenticated).Returns(true);

            var mockedPool = new Mock <IConnectionPool>();

            mockedPool.Setup(x => x.Acquire()).Returns(mockedConnection.Object);

            var service = new PooledIOService(mockedPool.Object, mockedSasl.Object);
            var op      = new Add <string>(string.Empty, "", null, new DefaultTranscoder(new DefaultConverter()), 100);
            var result  = service.Execute(op);

            Assert.AreEqual(ResponseStatus.ClientFailure, result.Status);
        }
コード例 #12
0
        public void When_EnhanchedDurability_Is_True_Hello_Requests_MutationSeqNo()
        {
            const ulong connectionId   = 12345;
            var         mockConnection = new Mock <IConnection>();

            mockConnection.Setup(x => x.ConnectionId).Returns(connectionId);
            mockConnection.Setup(x => x.MustEnableServerFeatures).Returns(true);

            var mockConnectionPool = new Mock <IConnectionPool>();

            mockConnectionPool.Setup(x => x.Acquire()).Returns(mockConnection.Object);
            mockConnectionPool.SetupGet(x => x.Configuration).Returns(new PoolConfiguration
            {
                UseEnhancedDurability = true,
                ClientConfiguration   = new ClientConfiguration {
                    Tracer = NullTracer.Instance
                }
            });
            mockConnectionPool.Setup(x => x.Connections).Returns(new List <IConnection> {
                mockConnection.Object
            });

            var service = new PooledIOService(mockConnectionPool.Object);

            service.Execute(new FakeOperationWithRequiredKey("key", null, new DefaultTranscoder(), 0));

            var features = new[]
            {
                (short)ServerFeatures.SubdocXAttributes,
                (short)ServerFeatures.SelectBucket,
                (short)ServerFeatures.XError,
                (short)ServerFeatures.MutationSeqno,
                (short)ServerFeatures.ServerDuration
            };
            var key           = IOServiceBase.BuildHelloKey(connectionId);
            var expectedBytes = new Hello(key, features.ToArray(), new DefaultTranscoder(), 0, 0).Write();

            mockConnectionPool.Verify(x => x.Acquire(), Times.Once);
            mockConnection.Verify(x => x.Send(It.Is <byte[]>(bytes => bytes.SequenceEqual(expectedBytes))));
        }
コード例 #13
0
        public void Result_Has_UnknownError_Status_If_ErrorMap_Not_Available()
        {
            const string codeString = "2C"; // 44
            var          code       = short.Parse(codeString, NumberStyles.HexNumber);
            var          errorCode  = new ErrorCode {
                name = "test"
            };
            var errorMap = new ErrorMap
            {
                version  = 1,
                revision = 1,
                errors   = new Dictionary <string, ErrorCode>()
            };

            var converter     = new DefaultConverter();
            var responseBytes = new byte[24];

            converter.FromInt16(code, responseBytes, HeaderIndexFor.Status);

            var mockConnection = new Mock <IConnection>();

            mockConnection.Setup(x => x.IsConnected).Returns(true);
            mockConnection.Setup(x => x.Send(It.IsAny <byte[]>())).Returns(responseBytes);

            var mockConnectionPool = new Mock <IConnectionPool>();

            mockConnectionPool.Setup(x => x.Acquire()).Returns(mockConnection.Object);
            mockConnectionPool.SetupGet(x => x.Configuration).Returns(new PoolConfiguration());

            var service = new PooledIOService(mockConnectionPool.Object);

            service.SetErrorMap(errorMap);

            var result = service.Execute(new FakeOperationWithRequiredKey("key", null, new DefaultTranscoder(), 0, 0));

            Assert.AreEqual(ResponseStatus.UnknownError, result.Status);
            Assert.AreEqual(converter.ToString(responseBytes, 0, 24), result.Message);
        }
コード例 #14
0
 internal static IIOService CreateIOService(string server)
 {
     var connectionPool = new ConnectionPool<Connection>(new PoolConfiguration(), UriExtensions.GetEndPoint(server));
     var ioService = new PooledIOService(connectionPool);
     return ioService;
 }
コード例 #15
0
        public void When_Operation_Fails_With_SocketException_TransportFailure_Is_Returned()
        {
            var mockedSasl = new Mock<ISaslMechanism>();

            var mockedConnection = new Mock<IConnection>();
            mockedConnection.Setup(x => x.Send(It.IsAny<byte[]>())).Throws<SocketException>();
            mockedConnection.Setup(x => x.IsAuthenticated).Returns(true);

            var mockedPool = new Mock<IConnectionPool>();
            mockedPool.Setup(x => x.Acquire()).Returns(mockedConnection.Object);

            var service = new PooledIOService(mockedPool.Object, mockedSasl.Object);
            var op = new Get<object>(string.Empty, null, new DefaultTranscoder(new DefaultConverter()), 100);
            var result = service.Execute(op);

            Assert.AreEqual(ResponseStatus.TransportFailure, result.Status);
        }