예제 #1
0
        /// <summary>
        /// Write a log message.
        /// </summary>
        /// <param name="level">Log level. Will throw exception when using DetectLogLevel.Error</param>
        /// <param name="msg">Log message.</param>
        /// <param name="startNewLine">Start a new line before this message when to UI. True by default.</param>
        /// <param name="style">The style of the message</param>
        public void AddLog(DetectLogLevel level, string msg, bool startNewLine = true, LogStyle style = LogStyle.Default)
        {
            switch (level)
            {
            case DetectLogLevel.Information:
                ProcessStepStatus(style);
                DetectorUtil.WriteLog(msg, startNewLine, style);
                break;

            case DetectLogLevel.Warning:
                ProcessStepStatus(style);
                break;

            case DetectLogLevel.Error:
                AddLog(DetectLogLevel.Information, msg);
                // PTM will handle the exception and pop up a dialog box to user.
                throw new Exception(msg);

            default:
                break;
            }
        }
        public bool SetPrerequisiteProperties(Dictionary <string, string> properties)
        {
            detectionInfo.Authentication          = (SecurityPackageType)Enum.Parse(typeof(SecurityPackageType), properties[PropertyDictionaryConstant.AUTHENTICATION]);
            detectionInfo.SUTName                 = properties[PropertyDictionaryConstant.SUTNAME];
            detectionInfo.DomainName              = properties[PropertyDictionaryConstant.DOMAINNAME];
            detectionInfo.UserName                = properties[PropertyDictionaryConstant.SUTUSERNAME];
            detectionInfo.Password                = properties[PropertyDictionaryConstant.SUTPASSWORD];
            detectionInfo.IsWindowsImplementation = Boolean.Parse(properties[PropertyDictionaryConstant.ISWINDOWSIMPLEMENTATION]);
            detectionInfo.ShareFolder             = properties[PropertyDictionaryConstant.SHAREFOLDER];
            detectionInfo.SMBDPort                = UInt16.Parse(properties[PropertyDictionaryConstant.SMBDPORT]);

            detectionInfo.ConnectionTimeout    = TimeSpan.FromSeconds(UInt32.Parse(properties[PropertyDictionaryConstant.CONNECTIONTIMEOUT]));
            detectionInfo.Endian               = (RDMAEndian)Enum.Parse(typeof(RDMAEndian), DetectorUtil.GetPropertyValue(PtfConfigConstant.ENDIANOFBUFFERDESCRIPTOR));
            detectionInfo.SMBDClientCapability = new SMBDClientCapability()
            {
                CreditsRequested  = UInt16.Parse(DetectorUtil.GetPropertyValue(PtfConfigConstant.SENDCREDITTARGET)),
                ReceiveCreditMax  = UInt16.Parse(DetectorUtil.GetPropertyValue(PtfConfigConstant.RECEIVECREDITMAX)),
                PreferredSendSize = UInt32.Parse(DetectorUtil.GetPropertyValue(PtfConfigConstant.MAXSENDSIZE)),
                MaxReceiveSize    = UInt32.Parse(DetectorUtil.GetPropertyValue(PtfConfigConstant.MAXRECEIVESIZE)),
                MaxFragmentedSize = UInt32.Parse(DetectorUtil.GetPropertyValue(PtfConfigConstant.MAXFRAGMENTEDSIZE))
            };
            return(true);
        }
        /// <summary>
        /// Get the prerequisites for auto-detection.
        /// </summary>
        /// <returns>A instance of Prerequisites class.</returns>
        public Prerequisites GetPrerequisites()
        {
            var prerequisites = new Prerequisites();

            prerequisites.Title   = "MS-SMBD";
            prerequisites.Summary = "Please input the below info to detect SUT.\r\nIf SUT is in WORKGROUP, leave Domain Name blank.";

            // Properties
            prerequisites.Properties = new Dictionary <string, List <string> >();

            string sutName = DetectorUtil.GetPropertyValue(DeploymentPtfConfigConstant.SUTCOMPUTERNAME);

            prerequisites.Properties.Add(PropertyDictionaryConstant.SUTNAME, new List <string> {
                sutName
            });

            string domainName = DetectorUtil.GetPropertyValue(DeploymentPtfConfigConstant.DOMAINNAME);

            prerequisites.Properties.Add(PropertyDictionaryConstant.DOMAINNAME, new List <string> {
                domainName
            });

            string sutUserName = DetectorUtil.GetPropertyValue(DeploymentPtfConfigConstant.SUTUSERNAME);

            prerequisites.Properties.Add(PropertyDictionaryConstant.SUTUSERNAME, new List <string> {
                sutUserName
            });

            string sutPassword = DetectorUtil.GetPropertyValue(DeploymentPtfConfigConstant.SUTPASSWORD);

            prerequisites.Properties.Add(PropertyDictionaryConstant.SUTPASSWORD, new List <string> {
                sutPassword
            });

            prerequisites.Properties.Add(PropertyDictionaryConstant.AUTHENTICATION, new List <string>()
            {
                SecurityPackageType.Negotiate.ToString(),
                SecurityPackageType.Kerberos.ToString(),
                SecurityPackageType.Ntlm.ToString()
            });

            string shareFolder = DetectorUtil.GetPropertyValue(DeploymentPtfConfigConstant.SHAREFOLDER);

            prerequisites.Properties.Add(PropertyDictionaryConstant.SHAREFOLDER, new List <string> {
                shareFolder
            });

            prerequisites.Properties.Add(PropertyDictionaryConstant.ISWINDOWSIMPLEMENTATION, new List <string> {
                "True", "False"
            });

            string smbdPort = DetectorUtil.GetPropertyValue(PtfConfigConstant.SMBDTCPPORT);

            prerequisites.Properties.Add(PropertyDictionaryConstant.SMBDPORT, new List <string> {
                smbdPort
            });

            string connectionTimeout = DetectorUtil.GetPropertyValue(PtfConfigConstant.SMB2CONNECTIONTIMEOUTINSECONDS);

            prerequisites.Properties.Add(PropertyDictionaryConstant.CONNECTIONTIMEOUT, new List <string> {
                connectionTimeout
            });

            return(prerequisites);
        }
        /// <summary>
        /// Get the prerequisites for auto-detection: Read the configuration values from .ptfconfig file into prerequisites.Properties
        /// </summary>
        /// <returns>A instance of Prerequisites class.</returns>
        public Prerequisites GetPrerequisites()
        {
            Prerequisites prerequisites = new Prerequisites();

            prerequisites.Title   = "Pre-Detect Configure";
            prerequisites.Summary = "Please input below info to detect SUT.\r\nIf SUT is ContentServer, leave \"HostedCache Server Name\" as blank.";

            Dictionary <string, List <string> > propertiesDic = new Dictionary <string, List <string> >();

            #region Set Properties

            //Retrieve saved value from *.ptfconfig file
            string contentServerName     = DetectorUtil.GetPropertyValue("ContentServerComputerName");
            string hostedCacheServerName = DetectorUtil.GetPropertyValue("HostedCacheServerComputerName");
            string domain           = DetectorUtil.GetPropertyValue("DomainName");
            string user             = DetectorUtil.GetPropertyValue("UserName");
            string password         = DetectorUtil.GetPropertyValue("UserPassword");
            string contentTransport = DetectorUtil.GetPropertyValue("ContentTransport");
            string uncSharePath     = DetectorUtil.GetPropertyValue("SharedFolderName");

            List <string> contentServerList     = new List <string>();
            List <string> hostedCacheServerList = new List <string>();
            List <string> domainList            = new List <string>();
            List <string> SUTList          = new List <string>();
            List <string> userList         = new List <string>();
            List <string> passwordList     = new List <string>();
            List <string> transportList    = new List <string>();
            List <string> uncSharePathList = new List <string>();

            if (string.IsNullOrWhiteSpace(contentServerName) ||
                string.IsNullOrWhiteSpace(hostedCacheServerName) ||
                string.IsNullOrWhiteSpace(domain) ||
                string.IsNullOrWhiteSpace(user) ||
                string.IsNullOrWhiteSpace(password) ||
                string.IsNullOrWhiteSpace(contentTransport) ||
                string.IsNullOrWhiteSpace(uncSharePath))
            {
                contentServerList.Add("ContentServer");
                hostedCacheServerList.Add("HostedCacheServer");
                domainList.Add("contoso.com");
                userList.Add("administrator");
                passwordList.Add("Password01!");
                transportList.Add("SMB2");
                uncSharePathList.Add("C:\\FileShare");
            }
            else
            {
                contentServerList.Add(contentServerName);
                hostedCacheServerList.Add(hostedCacheServerName);
                domainList.Add(domain);
                userList.Add(user);
                passwordList.Add(password);
                transportList.Add(contentTransport);
                uncSharePathList.Add(uncSharePath);
            }

            propertiesDic.Add(ContentServerTitle, contentServerList);
            propertiesDic.Add(HostedCacheServerTitle, hostedCacheServerList);
            propertiesDic.Add(domainTitle, domainList);
            propertiesDic.Add(userTitle, userList);
            propertiesDic.Add(passwordTitle, passwordList);
            propertiesDic.Add(contentTransportTitle, transportList);
            propertiesDic.Add(uncSharePathTitle, uncSharePathList);

            //Get the real environment DomainName
            string domainName = IPGlobalProperties.GetIPGlobalProperties().DomainName;

            #endregion

            prerequisites.Properties = propertiesDic;

            return(prerequisites);
        }