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 ); 
 | 
  *] 
 | 
} 
 |