Migrating recorder implementations from previous versions

The new recording framework includes significant improvements over the generic recorder framework (GRF) that was delivered in previous versions. The new framework introduces more flexibility for combining clients and recorders. With the framework, you can start multiple recorders and clients in one session, consolidating the recorded data in one file. In addition, the framework does not use the TPTP Agent Controller, and thus does not require recorders and clients to be run in a separate Java™ Virtual Machine. Finally, the new framework provides improved performance and better scalability in terms of the amount of recordable data and the impact on memory usage.

The API has been completely redefined to produce these improvements. Migrating existing recorder implementations to the new framework requires significant effort. The following tables summarize the changes to classes and methods in the new recording framework.

Previous class New recording framework, version 8.2 and later Comments
com.ibm.rational.test.lt.trace.PayloadMsg com.ibm.rational.test.lt.recorder.core.packet.IRecorderPacket com.ibm.rational.test.lt.recorder.core.packet.connection.IConnectionPacket Use Java serialization for serialization in this product version. If packets support connections, extend the IConnectionPacket interface and its subinterfaces. This extension enables filtering capabilities at test-generation time.
org.eclipse.hyades.execution.recorder.remote.RecorderAgent com.ibm.rational.test.lt.recorder.core.extensibility.BaseRecorderDelegate The run() method has been replaced with the start() method. The threads that this method can start are no longer monitored by the framework. The setIsReady(true) method has been replaced with the sendStarted(enabled) method. The handleCommand(STOP) method has been replaced with the stop() method. The class calls the sendStopped() method when the recorder has stopped. (This event was previously implicitly notified by the termination of the thread returned by the run() method.) This class is no longer required to run in a separate JVM.
org.eclipse.hyades.execution.recorder.remote.RecorderEnvironmentAdapter org.eclipse.tptp.test.provisional.recorder.framework.AbstractRecorderExecOptionsProvider org.eclipse.hyades.execution.recorder.remote.RecorderExecutableObjectAdapter com.ibm.rational.test.lt.recorder.core.deploy.IRemoteLauncher This class is required only if the recorder delegate must run in a separate JVM. With this version, you can add classpath entries and system properties to the launched JVM. There is no requirement for file deployment because the JVM is always run on the local computer. Recording on remote computers was never enabled in previous releases. The AbstractRecorderExecOptionsProvider.getAgentClassPath() and RecorderExecutableObjectAdapter.getAgentClassPath() classes are replaced by the delegate class declaration in the extension point.
org.eclipse.tptp.test.provisional.recorder.messages.AbstractRecorderMessageProvider None The IRecorderPacket auto-serialization class and the framework handle message serialization in this version. Implementing this class is no longer required.
org.eclipse.tptp.test.provisional.recorder.ui.wizards.DefaultRecWizardProvider com.ibm.rational.test.lt.recorder.ui.wizards.NewRecorderWizard com.ibm.rational.test.lt.recorder.ui.wizards.NewRecorderClientWizard  
org.eclipse.tptp.test.provisional.recorder.framework.RecorderClientHelperAdapter None The framework automatically handles the step that this class completed in earlier versions.
Previous extension point New recording framework, version 8.2 and later Comments
org.eclipse.hyades.test.core.Recorder#Recorder.protocol com.ibm.rational.test.lt.recorder.core.recorder#recorder.outputPacket  
org.eclipse.hyades.test.core.Recorder#Recorder.id com.ibm.rational.test.lt.recorder.core.recorder#id  
org.eclipse.hyades.test.core.Recorder#Recorder.name com.ibm.rational.test.lt.recorder.core.recorder#name  
org.eclipse.hyades.test.core.Recorder#Recorder.recorderAgent com.ibm.rational.test.lt.recorder.core.recorder#recorder.delegate  
org.eclipse.hyades.test.core.Recorder#Recorder.recorderClientHelper None The framework automatically handles the step that this class handled in earlier versions.
org.eclipse.hyades.test.core.Recorder#Recorder.recorderMessageHandlers None The IRecorderPacket auto-serialization class and the framework handle message serialization in this version. Implementing this class is no longer required.
org.eclipse.hyades.test.core.Recorder#Recorder.wizardPageProvider com.ibm.rational.test.lt.recorder.ui.recorderClientWizard#recordersWizard.class  
org.eclipse.hyades.test.core.Recorder#Recorder.execOptionsProvider com.ibm.rational.test.lt.recorder.core.recorder#recorder.remoteLauncher See the previous comment about the AbstractRecorderExecOptionsProvider class.
org.eclipse.hyades.test.core.Recorder#Recorder.requiresIntermediateFile None This option is no longer supported. Recording sessions are always kept after recording.
org.eclipse.hyades.test.core.Recorder#Recorder.fileExtension None This option is no longer supported. The recording format and extension are now always controlled by the framework in a .recsession file.
org.eclipse.hyades.test.core.Recorder#Recorder.icon com.ibm.rational.test.lt.recorder.ui.recordingUiImage#recorderImage.icon  
org.eclipse.hyades.test.core.Recorder#Recorder.description com.ibm.rational.test.lt.recorder.ui.recorderClientWizard#recordersWizard.description  
Feedback