Quintiq file version 2.0 #parent: #root Method PTF_StartClient ( String user, String password, String clienttype, String project, String view, String customargumentline, Number minstartclientdelayinsecond, Number maxstartclientdelayinsecond, String dataset, String datasetfolder, String datasetkind ) id:Method_LibPTF_pnlTestController_PTF_StartClient { #keys: '[105690.0.145844532]' Body: [* // Construct the commandline for starting a Client with the parameters entered by user argument := "/autostart/license=ReadWrite"; clientexecutable := ""; fullpathclientexecutable := ""; if( project.Length() > 0 ) { argument := argument + '/project="' + project + '"'; } if( user.Length() > 0 ) { argument := argument + '/user="' + user + '"'; } if( password.Length() > 0 ) { argument := argument + '/password="' + password + '"'; } if( view.Length() > 0 ) { argument := argument + '/view="' + view + '"'; } // Replacement values to bypass batch file reserved words argument := argument.ReplaceAll( '/', '@' ); // Dataset folder adjustment datasetfolder := datasetfolder.TrimBoth(); missingbeginslash := datasetfolder.SubString( 0, 1 ) <> "/" extraendslash := datasetfolder.RestString( datasetfolder.Length() -1 ) = "/" if( missingbeginslash ) { datasetfolder := "/" + datasetfolder; } if( extraendslash ) { datasetfolder := datasetfolder.SubString( 0, datasetfolder.Length() - 1 ); } selectdataset := '/selectdataset="' + datasetkind + ':' + datasetfolder + '/' + dataset + '"'; argument := argument + selectdataset; if( customargumentline.Length() > 0 ) { customargs := customargumentline.Tokenize( " " ); customarguments := ""; traverse( customargs, Elements, customarg ) { customarguments := customarguments + customarg.TrimBoth(); } argument := argument + customarguments; } if( clienttype = LibPTF_Util::ClientType_ThinClient() ) { clientexecutable := LibPTF_Util::ExecutableName_ThinClient(); } else if( clienttype = LibPTF_Util::ClientType_FatClient() ) { clientexecutable := LibPTF_Util::ExecutableName_FatClient(); } fullpathclientexecutable := '"' + this.PTF_GetClientExecutablePath() + clientexecutable + '"'; // The following are replaced with some other values because they are // reserved words in the batch file when exectuted from command windows. // The corresponding batch file will make the necessary conversion when executes argument := argument.ReplaceAll( '=', '$' ); argument := argument.ReplaceAll( ' ', '\%20' ); argument := argument.ReplaceAll( '"', '#' ); argument := argument.ReplaceAll( ">", "gtsign" ); argument := argument.ReplaceAll( "<", "ltsign" ); fullpathclientexecutable := fullpathclientexecutable.ReplaceAll( ' ', '\%20' ); fullpathclientexecutable := fullpathclientexecutable.ReplaceAll( '"', '#' ); // Get random delay between the start client delay range randomdelayinsecond := Number::Random( minstartclientdelayinsecond, maxstartclientdelayinsecond ); command := 'cmd /c "' + this.PTF_GetBatchFileFullPathForKickStartClient() + '" ' + argument + ',' + [String]randomdelayinsecond + ',' + fullpathclientexecutable; Application.ExecuteCommand( command ); *] }