public void OperationWithSpecifiedCredits(ushort credits) { // define test data for this test case ushort receiveCreditMax = credits; ushort sendCreditTarget = credits; uint size = smbdAdapter.TestConfig.ModerateFileSizeInByte; string fileName = SmbdUtilities.CreateRandomFileName(); 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 with server."); SmbdNegotiateResponse response; status = smbdAdapter.SmbdNegotiate(sendCreditTarget, receiveCreditMax, out response); BaseTestSite.Assert.AreEqual <NtStatus>(NtStatus.STATUS_SUCCESS, status, "Status of SMBD negotiate is {0}", status); BaseTestSite.Assert.IsTrue(response.MaxFragmentedSize >= SmbdConnection.FLOOR_MAX_FRAGMENTED_SIZE , "MaxFragmentedSize in negotiate response is {0}", response.MaxFragmentedSize); // check the MaxFragementSize // SMB2 Negotiate, Session Setup, Tree Connect and Open File BaseTestSite.Log.Add(LogEntryKind.TestStep, "Establish SMB2 connection and open file " + fileName); status = smbdAdapter.Smb2EstablishSessionAndOpenFile(fileName); BaseTestSite.Assert.AreEqual <NtStatus>(NtStatus.STATUS_SUCCESS, status, "Status of SMB2 establish session and open file is {0}", status); BaseTestSite.Log.Add(LogEntryKind.TestStep, "Write a moderate size of data to the file."); byte[] data = new byte[size]; WRITE_Response writeResponse; status = (NtStatus)smbdAdapter.Smb2Write(0, data, out writeResponse); BaseTestSite.Assert.AreEqual <NtStatus>(NtStatus.STATUS_SUCCESS, status, "Status of SMB2 write File is {0}", status); BaseTestSite.Assert.AreEqual <uint>(size, writeResponse.Count, "Size of written file is {0}", writeResponse.Count); BaseTestSite.Log.Add(LogEntryKind.TestStep, "Close file and disconnect from server."); smbdAdapter.Smb2CloseFile(); // disconnect smbdAdapter.DisconnectRdma(); }