Transaktionen und Statistikdaten verwenden

Mit angepasstem Code können Sie Transaktionen starten, zusätzliche Statistikdaten während einer Transaktion erfassen und eine Transaktion stoppen.

Der folgende Code zeigt, wie eine Transaktion gestartet wird. Transaktionen, die durch Testausführungsservices generiert werden, erstellen und verwalten Statistikdaten automatisch.

package test;

import com.ibm.rational.test.lt.kernel.services.ITestExecutionServices;
import com.ibm.rational.test.lt.kernel.services.ITransaction;

/** 
 * @author IBM Custom Code Samples
 */ 
public class BeginTransaction implements
		com.ibm.rational.test.lt.kernel.custom.ICustomCode2 {

	/** 	
	 * Instances of this will be created using the no-arg constructor.
	 */ 
	public BeginTransaction() { 	
	}  	

	/** 	
	 * For Javadoc information on the ICustomCode2 and ITestExecutionServices interfaces, 	
	 * see the 'Test execution services interfaces and classes' help topic. 	
	 */ 	
public String exec(ITestExecutionServices tes, String[] args) {
		// the name of the transaction could have been passed in via data correlation mechanism. 		
		ITransaction foo = tes.getTransaction("foo"); 		
		foo.start(); 		
		return null;
	}  
}

Der folgende Code zeigt, wie weitere Statistikdaten während einer Transaktion zusammengestellt werden.

package test;

import com.ibm.rational.test.lt.kernel.ITime;
import com.ibm.rational.test.lt.kernel.services.ITestExecutionServices;
import com.ibm.rational.test.lt.kernel.statistics.IScalar;
import com.ibm.rational.test.lt.kernel.statistics.IStat;
import com.ibm.rational.test.lt.kernel.statistics.IStatTree;
import com.ibm.rational.test.lt.kernel.statistics.impl.StatType;

/**
 * @author IBM Custom Code Samples
 */
public class BodyTransaction implements
		com.ibm.rational.test.lt.kernel.custom.ICustomCode2 {

	/**
	 * Instances of this will be created using the no-arg constructor.
	 */
	public BodyTransaction() {
	}

	/** 	
	 * For Javadoc information on the ICustomCode2 and ITestExecutionServices interfaces, 	
	 * see the 'Test execution services interfaces and classes' help topic. 	
	 */ 	
	public String exec(ITestExecutionServices tes, String[] args) {
		IStatTree tranStat;
		IStatTree timeStat;
		IStatTree countStat;
		
		IStat timeDataStat = null;		// counter for the time RANGE
		IScalar countDataStat = null;	// counter for the count SCALAR
		
		ITime timer = tes.getTime();
		
        IStatTree rootStat = tes.getStatisticsManager().getStatTree();
        if (rootStat != null) {
        	// these counters set up the hierarchy
        	tranStat = rootStat.getStat("Transactions", StatType.STRUCTURE);
        	timeStat = tranStat.getStat("Body Time", StatType.STRUCTURE);
        	countStat = tranStat.getStat("Bocy Count", StatType.STRUCTURE);
        
        	// the name of the counters could have been passed in via data correlation mechanism
        	timeDataStat = (IStat) timeStat.getStat("foo", StatType.RANGE);
        	countDataStat = (IScalar) countStat.getStat("foo", StatType.SCALAR);
        }

        // get the start time
        long startTime = timer.timeInTest();
        
        // do the work
        // whatever that work might be
        
        // get the end time
        long endTime = timer.timeInTest();
        
        // update timeDataStat with the elapsed time
        if (timeDataStat != null)
        	timeDataStat.submitDataPoint(endTime - startTime);
        
        // update the countDataStat
        if (countDataStat != null)
        	countDataStat.increment();
        
		return null;
	}

}

Der folgende Code zeigt, wie eine Transaktion gestoppt wird.

package test;

import com.ibm.rational.test.lt.kernel.services.ITestExecutionServices;
import com.ibm.rational.test.lt.kernel.services.ITransaction;

/**
 * @author IBM Custom Code Samples
 */
public class EndTransaction implements
		com.ibm.rational.test.lt.kernel.custom.ICustomCode2 {

	/**
	 * Instances of this will be created using the no-arg constructor.
	 */
	public EndTransaction() {
	}

	/** 	
	 * For Javadoc information on the ICustomCode2 and ITestExecutionServices interfaces, 	
	 * see the 'Test execution services interfaces and classes' help topic. 	
	 */ 	
	public String exec(ITestExecutionServices tes, String[] args) {
		// the name of the transaction could have been passed in via data correlation mechanism.
		ITransaction foo = tes.getTransaction("foo");
		foo.stop();
		return null;
	}

}

Feedback