Skip to content

Commit 6e9f756

Browse files
ms-hujiayazeng
authored andcommitted
Merged PR 699: Select rules for SMBD
2 parents 4dca756 + 4f9b532 commit 6e9f756

File tree

1 file changed

+44
-1
lines changed

1 file changed

+44
-1
lines changed

ProtocolTestManager/Plugins/SMBDPlugin/SMBDPlugin/SMBDValueDetector.cs

Lines changed: 44 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -192,9 +192,52 @@ public Prerequisites GetPrerequisites()
192192
return prerequisites;
193193
}
194194

195+
private CaseSelectRule GenerateRule(string ruleName, bool isSupported)
196+
{
197+
var rule = new CaseSelectRule();
198+
rule.Name = ruleName;
199+
if (isSupported)
200+
{
201+
rule.Status = RuleStatus.Selected;
202+
}
203+
else
204+
{
205+
rule.Status = RuleStatus.NotSupported;
206+
}
207+
return rule;
208+
}
209+
210+
/// <summary>
211+
/// Gets selected rules
212+
/// </summary>
213+
/// <returns>Selected rules</returns>
195214
public List<CaseSelectRule> GetSelectedRules()
196215
{
197-
throw new NotImplementedException();
216+
var selectedRules = new List<CaseSelectRule>();
217+
218+
// select BVT and Non-BVT cases
219+
selectedRules.Add(GenerateRule("Priority.BVT", true));
220+
selectedRules.Add(GenerateRule("Priority.Non-BVT", true));
221+
222+
// select SMBD related cases if RDMA cards of both nodes are detected
223+
bool bothRdmaNicsdetected = detectionInfo.DriverRdmaNICIPAddress != null && detectionInfo.SUTRdmaNICIPAddress != null;
224+
selectedRules.Add(GenerateRule("Feature.SMBD.SMBD Negotiate", bothRdmaNicsdetected));
225+
selectedRules.Add(GenerateRule("Feature.SMBD.SMBD Credits Management", bothRdmaNicsdetected));
226+
selectedRules.Add(GenerateRule("Feature.SMBD.SMBD Data Transfer", bothRdmaNicsdetected));
227+
228+
if (bothRdmaNicsdetected)
229+
{
230+
// select RDMA Channel if RDMA transport is supported
231+
selectedRules.Add(GenerateRule("Feature.SMB2 over SMBD.SMB 30.RDMA Channel", detectionInfo.RDMATransportSupported));
232+
233+
// select Multiple Channels if both RDMA and Non-RDMA transports are supported
234+
selectedRules.Add(GenerateRule("Feature.SMB2 over SMBD.SMB 30.Multiple Channels", detectionInfo.RDMATransportSupported && detectionInfo.NonRDMATransportSupported));
235+
236+
// select RDMA Channel Remote Invalidation if RDMAChannelV1Invalidate is supported
237+
selectedRules.Add(GenerateRule("Feature.SMB2 over SMBD.SMB 302.RDMA Channel Remote Invalidation", detectionInfo.RDMAChannelV1InvalidateSupported));
238+
}
239+
240+
return selectedRules;
198241
}
199242

200243
/// <summary>

0 commit comments

Comments
 (0)