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 |