Example: Transactions
With the necessary variations, this example also applies to sub-transactions and transaction instances.
function Action(){ var i; var iteration = 100; var aStr =[]; var think_time; var wasteTime, actualElapsedTime; var MasterT, timer; lr.startTransaction("Stop&Start"); /* Call web.url as part of business process. In this example, the call is represented by a loop to ensure that some time passes. */ // web.url(.....); for (i=0; i < iteration; ++i) { lr.logMessage(i); } if (lr.getTransactionStatus() == lr.FAIL) { /* web_url has failed the transaction. No point in continuing, * because future calls will probably fail too */ lr.failTransWithError("web.url call failed transaction."); return; } /* Output the duration to this point (0.343750 seconds) with transaction active. */ lr.outputMessage("First time = "+lr.getTransactionDuration("Stop&Start")); // Create some waste time. timer = lr.startTimer(); for (i=0; i < iteration; ++i) { lr.logMessage(i); } wasteTime = lr.endTimer(timer); /* Convert Timer in seconds to wasted time in milliseconds and add to internally generated waste time */ wasteTime *= 1000; lr.wastedTime(wasteTime); lr.outputMessage("After lr_waste_time: Duration = " + lr.getTransactionDuration("Demo"),+" - Waste = " + lr.getTransactionWastedTime("Demo")); // Stop the transaction lr.stopTransaction("Stop&Start"); /* Output the duration to this point (0.359375 seconds) with transaction stopped. */ lr.outputMessage("Immediately after stop = " +lr.getTransactionDuration("Stop&Start")); // Ensure that some time passes. for (i=0; i < iteration; ++i) { lr.logMessage(i); } /* Output the duration to this point (0.359375 seconds) with transaction still stopped but more time passed. Note that time is the same. The time spent in the loop while the transaction was stopped is not reported. */ lr.outputMessage("After stop and loop = "+lr.getTransactionDuration("Stop&Start")); // Resume the transaction lr.resumeTransaction("Stop&Start"); /* Note that with the transaction resumed, all the time passed since the start is reported (0.781250 seconds), including the time spent in the loop while the transaction was stopped. */ lr.outputMessage("After resume time = "+lr.getTransactionDuration("Stop&Start")); // Add time to duration for (i=0; i < iteration; ++i) { lr.logMessage(i); } /* Check total time reported after resume and loop */ if ( lr.getTransactionDuration("Stop&Start") > 2) lr.setTransactionStatus(lr.FAIL); think_time=lr.getTransactionThinkTime("Stop&Start"); if (think_time) lr.outputMessage("The transaction think time is "+think_time+" seconds"); else lr.outputMessage("The think time cannot be determined."); // End transaction lr.endTransaction("Stop&Start",lr.AUTO); return 0; }