public static void SetupConnection(ModelDialectRevision maxSmbVersionClientSupported, ModelShareFlag shareFlag, ModelShareType shareType) { Condition.IsTrue(State == ModelState.Initialized); Open = null; Request = null; Connection_Dialect = DialectRevision.Smb2Unknown; Connection_Dialect = ModelHelper.DetermineNegotiateDialect(maxSmbVersionClientSupported, Config.MaxSmbVersionSupported); Share_ForceLevel2Oplock = shareFlag == ModelShareFlag.SMB2_SHAREFLAG_FORCE_LEVELII_OPLOCK; Share_Type_Include_STYPE_CLUSTER_SOFS = shareType == ModelShareType.STYPE_CLUSTER_SOFS; State = ModelState.Connected; }
public void SetupConnection(ModelDialectRevision maxSmbVersionClientSupported, ModelShareFlag shareFlag, ModelShareType shareType) { IPAddress ip; if (shareType == ModelShareType.STYPE_CLUSTER_SOFS) { server = testConfig.ScaleOutFileServerName; ip = Dns.GetHostEntry(server).AddressList[0]; if (shareFlag == ModelShareFlag.SMB2_SHAREFLAG_FORCE_LEVELII_OPLOCK) { uncSharePath = Smb2Utility.GetUncPath(testConfig.ScaleOutFileServerName, testConfig.ShareWithForceLevel2AndSOFS); } else { uncSharePath = Smb2Utility.GetUncPath(testConfig.ScaleOutFileServerName, testConfig.ShareWithoutForceLevel2WithSOFS); } } else { server = testConfig.SutComputerName; ip = testConfig.SutIPAddress; if (shareFlag == ModelShareFlag.SMB2_SHAREFLAG_FORCE_LEVELII_OPLOCK) { uncSharePath = Smb2Utility.GetUncPath(testConfig.SutComputerName, testConfig.ShareWithForceLevel2WithoutSOFS); } else { uncSharePath = Smb2Utility.GetUncPath(testConfig.SutComputerName, testConfig.ShareWithoutForceLevel2OrSOFS); } } testClient = new Smb2FunctionalClient(testConfig.Timeout, testConfig, this.Site); testClient.Smb2Client.OplockBreakNotificationReceived += new Action <Packet_Header, OPLOCK_BREAK_Notification_Packet>(OnOplockBreakNotificationReceived); testClient.ConnectToServer(testConfig.UnderlyingTransport, server, ip, testConfig.ClientNic1IPAddress); DialectRevision[] dialects = Smb2Utility.GetDialects(ModelUtility.GetDialectRevision(maxSmbVersionClientSupported)); NEGOTIATE_Response?negotiateResponse = null; testClient.Negotiate( dialects, testConfig.IsSMB1NegotiateEnabled, checker: (header, response) => { Site.Assert.AreEqual( Smb2Status.STATUS_SUCCESS, header.Status, "{0} should succeed", header.Command); negotiateResponse = response; }); negotiatedDialect = negotiateResponse.Value.DialectRevision; testClient.SessionSetup( testConfig.DefaultSecurityPackage, server, testConfig.AccountCredential, testConfig.UseServerGssToken); testClient.TreeConnect( uncSharePath, out treeId, checker: (header, response) => { Site.Assert.AreEqual( Smb2Status.STATUS_SUCCESS, header.Status, "{0} should succeed", header.Command); Site.Assert.AreEqual( shareFlag == ModelShareFlag.SMB2_SHAREFLAG_FORCE_LEVELII_OPLOCK, response.ShareFlags.HasFlag(ShareFlags_Values.SHAREFLAG_FORCE_LEVELII_OPLOCK), "SHAREFLAG_FORCE_LEVELII_OPLOCK is{0}expected to be set", shareFlag == ModelShareFlag.SMB2_SHAREFLAG_FORCE_LEVELII_OPLOCK ? " " : " not "); if (ModelUtility.IsSmb3xFamily(negotiateResponse.Value.DialectRevision)) { Site.Assert.AreEqual( shareType == ModelShareType.STYPE_CLUSTER_SOFS, response.Capabilities.HasFlag(Share_Capabilities_Values.SHARE_CAP_SCALEOUT), "SHARE_CAP_SCALEOUT is{0}expected to be set", shareType == ModelShareType.STYPE_CLUSTER_SOFS ? " " : " not "); } }); }
public void SetupConnection(ModelDialectRevision maxSmbVersionClientSupported, ModelShareFlag shareFlag, ModelShareType shareType) { IPAddress ip; if (shareType == ModelShareType.STYPE_CLUSTER_SOFS) { server = testConfig.ScaleOutFileServerName; ip = Dns.GetHostEntry(server).AddressList[0]; if (shareFlag == ModelShareFlag.SMB2_SHAREFLAG_FORCE_LEVELII_OPLOCK) { uncSharePath = Smb2Utility.GetUncPath(testConfig.ScaleOutFileServerName, testConfig.ShareWithForceLevel2AndSOFS); } else { uncSharePath = Smb2Utility.GetUncPath(testConfig.ScaleOutFileServerName, testConfig.ShareWithoutForceLevel2WithSOFS); } } else { server = testConfig.SutComputerName; ip = testConfig.SutIPAddress; if (shareFlag == ModelShareFlag.SMB2_SHAREFLAG_FORCE_LEVELII_OPLOCK) { uncSharePath = Smb2Utility.GetUncPath(testConfig.SutComputerName, testConfig.ShareWithForceLevel2WithoutSOFS); } else { uncSharePath = Smb2Utility.GetUncPath(testConfig.SutComputerName, testConfig.ShareWithoutForceLevel2OrSOFS); } } testClient = new Smb2FunctionalClient(testConfig.Timeout, testConfig, this.Site); testClient.Smb2Client.OplockBreakNotificationReceived += new Action<Packet_Header, OPLOCK_BREAK_Notification_Packet>(OnOplockBreakNotificationReceived); testClient.ConnectToServer(testConfig.UnderlyingTransport, server, ip, testConfig.ClientNic1IPAddress); DialectRevision[] dialects = Smb2Utility.GetDialects(ModelUtility.GetDialectRevision(maxSmbVersionClientSupported)); NEGOTIATE_Response? negotiateResponse = null; testClient.Negotiate( dialects, testConfig.IsSMB1NegotiateEnabled, checker: (header, response) => { Site.Assert.AreEqual( Smb2Status.STATUS_SUCCESS, header.Status, "{0} should succeed", header.Command); negotiateResponse = response; }); negotiatedDialect = negotiateResponse.Value.DialectRevision; testClient.SessionSetup( testConfig.DefaultSecurityPackage, server, testConfig.AccountCredential, testConfig.UseServerGssToken); testClient.TreeConnect( uncSharePath, out treeId, checker: (header, response) => { Site.Assert.AreEqual( Smb2Status.STATUS_SUCCESS, header.Status, "{0} should succeed", header.Command); Site.Assert.AreEqual( shareFlag == ModelShareFlag.SMB2_SHAREFLAG_FORCE_LEVELII_OPLOCK, response.ShareFlags.HasFlag(ShareFlags_Values.SHAREFLAG_FORCE_LEVELII_OPLOCK), "SHAREFLAG_FORCE_LEVELII_OPLOCK is{0}expected to be set", shareFlag == ModelShareFlag.SMB2_SHAREFLAG_FORCE_LEVELII_OPLOCK ? " " : " not "); if (ModelUtility.IsSmb3xFamily(negotiateResponse.Value.DialectRevision)) { Site.Assert.AreEqual( shareType == ModelShareType.STYPE_CLUSTER_SOFS, response.Capabilities.HasFlag(Share_Capabilities_Values.SHARE_CAP_SCALEOUT), "SHARE_CAP_SCALEOUT is{0}expected to be set", shareType == ModelShareType.STYPE_CLUSTER_SOFS ? " " : " not "); } }); }