/// <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]); } }