Quintiq file version 2.0 
 | 
#parent: #root 
 | 
Method PTF_CheckClientStatusByScript ( 
 | 
  LibPTF_TestScript script, 
 | 
  Number executedsessions, 
 | 
  Number reqsessions, 
 | 
  output Number executingsessions_o, 
 | 
  output String endtime_o, 
 | 
  output Boolean alldone_o 
 | 
) id:Method_LibPTF_pnlTestController_PTF_CheckClientStatusByScript 
 | 
{ 
 | 
  #keys: '[104342.0.777090175]' 
 | 
  Body: 
 | 
  [* 
 | 
    // Checks the PTF execution status of a single script and perform some post-PTF execution routine for individual script when the script has been executed successfully 
 | 
     
 | 
    columnDelimiter     := LibPTF_Util::PTFLogFileColumnDelimiter();  
 | 
    user                := script.User(); 
 | 
    resultfiles         := OS::ScanDirectory( this.PTF_GetResultLogPath(), LibPTF::FileExtEndResult() ); 
 | 
    resultfilecount     := this.PTF_GetFileCountFromResultLog( user, LibPTF::FileExtEndResult() ) 
 | 
    tempfilecount       := this.PTF_GetFileCountFromResultLog( user, LibPTF::FileExtTempResult() ) 
 | 
    timeoutbooting      := executedsessions - ( resultfilecount + tempfilecount ); 
 | 
    executingsessions_o := timeoutbooting + tempfilecount; 
 | 
     
 | 
     
 | 
    if( resultfilecount < reqsessions ) 
 | 
    { 
 | 
      alldone_o := false; 
 | 
      if( executedsessions > 0 ) 
 | 
      { 
 | 
        endtime_o := this.PTF_GetCurrentDatetime(); 
 | 
      } 
 | 
    } 
 | 
    else 
 | 
    { 
 | 
      scriptfullpath := this.PTF_GetScriptPath() + script.User() + "_" + script.Project() + LibPTF::FileExtRunningScript(); 
 | 
     
 | 
      // Check if UI logging is required 
 | 
      if( script.LoggingOptions() = "Full" 
 | 
          and OS::IsFile( scriptfullpath ) 
 | 
        ) 
 | 
      { 
 | 
        // Create execution result and result line object 
 | 
        traverse( resultfiles, Elements, result ) 
 | 
        { 
 | 
          fileuser := ""; 
 | 
          clientid := ""; 
 | 
          this.PTF_GetInfoFromResultLogPath( fileuser, clientid, result ); 
 | 
     
 | 
          if( fileuser.ToUpper() = user.ToUpper() ) 
 | 
          { 
 | 
            file := OSFile::Construct(); 
 | 
            file.Open( result, "Read", true ); 
 | 
            scriptresult := file.ReadTextToEnd(); 
 | 
            file.Close(); 
 | 
     
 | 
            totalduration := Duration::Zero(); 
 | 
            if( scriptresult.TrimBoth().Length() > 0 ) 
 | 
            { 
 | 
              totalduration := [Duration]this.PTF_GetTotalDurationFromResultLines( scriptresult ) 
 | 
            } 
 | 
            execresult := LibPTF_ExecResult::Create( script, 
 | 
                                                     [Number]clientid, 
 | 
                                                     totalduration , 
 | 
                                                     fileuser 
 | 
                                                   ); 
 | 
     
 | 
            traverse( scriptresult.Tokenize( String::NewLine() ), Elements, line ) 
 | 
            { 
 | 
              if( line.Length() > 0 ) 
 | 
              { 
 | 
                linebycol       := line.Tokenize( columnDelimiter ); 
 | 
                starttime       := linebycol.Element( 1 ).TrimBoth(); 
 | 
                endtime         := linebycol.Element( 2 ).TrimBoth(); 
 | 
                overallduration := [Number]linebycol.Element( 3 ).TrimBoth(); 
 | 
                actualduration  := [Number]linebycol.Element( 4 ).TrimBoth(); 
 | 
                action          := linebycol.Element( 5 ); 
 | 
                isRunSuccess    := [Boolean]linebycol.Element( 6 ).TrimBoth(); 
 | 
                information     := linebycol.Element( 7 ).TrimBoth(); 
 | 
     
 | 
                LibPTF_ExecResultLine::Create( execresult, 
 | 
                                               action, 
 | 
                                               overallduration, 
 | 
                                               actualduration, 
 | 
                                               this.PTF_ConvertStringToDateTime( starttime ), 
 | 
                                               this.PTF_ConvertStringToDateTime( endtime ), 
 | 
                                               isRunSuccess, 
 | 
                                               information 
 | 
                                             ); 
 | 
              } 
 | 
            } 
 | 
     
 | 
          } // end if of fileuser check 
 | 
        } // end of traversing result file logs 
 | 
      } // end if of logging option 
 | 
     
 | 
      // SUCCESSFULLY finishes the test script execution, REMOVE QRUNSCRIPT files 
 | 
      OS::RemoveFile( scriptfullpath ); 
 | 
    } // end of else block 
 | 
  *] 
 | 
} 
 |