Quintiq file version 2.0 #parent: #root Method PTF_ExecuteClient ( structured[LibPTF_TestScript] testscripts, String str ) as String id:Method_LibPTF_pnlTestController_PTF_ExecuteClient { #keys: '[102890.0.1874250332]' Body: [* // Checks the status of the expected clients and launched clients in all the scripts and launch the next batches of clients when the previous batches of clients complete its execution rowDelimiter := LibPTF_Util::StringListRowDelimiter(); columnDelimiter := LibPTF_Util::StringListColumnDelimiter(); tracker := construct( Strings ); rows := str.Tokenize( rowDelimiter ); traverse( rows, Elements, row ) { columns := row.Tokenize( columnDelimiter ); user := columns.Element( 0 ); reqSessions := [Number]columns.Element( 1 ); reqConcurrentSessions := [Number]columns.Element( 2 ); executedSessions_o := [Number]columns.Element( 3 ); executingSessions_o := [Number]columns.Element( 4 ); remainingSessions := [Number]columns.Element( 5 ); startTime_o := columns.Element( 6 ); endTime := columns.Element( 7 ); // elapsedtime := columns.Element( 8 ); Not being used startoffset := columns.Element( 9 ); remainingConcurrentSessions := reqConcurrentSessions - executingSessions_o; script := select( testscripts, Elements, s, true, s.User() = user ); currentTime := this.PTF_ConvertStringToDateTime( this.PTF_GetCurrentDatetime() ); if( remainingSessions > 0 and this.PTF_ConvertStringToDateTime( lblStartTime.Text() ) + [Duration]startoffset <= currentTime ) { nrOfClientsToStart := minvalue( remainingSessions, remainingConcurrentSessions ); this.PTF_ExecuteClientByScript( script, nrOfClientsToStart, executedSessions_o, executingSessions_o, startTime_o ); } columns.Flush(); columns.Add( user ); columns.Add( [String]reqSessions ); columns.Add( [String]reqConcurrentSessions ); columns.Add( [String]executedSessions_o ); columns.Add( [String]executingSessions_o ); columns.Add( [String]remainingSessions ); columns.Add( startTime_o ); columns.Add( endTime ); columns.Add( this.PTF_GetTotalDuration( startTime_o, endTime ) ); columns.Add( startoffset ); tracker.Add( columns.ToString( columnDelimiter ) ); } return tracker.ToString( rowDelimiter ); *] }