Utilisation des transactions et des statistiques

Vous pouvez utiliser du code personnalisé pour démarrer des transactions, rassembler des statistiques supplémentaires lors d'une transaction et arrêter une transaction.

Le code suivant indique comment démarrer une transaction. Les transactions générées par les services d'exécution de test créent et gèrent automatiquement les statistiques.

package customcode;

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 {

	/** 	
	 * Les instances de cette classe seront créées avec le constructeur sans argument. 	
	 */ 
	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; 
	}  
}

Le code suivant indique comment rassembler des statistiques supplémentaires lors d'une transaction.

package customcode;

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 {

	/**
	 * Les instances de cette classe seront créées avec le constructeur sans argument.
	 */
	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;
	}

}

Le code suivant permet d'arrêter une transaction.

package customcode;

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 {

	/**
	 * Les instances de cette classe seront créées avec le constructeur sans argument.
	 */
	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