/// <summary>
        /// Initialize for "Comsume Send Credits" test cases.
        /// It will establish RDMA connection and then consume all sent credits
        /// </summary>
        public void Initialize_ConsumeAllSendCredits(bool sendOneMoreMessage = false)
        {
            // define data for test case
            const ushort RECEIVE_CREDIT_MAX = 10;
            const ushort SEND_CREDIT_TARGET = 10;

            BaseTestSite.Log.Add(LogEntryKind.TestStep, "Connect to server over RDMA");
            NtStatus status = smbdAdapter.ConnectToServerOverRDMA();

            BaseTestSite.Assert.AreEqual <NtStatus>(NtStatus.STATUS_SUCCESS, status, "Status of SMBD connection is {0}", status);

            BaseTestSite.Log.Add(LogEntryKind.TestStep, "SMBD Negotiate");
            SmbdNegotiateResponse negotiateResponse;

            status = smbdAdapter.SmbdNegotiate(SEND_CREDIT_TARGET, RECEIVE_CREDIT_MAX, out negotiateResponse);
            BaseTestSite.Assert.AreEqual <NtStatus>(NtStatus.STATUS_SUCCESS, status, "Status of SMBD negotiate is {0}", status);

            status = smbdAdapter.SmbdPostReceive();
            BaseTestSite.Assert.AreEqual <NtStatus>(NtStatus.STATUS_SUCCESS, status, "Status of post receive is {0}", status);

            BaseTestSite.Log.Add(LogEntryKind.TestStep, "Consume all send credits on the client.");
            while (smbdAdapter.ClientConnection.SendCredits > 0)
            {
                status = smbdAdapter.SmbdSendDataTransferMessage(
                    SEND_CREDIT_TARGET,
                    1,
                    SmbdDataTransfer_Flags.NONE,
                    0,
                    0,
                    0,
                    new byte[0]);
                smbdAdapter.ClientConnection.SendCredits--;
            }
            if (sendOneMoreMessage)
            {
                status = smbdAdapter.SmbdSendDataTransferMessage(
                    SEND_CREDIT_TARGET,
                    1,
                    SmbdDataTransfer_Flags.NONE,
                    0,
                    0,
                    0,
                    new byte[0]);
            }
        }