| Quintiq file version 2.0 | 
| #parent: #root | 
| Method PTF_CheckClientStatus ( | 
|   structured[LibPTF_TestScript] testscripts, | 
|   String str | 
| ) as String id:Method_LibPTF_pnlTestController_PTF_CheckClientStatus | 
| { | 
|   #keys: '[102890.0.1871494620]' | 
|   Body: | 
|   [* | 
|     // Checks the overall PTF execution status and perform some post-PTF execution routine when all the scripts has been executed successfully | 
|     alldone         := true; | 
|     tracker         := construct( Strings ); | 
|     rowDelimiter    := LibPTF_Util::StringListRowDelimiter(); | 
|     columnDelimiter := LibPTF_Util::StringListColumnDelimiter(); | 
|     rows            := str.Tokenize( rowDelimiter ); | 
|      | 
|     traverse( rows, Elements, row ) | 
|     { | 
|       columns := row.Tokenize( columnDelimiter ); | 
|      | 
|       user                := columns.Element( 0 ); | 
|       reqsessions         := [Number]columns.Element( 1 ); | 
|       reqconsessions      := [Number]columns.Element( 2 ); | 
|       executedsessions    := [Number]columns.Element( 3 ); | 
|       executingsessions   := [Number]columns.Element( 4 ); | 
|       remainingsessions   := [Number]columns.Element( 5 ); | 
|       startime            := columns.Element( 6 ); | 
|       endtime             := columns.Element( 7 ); | 
|       // elapsedtime      := columns.Element( 8 ); Not being used | 
|       startoffset         := columns.Element( 9 ); | 
|      | 
|       remainingsessions := reqsessions - executedsessions; | 
|      | 
|       script := select( testscripts, | 
|                         Elements, | 
|                         s, | 
|                         true, | 
|                         s.User() = user | 
|                       ); | 
|      | 
|       this.PTF_CheckClientStatusByScript( script, | 
|                                           executedsessions, | 
|                                           reqsessions, | 
|                                           executingsessions, | 
|                                           endtime, | 
|                                           alldone | 
|                                         ); | 
|      | 
|       columns.Flush(); | 
|       columns.Add( user ) | 
|       columns.Add( [String]reqsessions ); | 
|       columns.Add( [String]reqconsessions ); | 
|       columns.Add( [String]executedsessions ); | 
|       columns.Add( [String]executingsessions ); | 
|       columns.Add( [String]remainingsessions ); | 
|       columns.Add( startime ); | 
|       columns.Add( endtime ); | 
|       columns.Add( this.PTF_GetTotalDuration( startime, endtime ) ); | 
|       columns.Add( startoffset ); | 
|      | 
|       tracker.Add( columns.ToString( columnDelimiter ) ); | 
|     } | 
|      | 
|     // After completed all test | 
|     // clock the endtime time | 
|     // disable timer | 
|     if( alldone ) | 
|     { | 
|       this.gt().Enabled( false ); | 
|       lblEndTime.Text( this.PTF_GetCurrentDatetime() ); | 
|      | 
|       // Only execute this if Python related execution is chosen to be executed | 
|       if( this.chkExecutePythonScripts().Checked() ) | 
|       { | 
|         // Execute the PTF_MergeResult.bat to merge the result log files | 
|         LibPTF::Execute( this.PTF_GetBatchFileFullPathForMergeResult() ); | 
|       } | 
|      | 
|       if( this.PTF_IsCopyQTransLogs() ) | 
|       { | 
|         LibPTF::Execute( this.PTF_GetBatchFileFullPathForCollectQServerLog() ); | 
|       } | 
|      | 
|       // Completed all test, remove batch file | 
|       OS::RemoveFile( this.PTF_GetBatchFileFullPathForKickStartClient() ); | 
|       OS::RemoveFile( this.PTF_GetBatchFileFullPathForStartClient() ); | 
|      | 
|       this.PTF_RunPostExecution(); | 
|      | 
|       //Logs a line in log file as an indication of the end of a PTF run | 
|       LibPTF::LogRunEnded(); | 
|     } | 
|      | 
|     return tracker.ToString( rowDelimiter ); | 
|   *] | 
| } |