public void When_EnhanchedDurability_Is_False_Hello_Doesnt_Requests_MutationSeqNo()
        {
            const ulong connectionId   = 12345;
            var         mockConnection = new Mock <IConnection>();

            mockConnection.Setup(x => x.ConnectionId).Returns(connectionId);
            var mockConnectionPool = new Mock <IConnectionPool>();

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

            var service = new MultiplexingIOService(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.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))));
        }
        public void Hello_key_is_formatted_with_json_properties()
        {
            const ulong connectionId = 123;
            var         result       = IOServiceBase.BuildHelloKey(connectionId);

            var expected = JsonConvert.SerializeObject(new
            {
                i = string.Join("/", ClientIdentifier.InstanceId.ToString("x16"), connectionId.ToString("x16")),
                a = ClientIdentifier.GetClientDescription()
            }, Formatting.None);

            Assert.AreEqual(expected, result);
        }